Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d2b0596d08f44b20f0a488e7b6ccb4c03af36ee3
https://github.com/WebKit/WebKit/commit/d2b0596d08f44b20f0a488e7b6ccb4c03af36ee3
Author: Justin Michaud <[email protected]>
Date: 2024-11-10 (Sun, 10 Nov 2024)
Changed paths:
A JSTests/wasm/stress/armv7-simple-loop-osr.js
A JSTests/wasm/stress/armv7-simple-throw-restore-live.js
M Source/JavaScriptCore/b3/B3LowerInt64.cpp
M Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp
M Source/JavaScriptCore/b3/B3PatchpointSpecial.cpp
M Source/JavaScriptCore/b3/B3StackmapSpecial.cpp
M Source/JavaScriptCore/b3/B3Validate.cpp
M Source/JavaScriptCore/b3/B3ValueRep.cpp
M Source/JavaScriptCore/b3/B3ValueRep.h
M Source/JavaScriptCore/tools/JSDollarVM.cpp
M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
M Source/JavaScriptCore/wasm/WasmCompilationMode.h
M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp
M Source/JavaScriptCore/wasm/WasmOperations.cpp
Log Message:
-----------
[ARMv7] Fix OMG Int64 live value OSR restore
https://bugs.webkit.org/show_bug.cgi?id=282309
Reviewed by David Degazio.
Int64 patchpoints get lowered in a way that makes the indices too hard
to compute when filling live values from patchpoints during exception unwinding.
1) Handle patchpoint live-value saving directly in the generator by splitting
Int64s.
2) Fix BBQ OSR, which needs a value rep for register pairs. That is, LLInt fills
Int64 values directly from the stack. BBQ may map them to/from a register pair,
but still saves them to the OMG OSR buffer as a 64-bit value. OMG does an Int64
load, which is agressively lowered to remove Int64 stitches / extracts.
We also add some tests to make debugging OSR very simple.
* JSTests/wasm/stress/armv7-simple-throw-restore-live.js: Added.
(from.string_appeared_here.import.as.assert.from.string_appeared_here.let.wat.module.tag.e.func.test.export.string_appeared_here.param.a.i32.result.i64.local.x.i64.local.x.i64.const.0x0EEFBAADDEADFEED.try.local.x.i64.add.i64.const.1.local.x.call.fun.local.a.local.x.i64.add.i64.const.1.local.x.catch.e.local.x.i64.add.i64.const.5.local.x.return.local.x.return.local.x.func.fun.param.x.i32.i32.eq.local.x.i32.const.42.then.throw.e.async
test):
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp:
(JSC::Wasm::OMGIRGenerator::traceCF):
(JSC::Wasm::OMGIRGenerator::loadFromScratchBuffer):
(JSC::Wasm::OMGIRGenerator::preparePatchpointForExceptions):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::loadValuesIntoBuffer):
Canonical link: https://commits.webkit.org/286405@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