Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| --fast-warmup
// Function with overridden call/apply (scripted).
function funOverridden1(x, y) { return x + y; }
funOverridden1.call = x => x + 1;
funOverridden1.apply = x => x + 2;
// Function with overridden call/apply (native).
function funOverridden2(x, y) { return x + y; }
funOverridden2.call = Math.abs;
funOverridden2.apply = Math.abs;
// Function with call/apply properties with other names.
function funOverridden3(x, y) { return x + y; }
funOverridden3.myCall = Function.prototype.call;
funOverridden3.myApply = Function.prototype.apply;
function f() {
var arr = [1, 2];
for (var i = 0; i < 100; i++) {
assertEq(funOverridden1.call(i, i), i + 1);
assertEq(funOverridden1.apply(i, i), i + 2);
assertEq(funOverridden2.call(i, i), i);
assertEq(funOverridden2.apply(i, i), i);
assertEq(funOverridden3.myCall(null, i, i), i + i);
assertEq(funOverridden3.myApply(null, arr), 3);
}
}
f();