| function foo(o) { |
| "use strict"; |
| o.f = 42; |
| } |
| |
| noInline(foo); |
| |
| for (var i = 0; i < 100000; ++i) { |
| var o = {}; |
| foo(o); |
| if (o.f != 42) |
| throw "Error: bad result: " + o.f; |
| o = {f:23}; |
| foo(o); |
| if (o.f != 42) |
| throw "Error: bad result: " + o.f; |
| o = {g:12}; |
| foo(o); |
| if (o.f != 42) |
| throw "Error: bad result: " + o.f; |
| } |
| |
| var didThrow; |
| try { |
| var o = {}; |
| Object.freeze(o); |
| foo(o); |
| } catch (e) { |
| didThrow = e; |
| } |
| |
| if (!didThrow || didThrow.toString().indexOf("TypeError:") != 0) |
| throw "Error: didn't throw or threw wrong exception: " + didThrow; |