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