[WASM] Add array copy intrinsic
This commit is contained in:
@@ -157,6 +157,7 @@ class WasmSymbols(
|
||||
val refIsNull = getInternalFunction("wasm_ref_is_null")
|
||||
val refTest = getInternalFunction("wasm_ref_test")
|
||||
val refCast = getInternalFunction("wasm_ref_cast")
|
||||
val wasmArrayCopy = getInternalFunction("wasm_array_copy")
|
||||
|
||||
val intToLong = getInternalFunction("wasm_i64_extend_i32_s")
|
||||
|
||||
|
||||
+2
-1
@@ -48,7 +48,8 @@ internal class WasmUsefulDeclarationProcessor(
|
||||
context.wasmSymbols.wasmInterfaceId,
|
||||
context.wasmSymbols.refCast,
|
||||
context.wasmSymbols.refTest,
|
||||
context.wasmSymbols.boxIntrinsic -> {
|
||||
context.wasmSymbols.boxIntrinsic,
|
||||
context.wasmSymbols.wasmArrayCopy -> {
|
||||
call.getTypeArgument(0)?.enqueueRuntimeClassOrAny(from, "intrinsic ${call.symbol.owner.name}")
|
||||
true
|
||||
}
|
||||
|
||||
+7
@@ -475,6 +475,13 @@ class BodyGenerator(
|
||||
body.buildConstI32Symbol(WasmSymbol(context.scratchMemSizeInBytes))
|
||||
}
|
||||
|
||||
wasmSymbols.wasmArrayCopy -> {
|
||||
val immediate = WasmImmediate.GcType(
|
||||
context.referenceGcType(call.getTypeArgument(0)!!.getRuntimeClass(irBuiltIns).symbol)
|
||||
)
|
||||
body.buildInstr(WasmOp.ARRAY_COPY, immediate, immediate)
|
||||
}
|
||||
|
||||
else -> {
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user