function bar(o, p) { if (p) return +o.f; return 42; } var globalResult; Function.prototype.valueOf = function() { globalResult = 1; }; function foo(p, q) { globalResult = 0; var o = function() { }; var o2 = {f: o}; if (p) bar(o2, q); return globalResult; } noInline(foo); foo(true, false); for (var i = 0; i < 10000; ++i) bar({f:42}, true); for (var i = 0; i < 10000; ++i) { var result = foo(false, true); if (result !== 0) throw "Error: bad result: " + result; } var result = foo(true, true); if (result !== 1) throw "Error: bad result at end: " + result;