KJS: use cached KClass instead create new each time when getting it from JsClass
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package kotlin.js
|
||||
|
||||
import getKClass
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.js.internal.KClassImpl
|
||||
|
||||
@@ -36,4 +37,4 @@ val <T : Any> KClass<T>.js: JsClass<T>
|
||||
get() = (this as KClassImpl<T>).jClass
|
||||
|
||||
val <T : Any> JsClass<T>.kotlin: KClass<T>
|
||||
get() = KClassImpl<T>(this)
|
||||
get() = getKClass(this)
|
||||
|
||||
@@ -20,9 +20,9 @@ import kotlin.reflect.KClass
|
||||
import kotlin.reflect.js.internal.KClassImpl
|
||||
|
||||
@JsName("getKClass")
|
||||
private fun <T : Any> getKClass(jClass: JsClass<T>): KClass<T> = getOrCreateKClass(jClass)
|
||||
internal fun <T : Any> getKClass(jClass: JsClass<T>): KClass<T> = getOrCreateKClass(jClass)
|
||||
@JsName("getKClassFromExpression")
|
||||
private fun <T : Any> getKClassFromExpression(e: T): KClass<T> = getOrCreateKClass(e.jsClass)
|
||||
internal fun <T : Any> getKClassFromExpression(e: T): KClass<T> = getOrCreateKClass(e.jsClass)
|
||||
|
||||
private fun <T : Any> getOrCreateKClass(jClass: JsClass<T>): KClass<T> {
|
||||
val metadata = jClass.asDynamic().`$metadata$`
|
||||
|
||||
Reference in New Issue
Block a user