diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt index ba08495ca97..69d6bb793c9 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmSymbols.kt @@ -129,7 +129,6 @@ class WasmSymbols( val getVirtualMethodId = getInternalFunction("getVirtualMethodId") val getInterfaceImplId = getInternalFunction("getInterfaceImplId") - val isSubClass = getInternalFunction("isSubClass") val isInterface = getInternalFunction("isInterface") val nullableEquals = getInternalFunction("nullableEquals") diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt index 6c05aa78c94..f68923a6ca5 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/DeclarationGenerator.kt @@ -275,14 +275,6 @@ class DeclarationGenerator(val context: WasmModuleCodegenContext) : IrElementVis private fun binaryDataStruct(classMetadata: ClassMetadata): ConstantDataStruct { val invalidIndex = -1 - val superClass = classMetadata.superClass?.klass - - val superClassSymbol: WasmSymbol = - superClass?.let { context.referenceClassId(it.symbol) } ?: WasmSymbol(invalidIndex) - - val superTypeField = - ConstantDataIntField("Super class", superClassSymbol) - val vtableSizeField = ConstantDataIntField( "V-table length", classMetadata.virtualMethods.size @@ -307,7 +299,6 @@ class DeclarationGenerator(val context: WasmModuleCodegenContext) : IrElementVis return ConstantDataStruct( "Class TypeInfo: ${classMetadata.klass.fqNameWhenAvailable} ", listOf( - superTypeField, interfaceTablePtr, vtableSizeField, vtableArray, diff --git a/libraries/stdlib/wasm/internal/kotlin/wasm/internal/TypeInfo.kt b/libraries/stdlib/wasm/internal/kotlin/wasm/internal/TypeInfo.kt index 4888382339f..1e0102e95f3 100644 --- a/libraries/stdlib/wasm/internal/kotlin/wasm/internal/TypeInfo.kt +++ b/libraries/stdlib/wasm/internal/kotlin/wasm/internal/TypeInfo.kt @@ -10,8 +10,7 @@ package kotlin.wasm.internal internal const val TYPE_INFO_ELEMENT_SIZE = 4 -internal const val SUPER_CLASS_ID_OFFSET = 0 -internal const val TYPE_INFO_ITABLE_PTR_OFFSET = SUPER_CLASS_ID_OFFSET + TYPE_INFO_ELEMENT_SIZE +internal const val TYPE_INFO_ITABLE_PTR_OFFSET = 0 internal const val TYPE_INFO_VTABLE_LENGTH_OFFSET = TYPE_INFO_ITABLE_PTR_OFFSET + TYPE_INFO_ELEMENT_SIZE internal const val TYPE_INFO_VTABLE_OFFSET = TYPE_INFO_VTABLE_LENGTH_OFFSET + TYPE_INFO_ELEMENT_SIZE @@ -27,9 +26,6 @@ internal fun getItablePtr(obj: Any): Int = internal fun getInterfaceListLength(itablePtr: Int): Int = wasm_i32_load(itablePtr + TYPE_INFO_VTABLE_LENGTH_OFFSET) -internal fun getSuperClassId(obj: Any): Int = - wasm_i32_load(obj.typeInfo + SUPER_CLASS_ID_OFFSET) - internal fun getVirtualMethodId(obj: Any, virtualFunctionSlot: Int): Int { val vtablePtr = getVtablePtr(obj) val methodIdPtr = vtablePtr + virtualFunctionSlot * TYPE_INFO_ELEMENT_SIZE @@ -54,18 +50,6 @@ internal fun getInterfaceImplId(obj: Any, interfaceId: Int): Int { return -1 } - -internal fun isSubClassOfImpl(currentClassId: Int, otherClassId: Int): Boolean { - if (currentClassId == otherClassId) return true - val anyClassId = wasmClassId() - if (currentClassId == anyClassId && otherClassId != anyClassId) return false - return isSubClassOfImpl(wasm_i32_load(currentClassId + SUPER_CLASS_ID_OFFSET), otherClassId) -} - -internal fun isSubClass(obj: Any, classId: Int): Boolean { - return isSubClassOfImpl(obj.typeInfo, classId) -} - internal fun isInterface(obj: Any, interfaceId: Int): Boolean { return getInterfaceImplId(obj, interfaceId) != -1 }