function foo(a, b) { var result = a + b; if (result) return (a + b) + result + this; else return this.f; } noInline(foo); var x; Number.prototype.valueOf = function() { return x; }; function test(this_, a, b, x_) { x = x_; var result = foo.call(this_, a, b); if (result != (a + b) * 2 + x_) throw "Error: bad result: " + result; } for (var i = 0; i < 100000; ++i) test(5, 1, 2, 100); test(5, 2000000000, 2000000000, 1); test(5, 1073741774, 1073741774, 1000);