[FIR2IR] Unconditionally disable linkViaSignatures on JVM
It was an experimental compilation mode that we don't need anymore. KT-64809
This commit is contained in:
committed by
Space Team
parent
7568ee5a79
commit
e8aa05928d
+3
-1
@@ -785,7 +785,9 @@ See KT-45671 for more details."""
|
||||
@Argument(
|
||||
value = "-Xlink-via-signatures",
|
||||
description = """Link JVM IR symbols via signatures instead of descriptors.
|
||||
This mode is slower, but it can be useful for troubleshooting problems with the JVM IR backend."""
|
||||
This mode is slower, but it can be useful for troubleshooting problems with the JVM IR backend.
|
||||
This option is deprecated and will be deleted in future versions.
|
||||
It has no effect when -language-version is 2.0 or higher."""
|
||||
)
|
||||
var linkViaSignatures = false
|
||||
set(value) {
|
||||
|
||||
@@ -155,7 +155,7 @@ public class JVMConfigurationKeys {
|
||||
CompilerConfigurationKey.create("Validate generated JVM bytecode");
|
||||
|
||||
public static final CompilerConfigurationKey<Boolean> LINK_VIA_SIGNATURES =
|
||||
CompilerConfigurationKey.create("Link JVM IR symbols via signatures, instead of by descriptors");
|
||||
CompilerConfigurationKey.create("Link JVM IR symbols via signatures, instead of by descriptors on the K1 frontend");
|
||||
|
||||
public static final CompilerConfigurationKey<Boolean> ENABLE_DEBUG_MODE =
|
||||
CompilerConfigurationKey.create("Enable debug mode");
|
||||
|
||||
@@ -56,7 +56,7 @@ class Fir2IrConfiguration private constructor(
|
||||
Fir2IrConfiguration(
|
||||
languageVersionSettings = compilerConfiguration.languageVersionSettings,
|
||||
diagnosticReporter = diagnosticReporter,
|
||||
linkViaSignatures = compilerConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||
linkViaSignatures = false,
|
||||
evaluatedConstTracker = compilerConfiguration.putIfAbsent(
|
||||
CommonConfigurationKeys.EVALUATED_CONST_TRACKER,
|
||||
EvaluatedConstTracker.create(),
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
||||
val USE_TYPE_TABLE by directive("Use type table in metadata serialization")
|
||||
val NO_NEW_JAVA_ANNOTATION_TARGETS by directive("Do not generate Java annotation targets TYPE_USE/TYPE_PARAMETER for Kotlin annotation classes with Kotlin targets TYPE/TYPE_PARAMETER")
|
||||
val OLD_INNER_CLASSES_LOGIC by directive("Use old logic for generation of InnerClasses attributes")
|
||||
val LINK_VIA_SIGNATURES by directive("Use linkage via signatures instead of descriptors / FIR")
|
||||
val LINK_VIA_SIGNATURES_K1 by directive("Use linkage via signatures instead of descriptors on the K1 frontend")
|
||||
val ENABLE_JVM_IR_INLINER by directive("Enable inlining on IR, instead of inlining on bytecode")
|
||||
val GENERATE_PROPERTY_ANNOTATIONS_METHODS by directive(
|
||||
description = "Enables corresponding analysis flag (JvmAnalysisFlags.generatePropertyAnnotationsMethods)"
|
||||
|
||||
+2
@@ -83,6 +83,8 @@ where advanced options include:
|
||||
-Xlambdas=class Generate lambdas as explicit classes.
|
||||
-Xlink-via-signatures Link JVM IR symbols via signatures instead of descriptors.
|
||||
This mode is slower, but it can be useful for troubleshooting problems with the JVM IR backend.
|
||||
This option is deprecated and will be deleted in future versions.
|
||||
It has no effect when -language-version is 2.0 or higher.
|
||||
-Xno-call-assertions Don't generate not-null assertions for arguments of platform types.
|
||||
-Xno-kotlin-nothing-value-exception
|
||||
Don't use KotlinNothingValueException, which has been available since 1.4.
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// WITH_STDLIB
|
||||
// LINK_VIA_SIGNATURES
|
||||
// LINK_VIA_SIGNATURES_K1
|
||||
// DUMP_SIGNATURES
|
||||
|
||||
// MODULE: maven
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// WITH_STDLIB
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// LINK_VIA_SIGNATURES
|
||||
// LINK_VIA_SIGNATURES_K1
|
||||
|
||||
class Class
|
||||
interface Interface
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
// FILE: a.kt
|
||||
|
||||
// CHECK JVM_IR:
|
||||
// Mangled name: #main(){}
|
||||
// Mangled name for the signature by IR: main(){}
|
||||
// Mangled name for the signature by Frontend: main(){}%a.kt
|
||||
// Public signature: /main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
fun main(): Unit
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
// CHECK JVM_IR:
|
||||
// Mangled name: #main(){}
|
||||
// Mangled name for the signature by IR: main(){}
|
||||
// Mangled name for the signature by Frontend: main(){}%b.kt
|
||||
// Public signature: /main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
fun main(): Unit
|
||||
|
||||
// FILE: c.kt
|
||||
package foo
|
||||
|
||||
// CHECK JVM_IR:
|
||||
// Mangled name: foo#main(){}
|
||||
// Mangled name for the signature by IR: main(){}
|
||||
// Mangled name for the signature by Frontend: main(){}%c.kt
|
||||
// Public signature: foo/main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
fun main(): Unit
|
||||
|
||||
// FILE: d.kt
|
||||
package foo
|
||||
|
||||
// CHECK JVM_IR:
|
||||
// Mangled name: foo#main(){}
|
||||
// Mangled name for the signature by IR: main(){}
|
||||
// Mangled name for the signature by Frontend: main(){}%d.kt
|
||||
// Public signature: foo/main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
fun main(): Unit
|
||||
@@ -4,6 +4,9 @@
|
||||
// FIR_IDENTICAL
|
||||
// WITH_STDLIB
|
||||
|
||||
// SEPARATE_SIGNATURE_DUMP_FOR_K2
|
||||
// ^ The main function has a different mangled name when it's computed from its K1 descriptor in K/JVM.
|
||||
|
||||
// FILE: a.kt
|
||||
fun main() {
|
||||
println("main() in a.kt")
|
||||
|
||||
@@ -6,12 +6,6 @@
|
||||
// WITH_STDLIB
|
||||
// SKIP_KLIB_TEST
|
||||
|
||||
// IGNORE_BACKEND_K2: JVM_IR
|
||||
// ^^^ The IrErrorCallExpression inside the body of test1() function is dumped in a different way on JVM K1 and JVM K2.
|
||||
// That is because `IrErrorCallExpression.description` includes a signature of a local lambda, which is mangled
|
||||
// differently on K1 and K2. This is not a problem since signatures for local entities do not participate in IR-linkage.
|
||||
// But the test needs to be muted.
|
||||
|
||||
inline fun foo(block: () -> Unit) { block() }
|
||||
|
||||
inline fun bar(block1: () -> Unit, noinline block2: () -> Unit) {
|
||||
|
||||
@@ -36,10 +36,8 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
|
||||
// Mangled name: MyMap#computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Mangled name for the signature by IR: computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Mangled name for the signature by Frontend: computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1{EnhancedNullability},out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature by IR: /MyMap.computeIfPresent|-2673672788318360066[0]
|
||||
// Public signature by IR debug description: computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature by Frontend: /MyMap.computeIfPresent|-4313180944690406140[0]
|
||||
// Public signature by Frontend debug description: computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1{EnhancedNullability},out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature: /MyMap.computeIfPresent|-2673672788318360066[0]
|
||||
// Public signature debug description: computeIfPresent(1:0{EnhancedNullability};java.util.function.BiFunction<in|1:0{EnhancedNullability},in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
/* fake */ override fun computeIfPresent(p0: @EnhancedNullability K, p1: @EnhancedNullability BiFunction<in @EnhancedNullability K, in V, out V?>): V?
|
||||
|
||||
// CHECK JVM_IR:
|
||||
@@ -88,20 +86,16 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
|
||||
// Mangled name: MyMap#merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1,in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Mangled name for the signature by IR: merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1,in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Mangled name for the signature by Frontend: merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1{EnhancedNullability},in|1:1{EnhancedNullability},out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature by IR: /MyMap.merge|5136195963180492586[0]
|
||||
// Public signature by IR debug description: merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1,in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature by Frontend: /MyMap.merge|-7730033017111273031[0]
|
||||
// Public signature by Frontend debug description: merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1{EnhancedNullability},in|1:1{EnhancedNullability},out|1:1?>{EnhancedNullability}){}1:1?
|
||||
// Public signature: /MyMap.merge|5136195963180492586[0]
|
||||
// Public signature debug description: merge(1:0{EnhancedNullability};1:1{EnhancedNullability};java.util.function.BiFunction<in|1:1,in|1:1,out|1:1?>{EnhancedNullability}){}1:1?
|
||||
/* fake */ override fun merge(p0: @EnhancedNullability K, p1: @EnhancedNullability (V & Any), p2: @EnhancedNullability BiFunction<in V, in V, out V?>): V?
|
||||
|
||||
// CHECK:
|
||||
// Mangled name: MyMap#putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
|
||||
// Mangled name for the signature by IR: putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
|
||||
// Mangled name for the signature by Frontend: putAll(kotlin.collections.Map<out|1:0?,out|1:1?>{EnhancedNullability}){}
|
||||
// Public signature by IR: /MyMap.putAll|8252374948943605914[0]
|
||||
// Public signature by IR debug description: putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
|
||||
// Public signature by Frontend: /MyMap.putAll|2145725647041437129[0]
|
||||
// Public signature by Frontend debug description: putAll(kotlin.collections.Map<out|1:0?,out|1:1?>{EnhancedNullability}){}
|
||||
// Public signature: /MyMap.putAll|8252374948943605914[0]
|
||||
// Public signature debug description: putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
|
||||
/* fake */ override fun putAll(p0: @EnhancedNullability Map<out K?, V?>): Unit
|
||||
|
||||
// CHECK JVM_IR:
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// CHECK:
|
||||
// Mangled name: #consumeVarargs(kotlin.IntArray...){}
|
||||
// Public signature: /consumeVarargs|2702777436513705083[0]
|
||||
// Public signature debug description: consumeVarargs(kotlin.IntArray...){}
|
||||
fun consumeVarargs(vararg arr: Int): Unit
|
||||
|
||||
// CHECK JVM_IR:
|
||||
// Mangled name: #main(){}
|
||||
// Mangled name for the signature by IR: main(){}
|
||||
// Mangled name for the signature by Frontend: main(){}%IntArrayAsVararg.kt
|
||||
// Public signature: /main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
// CHECK JS_IR NATIVE:
|
||||
// Mangled name: #main(){}
|
||||
// Public signature: /main|-4284757841571462650[0]
|
||||
// Public signature debug description: main(){}
|
||||
fun main(): Unit
|
||||
@@ -2,6 +2,9 @@
|
||||
// WITH_STDLIB
|
||||
// ISSUE: KT-60312
|
||||
|
||||
// SEPARATE_SIGNATURE_DUMP_FOR_K2
|
||||
// ^ The main function has a different mangled name when it's computed from its K1 descriptor in K/JVM.
|
||||
|
||||
fun main() {
|
||||
consumeVarargs(1, 2)
|
||||
consumeVarargs(arr = intArrayOf(41, 42))
|
||||
|
||||
+2
-13
@@ -11,24 +11,15 @@ import org.jetbrains.kotlin.backend.jvm.JvmIrTypeSystemContext
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.*
|
||||
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualize
|
||||
import org.jetbrains.kotlin.fir.pipeline.signatureComposerForJvmFir2Ir
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||
@@ -77,9 +68,7 @@ class Fir2IrJvmResultsConverter(
|
||||
|
||||
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)
|
||||
|
||||
val generateSignatures = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||
.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(generateSignatures), FirJvmKotlinMangler())
|
||||
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(false), FirJvmKotlinMangler())
|
||||
val diagnosticReporter = DiagnosticReporterFactory.createReporter()
|
||||
|
||||
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||
@@ -89,7 +78,7 @@ class Fir2IrJvmResultsConverter(
|
||||
fir2IrExtensions,
|
||||
fir2IrConfiguration,
|
||||
module.irGenerationExtensions(testServices),
|
||||
signatureComposerForJvmFir2Ir(generateSignatures),
|
||||
signatureComposerForJvmFir2Ir(false),
|
||||
irMangler,
|
||||
FirJvmKotlinMangler(),
|
||||
FirJvmVisibilityConverter,
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE
|
||||
import org.jetbrains.kotlin.test.FirParser
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SERIALIZE_IR
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES_K1
|
||||
import org.jetbrains.kotlin.test.directives.configureFirParser
|
||||
import org.jetbrains.kotlin.test.directives.model.ValueDirective
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
|
||||
@@ -91,7 +91,7 @@ open class AbstractIrCompileKotlinAgainstInlineKotlinTest :
|
||||
private fun TestConfigurationBuilder.configureForSerialization() {
|
||||
defaultDirectives {
|
||||
SERIALIZE_IR.with(JvmSerializeIrMode.INLINE)
|
||||
+LINK_VIA_SIGNATURES
|
||||
+LINK_VIA_SIGNATURES_K1
|
||||
}
|
||||
|
||||
configureIrHandlersStep {
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_SIGNATURE
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES_K1
|
||||
import org.jetbrains.kotlin.test.directives.configureFirParser
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
||||
@@ -55,7 +55,7 @@ abstract class AbstractIrTextTest<FrontendOutput : ResultingArtifact.FrontendOut
|
||||
+DUMP_IR
|
||||
+DUMP_KT_IR
|
||||
+DUMP_SIGNATURES
|
||||
+LINK_VIA_SIGNATURES
|
||||
+LINK_VIA_SIGNATURES_K1
|
||||
+REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO
|
||||
DIAGNOSTICS with "-warnings"
|
||||
}
|
||||
|
||||
+2
-2
@@ -44,7 +44,7 @@ import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EMIT_JVM_
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ENABLE_JVM_IR_INLINER
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ENABLE_JVM_PREVIEW
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.JDK_RELEASE
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LINK_VIA_SIGNATURES_K1
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.NO_NEW_JAVA_ANNOTATION_TARGETS
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.NO_OPTIMIZED_CALLABLE_REFERENCES
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.NO_UNIFIED_NULL_CHECKS
|
||||
@@ -178,7 +178,7 @@ open class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentC
|
||||
register(ENABLE_DEBUG_MODE, JVMConfigurationKeys.ENABLE_DEBUG_MODE)
|
||||
register(NO_NEW_JAVA_ANNOTATION_TARGETS, JVMConfigurationKeys.NO_NEW_JAVA_ANNOTATION_TARGETS)
|
||||
register(OLD_INNER_CLASSES_LOGIC, JVMConfigurationKeys.OLD_INNER_CLASSES_LOGIC)
|
||||
register(LINK_VIA_SIGNATURES, JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||
register(LINK_VIA_SIGNATURES_K1, JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
||||
register(ENABLE_JVM_IR_INLINER, JVMConfigurationKeys.ENABLE_IR_INLINER)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user