From 2efcc21d214d023c6f5b5a47749295fab83fad0e Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Mon, 3 Oct 2022 15:01:23 +0300 Subject: [PATCH] [K/N] Extract KonanConfig-dependent methods from Context Introduce ConfigChecks interface which can be reused between different classes. --- .../kotlin/backend/konan/ConfigChecks.kt | 39 +++++++++++++++++++ .../jetbrains/kotlin/backend/konan/Context.kt | 25 +----------- 2 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ConfigChecks.kt diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ConfigChecks.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ConfigChecks.kt new file mode 100644 index 00000000000..709a0f5412a --- /dev/null +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ConfigChecks.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.backend.konan + +import org.jetbrains.kotlin.konan.target.needSmallBinary + +/** + * Convenient methods to check compilation parameters. + */ +interface ConfigChecks { + + val config: KonanConfig + + fun shouldExportKDoc() = config.configuration.getBoolean(KonanConfigKeys.EXPORT_KDOC) + + fun shouldVerifyBitCode() = config.configuration.getBoolean(KonanConfigKeys.VERIFY_BITCODE) + + fun shouldPrintBitCode() = config.configuration.getBoolean(KonanConfigKeys.PRINT_BITCODE) + + fun shouldPrintFiles() = config.configuration.getBoolean(KonanConfigKeys.PRINT_FILES) + + fun shouldContainDebugInfo() = config.debug + + fun shouldContainLocationDebugInfo() = shouldContainDebugInfo() || config.lightDebug + + fun shouldContainAnyDebugInfo() = shouldContainDebugInfo() || shouldContainLocationDebugInfo() + + fun shouldUseDebugInfoFromNativeLibs() = shouldContainAnyDebugInfo() && config.useDebugInfoInNativeLibs + + fun shouldOptimize() = config.optimizationsEnabled + + fun shouldInlineSafepoints() = !config.target.needSmallBinary() + + fun useLazyFileInitializers() = config.propertyLazyInitialization + +} \ No newline at end of file diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt index ac1d3aeed80..ea8e969800b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.common.LoggingContext import org.jetbrains.kotlin.backend.konan.descriptors.BridgeDirections import org.jetbrains.kotlin.backend.konan.descriptors.ClassLayoutBuilder import org.jetbrains.kotlin.backend.konan.descriptors.GlobalHierarchyAnalysisResult -import org.jetbrains.kotlin.backend.konan.descriptors.deepPrint import org.jetbrains.kotlin.backend.konan.ir.KonanIr import org.jetbrains.kotlin.backend.konan.llvm.CodegenClassMetadata import org.jetbrains.kotlin.backend.konan.llvm.Lifetime @@ -20,16 +19,13 @@ import org.jetbrains.kotlin.backend.konan.llvm.coverage.CoverageManager import org.jetbrains.kotlin.backend.konan.lower.* import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExport import org.jetbrains.kotlin.backend.konan.optimizations.DevirtualizationAnalysis -import org.jetbrains.kotlin.backend.konan.optimizations.ExternalModulesDFG import org.jetbrains.kotlin.backend.konan.optimizations.ModuleDFG import org.jetbrains.kotlin.backend.konan.serialization.KonanIrLinker import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor -import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass @@ -37,7 +33,6 @@ import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl -import org.jetbrains.kotlin.ir.util.DumpIrTreeVisitor import org.jetbrains.kotlin.konan.library.KonanLibraryLayout import org.jetbrains.kotlin.konan.target.Architecture import org.jetbrains.kotlin.konan.target.KonanTarget @@ -48,8 +43,6 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.resolve.scopes.MemberScope -import java.lang.System.out import kotlin.LazyThreadSafetyMode.PUBLICATION import kotlin.reflect.KProperty @@ -68,7 +61,7 @@ internal class NativeMapping : DefaultMapping() { val enumValuesCacheAccessors = DefaultDelegateFactory.newDeclarationToDeclarationMapping() } -internal class Context(config: KonanConfig) : KonanBackendContext(config) { +internal class Context(config: KonanConfig) : KonanBackendContext(config), ConfigChecks { lateinit var frontendServices: FrontendServices lateinit var environment: KotlinCoreEnvironment lateinit var bindingContext: BindingContext @@ -222,23 +215,7 @@ internal class Context(config: KonanConfig) : KonanBackendContext(config) { generationState.printBitCode() } - fun shouldExportKDoc() = config.configuration.getBoolean(KonanConfigKeys.EXPORT_KDOC) - - fun shouldVerifyBitCode() = config.configuration.getBoolean(KonanConfigKeys.VERIFY_BITCODE) - - fun shouldPrintBitCode() = config.configuration.getBoolean(KonanConfigKeys.PRINT_BITCODE) - - fun shouldPrintFiles() = config.configuration.getBoolean(KonanConfigKeys.PRINT_FILES) - - fun shouldContainDebugInfo() = config.debug - fun shouldContainLocationDebugInfo() = shouldContainDebugInfo() || config.lightDebug - fun shouldContainAnyDebugInfo() = shouldContainDebugInfo() || shouldContainLocationDebugInfo() - fun shouldUseDebugInfoFromNativeLibs() = shouldContainAnyDebugInfo() && config.useDebugInfoInNativeLibs - - fun shouldOptimize() = config.optimizationsEnabled - fun shouldInlineSafepoints() = !config.target.needSmallBinary() fun ghaEnabled() = ::globalHierarchyAnalysisResult.isInitialized - fun useLazyFileInitializers() = config.propertyLazyInitialization val memoryModel = config.memoryModel