js/src/jit-test/tests/debug/onNewScript-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/onNewScript-01.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,45 @@
     1.4 +// Basic newScript hook tests.
     1.5 +
     1.6 +var g = newGlobal();
     1.7 +var dbg = Debugger(g);
     1.8 +var seen = WeakMap();
     1.9 +var hits = 0;
    1.10 +dbg.onNewScript = function (s) {
    1.11 +    // Exceptions thrown from onNewScript are swept under the rug, but they
    1.12 +    // will at least prevent hits from being the expected number.
    1.13 +    assertEq(s instanceof Debugger.Script, true);
    1.14 +    assertEq(!seen.has(s), true);
    1.15 +    seen.set(s, true);
    1.16 +    hits++;
    1.17 +};
    1.18 +
    1.19 +dbg.uncaughtExceptionHook = function () { hits = -999; };
    1.20 +
    1.21 +// eval code
    1.22 +hits = 0;
    1.23 +assertEq(g.eval("2 + 2"), 4);
    1.24 +assertEq(hits, 1);
    1.25 +
    1.26 +hits = 0;
    1.27 +assertEq(g.eval("eval('2 + 3')"), 5);
    1.28 +assertEq(hits, 2);
    1.29 +
    1.30 +// global code
    1.31 +hits = 0;
    1.32 +g.evaluate("3 + 4");
    1.33 +assertEq(hits, 1);
    1.34 +
    1.35 +// function code
    1.36 +hits = 0;
    1.37 +var fn = g.Function("a", "return 5 + a;");
    1.38 +assertEq(hits, 1);
    1.39 +assertEq(fn(8), 13);
    1.40 +assertEq(hits, 1);
    1.41 +
    1.42 +// cloning functions across compartments
    1.43 +fn = g.evaluate("(function(a) { return 5 + a; })", {compileAndGo: false});
    1.44 +var g2 = newGlobal();
    1.45 +dbg.addDebuggee(g2, dbg);
    1.46 +hits = 0;
    1.47 +g2.clone(fn);
    1.48 +assertEq(hits, 1);

mercurial