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