js/src/jit-test/tests/debug/Frame-live-01.js

changeset 0
6474c204b198
     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 +

mercurial