[K/JS] Make interface subtyping faster and lighter.

This commit is contained in:
Artem Kobzar
2022-09-19 10:26:11 +00:00
committed by Space
parent 03f83ff339
commit a368fc37c7
22 changed files with 572 additions and 287 deletions
@@ -9,8 +9,8 @@ import kotlin.reflect.js.internal.*
@PublishedApi
internal fun <T : Annotation> KClass<*>.findAssociatedObject(annotationClass: KClass<T>): Any? {
return if (this is KClassImpl<*> && annotationClass is KClassImpl<T>) {
val key = annotationClass.jClass.asDynamic().unsafeCast<Ctor>().`$metadata$`?.associatedObjectKey?.unsafeCast<Int>() ?: return null
val map = jClass.asDynamic().unsafeCast<Ctor>().`$metadata$`?.associatedObjects ?: return null
val key = annotationClass.jClass.asDynamic().`$metadata$`?.associatedObjectKey?.unsafeCast<Int>() ?: return null
val map = jClass.asDynamic().`$metadata$`?.associatedObjects ?: return null
val factory = map[key] ?: return null
return factory()
} else {