| 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; |