Frame-onStack-02.js (845B)
1 // Debugger.Frame.prototype.onStack is false for frames that have thrown or been thrown through 2 3 load(libdir + "asserts.js"); 4 5 var g = newGlobal({newCompartment: true}); 6 g.debuggeeGlobal = this; 7 g.eval("var finalCheck;"); 8 g.eval("(" + function () { 9 var a = []; 10 var dbg = Debugger(debuggeeGlobal); 11 dbg.onDebuggerStatement = function (frame) { 12 a.push(frame); 13 for (var i = 0; i < a.length; i++) 14 assertEq(a[i].onStack, true); 15 }; 16 finalCheck = function (n) { 17 assertEq(a.length, n); 18 for (var i = 0; i < n; i++) 19 assertEq(a[i].onStack, false); 20 }; 21 } + ")()"); 22 23 function f(n) { 24 debugger; 25 if (--n > 0) 26 f(n); 27 else 28 throw "fit"; 29 } 30 31 assertThrowsValue(function () { f(10); }, "fit"); 32 g.finalCheck(10);