/js/src/jit-test/tests/debug/gc-03.js

http://github.com/zpao/v8monkey · JavaScript · 24 lines · 18 code · 4 blank · 2 comment · 0 complexity · 9828807cf1d0fd6b6a66dfc71cb4012e MD5 · raw file

  1. // Storing a property on a Debugger.Object protects it from GC as long as the
  2. // referent is alive.
  3. var g = newGlobal('new-compartment');
  4. var N = g.N = 3;
  5. var dbg = Debugger(g);
  6. var i = 0;
  7. dbg.onDebuggerStatement = function (frame) {
  8. frame.arguments[0].id = i++;
  9. };
  10. g.eval("function f(x) { debugger; }");
  11. g.eval("var arr = [], j; for (j = 0; j < N; j++) arr[j] = {};");
  12. g.eval("for (j = 0; j < N; j++) f(arr[j]);");
  13. assertEq(i, N);
  14. gc(); gc();
  15. i = 0;
  16. dbg.onDebuggerStatement = function (frame) {
  17. assertEq(frame.arguments[0].id, i++)
  18. }
  19. g.eval("for (j = 0; j < N; j++) f(arr[j]);");
  20. assertEq(i, N);