Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 34659680f0d031dc06982f829f4423d747cd773b https://github.com/WebKit/WebKit/commit/34659680f0d031dc06982f829f4423d747cd773b Author: Keith Miller <keith_mil...@apple.com> Date: 2023-06-14 (Wed, 14 Jun 2023)
Changed paths: M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp Log Message: ----------- BBQJIT's ScratchScope should always lock preseverved registers https://bugs.webkit.org/show_bug.cgi?id=258044 Reviewed by Yusuke Suzuki. Right now if a preserved location/register is already bound to a Location then we don't lock its slot. By not locking however, when we go to allocate any requested scratches we could choose one of the preserved registers to evict. This patch fixes this by always locking the preserved locations. Additionally, some places where we were using ScratchScope to lock nonArgumentNonPreservedGPR1 can now use ScratchScope to get a non-argument non-preserved register. This is done by preserving all argument GPRs then immediately releasing them via a new unbindPreserved method. * Source/JavaScriptCore/wasm/WasmBBQJIT.cpp: (JSC::Wasm::BBQJIT::addIf): (JSC::Wasm::BBQJIT::emitIndirectCall): (JSC::Wasm::BBQJIT::addCallIndirect): (JSC::Wasm::BBQJIT::addCallRef): (JSC::Wasm::BBQJIT::ScratchScope::ScratchScope): (JSC::Wasm::BBQJIT::ScratchScope::~ScratchScope): (JSC::Wasm::BBQJIT::ScratchScope::unbindEarly): (JSC::Wasm::BBQJIT::ScratchScope::unbindScratches): (JSC::Wasm::BBQJIT::ScratchScope::unbindPreserved): (JSC::Wasm::BBQJIT::ScratchScope::gpr const): (JSC::Wasm::BBQJIT::ScratchScope::fpr const): (JSC::Wasm::BBQJIT::ScratchScope::unbind): Deleted. Canonical link: https://commits.webkit.org/265159@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes