function foo(a, b, c) { c.f.f = a.f + b.f; } noInline(foo); var counter = 0; function makeWeirdObject() { var result = {}; result["blah" + (counter++)] = 42; return result; } for (var i = 0; i < 100000; ++i) { var o = makeWeirdObject(); foo({f:2000000000}, {f:2000000000}, {f:o}); if (o.f != 4000000000) throw "Error: bad result: " + result; } var thingy; Number.prototype.__defineSetter__("f", function(value) { thingy = value; }); foo({f:2000000000}, {f:2000000000}, {f:42}); if (thingy != 4000000000) throw "Error: bad result: " + thingy;