[Wasm] Disable range checks for arrays. Add cli argument to enable them back.
This commit is contained in:
@@ -156,6 +156,8 @@ class WasmSymbols(
|
||||
|
||||
val wasmRefCast = getInternalFunction("wasm_ref_cast")
|
||||
|
||||
val rangeCheck = getInternalFunction("rangeCheck")
|
||||
|
||||
val boxIntrinsic: IrSimpleFunctionSymbol = getInternalFunction("boxIntrinsic")
|
||||
val unboxIntrinsic: IrSimpleFunctionSymbol = getInternalFunction("unboxIntrinsic")
|
||||
|
||||
|
||||
+8
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.util.isInterface
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||
import org.jetbrains.kotlin.wasm.ir.*
|
||||
|
||||
class BodyGenerator(val context: WasmFunctionCodegenContext) : IrElementVisitorVoid {
|
||||
@@ -258,6 +259,13 @@ class BodyGenerator(val context: WasmFunctionCodegenContext) : IrElementVisitorV
|
||||
return
|
||||
}
|
||||
|
||||
// Range check intrinsic is a special case because it doesn't require arguments on the stack.
|
||||
if (call.symbol == wasmSymbols.rangeCheck &&
|
||||
backendContext.configuration.getNotNull(JSConfigurationKeys.WASM_ENABLE_ARRAY_RANGE_CHECKS) == false) {
|
||||
body.buildGetUnit()
|
||||
return
|
||||
}
|
||||
|
||||
val function: IrFunction = call.symbol.owner.realOverrideTarget
|
||||
|
||||
call.dispatchReceiver?.let { generateExpression(it) }
|
||||
|
||||
Reference in New Issue
Block a user