Object-identity-03.js (810B)
1 // The same object gets the same Debugger.Object wrapper at different times, if the difference would be observable. 2 3 var N = 12; 4 5 var g = newGlobal({newCompartment: true}); 6 var dbg = Debugger(g); 7 var wrappers = []; 8 9 dbg.onDebuggerStatement = function (frame) { wrappers.push(frame.arguments[0]); }; 10 g.eval("var originals = []; function f(x) { originals.push(x); debugger; }"); 11 for (var i = 0; i < N; i++) 12 g.eval("f({});"); 13 assertEq(wrappers.length, N); 14 15 for (var i = 0; i < N; i++) 16 for (var j = i + 1; j < N; j++) 17 assertEq(wrappers[i] === wrappers[j], false); 18 19 gc(); 20 21 dbg.onDebuggerStatement = function (frame) { assertEq(frame.arguments[0], wrappers.pop()); }; 22 g.eval("function h(x) { debugger; }"); 23 for (var i = 0; i < N; i++) 24 g.eval("h(originals.pop());"); 25 assertEq(wrappers.length, 0);