Assertion failure in range analysis checking with BigInt
Categories
(Core :: JavaScript Engine: JIT, defect, P1)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox67 | --- | fixed |
People
(Reporter: terpri, Assigned: terpri)
References
Details
Attachments
(1 file)
This test case crashes when the checkRangeAnalysis JIT option is enabled (run with --fuzzing-safe --no-threads --ion-eager --ion-check-range-analysis):
for (const x of [0n, 1n, 1n]) { print(((y)=>y|y)(x)); }
| Assignee | ||
Comment 1•6 years ago
|
||
the error message is "Incorrect range for Value." which is probably from https://searchfox.org/mozilla-central/rev/01b4b3830ea3cae2e9e431019afa6391b471c6da/js/src/jit/CodeGenerator.cpp#13011
Comment 2•6 years ago
|
||
Related to bug 1526870, about CacheIR support for BigInt comparisons.
I think we should probably add static bool BigInt::compare(BigInt*, int32_t), like we have for doubles. It would be useful for CacheIR as well. Then we can emit calls to it to check bigint bounds. I was going to suggest just papering over the issue by passing if the value is a bigint but as we need the comparison function anyway and it's a portable callVM, we might as well go ahead and do it.
Would you mind taking this, Robin?
Updated•6 years ago
|
| Assignee | ||
Comment 3•6 years ago
|
||
yes, i can take this one
| Assignee | ||
Comment 4•6 years ago
|
||
Updated•6 years ago
|
| Assignee | ||
Updated•6 years ago
|
Pushed by ccoroiu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/280ab3f61c87
Skip range computation for non-int32 bitwise ops r=wingo,jandem
Comment 6•6 years ago
|
||
| bugherder | ||
Description
•