From 30f1af7ce07ed8ff153e428fbed2c7c955db466a Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Wed, 20 Jul 2022 11:15:36 +0300 Subject: [PATCH] [K/N] Move isFinalBinary and involvesLinkStage checks to KonanConfig It allows to make more precise checks by accessing KonanConfig properties. --- .../org/jetbrains/kotlin/backend/konan/CompilerOutput.kt | 6 +++--- .../src/org/jetbrains/kotlin/backend/konan/Linker.kt | 2 +- .../org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt | 2 +- .../org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt | 4 ++-- .../jetbrains/kotlin/backend/konan/llvm/objc/linkObjC.kt | 2 +- .../jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CompilerOutput.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CompilerOutput.kt index 81db98dc1f6..97158c3b68e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CompilerOutput.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CompilerOutput.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty /** * Supposed to be true for a single LLVM module within final binary. */ -val CompilerOutputKind.isFinalBinary: Boolean get() = when (this) { +val KonanConfig.isFinalBinary: Boolean get() = when (this.produce) { CompilerOutputKind.PROGRAM, CompilerOutputKind.DYNAMIC, CompilerOutputKind.STATIC, CompilerOutputKind.FRAMEWORK -> true CompilerOutputKind.DYNAMIC_CACHE, CompilerOutputKind.STATIC_CACHE, @@ -41,8 +41,8 @@ val CompilerOutputKind.involvesBitcodeGeneration: Boolean internal val Context.producedLlvmModuleContainsStdlib: Boolean get() = this.llvmModuleSpecification.containsModule(this.stdlibModule) -val CompilerOutputKind.involvesLinkStage: Boolean - get() = when (this) { +val KonanConfig.involvesLinkStage: Boolean + get() = when (this.produce) { CompilerOutputKind.PROGRAM, CompilerOutputKind.DYNAMIC, CompilerOutputKind.DYNAMIC_CACHE, CompilerOutputKind.STATIC_CACHE, CompilerOutputKind.STATIC, CompilerOutputKind.FRAMEWORK -> true diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Linker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Linker.kt index baec1c46245..b261255fa17 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Linker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Linker.kt @@ -204,7 +204,7 @@ internal class Linker(val context: Context) { private fun shouldPerformPreLink(caches: CachesToLink, linkerOutputKind: LinkerOutputKind): Boolean { // Pre-link is only useful when producing static library. Otherwise its just a waste of time. val isStaticLibrary = linkerOutputKind == LinkerOutputKind.STATIC_LIBRARY && - context.config.produce.isFinalBinary + context.config.isFinalBinary val enabled = context.config.cacheSupport.preLinkCaches val nonEmptyCaches = caches.static.isNotEmpty() return isStaticLibrary && enabled && nonEmptyCaches diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 0d65e43f032..eba71042f14 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -627,7 +627,7 @@ internal fun PhaseConfig.konanPhasesConfig(config: KonanConfig) { disableUnless(rewriteExternalCallsCheckerGlobals, getBoolean(KonanConfigKeys.CHECK_EXTERNAL_CALLS)) disableUnless(stringConcatenationTypeNarrowingPhase, config.optimizationsEnabled) disableUnless(optimizeTLSDataLoadsPhase, config.optimizationsEnabled) - if (!config.produce.involvesLinkStage) { + if (!config.involvesLinkStage) { disable(bitcodePostprocessingPhase) disable(linkBitcodeDependenciesPhase) disable(objectFilesPhase) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index a537da77748..ae413962b8d 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -2748,7 +2748,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map) { - if (context.config.produce.isFinalBinary) { + if (context.config.isFinalBinary) { // Generate function calling all [ctorFunctions]. val globalCtorFunction = generateFunctionNoRuntime(codegen, kVoidFuncType, "_Konan_constructors") { ctorFunctions.forEach { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objc/linkObjC.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objc/linkObjC.kt index 2265b359afd..20d9f9d5c39 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objc/linkObjC.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objc/linkObjC.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportNamer internal fun patchObjCRuntimeModule(context: Context): LLVMModuleRef? { val config = context.config - if (!(config.produce.isFinalBinary && config.target.family.isAppleFamily)) return null + if (!(config.isFinalBinary && config.target.family.isAppleFamily)) return null val patchBuilder = PatchBuilder(context) patchBuilder.addObjCPatches() diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt index c70e0b1411a..52e44691192 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExport.kt @@ -83,7 +83,7 @@ internal class ObjCExport(val context: Context, symbolTable: SymbolTable) { ObjCExportBlockCodeGenerator(codegen).generate() } - if (!context.config.produce.isFinalBinary) return // TODO: emit RTTI to the same modules as classes belong to. + if (!context.config.isFinalBinary) return // TODO: emit RTTI to the same modules as classes belong to. val mapper = exportedInterface?.mapper ?: ObjCExportMapper(unitSuspendFunctionExport = context.config.unitSuspendFunctionObjCExport) namer = exportedInterface?.namer ?: ObjCExportNamerImpl(