| function Cons1() |
| { |
| this.e = 1; |
| this.f = 2; |
| } |
| |
| Cons1.prototype.g = 1; |
| |
| function Cons2() |
| { |
| this.f = 1; |
| this.h = 2; |
| } |
| |
| Cons2.prototype.g = 2; |
| |
| function Cons3() |
| { |
| this.d = 1; |
| this.e = 2; |
| this.f = 3; |
| } |
| |
| Cons3.prototype = Cons2.prototype; |
| |
| function foo(o, p, q) |
| { |
| var x = 0, y = 0; |
| if (p) |
| x = o.f; |
| if (q) |
| y = o.f; |
| return x + y; |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| foo(new Cons1(), true, false); |
| foo(new Cons2(), false, true); |
| foo(new Cons3(), false, true); |
| } |
| |
| function bar(o, p) |
| { |
| return foo(o, true, p); |
| } |
| |
| noInline(bar); |
| |
| for (var i = 0; i < 100000; ++i) |
| bar(new Cons1(), false); |
| |
| var result = bar(new Cons1(), true); |
| if (result != 4) |
| throw "Error: bad result: " + result; |
| |