diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt index 35e2743a914..750baeb72a4 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt @@ -864,6 +864,8 @@ class BodyGenerator( WasmImmediate.MemArg(0u, 0u) WasmImmediateKind.STRUCT_TYPE_IDX -> WasmImmediate.GcType(getReferenceGcType()) + WasmImmediateKind.HEAP_TYPE -> + WasmImmediate.HeapType(WasmHeapType.Type(getReferenceGcType())) WasmImmediateKind.TYPE_IDX -> WasmImmediate.TypeIdx(getReferenceGcType()) diff --git a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/Operators.kt b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/Operators.kt index 17ba95bcb60..d2bd496535f 100644 --- a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/Operators.kt +++ b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/Operators.kt @@ -372,19 +372,19 @@ enum class WasmOp( I31_GET_U("i31.get_u", 0xFB_22), REF_EQ("ref.eq", 0xD5), - REF_TEST("ref.test", 0xFB_40, STRUCT_TYPE_IDX), - REF_TEST_NULL("ref.test null", 0xFB_48, STRUCT_TYPE_IDX), - REF_CAST("ref.cast", 0xFB_41, STRUCT_TYPE_IDX), - REF_CAST_NULL("ref.cast null", 0xFB_49, STRUCT_TYPE_IDX), + REF_TEST("ref.test", 0xFB_40, HEAP_TYPE), + REF_TEST_NULL("ref.test null", 0xFB_48, HEAP_TYPE), + REF_CAST("ref.cast", 0xFB_41, HEAP_TYPE), + REF_CAST_NULL("ref.cast null", 0xFB_49, HEAP_TYPE), // TODO remove as soon as V8 support new instructions, see below BR_ON_CAST_FAIL("br_on_cast_fail", 0xfb47, listOf(LABEL_IDX, STRUCT_TYPE_IDX)), // Not yet supported by V8 -// BR_ON_CAST("br_on_cast", 0xFB42, listOf(LABEL_IDX, STRUCT_TYPE_IDX)), -// BR_ON_CAST_NULL("br_on_cast null", 0xFB4A, listOf(LABEL_IDX, STRUCT_TYPE_IDX)), -// BR_ON_CAST_FAIL("br_on_cast_fail", 0xFB43, listOf(LABEL_IDX, STRUCT_TYPE_IDX)), -// BR_ON_CAST_FAIL_NULL("br_on_cast_fail null", 0xFB4B, listOf(LABEL_IDX, STRUCT_TYPE_IDX)), +// BR_ON_CAST("br_on_cast", 0xFB42, listOf(LABEL_IDX, HEAP_TYPE)), +// BR_ON_CAST_NULL("br_on_cast null", 0xFB4A, listOf(LABEL_IDX, HEAP_TYPE)), +// BR_ON_CAST_FAIL("br_on_cast_fail", 0xFB43, listOf(LABEL_IDX, HEAP_TYPE)), +// BR_ON_CAST_FAIL_NULL("br_on_cast_fail null", 0xFB4B, listOf(LABEL_IDX, HEAP_TYPE)), EXTERN_INTERNALIZE("extern.internalize", 0xfb70), // externref -> anyref EXTERN_EXTERNALIZE("extern.externalize", 0xfb71), // anyref -> externref diff --git a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt index 4b0a5b0c600..634a6bb7363 100644 --- a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt +++ b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt @@ -157,11 +157,11 @@ abstract class WasmExpressionBuilder { } fun buildRefCastNullStatic(toType: WasmSymbolReadOnly) { - buildInstr(WasmOp.REF_CAST_NULL, WasmImmediate.TypeIdx(toType)) + buildInstr(WasmOp.REF_CAST_NULL, WasmImmediate.HeapType(WasmHeapType.Type(toType))) } fun buildRefTestStatic(toType: WasmSymbolReadOnly) { - buildInstr(WasmOp.REF_TEST, WasmImmediate.TypeIdx(toType)) + buildInstr(WasmOp.REF_TEST, WasmImmediate.HeapType(WasmHeapType.Type(toType))) } fun buildRefNull(type: WasmHeapType) {