From 36d4e29253678a116c7068beb50b253f3454ae22 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Wed, 7 Dec 2022 12:43:44 +0100 Subject: [PATCH] [Wasm] Require location for `buildConstI32Symbol` and fix all usages --- .../kotlin/backend/wasm/ir2wasm/BodyGenerator.kt | 13 +++++-------- .../backend/wasm/ir2wasm/DeclarationGenerator.kt | 4 ++-- .../kotlin/wasm/ir/WasmExpressionBuilder.kt | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) 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 37354a824a6..6a565186faa 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 @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.backend.wasm.utils.isCanonical import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.backend.js.lower.PrimaryConstructorLowering -import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.getSourceLocation import org.jetbrains.kotlin.ir.backend.js.utils.erasedUpperBound import org.jetbrains.kotlin.ir.backend.js.utils.findUnitGetInstanceFunction import org.jetbrains.kotlin.ir.backend.js.utils.isDispatchReceiver @@ -300,7 +299,7 @@ class BodyGenerator( body.buildRefNull(WasmHeapType.Simple.Data) } - body.buildConstI32Symbol(context.referenceClassId(klassSymbol)) + body.buildConstI32Symbol(context.referenceClassId(klassSymbol), location) body.buildConstI32(0, location) // Any::_hashCode body.commentGroupEnd() } @@ -497,14 +496,14 @@ class BodyGenerator( val klass = call.getTypeArgument(0)!!.getClass() ?: error("No class given for wasmClassId intrinsic") assert(!klass.isInterface) - body.buildConstI32Symbol(context.referenceClassId(klass.symbol)) + body.buildConstI32Symbol(context.referenceClassId(klass.symbol), location) } wasmSymbols.wasmInterfaceId -> { val irInterface = call.getTypeArgument(0)!!.getClass() ?: error("No interface given for wasmInterfaceId intrinsic") assert(irInterface.isInterface) - body.buildConstI32Symbol(context.referenceInterfaceId(irInterface.symbol)) + body.buildConstI32Symbol(context.referenceInterfaceId(irInterface.symbol), location) } wasmSymbols.wasmIsInterface -> { @@ -574,11 +573,9 @@ class BodyGenerator( wasmSymbols.unsafeGetScratchRawMemory -> { - body.buildConstI32Symbol(context.scratchMemAddr) + body.buildConstI32Symbol(context.scratchMemAddr, location) } - - wasmSymbols.wasmArrayCopy -> { val immediate = WasmImmediate.GcType( context.referenceGcType(call.getTypeArgument(0)!!.getRuntimeClass(irBuiltIns).symbol) @@ -587,7 +584,7 @@ class BodyGenerator( } wasmSymbols.stringGetPoolSize -> { - body.buildConstI32Symbol(context.stringPoolSize) + body.buildConstI32Symbol(context.stringPoolSize, location) } wasmSymbols.wasmArrayNewData0 -> { 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 436091596c5..e4301ac8831 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 @@ -518,8 +518,8 @@ fun generateConstExpression(expression: IrConst<*>, body: WasmExpressionBuilder, val stringValue = kind.valueOf(expression) val (literalAddress, literalPoolId) = context.referenceStringLiteralAddressAndId(stringValue) body.commentGroupStart { "const string: \"$stringValue\"" } - body.buildConstI32Symbol(literalPoolId) - body.buildConstI32Symbol(literalAddress) + body.buildConstI32Symbol(literalPoolId, location) + body.buildConstI32Symbol(literalAddress, location) body.buildConstI32(stringValue.length, location) body.buildCall(context.referenceFunction(context.backendContext.wasmSymbols.stringGetLiteral), location) body.commentGroupEnd() 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 ad6f1a6f90f..f05d07d68d3 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 @@ -32,8 +32,8 @@ abstract class WasmExpressionBuilder { buildInstr(WasmOp.F64_CONST, location, WasmImmediate.ConstF64(value.toRawBits().toULong())) } - fun buildConstI32Symbol(value: WasmSymbol) { - buildInstr(WasmOp.I32_CONST, WasmImmediate.SymbolI32(value)) + fun buildConstI32Symbol(value: WasmSymbol, location: SourceLocation) { + buildInstr(WasmOp.I32_CONST, location, WasmImmediate.SymbolI32(value)) } fun buildUnreachable() {