tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Frame-onStack-01.js (1092B)


      1 // Debugger.Frame.prototype.onStack is true for frames on the stack and false for
      2 // frames that have returned
      3 
      4 var desc = Object.getOwnPropertyDescriptor(Debugger.Frame.prototype, "live");
      5 assertEq(typeof desc.get, "function");
      6 assertEq(desc.set, undefined);
      7 assertEq(desc.configurable, true);
      8 assertEq(desc.enumerable, false);
      9 
     10 var loc;
     11 
     12 var g = newGlobal({newCompartment: true});
     13 g.debuggeeGlobal = this;
     14 g.eval("var hits = 0;");
     15 g.eval("(" + function () {
     16        var a = [];
     17        var dbg = Debugger(debuggeeGlobal);
     18        dbg.onDebuggerStatement = function (frame) {
     19            var loc = debuggeeGlobal.loc;
     20            a[loc] = frame;
     21            for (var i = 0; i < a.length; i++) {
     22                assertEq(a[i] === frame, i === loc);
     23                assertEq(!!(a[i] && a[i].onStack), i >= loc);
     24            }
     25            hits++;
     26        };
     27    } + ")()");
     28 
     29 function f(n) {
     30    loc = n; debugger;
     31    if (n !== 0) {
     32        f(n - 1);
     33        loc = n; debugger;
     34        eval("f(n - 1);");
     35        loc = n; debugger;
     36    }
     37 }
     38 
     39 f(4);
     40 assertEq(g.hits, 16 + 8*3 + 4*3 + 2*3 + 1*3);