function g(aa) { assertEq(aa, 123); } function f(x, yy) { if (yy < 0) { for (var j=0; j<100; j++) {} } var o = yy < 2000 ? o1 : o2; o.fun.apply(22, arguments); } function test() { o1 = {}; o1.fun = g; o2 = {}; o2.x = 3; o2.fun = g; for (var i=0; i<3000; i++) f(123, i); } test();