| // Ensure the correct frame is passed to exception unwind hooks. |
| var g = newGlobal(); |
| g.debuggeeGlobal = this; |
| g.eval("(" + function () { |
| frames = []; |
| var dbg = Debugger(debuggeeGlobal); |
| dbg.onEnterFrame = function(frame) { |
| frames.push(frame); |
| }; |
| dbg.onExceptionUnwind = function(frame) { |
| assertEq(frames.indexOf(frame), frames.length - 1); |
| frames.pop(); |
| assertEq(frame, dbg.getNewestFrame()); |
| } |
| } + ")()"); |
| |
| function f(n) { |
| debugger; |
| n--; |
| if (n > 0) { |
| f(n); |
| } else { |
| assertEq(g.frames.length, 10); |
| throw "fit"; |
| } |
| } |
| try { |
| f(10); |
| assertEq(0, 1); |
| } catch (e) { |
| assertEq(e, "fit"); |
| } |
| assertEq(g.frames.length, 0); |