[Wasm] Require location for buildConstI32Symbol and fix all usages

This commit is contained in:
Zalim Bashorov
2022-12-07 12:43:44 +01:00
parent e69bbdd5b4
commit 36d4e29253
3 changed files with 9 additions and 12 deletions
@@ -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 -> {
@@ -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()
@@ -32,8 +32,8 @@ abstract class WasmExpressionBuilder {
buildInstr(WasmOp.F64_CONST, location, WasmImmediate.ConstF64(value.toRawBits().toULong()))
}
fun buildConstI32Symbol(value: WasmSymbol<Int>) {
buildInstr(WasmOp.I32_CONST, WasmImmediate.SymbolI32(value))
fun buildConstI32Symbol(value: WasmSymbol<Int>, location: SourceLocation) {
buildInstr(WasmOp.I32_CONST, location, WasmImmediate.SymbolI32(value))
}
fun buildUnreachable() {