Title: [210052] trunk
Revision
210052
Author
[email protected]
Date
2016-12-20 20:04:50 -0800 (Tue, 20 Dec 2016)

Log Message

Add support for global
https://bugs.webkit.org/show_bug.cgi?id=165171

Reviewed by Filip Pizlo.

JSTests:

* stress/global.js: Added.

Source/_javascript_Core:

This patch adds spport for the global property on the global object.
The global property spec is in stage three and is quite simple.
For reference: http://tc39.github.io/proposal-global/

* runtime/JSGlobalObject.cpp:

LayoutTests:

Fix getOwnPropertyDescriptor test.

* js/resources/getOwnPropertyDescriptor.js:

Modified Paths

Added Paths

Diff

Modified: trunk/JSTests/ChangeLog (210051 => 210052)


--- trunk/JSTests/ChangeLog	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/JSTests/ChangeLog	2016-12-21 04:04:50 UTC (rev 210052)
@@ -1,3 +1,12 @@
+2016-12-20  Keith Miller  <[email protected]>
+
+        Add support for global
+        https://bugs.webkit.org/show_bug.cgi?id=165171
+
+        Reviewed by Filip Pizlo.
+
+        * stress/global.js: Added.
+
 2016-12-20  JF Bastien  <[email protected]>
 
         WebAssembly API: implement WebAssembly.LinkError

Added: trunk/JSTests/stress/global.js (0 => 210052)


--- trunk/JSTests/stress/global.js	                        (rev 0)
+++ trunk/JSTests/stress/global.js	2016-12-21 04:04:50 UTC (rev 210052)
@@ -0,0 +1,20 @@
+// This file tests the global property on the global object.
+
+let g = new Function("return this")();
+
+if (g !== global)
+    throw new Error("global returned the wrong value");
+
+for (name in g) {
+    if (name === "global")
+        throw new Error("global should not be enumerable")
+}
+
+
+global = 5;
+if (global !== 5)
+    throw new Error("global should be assignable");
+
+delete global;
+if ("global" in g)
+    throw new Error("global should be configurable");

Modified: trunk/LayoutTests/ChangeLog (210051 => 210052)


--- trunk/LayoutTests/ChangeLog	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/LayoutTests/ChangeLog	2016-12-21 04:04:50 UTC (rev 210052)
@@ -1,3 +1,14 @@
+2016-12-20  Keith Miller  <[email protected]>
+
+        Add support for global
+        https://bugs.webkit.org/show_bug.cgi?id=165171
+
+        Reviewed by Filip Pizlo.
+
+        Fix getOwnPropertyDescriptor test.
+
+        * js/resources/getOwnPropertyDescriptor.js:
+
 2016-12-20  Ryan Haddad  <[email protected]>
 
         Rebaseline js/dom/global-constructors-attributes.html for mac-wk1.

Modified: trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt (210051 => 210052)


--- trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt	2016-12-21 04:04:50 UTC (rev 210052)
@@ -94,42 +94,42 @@
 PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').enumerable is false
 PASS Object.getOwnPropertyDescriptor(Math.sin, 'name').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'global').value is global
-PASS Object.getOwnPropertyDescriptor(global, 'global').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'global').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'global').enumerable is true
-PASS Object.getOwnPropertyDescriptor(global, 'global').configurable is false
-PASS Object.getOwnPropertyDescriptor(global, 'undefined').value is undefined
-PASS Object.getOwnPropertyDescriptor(global, 'undefined').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'undefined').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'undefined').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'undefined').configurable is false
-PASS Object.getOwnPropertyDescriptor(global, 'NaN').value is NaN
-PASS Object.getOwnPropertyDescriptor(global, 'NaN').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'NaN').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'NaN').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'NaN').configurable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Infinity').value is Infinity
-PASS Object.getOwnPropertyDescriptor(global, 'Infinity').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Infinity').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Infinity').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Infinity').configurable is false
-PASS Object.getOwnPropertyDescriptor(global, 'window').get is globalWindowGetter
-PASS Object.getOwnPropertyDescriptor(global, 'window').set is undefined
-PASS Object.getOwnPropertyDescriptor(global, 'window').hasOwnProperty('value') is false
-PASS Object.getOwnPropertyDescriptor(global, 'window').hasOwnProperty('writable') is false
-PASS Object.getOwnPropertyDescriptor(global, 'window').enumerable is true
-PASS Object.getOwnPropertyDescriptor(global, 'window').configurable is false
-PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').value is XMLHttpRequest
-PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 0).value is global[0]
-PASS Object.getOwnPropertyDescriptor(global, 0).hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 0).hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 0).enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 0).configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'globalObject').value is globalObject
+PASS Object.getOwnPropertyDescriptor(globalObject, 'globalObject').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'globalObject').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'globalObject').enumerable is true
+PASS Object.getOwnPropertyDescriptor(globalObject, 'globalObject').configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'undefined').value is undefined
+PASS Object.getOwnPropertyDescriptor(globalObject, 'undefined').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'undefined').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'undefined').enumerable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'undefined').configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'NaN').value is NaN
+PASS Object.getOwnPropertyDescriptor(globalObject, 'NaN').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'NaN').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'NaN').enumerable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'NaN').configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'Infinity').value is Infinity
+PASS Object.getOwnPropertyDescriptor(globalObject, 'Infinity').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'Infinity').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'Infinity').enumerable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'Infinity').configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').get is globalWindowGetter
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').set is undefined
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').hasOwnProperty('value') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').hasOwnProperty('writable') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').enumerable is true
+PASS Object.getOwnPropertyDescriptor(globalObject, 'window').configurable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'XMLHttpRequest').value is XMLHttpRequest
+PASS Object.getOwnPropertyDescriptor(globalObject, 'XMLHttpRequest').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'XMLHttpRequest').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'XMLHttpRequest').enumerable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 'XMLHttpRequest').configurable is true
+PASS Object.getOwnPropertyDescriptor(globalObject, 0).value is globalObject[0]
+PASS Object.getOwnPropertyDescriptor(globalObject, 0).hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 0).hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 0).enumerable is false
+PASS Object.getOwnPropertyDescriptor(globalObject, 0).configurable is false
 PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 0).value is document.getElementsByTagName('div')[0]
 PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 0).hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 0).hasOwnProperty('set') is false

Modified: trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js (210051 => 210052)


--- trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js	2016-12-21 04:04:50 UTC (rev 210052)
@@ -36,15 +36,15 @@
 descriptorShouldBe("function(){}", "'length'", {writable: false, enumerable: false, configurable: true, value:0});
 descriptorShouldBe("Math.sin", "'length'", {writable: false, enumerable: false, configurable: true, value:1});
 descriptorShouldBe("Math.sin", "'name'", {writable: false, enumerable: false, configurable: true, value:"'sin'"});
-var global = this;
-descriptorShouldBe("global", "'global'", {writable: true, enumerable: true, configurable: false, value:"global"});
-descriptorShouldBe("global", "'undefined'", {writable: false, enumerable: false, configurable: false, value:"undefined"});
-descriptorShouldBe("global", "'NaN'", {writable: false, enumerable: false, configurable: false, value:"NaN"});
-descriptorShouldBe("global", "'Infinity'", {writable: false, enumerable: false, configurable: false, value:"Infinity"});
-var globalWindowGetter = Object.getOwnPropertyDescriptor(global, 'window').get;
-descriptorShouldBe("global", "'window'", {get: 'globalWindowGetter', set: undefined, enumerable: true, configurable: false});
-descriptorShouldBe("global", "'XMLHttpRequest'", {writable: true, enumerable: false, configurable: true, value:"XMLHttpRequest"});
-descriptorShouldBe("global", "0", {writable: true, enumerable: false, configurable: false, value:"global[0]"});
+var globalObject = this;
+descriptorShouldBe("globalObject", "'globalObject'", {writable: true, enumerable: true, configurable: false, value:"globalObject"});
+descriptorShouldBe("globalObject", "'undefined'", {writable: false, enumerable: false, configurable: false, value:"undefined"});
+descriptorShouldBe("globalObject", "'NaN'", {writable: false, enumerable: false, configurable: false, value:"NaN"});
+descriptorShouldBe("globalObject", "'Infinity'", {writable: false, enumerable: false, configurable: false, value:"Infinity"});
+var globalWindowGetter = Object.getOwnPropertyDescriptor(globalObject, 'window').get;
+descriptorShouldBe("globalObject", "'window'", {get: 'globalWindowGetter', set: undefined, enumerable: true, configurable: false});
+descriptorShouldBe("globalObject", "'XMLHttpRequest'", {writable: true, enumerable: false, configurable: true, value:"XMLHttpRequest"});
+descriptorShouldBe("globalObject", "0", {writable: true, enumerable: false, configurable: false, value:"globalObject[0]"});
 descriptorShouldBe("document.getElementsByTagName('div')", "0", {writable: false, enumerable: true, configurable: true, value:"document.getElementsByTagName('div')[0]"});
 descriptorShouldBe("document.getElementsByClassName('pass')", "0", {writable: false, enumerable: true, configurable: true, value:"document.getElementsByClassName('pass')[0]"});
 var canvas = document.createElement("canvas");

Modified: trunk/Source/_javascript_Core/ChangeLog (210051 => 210052)


--- trunk/Source/_javascript_Core/ChangeLog	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-12-21 04:04:50 UTC (rev 210052)
@@ -1,3 +1,16 @@
+2016-12-20  Keith Miller  <[email protected]>
+
+        Add support for global
+        https://bugs.webkit.org/show_bug.cgi?id=165171
+
+        Reviewed by Filip Pizlo.
+
+        This patch adds spport for the global property on the global object.
+        The global property spec is in stage three and is quite simple.
+        For reference: http://tc39.github.io/proposal-global/
+
+        * runtime/JSGlobalObject.cpp:
+
 2016-12-20  Saam Barati  <[email protected]>
 
         WebAssembly: We should compile wasm functions in parallel

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (210051 => 210052)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2016-12-21 02:29:21 UTC (rev 210051)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2016-12-21 04:04:50 UTC (rev 210052)
@@ -271,6 +271,7 @@
   encodeURI             globalFuncEncodeURI                          DontEnum|Function 1
   encodeURIComponent    globalFuncEncodeURIComponent                 DontEnum|Function 1
   EvalError             JSGlobalObject::m_evalErrorConstructor       DontEnum|CellProperty
+  global                JSGlobalObject::m_globalThis                 DontEnum|CellProperty
   ReferenceError        JSGlobalObject::m_referenceErrorConstructor  DontEnum|CellProperty
   SyntaxError           JSGlobalObject::m_syntaxErrorConstructor     DontEnum|CellProperty
   URIError              JSGlobalObject::m_URIErrorConstructor        DontEnum|CellProperty
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to