global-getter.js (1169B)
1 // Tests for |this| value passed to getters defined on the global. 2 3 function test(useWindowProxy) { 4 var g = newGlobal({useWindowProxy}); 5 g.useWindowProxy = useWindowProxy; 6 g.evaluate(` 7 var x = 123; 8 Object.defineProperty(this, "getX", {get: function() { return this.x; }}); 9 Object.defineProperty(Object.prototype, "protoGetX", {get: function() { return this.x * 2; }}); 10 Object.defineProperty(this, "thisIsProxy", {get: function() { return isProxy(this); }}); 11 12 function f() { 13 for (var i = 0; i < 100; i++) { 14 // GetGName 15 assertEq(getX, 123); 16 assertEq(protoGetX, 246); 17 assertEq(thisIsProxy, useWindowProxy); 18 // GetProp 19 assertEq(globalThis.getX, 123); 20 assertEq(globalThis.protoGetX, 246); 21 assertEq(globalThis.thisIsProxy, useWindowProxy); 22 } 23 } 24 f(); 25 `); 26 } 27 28 for (let useWindowProxy of [true, false]) { 29 test(useWindowProxy); 30 } 31 32 setJitCompilerOption("ic.force-megamorphic", 1); 33 34 for (let useWindowProxy of [true, false]) { 35 test(useWindowProxy); 36 }