From d8f99d8974506068713e22926036805c87e5f62c Mon Sep 17 00:00:00 2001 From: Alexander Shabalin Date: Wed, 12 Jan 2022 13:28:43 +0000 Subject: [PATCH] [K/N] Avoid global dtors in suspension and logging ^KT-50713 Merge-request: KT-MR-5426 Merged-by: Alexander Shabalin --- kotlin-native/runtime/src/main/cpp/Logging.cpp | 4 ++-- kotlin-native/runtime/src/mm/cpp/ThreadSuspension.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kotlin-native/runtime/src/main/cpp/Logging.cpp b/kotlin-native/runtime/src/main/cpp/Logging.cpp index 69e3dc87068..319327a4ecf 100644 --- a/kotlin-native/runtime/src/main/cpp/Logging.cpp +++ b/kotlin-native/runtime/src/main/cpp/Logging.cpp @@ -188,8 +188,8 @@ void logging::Log(Level level, std::initializer_list tags, const ch } void logging::VLog(Level level, std::initializer_list tags, const char* format, std::va_list args) noexcept { - static auto logFilter = internal::CreateLogFilter(compiler::runtimeLogs()); - static auto logger = internal::CreateStderrLogger(); + [[clang::no_destroy]] static auto logFilter = internal::CreateLogFilter(compiler::runtimeLogs()); + [[clang::no_destroy]] static auto logger = internal::CreateStderrLogger(); RuntimeAssert(tags.size() > 0, "Cannot Log without tags"); std_support::span tagsSpan(std::data(tags), std::size(tags)); internal::Log(*logFilter, *logger, level, tagsSpan, format, args); diff --git a/kotlin-native/runtime/src/mm/cpp/ThreadSuspension.cpp b/kotlin-native/runtime/src/mm/cpp/ThreadSuspension.cpp index 927378df0a0..ac1f1e3f923 100644 --- a/kotlin-native/runtime/src/mm/cpp/ThreadSuspension.cpp +++ b/kotlin-native/runtime/src/mm/cpp/ThreadSuspension.cpp @@ -43,8 +43,8 @@ void yield() noexcept { } THREAD_LOCAL_VARIABLE bool gSuspensionRequestedByCurrentThread = false; -std::mutex gSuspensionMutex; -std::condition_variable gSuspendsionCondVar; +[[clang::no_destroy]] std::mutex gSuspensionMutex; +[[clang::no_destroy]] std::condition_variable gSuspendsionCondVar; } // namespace