Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 03154b1eb9203c3895556dc7dde41b6c3b090c5d https://github.com/WebKit/WebKit/commit/03154b1eb9203c3895556dc7dde41b6c3b090c5d Author: Daniel Liu <danl...@umich.edu> Date: 2023-07-20 (Thu, 20 Jul 2023)
Changed paths: A JSTests/wasm/ipint-tests/ipint-setup-stress-i32.js A JSTests/wasm/ipint-tests/ipint-setup-stress-loop.js A JSTests/wasm/ipint-tests/ipint-setup-stress.js A JSTests/wasm/ipint-tests/ipint-stress-i32.js A JSTests/wasm/ipint-tests/ipint-stress-i32.wasm A JSTests/wasm/ipint-tests/ipint-stress-loop.js A JSTests/wasm/ipint-tests/ipint-stress-loop.wasm A JSTests/wasm/ipint-tests/ipint-stress.wasm A JSTests/wasm/ipint-tests/ipint-test-add32.js A JSTests/wasm/ipint-tests/ipint-test-block-nopop.js A JSTests/wasm/ipint-tests/ipint-test-block.js A JSTests/wasm/ipint-tests/ipint-test-call-arg.js A JSTests/wasm/ipint-tests/ipint-test-call-noarg.js A JSTests/wasm/ipint-tests/ipint-test-f32-ops.js A JSTests/wasm/ipint-tests/ipint-test-f64-ops.js A JSTests/wasm/ipint-tests/ipint-test-fibonacci.js A JSTests/wasm/ipint-tests/ipint-test-i32-comparisons.js A JSTests/wasm/ipint-tests/ipint-test-i32-ops.js A JSTests/wasm/ipint-tests/ipint-test-i64-ops.js A JSTests/wasm/ipint-tests/ipint-test-if-else-multiret.js A JSTests/wasm/ipint-tests/ipint-test-if-else.js A JSTests/wasm/ipint-tests/ipint-test-local.js A JSTests/wasm/ipint-tests/ipint-test-loop-add.js A JSTests/wasm/ipint-tests/ipint-test-loop-nobr.js A JSTests/wasm/ipint-tests/ipint-test-loop.js A JSTests/wasm/ipint-tests/ipint-test-mixed-params.js A JSTests/wasm/ipint-tests/ipint-test-param.js A JSTests/wasm/ipint-tests/ipint-test-return32.js A JSTests/wasm/ipint-tests/ipint-test-return64.js A JSTests/wasm/ipint-tests/ipint-test-returnf32.js A JSTests/wasm/ipint-tests/ipint-test-returnf64.js A JSTests/wasm/ipint-tests/ipint-test-returnlarge32.js A JSTests/wasm/ipint-tests/ipint-test-stress.js A JSTests/wasm/ipint-tests/perf.py M Source/JavaScriptCore/CMakeLists.txt M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj M Source/JavaScriptCore/Sources.txt A Source/JavaScriptCore/llint/InPlaceInterpreter.asm A Source/JavaScriptCore/llint/InPlaceInterpreter.cpp A Source/JavaScriptCore/llint/InPlaceInterpreter.h M Source/JavaScriptCore/llint/LLIntThunks.cpp M Source/JavaScriptCore/llint/LLIntThunks.h M Source/JavaScriptCore/llint/LowLevelInterpreter.asm M Source/JavaScriptCore/llint/LowLevelInterpreter.cpp M Source/JavaScriptCore/offlineasm/asm.rb M Source/JavaScriptCore/offlineasm/ast.rb M Source/JavaScriptCore/offlineasm/backends.rb M Source/JavaScriptCore/offlineasm/parser.rb M Source/JavaScriptCore/offlineasm/transform.rb M Source/JavaScriptCore/offlineasm/x86.rb M Source/JavaScriptCore/runtime/InitializeThreading.cpp M Source/JavaScriptCore/runtime/OptionsList.h M Source/JavaScriptCore/wasm/WasmCallee.cpp M Source/JavaScriptCore/wasm/WasmCallee.h M Source/JavaScriptCore/wasm/WasmCalleeGroup.cpp M Source/JavaScriptCore/wasm/WasmCalleeGroup.h M Source/JavaScriptCore/wasm/WasmCallingConvention.h M Source/JavaScriptCore/wasm/WasmCompilationMode.cpp M Source/JavaScriptCore/wasm/WasmCompilationMode.h A Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp A Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h A Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp A Source/JavaScriptCore/wasm/WasmIPIntGenerator.h A Source/JavaScriptCore/wasm/WasmIPIntPlan.cpp A Source/JavaScriptCore/wasm/WasmIPIntPlan.h M Source/JavaScriptCore/wasm/WasmModule.cpp M Source/JavaScriptCore/wasm/WasmModule.h Log Message: ----------- Implement fundamentals of in-place interpreter https://bugs.webkit.org/show_bug.cgi?id=258950 rdar://111932567 Reviewed by Yusuke Suzuki. JSC has been looking to implement an in-place WebAssembly interpreter to improve startup time as well as memory usage. By avoiding converting Wasm bytecode to LLInt bytecode, and instead directly executing Wasm bytecode with a side table, we are able to reduce startup time by roughly 33%. This comes at roughly a 5% runtime regression. Performance and memory on a 3 MB Wasm function: IPInt: (BBQ+OMG disabled) - average runtime: 1413.9 ms (N = 20) - average startup time: 1608.55 ms (N = 20) - average peak memory: 509.3 MB (N = 20) LLInt: (BBQ+OMG disabled) - average runtime: 1358.95 ms (N = 20) - average startup time: 2436.3 ms (N = 20) - average peak memory: 483.0 MB (N = 20) BBQ: (LLInt disabled) - average runtime: 905.95 ms (N = 20) - average startup time: 2440.65 ms (N = 20) - average peak memory: 480.5 MB (N = 20) JSC: - average runtime: 961.65 ms (N = 20) - average startup time: 2443.7 ms (N = 20) - average peak memory: 484.05 MB (N = 20) * JSTests/wasm/ipint-tests/ipint-test-block-nopop.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.block.result.i32.i32.const.1.br.0.i32.const.2.i32.add.return.async test): * JSTests/wasm/ipint-tests/ipint-test-block.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.block.result.i32.i32.i32.const.1.block.result.i32.i32.const.1.i32.const.2.i32.const.3.br.1.drop.i32.const.2.i32.add.i32.const.2.i32.const.3.br.0.drop.drop.i32.const.2.i32.add.return.async test): * JSTests/wasm/ipint-tests/ipint-test-f32-ops.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.f32.result.f32.local.0.local.1.f32.add.return.async test): * JSTests/wasm/ipint-tests/ipint-test-f64-ops.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.0.i32.clz.return.func.export.string_appeared_here.param.i32.result.i32.local.0.i32.ctz.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.add.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.sub.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.mul.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.div_s.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.div_u.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.and.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.or.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.xor.return.async test): * JSTests/wasm/ipint-tests/ipint-test-fibonacci.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.i32.i32.i32.const.1.local.1.loop.local.2.local.1.local.2.i32.add.local.2.local.1.local.0.i32.const.1.i32.sub.local.tee.0.i32.const.0.i32.gt_s.br_if.0.local.2.return.async test): * JSTests/wasm/ipint-tests/ipint-test-i32-comparisons.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.0.i32.eqz.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.eq.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.ne.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.lt_s.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.lt_u.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.gt_s.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.gt_u.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.le_s.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.le_u.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.ge_s.return.func.export.string_appeared_he * JSTests/wasm/ipint-tests/ipint-test-i32-ops.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.0.i32.clz.return.func.export.string_appeared_here.param.i32.result.i32.local.0.i32.ctz.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.add.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.sub.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.mul.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.div_s.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.div_u.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.and.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.or.return.func.export.string_appeared_here.param.i32.i32.result.i32.local.0.local.1.i32.xor.return.func.export.string_appeared_here.param.i32.i * JSTests/wasm/ipint-tests/ipint-test-i64-ops.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i64.result.i64.local.0.i64.clz.return.func.export.string_appeared_here.param.i64.result.i64.local.0.i64.ctz.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.add.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.sub.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.mul.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.div_s.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.div_u.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.and.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.or.return.func.export.string_appeared_here.param.i64.i64.result.i64.local.0.local.1.i64.xor.return.func.export.string_appeared_here.param.i64.i * JSTests/wasm/ipint-tests/ipint-test-if-else-multiret.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.i32.i32.result.i32.local.0.result.i32.i32.then.local.1.local.1.else.local.2.local.2.i32.add.return.async test): * JSTests/wasm/ipint-tests/ipint-test-if-else.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.i32.i32.result.i32.local.0.result.i32.then.local.1.else.local.2.return.async test): * JSTests/wasm/ipint-tests/ipint-test-local.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.i32.local.0.local.0.local.1.i32.add.return.async test): * JSTests/wasm/ipint-tests/ipint-test-loop-add.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.i32.loop.local.0.local.1.i32.add.local.1.local.0.i32.const.1.i32.sub.local.tee.0.i32.const.0.i32.gt_s.br_if.0.local.1.return.async test): * JSTests/wasm/ipint-tests/ipint-test-loop-nobr.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.loop.result.i32.i32.const.727.return.async test): * JSTests/wasm/ipint-tests/ipint-test-loop.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.0.loop.param.i32.result.i32.i32.const.1.i32.add.local.tee.0.local.0.i32.const.5.i32.sub.br_if.1.return.async test): * JSTests/wasm/ipint-tests/ipint-test-mixed-params.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.f32.i32.result.f32.local.0.return.async test): * JSTests/wasm/ipint-tests/ipint-test-param.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.param.i32.result.i32.local.0.return.async test): * JSTests/wasm/ipint-tests/ipint-test-return32.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.result.i32.i32.const.5.return.async test): * JSTests/wasm/ipint-tests/ipint-test-return64.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.result.i64.i64.const.8.return.async test): * JSTests/wasm/ipint-tests/ipint-test-returnf32.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.result.f32.f32.const.3.25.return.async test): * JSTests/wasm/ipint-tests/ipint-test-returnf64.js: Added. (from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.func.export.string_appeared_here.result.f64.f64.const.2.125.return.async test): * JSTests/wasm/ipint-tests/ipint-test-stress.js: Added. (load.string_appeared_here.import.as.assert.from.string_appeared_here.let.prologue.module.func.export.string_appeared_here.param.i32.result.i32.local.i32.i32.let.wat.i32.const.1.local.1.loop.local.2.local.1.local.2.i32.add.local.2.local.1.local.0.i32.const.1.i32.sub.local.tee.0.i32.const.0.i32.gt_s.br_if.0.let.postlogue.local.2.return.async test): * Source/JavaScriptCore/CMakeLists.txt: * Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: * Source/JavaScriptCore/Sources.txt: * Source/JavaScriptCore/jit/RegisterSet.cpp: (JSC::RegisterSetBuilder::ipintBaselineCalleeSaveRegisters): * Source/JavaScriptCore/jit/RegisterSet.h: * Source/JavaScriptCore/llint/InPlaceInterpreter.asm: Added. * Source/JavaScriptCore/llint/InPlaceInterpreter.cpp: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp. (JSC::IPInt::initialize): (JSC::IPInt::cIPIntDispatchProbe): * Source/JavaScriptCore/llint/InPlaceInterpreter.h: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp. * Source/JavaScriptCore/llint/LLIntThunks.cpp: (JSC::LLInt::inPlaceInterpreterEntryThunk): * Source/JavaScriptCore/llint/LLIntThunks.h: * Source/JavaScriptCore/llint/LowLevelInterpreter.asm: * Source/JavaScriptCore/runtime/InitializeThreading.cpp: (JSC::initialize): * Source/JavaScriptCore/runtime/OptionsList.h: * Source/JavaScriptCore/wasm/WasmCallee.cpp: (JSC::Wasm::Callee::runWithDowncast): (JSC::Wasm::IPIntCallee::IPIntCallee): (JSC::Wasm::IPIntCallee::setEntrypoint): (JSC::Wasm::IPIntCallee::calleeSaveRegistersImpl): * Source/JavaScriptCore/wasm/WasmCallee.h: * Source/JavaScriptCore/wasm/WasmCalleeGroup.cpp: (JSC::Wasm::CalleeGroup::create): (JSC::Wasm::CalleeGroup::CalleeGroup): * Source/JavaScriptCore/wasm/WasmCalleeGroup.h: * Source/JavaScriptCore/wasm/WasmCallingConvention.h: * Source/JavaScriptCore/wasm/WasmCompilationMode.cpp: (JSC::Wasm::makeString): * Source/JavaScriptCore/wasm/WasmCompilationMode.h: (JSC::Wasm::isOSREntry): (JSC::Wasm::isAnyBBQ): (JSC::Wasm::isAnyOMG): * Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp: Added. (JSC::Wasm::sizeOfLEB128): (JSC::Wasm::FunctionIPIntMetadataGenerator::addBlankSpace): (JSC::Wasm::FunctionIPIntMetadataGenerator::addRawValue): (JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantInt32): (JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantInt32AndLengthOfOtherInt32): (JSC::Wasm::FunctionIPIntMetadataGenerator::addLEB128ConstantAndLengthForType): (JSC::Wasm::FunctionIPIntMetadataGenerator::addReturnData): * Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h: Added. (JSC::Wasm::FunctionIPIntMetadataGenerator::FunctionIPIntMetadataGenerator): (JSC::Wasm::FunctionIPIntMetadataGenerator::functionIndex const): (JSC::Wasm::FunctionIPIntMetadataGenerator::tailCallSuccessors const): (JSC::Wasm::FunctionIPIntMetadataGenerator::tailCallClobbersInstance const): (JSC::Wasm::FunctionIPIntMetadataGenerator::getBytecode const): (JSC::Wasm::FunctionIPIntMetadataGenerator::getMetadata const): * Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp: Added. (JSC::Wasm::ControlType::ControlType): (JSC::Wasm::ControlType::isIf): (JSC::Wasm::ControlType::isTry): (JSC::Wasm::ControlType::isAnyCatch): (JSC::Wasm::ControlType::isTopLevel): (JSC::Wasm::ControlType::isLoop): (JSC::Wasm::ControlType::isBlock): (JSC::Wasm::ControlType::isCatch): (JSC::Wasm::ControlType::dump const): (JSC::Wasm::ControlType::blockType const): (JSC::Wasm::ControlType::catchKind const): (JSC::Wasm::ControlType::signature const): (JSC::Wasm::ControlType::branchTargetType const): (JSC::Wasm::ControlType::branchTargetArity const): (JSC::Wasm::IPIntGenerator::emptyExpression): (JSC::Wasm::IPIntGenerator::fail const): (JSC::Wasm::IPIntGenerator::notifyFunctionUsesSIMD): (JSC::Wasm::IPIntGenerator::endTopLevel): (JSC::Wasm::IPIntGenerator::setParser): (JSC::Wasm::IPIntGenerator::didFinishParsingLocals): (JSC::Wasm::IPIntGenerator::didPopValueFromStack): (JSC::Wasm::IPIntGenerator::willParseOpcode): (JSC::Wasm::IPIntGenerator::didParseOpcode): (JSC::Wasm::IPIntGenerator::dump): (JSC::Wasm::IPIntGenerator::addDrop): (JSC::Wasm::IPIntGenerator::IPIntGenerator): (JSC::Wasm::IPIntGenerator::addConstant): (JSC::Wasm::IPIntGenerator::addSIMDLoad): (JSC::Wasm::IPIntGenerator::addSIMDStore): (JSC::Wasm::IPIntGenerator::addSIMDSplat): (JSC::Wasm::IPIntGenerator::addSIMDShuffle): (JSC::Wasm::IPIntGenerator::addSIMDShift): (JSC::Wasm::IPIntGenerator::addSIMDExtmul): (JSC::Wasm::IPIntGenerator::addSIMDLoadSplat): (JSC::Wasm::IPIntGenerator::addSIMDLoadLane): (JSC::Wasm::IPIntGenerator::addSIMDStoreLane): (JSC::Wasm::IPIntGenerator::addSIMDLoadExtend): (JSC::Wasm::IPIntGenerator::addSIMDLoadPad): (JSC::Wasm::IPIntGenerator::addExtractLane): (JSC::Wasm::IPIntGenerator::addReplaceLane): (JSC::Wasm::IPIntGenerator::addSIMDI_V): (JSC::Wasm::IPIntGenerator::addSIMDV_V): (JSC::Wasm::IPIntGenerator::addSIMDBitwiseSelect): (JSC::Wasm::IPIntGenerator::addSIMDRelOp): (JSC::Wasm::IPIntGenerator::addSIMDV_VV): (JSC::Wasm::IPIntGenerator::addRefIsNull): (JSC::Wasm::IPIntGenerator::addRefFunc): (JSC::Wasm::IPIntGenerator::addRefAsNonNull): (JSC::Wasm::IPIntGenerator::addRefEq): (JSC::Wasm::IPIntGenerator::addTableGet): (JSC::Wasm::IPIntGenerator::addTableSet): (JSC::Wasm::IPIntGenerator::addTableInit): (JSC::Wasm::IPIntGenerator::addElemDrop): (JSC::Wasm::IPIntGenerator::addTableSize): (JSC::Wasm::IPIntGenerator::addTableGrow): (JSC::Wasm::IPIntGenerator::addTableFill): (JSC::Wasm::IPIntGenerator::addTableCopy): (JSC::Wasm::IPIntGenerator::addArguments): (JSC::Wasm::IPIntGenerator::addLocal): (JSC::Wasm::IPIntGenerator::getLocal): (JSC::Wasm::IPIntGenerator::setLocal): (JSC::Wasm::IPIntGenerator::getGlobal): (JSC::Wasm::IPIntGenerator::setGlobal): (JSC::Wasm::IPIntGenerator::load): (JSC::Wasm::IPIntGenerator::store): (JSC::Wasm::IPIntGenerator::addGrowMemory): (JSC::Wasm::IPIntGenerator::addCurrentMemory): (JSC::Wasm::IPIntGenerator::addMemoryFill): (JSC::Wasm::IPIntGenerator::addMemoryCopy): (JSC::Wasm::IPIntGenerator::addMemoryInit): (JSC::Wasm::IPIntGenerator::addDataDrop): (JSC::Wasm::IPIntGenerator::atomicLoad): (JSC::Wasm::IPIntGenerator::atomicStore): (JSC::Wasm::IPIntGenerator::atomicBinaryRMW): (JSC::Wasm::IPIntGenerator::atomicCompareExchange): (JSC::Wasm::IPIntGenerator::atomicWait): (JSC::Wasm::IPIntGenerator::atomicNotify): (JSC::Wasm::IPIntGenerator::atomicFence): (JSC::Wasm::IPIntGenerator::addI31New): (JSC::Wasm::IPIntGenerator::addI31GetS): (JSC::Wasm::IPIntGenerator::addI31GetU): (JSC::Wasm::IPIntGenerator::addArrayNew): (JSC::Wasm::IPIntGenerator::addArrayNewData): (JSC::Wasm::IPIntGenerator::addArrayNewElem): (JSC::Wasm::IPIntGenerator::addArrayNewFixed): (JSC::Wasm::IPIntGenerator::addArrayNewDefault): (JSC::Wasm::IPIntGenerator::addArrayGet): (JSC::Wasm::IPIntGenerator::addArraySet): (JSC::Wasm::IPIntGenerator::addArrayLen): (JSC::Wasm::IPIntGenerator::addStructNew): (JSC::Wasm::IPIntGenerator::addStructNewDefault): (JSC::Wasm::IPIntGenerator::addStructGet): (JSC::Wasm::IPIntGenerator::addStructSet): (JSC::Wasm::IPIntGenerator::addRefTest): (JSC::Wasm::IPIntGenerator::addRefCast): (JSC::Wasm::IPIntGenerator::addExternInternalize): (JSC::Wasm::IPIntGenerator::addExternExternalize): (JSC::Wasm::IPIntGenerator::addI32Add): (JSC::Wasm::IPIntGenerator::addI64Add): (JSC::Wasm::IPIntGenerator::addI32Sub): (JSC::Wasm::IPIntGenerator::addI64Sub): (JSC::Wasm::IPIntGenerator::addI32Mul): (JSC::Wasm::IPIntGenerator::addI64Mul): (JSC::Wasm::IPIntGenerator::addI32DivS): (JSC::Wasm::IPIntGenerator::addI32DivU): (JSC::Wasm::IPIntGenerator::addI64DivS): (JSC::Wasm::IPIntGenerator::addI64DivU): (JSC::Wasm::IPIntGenerator::addI32RemS): (JSC::Wasm::IPIntGenerator::addI32RemU): (JSC::Wasm::IPIntGenerator::addI64RemS): (JSC::Wasm::IPIntGenerator::addI64RemU): (JSC::Wasm::IPIntGenerator::addI32And): (JSC::Wasm::IPIntGenerator::addI64And): (JSC::Wasm::IPIntGenerator::addI32Xor): (JSC::Wasm::IPIntGenerator::addI64Xor): (JSC::Wasm::IPIntGenerator::addI32Or): (JSC::Wasm::IPIntGenerator::addI64Or): (JSC::Wasm::IPIntGenerator::addI32Shl): (JSC::Wasm::IPIntGenerator::addI32ShrU): (JSC::Wasm::IPIntGenerator::addI32ShrS): (JSC::Wasm::IPIntGenerator::addI64Shl): (JSC::Wasm::IPIntGenerator::addI64ShrU): (JSC::Wasm::IPIntGenerator::addI64ShrS): (JSC::Wasm::IPIntGenerator::addI32Rotl): (JSC::Wasm::IPIntGenerator::addI64Rotl): (JSC::Wasm::IPIntGenerator::addI32Rotr): (JSC::Wasm::IPIntGenerator::addI64Rotr): (JSC::Wasm::IPIntGenerator::addI32Popcnt): (JSC::Wasm::IPIntGenerator::addI64Popcnt): (JSC::Wasm::IPIntGenerator::addI32Clz): (JSC::Wasm::IPIntGenerator::addI64Clz): (JSC::Wasm::IPIntGenerator::addI32Ctz): (JSC::Wasm::IPIntGenerator::addI64Ctz): (JSC::Wasm::IPIntGenerator::addF32Add): (JSC::Wasm::IPIntGenerator::addF64Add): (JSC::Wasm::IPIntGenerator::addF32Sub): (JSC::Wasm::IPIntGenerator::addF64Sub): (JSC::Wasm::IPIntGenerator::addF32Mul): (JSC::Wasm::IPIntGenerator::addF64Mul): (JSC::Wasm::IPIntGenerator::addF32Div): (JSC::Wasm::IPIntGenerator::addF64Div): (JSC::Wasm::IPIntGenerator::addF32Min): (JSC::Wasm::IPIntGenerator::addF32Max): (JSC::Wasm::IPIntGenerator::addF64Min): (JSC::Wasm::IPIntGenerator::addF64Max): (JSC::Wasm::IPIntGenerator::addF32Nearest): (JSC::Wasm::IPIntGenerator::addF64Nearest): (JSC::Wasm::IPIntGenerator::addF32Floor): (JSC::Wasm::IPIntGenerator::addF64Floor): (JSC::Wasm::IPIntGenerator::addF32Ceil): (JSC::Wasm::IPIntGenerator::addF64Ceil): (JSC::Wasm::IPIntGenerator::addF32Copysign): (JSC::Wasm::IPIntGenerator::addF64Copysign): (JSC::Wasm::IPIntGenerator::addF32Sqrt): (JSC::Wasm::IPIntGenerator::addF64Sqrt): (JSC::Wasm::IPIntGenerator::addF32Neg): (JSC::Wasm::IPIntGenerator::addF64Neg): (JSC::Wasm::IPIntGenerator::addF32Abs): (JSC::Wasm::IPIntGenerator::addF64Abs): (JSC::Wasm::IPIntGenerator::addI32Eq): (JSC::Wasm::IPIntGenerator::addI32Ne): (JSC::Wasm::IPIntGenerator::addI32LtS): (JSC::Wasm::IPIntGenerator::addI32LtU): (JSC::Wasm::IPIntGenerator::addI32LeS): (JSC::Wasm::IPIntGenerator::addI32LeU): (JSC::Wasm::IPIntGenerator::addI32GtS): (JSC::Wasm::IPIntGenerator::addI32GtU): (JSC::Wasm::IPIntGenerator::addI32GeU): (JSC::Wasm::IPIntGenerator::addI32GeS): (JSC::Wasm::IPIntGenerator::addI32Eqz): (JSC::Wasm::IPIntGenerator::addI64Eq): (JSC::Wasm::IPIntGenerator::addI64Ne): (JSC::Wasm::IPIntGenerator::addI64GtS): (JSC::Wasm::IPIntGenerator::addI64GtU): (JSC::Wasm::IPIntGenerator::addI64GeS): (JSC::Wasm::IPIntGenerator::addI64GeU): (JSC::Wasm::IPIntGenerator::addI64LtS): (JSC::Wasm::IPIntGenerator::addI64LtU): (JSC::Wasm::IPIntGenerator::addI64LeS): (JSC::Wasm::IPIntGenerator::addI64LeU): (JSC::Wasm::IPIntGenerator::addI64Eqz): (JSC::Wasm::IPIntGenerator::addF32Eq): (JSC::Wasm::IPIntGenerator::addF32Ne): (JSC::Wasm::IPIntGenerator::addF32Lt): (JSC::Wasm::IPIntGenerator::addF32Le): (JSC::Wasm::IPIntGenerator::addF32Gt): (JSC::Wasm::IPIntGenerator::addF32Ge): (JSC::Wasm::IPIntGenerator::addF64Eq): (JSC::Wasm::IPIntGenerator::addF64Ne): (JSC::Wasm::IPIntGenerator::addF64Lt): (JSC::Wasm::IPIntGenerator::addF64Le): (JSC::Wasm::IPIntGenerator::addF64Gt): (JSC::Wasm::IPIntGenerator::addF64Ge): (JSC::Wasm::IPIntGenerator::addI64ExtendSI32): (JSC::Wasm::IPIntGenerator::addI64ExtendUI32): (JSC::Wasm::IPIntGenerator::addI32Extend8S): (JSC::Wasm::IPIntGenerator::addI32Extend16S): (JSC::Wasm::IPIntGenerator::addI64Extend8S): (JSC::Wasm::IPIntGenerator::addI64Extend16S): (JSC::Wasm::IPIntGenerator::addI64Extend32S): (JSC::Wasm::IPIntGenerator::addF64Trunc): (JSC::Wasm::IPIntGenerator::addF32Trunc): (JSC::Wasm::IPIntGenerator::addI32TruncSF64): (JSC::Wasm::IPIntGenerator::addI32TruncSF32): (JSC::Wasm::IPIntGenerator::addI32TruncUF64): (JSC::Wasm::IPIntGenerator::addI32TruncUF32): (JSC::Wasm::IPIntGenerator::addI64TruncSF64): (JSC::Wasm::IPIntGenerator::addI64TruncSF32): (JSC::Wasm::IPIntGenerator::addI64TruncUF64): (JSC::Wasm::IPIntGenerator::addI64TruncUF32): (JSC::Wasm::IPIntGenerator::truncSaturated): (JSC::Wasm::IPIntGenerator::addI32WrapI64): (JSC::Wasm::IPIntGenerator::addF32DemoteF64): (JSC::Wasm::IPIntGenerator::addF64PromoteF32): (JSC::Wasm::IPIntGenerator::addF32ReinterpretI32): (JSC::Wasm::IPIntGenerator::addI32ReinterpretF32): (JSC::Wasm::IPIntGenerator::addF64ReinterpretI64): (JSC::Wasm::IPIntGenerator::addI64ReinterpretF64): (JSC::Wasm::IPIntGenerator::addF32ConvertSI32): (JSC::Wasm::IPIntGenerator::addF32ConvertUI32): (JSC::Wasm::IPIntGenerator::addF32ConvertSI64): (JSC::Wasm::IPIntGenerator::addF32ConvertUI64): (JSC::Wasm::IPIntGenerator::addF64ConvertSI32): (JSC::Wasm::IPIntGenerator::addF64ConvertUI32): (JSC::Wasm::IPIntGenerator::addF64ConvertSI64): (JSC::Wasm::IPIntGenerator::addF64ConvertUI64): (JSC::Wasm::IPIntGenerator::addTopLevel): (JSC::Wasm::IPIntGenerator::addSelect): (JSC::Wasm::IPIntGenerator::addBlock): (JSC::Wasm::IPIntGenerator::addLoop): (JSC::Wasm::IPIntGenerator::addIf): (JSC::Wasm::IPIntGenerator::addElse): (JSC::Wasm::IPIntGenerator::addElseToUnreachable): (JSC::Wasm::IPIntGenerator::addTry): (JSC::Wasm::IPIntGenerator::addCatch): (JSC::Wasm::IPIntGenerator::addCatchToUnreachable): (JSC::Wasm::IPIntGenerator::addCatchAll): (JSC::Wasm::IPIntGenerator::addCatchAllToUnreachable): (JSC::Wasm::IPIntGenerator::addDelegate): (JSC::Wasm::IPIntGenerator::addDelegateToUnreachable): (JSC::Wasm::IPIntGenerator::addThrow): (JSC::Wasm::IPIntGenerator::addRethrow): (JSC::Wasm::IPIntGenerator::addReturn): (JSC::Wasm::IPIntGenerator::addBranch): (JSC::Wasm::IPIntGenerator::addSwitch): (JSC::Wasm::IPIntGenerator::endBlock): (JSC::Wasm::IPIntGenerator::addEndToUnreachable): (JSC::Wasm::IPIntGenerator::addCall): (JSC::Wasm::IPIntGenerator::addCallIndirect): (JSC::Wasm::IPIntGenerator::addCallRef): (JSC::Wasm::IPIntGenerator::addUnreachable): (JSC::Wasm::IPIntGenerator::addCrash): (JSC::Wasm::IPIntGenerator::finalize): (JSC::Wasm::parseAndCompileMetadata): * Source/JavaScriptCore/wasm/WasmIPIntGenerator.h: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp. * Source/JavaScriptCore/wasm/WasmIPIntPlan.cpp: Added. (JSC::Wasm::IPIntPlan::IPIntPlan): (JSC::Wasm::IPIntPlan::prepareImpl): (JSC::Wasm::IPIntPlan::compileFunction): (JSC::Wasm::IPIntPlan::didCompleteCompilation): (JSC::Wasm::IPIntPlan::completeInStreaming): (JSC::Wasm::IPIntPlan::didCompileFunctionInStreaming): (JSC::Wasm::IPIntPlan::didFailInStreaming): (JSC::Wasm::IPIntPlan::work): (JSC::Wasm::IPIntPlan::didReceiveFunctionData): (JSC::Wasm::IPIntPlan::addTailCallEdge): (JSC::Wasm::IPIntPlan::computeTransitiveTailCalls const): * Source/JavaScriptCore/wasm/WasmIPIntPlan.h: Added. * Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::parseAndCompileBytecode): * Source/JavaScriptCore/wasm/WasmModule.cpp: (JSC::Wasm::Module::Module): (JSC::Wasm::makeValidationResult): (JSC::Wasm::Module::validateSync): (JSC::Wasm::Module::validateAsync): (JSC::Wasm::Module::getOrCreateCalleeGroup): * Source/JavaScriptCore/wasm/WasmModule.h: (JSC::Wasm::Module::create): Canonical link: https://commits.webkit.org/266186@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes