Title: [204828] releases/WebKitGTK/webkit-2.12/Source/_javascript_Core
- Revision
- 204828
- Author
- [email protected]
- Date
- 2016-08-23 06:08:14 -0700 (Tue, 23 Aug 2016)
Log Message
Merge r201315 - REGRESSION (196374): deleting a global property is expensive
https://bugs.webkit.org/show_bug.cgi?id=158005
Reviewed by Chris Dumez.
* runtime/JSObject.cpp:
(JSC::JSObject::deleteProperty): We only need to reify static properties
if the name being deleted matches a static property. Otherwise, we can
be sure that delete won't observe any static properties.
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog (204827 => 204828)
--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog 2016-08-23 12:59:38 UTC (rev 204827)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog 2016-08-23 13:08:14 UTC (rev 204828)
@@ -1,3 +1,15 @@
+2016-05-23 Geoffrey Garen <[email protected]>
+
+ REGRESSION (196374): deleting a global property is expensive
+ https://bugs.webkit.org/show_bug.cgi?id=158005
+
+ Reviewed by Chris Dumez.
+
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::deleteProperty): We only need to reify static properties
+ if the name being deleted matches a static property. Otherwise, we can
+ be sure that delete won't observe any static properties.
+
2016-07-07 Csaba Osztrogonác <[email protected]>
[ARMv7] REGRESSION(r197655): ASSERTION FAILED: (cond == Zero) || (cond == NonZero)
Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/runtime/JSObject.cpp (204827 => 204828)
--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/runtime/JSObject.cpp 2016-08-23 12:59:38 UTC (rev 204827)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/runtime/JSObject.cpp 2016-08-23 13:08:14 UTC (rev 204828)
@@ -1301,8 +1301,13 @@
if (Optional<uint32_t> index = parseIndex(propertyName))
return thisObject->methodTable(vm)->deletePropertyByIndex(thisObject, exec, index.value());
- if (!thisObject->staticFunctionsReified())
- thisObject->reifyAllStaticProperties(exec);
+ if (!thisObject->staticFunctionsReified()) {
+ if (auto* entry = thisObject->findPropertyHashEntry(propertyName)) {
+ if (entry->attributes() & DontDelete)
+ return false;
+ thisObject->reifyAllStaticProperties(exec);
+ }
+ }
unsigned attributes;
if (isValidOffset(thisObject->structure(vm)->get(vm, propertyName, attributes))) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes