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:
Dmitry Petrov
2016-03-03 16:12:05 +03:00
parent 2ecb8896cc
commit 3bbd8979e4
7 changed files with 135 additions and 30 deletions

View File

@@ -0,0 +1,20 @@
import kotlin.reflect.KClass
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann(val arg: KClass<*>)
class OK
@Ann(OK::class) class MyClass
var escape: KClass<*>? = null
fun test1(): String {
val arg = MyClass::class.java.getAnnotation(Ann::class.java).arg
escape = arg
val argSimpleName = arg.java.getSimpleName()
return argSimpleName
}
// 1 INVOKESTATIC kotlin/jvm/internal/Reflection\.getOrCreateKotlinClass
// 1 INVOKESTATIC kotlin/jvm/JvmClassMappingKt.getJavaClass