| function foo(o, start) { |
| var result = 0; |
| for (var i = 0; i < 100; ++i) |
| result += o.f; |
| return result; |
| } |
| |
| noInline(foo); |
| |
| |
| var p = {}; |
| p.f = 42; |
| var o = Object.create(p); |
| |
| var q = {} |
| q.f = 42; |
| |
| var f = {}; |
| |
| for (var i = 0; i < 10000; ++i) |
| o.f = i; |
| o.f = 42; |
| |
| for (var i = 0; i < 10000; ++i) { |
| if (i % 100 === 0) { |
| let result = foo(q) |
| if (result !== 4200) |
| throw new Error("bad result: " + result); |
| } |
| |
| if (foo(o) !== 4200) |
| throw new Error("bad result: " + result); |
| var result = foo(f); |
| if (!Number.isNaN(result)) |
| throw new Error("bad result: " + result); |
| } |
| |
| var q = {}; |
| q.f = 43; |
| var result = foo(q); |
| if (result != 100 * 43) |
| throw "Error: bad result at end: " + result; |