JVM_IR more compact safe call chains (almost as old BE)
This commit is contained in:
committed by
teamcityserver
parent
f4eaf611c8
commit
0a67ab54fe
+17
@@ -0,0 +1,17 @@
|
||||
class A(val b: B)
|
||||
class B(val c: C)
|
||||
class C(val s: String)
|
||||
|
||||
fun test(na: A?) =
|
||||
na?.b?.c?.s
|
||||
|
||||
// 1 POP
|
||||
// 1 ACONST_NULL
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 DUP
|
||||
// 1 IFNULL
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// 3 DUP
|
||||
// 3 IFNULL
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
fun test(a: Any?, b: Any?, c: String) =
|
||||
a?.toString() ?: b?.toString() ?: c
|
||||
|
||||
// 2 IFNULL
|
||||
// 1 ACONST_NULL
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 IFNONNULL
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// 2 IFNONNULL
|
||||
@@ -0,0 +1,17 @@
|
||||
fun test(a: Any?) =
|
||||
a?.toString()?.hashCode() ?: 0
|
||||
|
||||
// 1 ALOAD
|
||||
// 0 ASTORE
|
||||
// 0 ISTORE
|
||||
// 0 ILOAD
|
||||
// 1 POP
|
||||
// 0 valueOf
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// 1 DUP
|
||||
// 1 IFNULL
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// 2 DUP
|
||||
// 2 IFNULL
|
||||
Reference in New Issue
Block a user