mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 00:21:26 +00:00
KT-9670: optimize Class <-> KClass wrapping/unwrapping as a special case of boxing/unboxing.
NB doesn't work for arrays of classes.
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
class Klass
|
||||
|
||||
fun foo() {
|
||||
val c0 = (Klass::class).java // prevent intrinsic .java for class literal
|
||||
val c1 = Klass::class.java
|
||||
val c2 = Int::class.java
|
||||
val c3 = Integer::class.java
|
||||
// Even though no intrinsic is used,
|
||||
// redundant boxing/unboxing optimizes out wrapping/unrapping java.lang.Class instances
|
||||
val c0 = (Klass::class).java // LDC LKlass;.class
|
||||
|
||||
val c1 = Klass::class.java // LDC LKlass;.class
|
||||
|
||||
val c2 = Int::class.java // GETSTATIC java/lang/Integer.TYPE
|
||||
|
||||
val c3 = Integer::class.java // LDC Ljava/lang/Integer;.class
|
||||
}
|
||||
|
||||
// 2 LDC LKlass;.class
|
||||
// 1 GETSTATIC java/lang/Integer.TYPE : Ljava/lang/Class;
|
||||
// 1 INVOKESTATIC kotlin/jvm.*\.getJava
|
||||
// 0 INVOKESTATIC kotlin/jvm.*\.getJava
|
||||
// 1 LDC Ljava/lang/Integer;.class
|
||||
|
||||
Reference in New Issue
Block a user