summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-eval-33.js
blob: d5d3f94804786bff37392a24e9ff988434e2c1ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
load(libdir + "evalInFrame.js");

// Test that computing the implicit 'this' in calls for D.F.eval is as if it
// were a pasted-in eval.

var G = this;

function globalFun(check, expectedThis) {
  if (check)
    assertEq(this, expectedThis);
  return this;
}
var expectedGlobalFunThis = globalFun(false);
evalInFrame(0, "globalFun(true, expectedGlobalFunThis)");

(function testInnerFun() {
  function innerFun(check, expectedThis) {
    if (check)
      assertEq(this, expectedThis);
    return this;
  }
  var expectedInnerFunThis = innerFun(false);
  evalInFrame(0, "innerFun(true, expectedInnerFunThis)");
  return [innerFun, expectedInnerFunThis]; // To prevent the JIT from optimizing out vars.
})();

(function testWith() {
  var o = {
    withFun: function withFun(check, expectedThis) {
      if (check)
        assertEq(this, expectedThis);
      return this;
    }
  };
  with (o) {
    var expectedWithFunThis = withFun(false);
    evalInFrame(0, "withFun(true, expectedWithFunThis)");
  }
})();