/js/src/jit-test/tests/debug/Frame-this-03.js

http://github.com/zpao/v8monkey · JavaScript · 27 lines · 21 code · 5 blank · 1 comment · 1 complexity · 5050ee53a53547bb6161a9210b7c1dd3 MD5 · raw file

  1. // Frame.prototype.this in non-strict-mode functions, with primitive values
  2. function classOf(obj) {
  3. return Object.prototype.toString.call(obj).match(/^\[object (.*)\]$/)[1];
  4. }
  5. var g = newGlobal('new-compartment');
  6. var dbg = new Debugger(g);
  7. var hits = 0;
  8. dbg.onDebuggerStatement = function (frame) {
  9. hits++;
  10. assertEq(frame.this instanceof Debugger.Object, true);
  11. assertEq(frame.this.class, g.v == null ? classOf(g) : classOf(Object(g.v)));
  12. };
  13. g.eval("function f() { debugger; }");
  14. g.eval("Boolean.prototype.f = f; v = true; v.f();");
  15. g.eval("f.call(v);");
  16. g.eval("Number.prototype.f = f; v = 3.14; v.f();");
  17. g.eval("f.call(v);");
  18. g.eval("String.prototype.f = f; v = 'hello'; v.f();");
  19. g.eval("f.call(v);");
  20. g.eval("v = undefined; f.call(v);");
  21. g.eval("v = null; f.call(v);");
  22. assertEq(hits, 8);