[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:
Sergej Jaskiewicz
2024-01-15 17:33:06 +01:00
committed by Space Team
parent 7568ee5a79
commit e8aa05928d
17 changed files with 88 additions and 43 deletions
+2
View File
@@ -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,5 +1,5 @@
// WITH_STDLIB
// LINK_VIA_SIGNATURES
// LINK_VIA_SIGNATURES_K1
// DUMP_SIGNATURES
// MODULE: maven
+1 -1
View File
@@ -1,6 +1,6 @@
// WITH_STDLIB
// TARGET_BACKEND: JVM_IR
// LINK_VIA_SIGNATURES
// LINK_VIA_SIGNATURES_K1
class Class
interface Interface
@@ -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))