onNewScript-eval-cache-01.js (689B)
1 // onNewScript handler sees every Debugger.Script object that can appear on the 2 // stack, even with the eval cache. See bug 674164. 3 4 var g = newGlobal({newCompartment: true}); 5 var dbg = Debugger(g); 6 var seen = new WeakMap; 7 dbg.onNewScript = function (script) { 8 seen.set(script, 1); 9 script.getChildScripts().forEach(dbg.onNewScript); 10 }; 11 var hits = 0; 12 dbg.onDebuggerStatement = function (frame) { 13 for(; frame; frame = frame.older) { 14 assertEq(seen.has(frame.script), true); 15 } 16 hits++; 17 }; 18 19 g.eval("function calc(s, x) { return eval(s); }"); 20 for (var i = 0; i < 4; i++) { 21 assertEq(g.calc("debugger; 2 * x + 1;", i), 2 * i + 1); 22 if (i == 1) { 23 gc(); 24 } 25 } 26 assertEq(hits, 4);