diff options
Diffstat (limited to 'js/src/jit-test/tests/ion/bug818023.js')
-rw-r--r-- | js/src/jit-test/tests/ion/bug818023.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/bug818023.js b/js/src/jit-test/tests/ion/bug818023.js new file mode 100644 index 000000000..d572aaf24 --- /dev/null +++ b/js/src/jit-test/tests/ion/bug818023.js @@ -0,0 +1,53 @@ +Function.prototype.callX = Function.prototype.call; +var x; +function f() { + x = f.caller; + return x; +} + +function g() { + return f.callX(null); +} + +function h1() { + // native + return ([0].map(f))[0]; +} + +function h2() { + // self-hosted + x = null; + [0].forEach(f); + return x; +} + +function k() { + x = null; + [0, 1].sort(f); + return x; +} + +function l() { + return f(); +} + +assertEq(g(), g); +assertEq(h1(), h1); +assertEq(h2(), h2); +assertEq(k(), k); +assertEq(l(), l); + +var baz; +var foo = {callX: function() { return "m"; }}; +function bar() { + return baz.caller; +} +function m() { + return baz.callX(null); +} + +baz = foo; +assertEq(m(), "m"); +baz = bar; +assertEq(m(), m); +assertEq(m(), m); |