PageRenderTime 21ms CodeModel.GetById 10ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/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
 3function classOf(obj) {
 4    return Object.prototype.toString.call(obj).match(/^\[object (.*)\]$/)[1];
 5}
 6
 7var g = newGlobal('new-compartment');
 8var dbg = new Debugger(g);
 9var hits = 0;
10dbg.onDebuggerStatement = function (frame) {
11    hits++;
12    assertEq(frame.this instanceof Debugger.Object, true);
13    assertEq(frame.this.class, g.v == null ? classOf(g) : classOf(Object(g.v)));
14};
15
16g.eval("function f() { debugger; }");
17
18g.eval("Boolean.prototype.f = f; v = true; v.f();");
19g.eval("f.call(v);");
20g.eval("Number.prototype.f = f; v = 3.14; v.f();");
21g.eval("f.call(v);");
22g.eval("String.prototype.f = f; v = 'hello'; v.f();");
23g.eval("f.call(v);");
24g.eval("v = undefined; f.call(v);");
25g.eval("v = null; f.call(v);");
26
27assertEq(hits, 8);