var createDOMJITGetterComplexObject = $vm.createDOMJITGetterComplexObject; function shouldBe(actual, expected) { if (actual !== expected) throw new Error(`bad value: ${String(actual)}`); } function shouldThrow(func, errorMessage) { var errorThrown = false; var error = null; try { func(); } catch (e) { errorThrown = true; error = e; } if (!errorThrown) throw new Error('not thrown'); if (String(error) !== errorMessage) throw new Error(`bad error: ${String(error)}`); } (function () { let domjit = createDOMJITGetterComplexObject(); function access(object) { return object.customGetter; } noInline(access); for (var i = 0; i < 1e4; ++i) shouldBe(access(domjit), 42); domjit.enableException(); shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`); }()); (function () { let domjit = createDOMJITGetterComplexObject(); function access(object) { return object.customGetter; } noInline(access); for (let i = 0; i < 1e2; ++i) shouldBe(access(domjit), 42); domjit.enableException(); shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`); }()); (function () { let domjit = createDOMJITGetterComplexObject(); function access(object) { return object.customGetter; } noInline(access); for (let i = 0; i < 50; ++i) shouldBe(access(domjit), 42); domjit.enableException(); shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`); }()); (function () { let domjit = createDOMJITGetterComplexObject(); function access(object) { return object.customGetter; } noInline(access); for (let i = 0; i < 10; ++i) shouldBe(access(domjit), 42); domjit.enableException(); shouldThrow(() => access(domjit), `Error: DOMJITGetterComplex slow call exception`); }());