1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Frame-live-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,42 @@ 1.4 +// |jit-test| debug 1.5 +// Debugger.Frame.prototype.live is true for frames on the stack and false for 1.6 +// frames that have returned 1.7 + 1.8 +var desc = Object.getOwnPropertyDescriptor(Debugger.Frame.prototype, "live"); 1.9 +assertEq(typeof desc.get, "function"); 1.10 +assertEq(desc.set, undefined); 1.11 +assertEq(desc.configurable, true); 1.12 +assertEq(desc.enumerable, false); 1.13 + 1.14 +var loc; 1.15 + 1.16 +var g = newGlobal(); 1.17 +g.debuggeeGlobal = this; 1.18 +g.eval("var hits = 0;"); 1.19 +g.eval("(" + function () { 1.20 + var a = []; 1.21 + var dbg = Debugger(debuggeeGlobal); 1.22 + dbg.onDebuggerStatement = function (frame) { 1.23 + var loc = debuggeeGlobal.loc; 1.24 + a[loc] = frame; 1.25 + for (var i = 0; i < a.length; i++) { 1.26 + assertEq(a[i] === frame, i === loc); 1.27 + assertEq(!!(a[i] && a[i].live), i >= loc); 1.28 + } 1.29 + hits++; 1.30 + }; 1.31 + } + ")()"); 1.32 + 1.33 +function f(n) { 1.34 + loc = n; debugger; 1.35 + if (n !== 0) { 1.36 + f(n - 1); 1.37 + loc = n; debugger; 1.38 + eval("f(n - 1);"); 1.39 + loc = n; debugger; 1.40 + } 1.41 +} 1.42 + 1.43 +f(4); 1.44 +assertEq(g.hits, 16 + 8*3 + 4*3 + 2*3 + 1*3); 1.45 +