| var createCustomGetterObject = $vm.createCustomGetterObject; |
| |
| function assert(b) { |
| if (!b) throw new Error("b"); |
| } |
| noInline(assert); |
| |
| let i; |
| var o1 = createCustomGetterObject(); |
| o1.shouldThrow = false; |
| |
| var o2 = { |
| customGetter: 40 |
| } |
| |
| var o3 = { |
| x: 100, |
| customGetter: 50 |
| } |
| |
| i = -1000; |
| bar(i); |
| foo(i); |
| function bar(i) { |
| if (i === -1000) |
| return o1; |
| |
| if (i % 2) |
| return o3; |
| else |
| return o2; |
| } |
| noInline(bar); |
| |
| function foo(i) { |
| var o = bar(i); |
| var v; |
| try { |
| v = o.customGetter; |
| } catch(e) { |
| assert(o === o1); |
| } |
| } |
| noInline(foo); |
| |
| foo(i); |
| for (i = 0; i < 1000; i++) |
| foo(i); |
| |
| i = -1000; |
| for (let j = 0; j < 1000; j++) { |
| if (j > 10) |
| o1.shouldThrow = true; |
| foo(i); |
| } |