Closed
Bug 756247
Opened 12 years ago
Closed 12 years ago
IonMonkey: Assertion failure: [infer failure] Missing type pushed 0: float, at jsinfer.cpp:353
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
VERIFIED
FIXED
People
(Reporter: decoder, Assigned: jandem)
References
Details
(Keywords: assertion, testcase, Whiteboard: [jsbugmon:update])
Attachments
(1 file)
(deleted),
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
The following testcase asserts on ionmonkey revision 14735b4dbccc (run with --ion -n -m --ion-eager):
function foo(i) {
var n = 0;
for (var i = 0; i < (false ); i++)
n = a++;
assertEq(n, 29);
}
var a = foo(10);
Assignee | ||
Comment 1•12 years ago
|
||
Reduced it a bit more:
function foo() {
var n = 0;
while (false)
n = +a;
print(n); // bailout
}
foo();
The problem is that when we bailout, n is a double (0.0) instead of an integer. The inferred type of "+a" is value -> value, which we compile to MToDouble. Using MToDouble is fine for "value -> double" but for "value -> value" we should probably just call a stub.
Note that value -> int32 has the same problem (double value instead of int32). This testcase also triggers the assert:
function bar(x) {
var y = +(x ? x : "foo");
print(y);
}
bar(10);
Assignee: general → jdemooij
Status: NEW → ASSIGNED
Assignee | ||
Comment 2•12 years ago
|
||
This follows JSOP_NEG and compiles +x as x * 1. Seems like it's the simplest fix and does not regress SS/V8/Kraken.
Attachment #625079 -
Flags: review?(dvander)
Updated•12 years ago
|
Attachment #625079 -
Flags: review?(dvander) → review+
Assignee | ||
Comment 3•12 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 4•12 years ago
|
||
JSBugMon: This bug has been automatically verified fixed.
Reporter | ||
Updated•12 years ago
|
Status: RESOLVED → VERIFIED
Assignee | ||
Updated•12 years ago
|
Group: core-security
Reporter | ||
Comment 5•12 years ago
|
||
A testcase for this bug was automatically identified at js/src/jit-test/tests/ion/bug756247.js.
Flags: in-testsuite+
You need to log in
before you can comment on or make changes to this bug.
Description
•