Closed Bug 595032 Opened 9 years ago Closed 9 years ago

TM+JM: trace blacklisting causes us to stay in interpreter far too long

Categories

(Core :: JavaScript Engine, defect)

defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: billm, Assigned: billm)

Details

(Whiteboard: fixed-in-tracemonkey)

Attachments

(1 file)

This is a follow-on to bug 593532. The siutation: we blacklist a loop, causing us to convert the loop header opcode from TRACE to NOP. If we had been recording the loop, we will try to return at the next safepoint. However, in some cases the TRACE/NOP location may be the only safepoint we ever hit. And unfortunately the interpreter skips NOP tracepoints as an optimization. So we stay in the interpreter forever. The ultimate result is that bitwise-and can take 60ms if we try to blacklist its main loop.
Attached patch fixSplinter Review
This fixes the problem. Thanks to dvander for finding the solution.
Attachment #473838 - Flags: review?
Attachment #473838 - Flags: review? → review?(dvander)
Attachment #473838 - Flags: review?(dvander) → review+
http://hg.mozilla.org/tracemonkey/rev/c70c6d647f23
Assignee: general → wmccloskey
Status: NEW → ASSIGNED
Keywords: checkin-needed
Whiteboard: fixed-in-tracemonkey
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.