Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d8cbb604f912d93e8d282803766de3578aea5852
      
https://github.com/WebKit/WebKit/commit/d8cbb604f912d93e8d282803766de3578aea5852
  Author: Keith Miller <[email protected]>
  Date:   2024-09-11 (Wed, 11 Sep 2024)

  Changed paths:
    M JSTests/stress/ftl-put-by-id-setter-exception-interesting-live-state.js
    M JSTests/wasm/WASM.js
    M JSTests/wasm/wabt-wrapper.js
    M Source/JavaScriptCore/bytecode/Repatch.cpp
    M Source/JavaScriptCore/interpreter/CallFrame.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.h
    M Source/JavaScriptCore/jit/CCallHelpers.h
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/SamplingProfiler.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.cpp
    M Source/JavaScriptCore/wasm/WasmCallee.h
    M Source/JavaScriptCore/wasm/WasmCallingConvention.h
    M Source/JavaScriptCore/wasm/WasmCompilationMode.cpp
    M Source/JavaScriptCore/wasm/WasmCompilationMode.h
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.h
    M Source/JavaScriptCore/wasm/WasmSectionParser.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.h
    M Source/JavaScriptCore/wasm/js/JSToWasm.cpp
    M Source/JavaScriptCore/wasm/js/JSToWasm.h
    M Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp
    M Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h
    M Source/JavaScriptCore/wasm/js/WebAssemblyFunctionBase.cpp
    M Source/JavaScriptCore/wasm/js/WebAssemblyFunctionBase.h
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  Share JS -> Wasm IC entrypoint code
https://bugs.webkit.org/show_bug.cgi?id=278674
rdar://134724248

Reviewed by Yusuke Suzuki.

Right now JS -> Wasm IC code is specific to a WebAssemblyFunction but most of 
the
logic is shared between every function with the same Wasm::Signature. This 
patch now
shares the JIT code between every WebAssemblyFunction with the same signature.

To make this work we now get the instance/entrypoint from the 
WebAssemblyFunction
via a load rather than embedding the constants/address of constants into the 
function.

Most of the other logic is the same however, in order to not load the instance 
twice we
can no longer use wasmContextInstancePointer as a scratch. Now, for arm64 we 
just use
wasmBaseMemoryPointer as the scratch and for x86 we try to use argumentGPR0 
when not
initializing the first GP argument otherwise we clobber numberTagRegister. We 
could end
up using numberTagRegister again if there's a FP argument before the first GP 
argument
e.g. `(f32, i64) -> void`

* JSTests/wasm/WASM.js:
* JSTests/wasm/wabt-wrapper.js:
(export.async compile):
* Source/JavaScriptCore/bytecode/Repatch.cpp:
(JSC::jsToWasmICCodePtr):
* Source/JavaScriptCore/interpreter/CallFrame.cpp:
(JSC::CallFrame::dump const):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitLoadStructure):
* Source/JavaScriptCore/jit/AssemblyHelpers.h:
* Source/JavaScriptCore/jit/CCallHelpers.h:
(JSC::CCallHelpers::operationExceptionRegister):
* Source/JavaScriptCore/jsc.cpp:
(JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/SamplingProfiler.cpp:
(JSC::descriptionForLocation):
* Source/JavaScriptCore/wasm/WasmCallee.h:
* Source/JavaScriptCore/wasm/WasmCallingConvention.h:
(JSC::Wasm::JSCallingConvention::callInformationFor const):
* Source/JavaScriptCore/wasm/WasmCompilationMode.cpp:
(JSC::Wasm::makeString): Deleted.
* Source/JavaScriptCore/wasm/WasmCompilationMode.h:
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmOperations.h:
* Source/JavaScriptCore/wasm/WasmSectionParser.cpp:
(JSC::Wasm::SectionParser::parseException):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::FunctionSignature::FunctionSignature):
(JSC::Wasm::FunctionSignature::~FunctionSignature):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:
(JSC::Wasm::TypeDefinition::TypeDefinition):
(JSC::Wasm::FunctionSignature::FunctionSignature): Deleted.
* Source/JavaScriptCore/wasm/js/JSToWasm.cpp:
(JSC::Wasm::marshallJSResult):
(JSC::Wasm::createJSToWasmJITInterpreter):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::trampolineReservedStackSize):
(JSC::Wasm::FunctionSignature::jsToWasmICEntrypoint const):
* Source/JavaScriptCore/wasm/js/JSToWasm.h:
* Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::usedCalleeSaveRegisters):
(JSC::WebAssemblyFunction::WebAssemblyFunction):
(JSC::WebAssemblyFunction::usesTagRegisters const): Deleted.
(JSC::WebAssemblyFunction::calleeSaves const): Deleted.
(JSC::WebAssemblyFunction::usedCalleeSaveRegisters const): Deleted.
(JSC::trampolineReservedStackSize): Deleted.
(JSC::WebAssemblyFunction::jsCallEntrypointSlow): Deleted.
* Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h:
* Source/JavaScriptCore/wasm/js/WebAssemblyFunctionBase.cpp:
(JSC::WebAssemblyFunctionBase::WebAssemblyFunctionBase):
(JSC::WebAssemblyFunctionBase::signature const):
* Source/JavaScriptCore/wasm/js/WebAssemblyFunctionBase.h:
* Tools/Scripts/run-jsc-stress-tests:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to