Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 Function.prototype.callX = Function.prototype.call;
2 var x;
3 function f() {
4 x = f.caller;
5 return x;
6 }
8 function g() {
9 return f.callX(null);
10 }
12 function h1() {
13 // native
14 return ([0].map(f))[0];
15 }
17 function h2() {
18 // self-hosted
19 x = null;
20 [0].forEach(f);
21 return x;
22 }
24 function k() {
25 x = null;
26 [0, 1].sort(f);
27 return x;
28 }
30 function l() {
31 return f();
32 }
34 assertEq(g(), g);
35 assertEq(h1(), h1);
36 assertEq(h2(), h2);
37 assertEq(k(), k);
38 assertEq(l(), l);
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 }
49 baz = foo;
50 assertEq(m(), "m");
51 baz = bar;
52 assertEq(m(), m);
53 assertEq(m(), m);