summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-this-06.js
blob: d38398645f4d22bb673fcd172de1331e024797dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Frame.this and evalInFrame with missing this, strict and non-strict.
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
var evalThis, frameThis;
dbg.onEnterFrame = function (frame) {
    if (frame.type === "eval")
	return;
    assertEq(frame.type, "call");
    evalThis = frame.eval("this");
    frameThis = frame.this;
};

// Strict, this is primitive.
g.eval("var foo = function() { 'use strict'; }; foo.call(33);");
assertEq(evalThis.return, 33);
assertEq(frameThis, 33);

// Non-strict, this has to be boxed.
g.eval("var bar = function() { }; bar.call(22);");
assertEq(typeof evalThis.return, "object");
assertEq(evalThis.return.unsafeDereference().valueOf(), 22);
assertEq(frameThis.unsafeDereference().valueOf(), 22);