Title: [201315] trunk/Source/_javascript_Core
- Revision
- 201315
- Author
- [email protected]
- Date
- 2016-05-23 20:27:45 -0700 (Mon, 23 May 2016)
Log Message
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: trunk/Source/_javascript_Core/ChangeLog (201314 => 201315)
--- trunk/Source/_javascript_Core/ChangeLog 2016-05-24 02:10:16 UTC (rev 201314)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-05-24 03:27:45 UTC (rev 201315)
@@ -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-05-23 Saam barati <[email protected]>
The baseline JIT crashes when compiling "(1,1)/1"
Modified: trunk/Source/_javascript_Core/runtime/JSObject.cpp (201314 => 201315)
--- trunk/Source/_javascript_Core/runtime/JSObject.cpp 2016-05-24 02:10:16 UTC (rev 201314)
+++ trunk/Source/_javascript_Core/runtime/JSObject.cpp 2016-05-24 03:27:45 UTC (rev 201315)
@@ -1495,8 +1495,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