[Wasm] Require location for buildConstI32Symbol and fix all usages
This commit is contained in:
+5
-8
@@ -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 -> {
|
||||
|
||||
+2
-2
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user