-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BBQJIT's ScratchScope should always lock preseverved registers #14941
BBQJIT's ScratchScope should always lock preseverved registers #14941
Conversation
EWS run on previous version of this PR (hash 252f393) |
252f393
to
7cbccc1
Compare
EWS run on previous version of this PR (hash 7cbccc1) |
m_generator.m_fprLRU.lock(reg); | ||
binding = RegisterBinding::scratch(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll keep the old order before committing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me
7cbccc1
to
2364132
Compare
EWS run on current version of this PR (hash 2364132) |
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
2364132
to
3465968
Compare
Committed 265159@main (3465968): https://commits.webkit.org/265159@main Reviewed commits have been landed. Closing PR #14941 and removing active labels. |
3465968
2364132
π wincairoπ§ͺ gtk-wk2π π§ͺ jscπ§ͺ api-iosπ§ͺ mac-wk2π tvπ§ͺ mac-AS-debug-wk2π tv-simπ§ͺ jsc-armv7-testsπ watch