Bug 248481
| Summary: | Alignment assumed by RegisterAtOffsetList does not accurately describe SIMD registers | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | David Degazio <d_degazio> |
| Component: | WebAssembly | Assignee: | David Degazio <d_degazio> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
David Degazio
rdar://102515450
The current RegisterAtOffsetList implementation assumes that the alignment of a register's value is the same as the width of that register. However, 128-bit SIMD registers are currently only aligned to eight-byte intervals. This mismatch between RegisterAtOffsetList's size calculation and other locations (such as in RegisterSetBuilder) can cause assertion failure. For example:
(module
(type (;0;) (func (result i32 v128)))
(func (;0;) (type 0) (result i32 v128)
(local v128)
i32.const 0
v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000
)
(export "foo" (func 0))
)
...results in:
ASSERTION FAILED: static_cast<size_t>(offset - startOffset) == sizeOfAreaInBytes
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
David Degazio
Pull request: https://github.com/WebKit/WebKit/pull/6929
EWS
Committed 257192@main (f958a5f2b00b): <https://commits.webkit.org/257192@main>
Reviewed commits have been landed. Closing PR #6929 and removing active labels.