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

Reply via email to