Closed Bug 671814 Opened 15 years ago Closed 15 years ago

TI: Assertion failure: fe < temporariesTop, at methodjit/FrameState.h:1034

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: decoder, Unassigned)

References

Details

(Keywords: assertion, testcase)

The following testcase asserts on TI revision 9b9fd467eb5f (run with -j -m -a -n), tested on 64 bit: var ta = Int8Array([]); function Int8Array(summary) { summary.length; } function test() { ctors = [ Int8Array ] for (var i = 0;;) { ctor = ctors[i] b = ctor(0) } } test();
Looked at this because I thought it was from my typed array patches, but it's a LICM problem. Asserts on 64-bit, crashes on 32-bit. In LoopState::invariantLength objSlot is UNASSIGNED (UINT32_MAX) and in a debug build frame.entryName(objSlot) asserts.
This problem was in several places where the loop state computes an intermediate loop value in terms of the state at the loop head. For possible object-valued entries we did not bail out if the value was determined to be a constant integer. With the cross-script SSA that the loop state uses when combining LICM + call inlining, it can determine something is a constant integer even if type information indicates it may be an object. http://hg.mozilla.org/projects/jaegermonkey/rev/36813ba5ea40
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
A testcase for this bug was automatically identified at js/src/jit-test/tests/jaeger/loops/bug671814.js.
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.