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);