Closed Bug 1063328 Opened 10 years ago Closed 10 years ago

[jsdbg2] Debug mode OSR doesn't correctly handle live iterators on the stack when bailing out in-place due to propagate an exception

Categories

(Core :: JavaScript Engine: JIT, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla36

People

(Reporter: shu, Assigned: shu)

References

Details

Attachments

(1 file)

As a refresher, first consider a call to a function |triggerDebugModeAndThrow()| in Ion. Debug mode OSR will bail out Ion->Baseline in place and resume directly into the baseline exception handler as to deal with onExceptionUnwind. However, this happens before the function itself returns, which means the ResumePoint for the function call is unable to reconstruct the expression stack, which expects the return value of the function to be pushed. For this reason, in-place resumptions due to debug mode currently uses the JS_OPTIMIZED_OUT placeholder for the entire expression stack. However, now consider the following: var obj = { foo: 42 }; for (var k in obj) triggerDebugModeOSRAndThrow(); There is a live for-in iterator on the stack, which debug mode OSR currently doesn't deal with correctly.
Blocks: 1063330
Depends on: 1032869
Tests fail with my patches from bug 1032869 landed. I couldn't find a non-convoluted way to test for this behavior currently.
Attachment #8485326 - Flags: review?(jdemooij)
Attachment #8485326 - Flags: review?(jdemooij) → review+
Assignee: nobody → shu
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla36
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: