/js/src/jit-test/tests/debug/Frame-live-05.js

http://github.com/zpao/v8monkey · JavaScript · 29 lines · 26 code · 2 blank · 1 comment · 6 complexity · d4dc8b25005d6703887949c8201c7d54 MD5 · raw file

  1. // frame.live is false for frames removed after their compartments stopped being debuggees.
  2. var g1 = newGlobal('new-compartment');
  3. var g2 = newGlobal('new-compartment');
  4. var dbg = Debugger(g1, g2);
  5. var hits = 0;
  6. var snapshot = [];
  7. dbg.onDebuggerStatement = function (frame) {
  8. if (hits++ === 0) {
  9. assertEq(frame.eval("x();"), null);
  10. } else {
  11. for (var f = frame; f; f = f.older) {
  12. if (f.type === "call" && f.script !== null)
  13. snapshot.push(f);
  14. }
  15. dbg.removeDebuggee(g2);
  16. return null;
  17. }
  18. };
  19. g1.eval("function z() { debugger; }");
  20. g2.z = g1.z;
  21. g2.eval("function y() { z(); }");
  22. g2.eval("function x() { y(); }");
  23. assertEq(g2.eval("debugger; 'ok';"), "ok");
  24. assertEq(hits, 2);
  25. assertEq(snapshot.length, 3);
  26. for (var i = 0; i < snapshot.length; i++)
  27. assertEq(snapshot[i].live, false);