Closed Bug 642198 Opened 9 years ago Closed 9 years ago

TI: Assertion failure: !fe->isType(JSVAL_TYPE_DOUBLE), at ./methodjit/FrameState-inl.h:793

Categories

(Core :: JavaScript Engine, defect, critical)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: decoder, Assigned: jandem)

References

(Blocks 2 open bugs)

Details

(Keywords: assertion, testcase, Whiteboard: fixed-in-jaegermonkey)

Attachments

(1 file, 1 obsolete file)

The following test case (run with -n -a -m) asserts on TI tip (tested on 64
bit):

test();
function test()
{
  for (var i = 0; i < 2; ++i) {
    for (var e = 0; "FUN1 = new Function( 'a','b','c', 'return FUN1.length' ); FUN1.length"; ++e) {
    }
  }  
}
Attached patch Patch (obsolete) — Splinter Review
Looks like we should not call syncData for known doubles and known doubles are synced later on. This fixes the assert and passes jit-tests and jstests. Please review carefully, I don't trust my understanding of FrameState.cpp at all.
Assignee: general → jandemooij
Status: NEW → ASSIGNED
Attachment #519757 - Flags: review?(bhackett1024)
I think that in the case where fe->isType(JSVAL_TYPE_DOUBLE), you want to call syncFe (which can be done for doubles without eviction) to sync the whole entry at the branch target.  After the second pass, all registers required to be synced at the target should have been synced.
Attached patch Patch v2Splinter Review
As discussed on IRC, we can call syncFe instead of syncData. This fixes the test and passes jit-tests and jstests with -m -n -a. I won't have much time to work on this tomorrow so feel free to steal.
Attachment #519757 - Attachment is obsolete: true
Attachment #519757 - Flags: review?(bhackett1024)
Attachment #519781 - Flags: review?(bhackett1024)
Attachment #519781 - Flags: review?(bhackett1024) → review+
http://hg.mozilla.org/projects/jaegermonkey/rev/deb49a09d553
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Whiteboard: fixed-in-jaegermonkey
Blocks: 676763
A testcase for this bug was automatically identified at js/src/jit-test/tests/jaeger/bug642198.js.
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.