From 79600f32d279291c08680dfef8a13dacf5ce68a0 Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Mon, 7 Jun 2021 13:17:44 +0200 Subject: [PATCH] [codegenerator][refactor] extract method for tramboline generation --- .../org/jetbrains/kotlin/cli/bc/K2Native.kt | 13 ++--------- .../cli/bc/K2NativeCompilerArguments.kt | 12 +++------- .../kotlin/backend/konan/KonanConfig.kt | 3 +-- .../backend/konan/KonanConfigurationKeys.kt | 6 ++--- .../kotlin/backend/konan/llvm/IrToBitcode.kt | 23 +++++++++---------- .../backend.native/tests/build.gradle | 2 +- .../kotlin/native/test/debugger/LldbTests.kt | 4 ++-- 7 files changed, 22 insertions(+), 41 deletions(-) diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 69fd25137ab..88000fd3496 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -169,21 +169,12 @@ class K2Native : CLICompiler() { null } }) - putIfNotNull(GENERATE_INLINED_FUNCTION_BODY_MARKER, when (val it = arguments.generateInlinedFunctionMarkerString) { + putIfNotNull(GENERATE_DEBUG_TRAMPOLINE, when (val it = arguments.generateDebugTrampolineString) { "enable" -> true "disable" -> false null -> null else -> { - configuration.report(ERROR, "Unsupported -Xg-generate-inline-function-body-marker= value: $it. Possible values are 'enable'/'disable'") - null - } - }) - putIfNotNull(GENERATE_WHEN_MARKER, when (val it = arguments.generateWhenMarkerString) { - "enable" -> true - "disable" -> false - null -> null - else -> { - configuration.report(ERROR, "Unsupported -Xg-generate-when-marker= value: $it. Possible values are 'enable'/'disable'") + configuration.report(ERROR, "Unsupported -Xg-generate-debug-tramboline= value: $it. Possible values are 'enable'/'disable'") null } }) diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt index 68857495adf..c6efd07375c 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt @@ -166,17 +166,11 @@ class K2NativeCompilerArguments : CommonCompilerArguments() { var lightDebugDeprecated: Boolean = false @Argument( - value = "-Xg-generate-inline-function-body-marker", + value = "-Xg-generate-debug-trampoline", valueDescription = "{disable|enable}", - description = """generates marker of inlined function body on call site to make debugger breakpoint resolution more accurate""" + description = """generates trampolines to make debugger breakpoint resolution more accurate (inlines, when, etc.)""" ) - var generateInlinedFunctionMarkerString: String? = null - @Argument( - value = "-Xg-generate-when-marker", - valueDescription = "{disable|enable}", - description = """generates marker of when to make debugger breakpoint resolution more accurate""" - ) - var generateWhenMarkerString: String? = null + var generateDebugTrampolineString: String? = null @Argument( diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index 8ce4424d8a2..e12419d22ff 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -43,8 +43,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration val debug: Boolean get() = configuration.getBoolean(KonanConfigKeys.DEBUG) val lightDebug: Boolean = configuration.get(KonanConfigKeys.LIGHT_DEBUG) ?: target.family.isAppleFamily // Default is true for Apple targets. - val generateInlinedBodyTrampoline = debug && configuration.get(KonanConfigKeys.GENERATE_INLINED_FUNCTION_BODY_MARKER) ?: false - val generateWhenTrampoline = debug && configuration.get(KonanConfigKeys.GENERATE_WHEN_MARKER) ?: false + val generateDebugTrampoline = debug && configuration.get(KonanConfigKeys.GENERATE_DEBUG_TRAMPOLINE) ?: false val memoryModel: MemoryModel get() = configuration.get(KonanConfigKeys.MEMORY_MODEL)!! val destroyRuntimeMode: DestroyRuntimeMode get() = configuration.get(KonanConfigKeys.DESTROY_RUNTIME_MODE)!! diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt index f3e3ca773ee..97dad2a452a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt @@ -56,10 +56,8 @@ class KonanConfigKeys { = CompilerConfigurationKey.create("library version") val LIGHT_DEBUG: CompilerConfigurationKey = CompilerConfigurationKey.create("add light debug information") - val GENERATE_INLINED_FUNCTION_BODY_MARKER: CompilerConfigurationKey - = CompilerConfigurationKey.create("generates inlined function body marker on call site") - val GENERATE_WHEN_MARKER: CompilerConfigurationKey - = CompilerConfigurationKey.create("generates when marker on call site") + val GENERATE_DEBUG_TRAMPOLINE: CompilerConfigurationKey + = CompilerConfigurationKey.create("generates debug trampolines to make debugger breakpoint resolution more accurate") val LINKER_ARGS: CompilerConfigurationKey> = CompilerConfigurationKey.create("additional linker arguments") val LIST_PHASES: CompilerConfigurationKey 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 f4957c8adb4..0fd6b64da18 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 @@ -1177,12 +1177,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map) { | println(question("Subject", args)) |} - """.trimMargin().binary("kt33055", "-g", "-Xg-generate-inline-function-body-marker=enable") + """.trimMargin().binary("kt33055", "-g", "-Xg-generate-debug-trampoline=enable") """ > b 2 Breakpoint 1: where = [..]`kfun:#question(kotlin.String;kotlin.Array){}kotlin.String [..] at kt33055.kt:2:12, [..] @@ -192,7 +192,7 @@ class LldbTests { | else -> print("C") | } |} - """.trimMargin().binary("kt33364", "-g", "-Xg-generate-when-marker=enable") + """.trimMargin().binary("kt33364", "-g", "-Xg-generate-debug-trampoline=enable") """ > b 5 Breakpoint 1: where = [..]kfun:#main(){} [..] at kt33364.kt:5:[..]