| function foo(o) |
| { |
| var theO = (function() { return o; })(); |
| var x = theO.f; |
| arguments[42]; |
| return x + theO.f; |
| } |
| |
| // Break some watchpoints. |
| var o = {f:24}; |
| o.g = 43; |
| |
| noInline(foo); |
| |
| for (var i = 0; i < 10000; ++i) { |
| var result = foo({f:42}); |
| if (result != 84) |
| throw "Error: bad result: " + result; |
| } |
| |
| var globalO = {f:42}; |
| Object.prototype.__defineGetter__(42, function() { |
| delete globalO.f; |
| globalO.__defineGetter__("f", function() { return 75; }); |
| return 33; |
| }); |
| var result = foo(globalO); |
| if (result != 42 + 75) |
| throw "Error: bad result at end: " + result; |
| |