[webkit-changes] [WebKit/WebKit] 5f18ff: Implement in-place interpreter prologue and loop OSR

Daniel Liu noreply at github.com
Mon Aug 14 16:51:58 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5f18ff5fc08d864caa2315af403ec63f535362fa
      https://github.com/WebKit/WebKit/commit/5f18ff5fc08d864caa2315af403ec63f535362fa
  Author: Daniel Liu <danlliu at umich.edu>
  Date:   2023-08-14 (Mon, 14 Aug 2023)

  Changed paths:
    A JSTests/wasm/ipint-tests/ipint-test-hot-12.js
    A JSTests/wasm/ipint-tests/ipint-test-hot-loop.js
    A JSTests/wasm/ipint-tests/ipint-test-hot.js
    M Source/JavaScriptCore/b3/B3Procedure.h
    M Source/JavaScriptCore/llint/InPlaceInterpreter.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
    M Source/JavaScriptCore/runtime/Options.cpp
    M Source/JavaScriptCore/runtime/OptionsList.h
    M Source/JavaScriptCore/wasm/WasmBBQPlan.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.h
    M Source/JavaScriptCore/wasm/WasmCalleeGroup.h
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmModuleInformation.h
    M Source/JavaScriptCore/wasm/WasmOMGPlan.cpp
    M Source/JavaScriptCore/wasm/WasmOSREntryPlan.cpp
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmSlowPaths.h

  Log Message:
  -----------
  Implement in-place interpreter prologue and loop OSR
https://bugs.webkit.org/show_bug.cgi?id=260083
rdar://113768807

Reviewed by Justin Michaud.

Add on stack replacement (OSR) functionality to the in-place interpreter, allowing tiering up to both BBQ and OMG JIT tiers. JS2 performance is comparable to LLInt, with local scores both at around 330.

* JSTests/wasm/ipint-tests/ipint-test-hot-12.js: Added.
(prng):
(async test):
* JSTests/wasm/ipint-tests/ipint-test-hot-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.i32.i32.local.0.i32.const.2.local.tee.1.i32.lt_s.then.i32.const.0.return.loop.local.0.local.1.i32.rem_s.then.local.1.i32.const.1.i32.add.local.1.else.i32.const.0.return.local.1.local.0.i32.lt_s.br_if.0.local.0.local.1.i32.eq.return.async test):
* JSTests/wasm/ipint-tests/ipint-test-hot.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):
* Source/JavaScriptCore/b3/B3Procedure.h:
(JSC::B3::Procedure::usesSIMD const):
* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:
(ipint_probe_precall):
(ipint_probe_calling):
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::IPIntCallee::IPIntCallee):
* Source/JavaScriptCore/wasm/WasmCallee.h:
* Source/JavaScriptCore/wasm/WasmCalleeGroup.h:
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
(JSC::Wasm::FunctionIPIntMetadataGenerator::tierUpCounter):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::notifyFunctionUsesSIMD):
(JSC::Wasm::IPIntGenerator::condenseControlFlowInstructions):
(JSC::Wasm::IPIntGenerator::addLoop):
(JSC::Wasm::IPIntGenerator::endTopLevel):
* Source/JavaScriptCore/wasm/WasmModuleInformation.h:
(JSC::Wasm::ModuleInformation::usesSIMD const):
* Source/JavaScriptCore/wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* Source/JavaScriptCore/wasm/WasmOSREntryPlan.cpp:
(JSC::Wasm::OSREntryPlan::work):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::shouldJIT):
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_IPINT_EXTERN_CPP_DECL):
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* Source/JavaScriptCore/wasm/WasmSlowPaths.h:

Canonical link: https://commits.webkit.org/266887@main




More information about the webkit-changes mailing list