var seen = -1; // Test to make sure the jits get the number of calls, and return value // of setters correct. We should not be affected by whether the setter // modifies its argument or returns some value. function setter(x) { this.val = x; x = 255; bailout(); seen++; assertEq(seen, this.val); return 5; } function F(){} Object.defineProperty(F.prototype, "value" , ({set: setter})); function test() { var obj = new F(); var itrCount = 10000; for(var i = 0; i < itrCount; i++) { assertEq(obj.value = i, i); assertEq(obj.val, i); } } test();