Flag code paths tainted by unexpected NaNs to help eliminate canonicalizing floats loaded from typed arrays.
Categories
(Core :: JavaScript Engine: JIT, enhancement, P5)
Tracking
()
People
(Reporter: dougc, Assigned: anba)
References
(Blocks 1 open bug)
Details
Attachments
(16 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
![]() |
||
Comment 1•12 years ago
|
||
Comment 2•12 years ago
|
||
Comment 3•12 years ago
|
||
Comment 4•12 years ago
|
||
Updated•9 years ago
|
Updated•3 years ago
|
Assignee | ||
Comment 5•6 months ago
|
||
Add two new types for floating point values which are possibly tainted by
unexpected NaNs.
The next patches in this series will add the necessary changes to properly
handle the new types.
Updated•6 months ago
|
Assignee | ||
Comment 6•6 months ago
|
||
Split NaN canonicalization into a separate MIR instruction, so we can make it
optional in later patches of this patch stack.
Assignee | ||
Comment 7•6 months ago
|
||
Update MIRType checks to handle the new "tainted" floating point types from
the previous part. Wasm-only code doesn't need any changes, because it doesn't
use the tainted variants.
Changes:
- Replace
type == MIRType::Double
withIsDoubleType(type)
. - Replace
type == MIRType::Float32
withIsFloat32Type(type)
. - Replace
type == otherType
withIsEqualType(type, otherType)
.
Assignee | ||
Comment 8•6 months ago
|
||
Add case
statements to handle the new tainted floating point types.
Assignee | ||
Comment 9•6 months ago
|
||
Assignee | ||
Comment 10•6 months ago
|
||
Add checks that store-element and store-slot instructions never use tainted inputs.
Assignee | ||
Comment 11•6 months ago
|
||
Used in the next parts.
Assignee | ||
Comment 12•6 months ago
|
||
Update type policies to insert MCanonicalizeNaN
where necessary.
Assignee | ||
Comment 13•6 months ago
|
||
Assignee | ||
Comment 14•6 months ago
|
||
Update foldsTo
methods to handle tainted types and the new MCanonicalizeNaN
instruction.
Assignee | ||
Comment 15•6 months ago
|
||
Changes:
- Ensure floating point conversion operations pass the tainted marker.
- Phi specialization uses the non-tainted types for now. Part 12 will add a
separate pass to compute the correct tainted types.
Assignee | ||
Comment 16•6 months ago
|
||
Add a pass to recursively mark all floating point instructions as tainted when
one of its inputs is tainted. This pass occurs before type conversions are added,
so that type policies can add MCanonicalizeNaN when necessary.
Assignee | ||
Comment 17•6 months ago
|
||
Add an option to enable/disable loading non-canonicalized doubles. When
non-canonical NaNs are allowed, we don't have to emit MCanonicalizeNaN
after typed array loads.
Assignee | ||
Comment 18•6 months ago
|
||
Assignee | ||
Comment 19•6 months ago
|
||
This will also fix bug 1645795 and bug 1928622.
Drive-by change:
- Move
StoreToTypedFloatArray
intoMacroAssembler::storeToTypedFloatArray
to
match the load methods.
Assignee | ||
Comment 20•6 months ago
|
||
Updated•2 months ago
|
Description
•