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