4b5a7c6646
We don't want to deprecate freezing at all, but it is possible that freezing, new memory model and lazy global initialization combination might not work in some cases. It might be a problem when such case appears in 3rd-party library that user can't fix. To mitigate this problem this commit introduces `freezing` binary option. It has three variants: * Full - ol' good behavior. * Disabled - well, no freezing at all. * ExplicitOnly - a compromise when user want to freeze something themselves, but something is messed up during globals initialization.
33 lines
1.0 KiB
C++
33 lines
1.0 KiB
C++
/*
|
|
* Copyright 2010-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
* that can be found in the LICENSE file.
|
|
*/
|
|
|
|
#include "CompilerConstants.hpp"
|
|
|
|
#include "Common.h"
|
|
|
|
using namespace kotlin;
|
|
|
|
// These are defined by overrideRuntimeGlobals in IrToBitcode.kt
|
|
RUNTIME_WEAK int32_t Kotlin_destroyRuntimeMode = 1;
|
|
RUNTIME_WEAK int32_t Kotiln_gcAggressive = 0;
|
|
RUNTIME_WEAK int32_t Kotlin_workerExceptionHandling = 0;
|
|
RUNTIME_WEAK int32_t Kotlin_freezingEnabled = 1;
|
|
|
|
ALWAYS_INLINE compiler::DestroyRuntimeMode compiler::destroyRuntimeMode() noexcept {
|
|
return static_cast<compiler::DestroyRuntimeMode>(Kotlin_destroyRuntimeMode);
|
|
}
|
|
|
|
ALWAYS_INLINE bool compiler::gcAggressive() noexcept {
|
|
return Kotiln_gcAggressive != 0;
|
|
}
|
|
|
|
ALWAYS_INLINE compiler::WorkerExceptionHandling compiler::workerExceptionHandling() noexcept {
|
|
return static_cast<compiler::WorkerExceptionHandling>(Kotlin_workerExceptionHandling);
|
|
}
|
|
|
|
ALWAYS_INLINE bool compiler::freezingEnabled() noexcept {
|
|
return Kotlin_freezingEnabled != 0;
|
|
}
|