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); }