Modified: releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog (213032 => 213033)
--- releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog 2017-02-27 07:55:01 UTC (rev 213032)
+++ releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog 2017-02-27 07:56:42 UTC (rev 213033)
@@ -1,3 +1,17 @@
+2017-02-21 Yusuke Suzuki <[email protected]>
+
+ ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings
+ https://bugs.webkit.org/show_bug.cgi?id=168605
+
+ Reviewed by Saam Barati.
+
+ * modules/module-namespace-is-frozen.js: Added.
+ (from.string_appeared_here.shouldThrow):
+ (export.b):
+ * modules/module-namespace-is-sealed.js: Added.
+ (from.string_appeared_here.shouldThrow):
+ (export.b):
+
2017-02-19 Commit Queue <[email protected]>
Unreviewed, rolling out r212466.
Added: releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-frozen.js (0 => 213033)
--- releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-frozen.js (rev 0)
+++ releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-frozen.js 2017-02-27 07:56:42 UTC (rev 213033)
@@ -0,0 +1,9 @@
+import * as ns from "./module-namespace-is-frozen.js"
+import {shouldThrow} from "./resources/assert.js"
+
+shouldThrow(() => {
+ Object.isFrozen(ns);
+}, `ReferenceError: Cannot access uninitialized variable.`);
+
+export let a;
+export function b () { }
Added: releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-sealed.js (0 => 213033)
--- releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-sealed.js (rev 0)
+++ releases/WebKitGTK/webkit-2.16/JSTests/modules/module-namespace-is-sealed.js 2017-02-27 07:56:42 UTC (rev 213033)
@@ -0,0 +1,9 @@
+import * as ns from "./module-namespace-is-sealed.js"
+import {shouldThrow} from "./resources/assert.js"
+
+shouldThrow(() => {
+ Object.isSealed(ns);
+}, `ReferenceError: Cannot access uninitialized variable.`);
+
+export let a;
+export function b () { }
Modified: releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog (213032 => 213033)
--- releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog 2017-02-27 07:55:01 UTC (rev 213032)
+++ releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog 2017-02-27 07:56:42 UTC (rev 213033)
@@ -1,3 +1,16 @@
+2017-02-21 Yusuke Suzuki <[email protected]>
+
+ ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings
+ https://bugs.webkit.org/show_bug.cgi?id=168605
+
+ Reviewed by Saam Barati.
+
+ We should check exception state after calling getOwnPropertyDescriptor() since it can throw errors.
+
+ * runtime/ObjectConstructor.cpp:
+ (JSC::objectConstructorIsSealed):
+ (JSC::objectConstructorIsFrozen):
+
2017-02-20 Mark Lam <[email protected]>
[Re-landing] CachedCall should let GC know to keep its arguments alive.
Modified: releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/ObjectConstructor.cpp (213032 => 213033)
--- releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/ObjectConstructor.cpp 2017-02-27 07:55:01 UTC (rev 213032)
+++ releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/ObjectConstructor.cpp 2017-02-27 07:56:42 UTC (rev 213033)
@@ -631,7 +631,7 @@
// 2. For each named own property name P of O,
PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
object->methodTable(vm)->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
+ RETURN_IF_EXCEPTION(scope, { });
PropertyNameArray::const_iterator end = properties.end();
for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
Identifier propertyName = *iter;
@@ -639,7 +639,9 @@
continue;
// a. Let desc be the result of calling the [[GetOwnProperty]] internal method of O with P.
PropertyDescriptor desc;
- if (!object->getOwnPropertyDescriptor(exec, propertyName, desc))
+ bool didGetDescriptor = object->getOwnPropertyDescriptor(exec, propertyName, desc);
+ RETURN_IF_EXCEPTION(scope, { });
+ if (!didGetDescriptor)
continue;
// b. If desc.[[Configurable]] is true, then return false.
if (desc.configurable())
@@ -649,7 +651,7 @@
// 3. If the [[Extensible]] internal property of O is false, then return true.
// 4. Otherwise, return false.
bool isExtensible = object->isExtensible(exec);
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
+ RETURN_IF_EXCEPTION(scope, { });
return JSValue::encode(jsBoolean(!isExtensible));
}
@@ -670,7 +672,7 @@
// 2. For each named own property name P of O,
PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
object->methodTable(vm)->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
+ RETURN_IF_EXCEPTION(scope, { });
PropertyNameArray::const_iterator end = properties.end();
for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
Identifier propertyName = *iter;
@@ -678,7 +680,9 @@
continue;
// a. Let desc be the result of calling the [[GetOwnProperty]] internal method of O with P.
PropertyDescriptor desc;
- if (!object->getOwnPropertyDescriptor(exec, propertyName, desc))
+ bool didGetDescriptor = object->getOwnPropertyDescriptor(exec, propertyName, desc);
+ RETURN_IF_EXCEPTION(scope, { });
+ if (!didGetDescriptor)
continue;
// b. If IsDataDescriptor(desc) is true then
// i. If desc.[[Writable]] is true, return false. c. If desc.[[Configurable]] is true, then return false.
@@ -689,7 +693,7 @@
// 3. If the [[Extensible]] internal property of O is false, then return true.
// 4. Otherwise, return false.
bool isExtensible = object->isExtensible(exec);
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
+ RETURN_IF_EXCEPTION(scope, { });
return JSValue::encode(jsBoolean(!isExtensible));
}