//@ requireOptions("--exposeCustomSettersOnGlobalObjectForTesting=true") function assert(b) { if (!b) throw new Error; } let global = this; Object.defineProperty(global, "Y", { set: function(v) { assert(this === global); assert(v === i + 1); this._Y = v; } }); function foo(x, y, z, a) { this.X = x; this.Y = y; this.testCustomAccessorSetter = z; this.testCustomValueSetter = a; } noInline(foo); let i; for (i = 0; i < 1000000; ++i) { foo(i, i + 1, i + 2, i + 3); assert(global.X === i); assert(global._Y === i + 1); assert(global._testCustomAccessorSetter === i + 2); assert(global._testCustomValueSetter === i + 3); }