Definition of non-volatile SIMD registers for ARM64 is wrong
Categories
(Core :: JavaScript: WebAssembly, task, P2)
Tracking
()
People
(Reporter: jandem, Assigned: jandem)
References
Details
(Keywords: sec-other, Whiteboard: [adv-main133-])
Attachments
(1 file)
See bug 1897792 comment 50. We currently mark the v8-v15 registers as non-volatile (preserved by calls) on ARM64, but this only applies to the bottom 64 bits so this is wrong for SIMD registers.
This might affect CodeGenerator::visitOutOfLineWasmCallPostWriteBarrierImmediate
where we call saveLiveVolatile
to only save the volatile registers.
This isn't security sensitive but this should stay hidden until bug 1897792 is fixed.
Assignee | ||
Comment 2•8 months ago
|
||
anba wrote a test for this bug. It's in the patch in bug 1919803.
Assignee | ||
Comment 3•8 months ago
|
||
André confirmed that the obvious fix for NonVolatileSingleMask
fixes his test case so NI myself to post that patch next week...
Assignee | ||
Comment 4•7 months ago
|
||
Only the bottom 64 bits will be preserved by C++ code so we shouldn't treat the SIMD registers
as non-volatile.
The patch in bug 1919803 has a Wasm test for this.
Updated•7 months ago
|
Updated•7 months ago
|
Assignee | ||
Updated•7 months ago
|
Updated•7 months ago
|
![]() |
||
Comment 6•7 months ago
|
||
Updated•7 months ago
|
Updated•7 months ago
|
Updated•6 months ago
|
Updated•1 month ago
|
Description
•