michael@0: // The same object gets the same Debugger.Object wrapper at different times, if the difference would be observable. michael@0: michael@0: var N = 12; michael@0: michael@0: var g = newGlobal(); michael@0: var dbg = Debugger(g); michael@0: var wrappers = []; michael@0: michael@0: dbg.onDebuggerStatement = function (frame) { wrappers.push(frame.arguments[0]); }; michael@0: g.eval("var originals = []; function f(x) { originals.push(x); debugger; }"); michael@0: for (var i = 0; i < N; i++) michael@0: g.eval("f({});"); michael@0: assertEq(wrappers.length, N); michael@0: michael@0: for (var i = 0; i < N; i++) michael@0: for (var j = i + 1; j < N; j++) michael@0: assertEq(wrappers[i] === wrappers[j], false); michael@0: michael@0: gc(); michael@0: michael@0: dbg.onDebuggerStatement = function (frame) { assertEq(frame.arguments[0], wrappers.pop()); }; michael@0: g.eval("function h(x) { debugger; }"); michael@0: for (var i = 0; i < N; i++) michael@0: g.eval("h(originals.pop());"); michael@0: assertEq(wrappers.length, 0);