Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ffae772a848e40be9839efbf81742919df8d84f5 https://github.com/WebKit/WebKit/commit/ffae772a848e40be9839efbf81742919df8d84f5 Author: Yusuke Suzuki <ysuz...@apple.com> Date: 2023-02-23 (Thu, 23 Feb 2023)
Changed paths: M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp Log Message: ----------- [JSC] Add lock / unlock mechanism to LRU in new wasm BBQ for scratch https://bugs.webkit.org/show_bug.cgi?id=252869 rdar://105856151 Reviewed by Justin Michaud. When a register is used for scratch, then we must not evict it while it is used since (1) we would like to have a register, and (2) there is no way to save and restore scratches. However we have no mechanism to prevent it, and we crash when running tfjs-wasm in JetStream3. This patch integrates lock and unlock mechanism for registers allocated for scratches. This lock / unlock names are derived from DFG's reigster allocator & Baseline JIT's IC register allocators. We mark scratches as locked, and they are not used for register allocation targets. We would like to expand this mechanism for the non scratch registers when it is currently used and we would like to lock it down right now. But in this patch, let's first do it for scratches. * Source/JavaScriptCore/wasm/WasmBBQJIT.cpp: (JSC::Wasm::BBQJIT::LRU::findMin): (JSC::Wasm::BBQJIT::LRU::lock): (JSC::Wasm::BBQJIT::LRU::unlock): (JSC::Wasm::BBQJIT::ScratchScope::gpr const): (JSC::Wasm::BBQJIT::ScratchScope::fpr const): (JSC::Wasm::BBQJIT::ScratchScope::bindGPRToScratch): (JSC::Wasm::BBQJIT::ScratchScope::bindFPRToScratch): (JSC::Wasm::BBQJIT::ScratchScope::unbindGPRFromScratch): (JSC::Wasm::BBQJIT::ScratchScope::unbindFPRFromScratch): Canonical link: https://commits.webkit.org/260771@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes