Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fa0d2ca34a9cdfc451719663ed074136e63ac3a0
      
https://github.com/WebKit/WebKit/commit/fa0d2ca34a9cdfc451719663ed074136e63ac3a0
  Author: Justin Michaud <[email protected]>
  Date:   2023-03-03 (Fri, 03 Mar 2023)

  Changed paths:
    M JSTests/wasm/function-tests/stack-trace.js
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-block.js
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-block.wasm
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-block.wat
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-catch.js
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-catch.wasm
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate-catch.wat
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate.js
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate.wasm
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-delegate.wat
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-tag-arg.js
    A 
JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-tag-arg.wasm
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch-with-tag-arg.wat
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch.js
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch.wasm
    A JSTests/wasm/stress/simple-inline-exception-inlinee-catch.wat
    A JSTests/wasm/stress/simple-inline-exception.js
    A JSTests/wasm/stress/simple-inline-exception.wasm
    A JSTests/wasm/stress/simple-inline-exception.wat
    A JSTests/wasm/stress/simple-inline-one-arg.js
    A JSTests/wasm/stress/simple-inline-one-arg.wasm
    A JSTests/wasm/stress/simple-inline-one-arg.wat
    A JSTests/wasm/stress/simple-inline.js
    A JSTests/wasm/stress/simple-inline.wasm
    A JSTests/wasm/stress/simple-inline.wat
    M JSTests/wasm/stress/tail-call.js
    M Source/JavaScriptCore/runtime/OptionsList.h
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmModuleInformation.h
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  Inline small wasm functions
https://bugs.webkit.org/show_bug.cgi?id=252717

Reviewed by Yusuke Suzuki.

Support inlining small wasm functions. When we decide to inline,
we parse the inlinee and add its b3 nodes directly to our graph.

Our inlinee's exception handlers are added directly, but they take care to add 
extra
buffer state for their catch handlers. This state is ignored in the caller.

Arguments and return values are handled transparently, and we skip the
prologue, epilogue or stack check as the caller should handle these things.

Finally, we add a new testing mode that aggressively inlines to test this new 
pass.

* JSTests/wasm/stress/simple-inline-exception.js: Added.
(catch):
* JSTests/wasm/stress/simple-inline-exception.wasm: Added.
* JSTests/wasm/stress/simple-inline-exception.wat: Added.
* JSTests/wasm/stress/simple-inline.js: Added.
* JSTests/wasm/stress/simple-inline.wasm: Added.
* JSTests/wasm/stress/simple-inline.wat: Added.
* Source/JavaScriptCore/b3/B3Generate.cpp:
(JSC::B3::generateToAir):
* Source/JavaScriptCore/b3/B3StackmapValue.cpp:
(JSC::B3::StackmapValue::dumpMeta const):
* Source/JavaScriptCore/b3/B3Value.cpp:
(JSC::B3::Value::generateCompilerConstructionSite):
(JSC::B3::Value::deepDump const):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::restoreCalleeSavesFromEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::restoreCalleeSavesFromVMEntryFrameCalleeSavesBufferImpl):
(JSC::AssemblyHelpers::emitSave):
(JSC::AssemblyHelpers::emitRestore):
(JSC::AssemblyHelpers::emitSaveCalleeSavesFor):
(JSC::AssemblyHelpers::emitRestoreCalleeSavesFor):
* Source/JavaScriptCore/jit/AssemblyHelpersSpoolers.h:
(JSC::AssemblyHelpers::Spooler::execute):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/runtime/VM.cpp:
(JSC::VM::throwException):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addStackMap):
(JSC::Wasm::B3IRGenerator::takeStackmaps):
(JSC::Wasm::B3IRGenerator::takeExceptionHandlers):
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addLoop):
(JSC::Wasm::B3IRGenerator::preparePatchpointForExceptions):
(JSC::Wasm::B3IRGenerator::emitCatchImpl):
(JSC::Wasm::B3IRGenerator::addDelegateToUnreachable):
(JSC::Wasm::B3IRGenerator::addReturn):
(JSC::Wasm::B3IRGenerator::emitInlineDirectCall):
(JSC::Wasm::B3IRGenerator::addCall):
* Source/JavaScriptCore/wasm/WasmCallee.cpp:
(JSC::Wasm::Callee::Callee):
(JSC::Wasm::Callee::runWithDowncast):
* 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/WasmIRGeneratorHelpers.h:
(JSC::Wasm::emitThrowImpl):
* Source/JavaScriptCore/wasm/WasmModuleInformation.h:
(JSC::Wasm::ModuleInformation::functionWasmSizeImportSpace const):
(JSC::Wasm::ModuleInformation::functionWasmSize const):
(JSC::Wasm::ModuleInformation::isSIMDFunctionImportSpace const):
(JSC::Wasm::ModuleInformation::isSIMDFunction const):
(JSC::Wasm::ModuleInformation::addSIMDFunction):
(JSC::Wasm::ModuleInformation::doneSeeingFunction):
* Tools/Scripts/run-jsc-stress-tests:

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to