js/src/jit-test/tests/ion/bug818023.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:84e0ec30b952
1 Function.prototype.callX = Function.prototype.call;
2 var x;
3 function f() {
4 x = f.caller;
5 return x;
6 }
7
8 function g() {
9 return f.callX(null);
10 }
11
12 function h1() {
13 // native
14 return ([0].map(f))[0];
15 }
16
17 function h2() {
18 // self-hosted
19 x = null;
20 [0].forEach(f);
21 return x;
22 }
23
24 function k() {
25 x = null;
26 [0, 1].sort(f);
27 return x;
28 }
29
30 function l() {
31 return f();
32 }
33
34 assertEq(g(), g);
35 assertEq(h1(), h1);
36 assertEq(h2(), h2);
37 assertEq(k(), k);
38 assertEq(l(), l);
39
40 var baz;
41 var foo = {callX: function() { return "m"; }};
42 function bar() {
43 return baz.caller;
44 }
45 function m() {
46 return baz.callX(null);
47 }
48
49 baz = foo;
50 assertEq(m(), "m");
51 baz = bar;
52 assertEq(m(), m);
53 assertEq(m(), m);

mercurial