diff -r 000000000000 -r 6474c204b198 js/src/jit-test/tests/ion/bug818023.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/jit-test/tests/ion/bug818023.js Wed Dec 31 06:09:35 2014 +0100 @@ -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);