Title: [278424] trunk/Source/_javascript_Core
Revision
278424
Author
fpi...@apple.com
Date
2021-06-03 15:27:32 -0700 (Thu, 03 Jun 2021)

Log Message

DFG should eliminate obvious store barriers
https://bugs.webkit.org/show_bug.cgi?id=226604

Reviewed by Mark Lam.

This has a couple changes:
        
- PutByOffset doesn't GC! So let's not say that it does.

- The store barrier clustering phase is no longer called the store barrier fencing phase in
  dumps.

Small Speedometer2 speed-up. Definite speed-up for Elm.

* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGStoreBarrierClusteringPhase.cpp:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (278423 => 278424)


--- trunk/Source/_javascript_Core/ChangeLog	2021-06-03 22:27:13 UTC (rev 278423)
+++ trunk/Source/_javascript_Core/ChangeLog	2021-06-03 22:27:32 UTC (rev 278424)
@@ -1,3 +1,23 @@
+2021-06-03  Filip Pizlo  <fpi...@apple.com>
+
+        DFG should eliminate obvious store barriers
+        https://bugs.webkit.org/show_bug.cgi?id=226604
+
+        Reviewed by Mark Lam.
+
+        This has a couple changes:
+        
+        - PutByOffset doesn't GC! So let's not say that it does.
+
+        - The store barrier clustering phase is no longer called the store barrier fencing phase in
+          dumps.
+
+        Small Speedometer2 speed-up. Definite speed-up for Elm.
+
+        * dfg/DFGDoesGC.cpp:
+        (JSC::DFG::doesGC):
+        * dfg/DFGStoreBarrierClusteringPhase.cpp:
+
 2021-06-03  Patrick Angle  <pan...@apple.com>
 
         Web Inspector: [Cocoa] `RemoteInspector` won't connect to a new relay if it hasn't yet failed to communicate with a previously connected relay

Modified: trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp (278423 => 278424)


--- trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp	2021-06-03 22:27:13 UTC (rev 278423)
+++ trunk/Source/_javascript_Core/dfg/DFGDoesGC.cpp	2021-06-03 22:27:32 UTC (rev 278424)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014-2020 Apple Inc. All rights reserved.
+ * Copyright (C) 2014-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -258,6 +258,7 @@
     case DataViewGetInt:
     case DataViewGetFloat:
     case DataViewSet:
+    case PutByOffset:
         return false;
 
 #if ASSERT_ENABLED
@@ -320,7 +321,6 @@
     case PutByIdDirect:
     case PutByIdFlush:
     case PutByIdWithThis:
-    case PutByOffset:
     case PutByValWithThis:
     case PutDynamicVar:
     case PutGetterById:

Modified: trunk/Source/_javascript_Core/dfg/DFGStoreBarrierClusteringPhase.cpp (278423 => 278424)


--- trunk/Source/_javascript_Core/dfg/DFGStoreBarrierClusteringPhase.cpp	2021-06-03 22:27:13 UTC (rev 278423)
+++ trunk/Source/_javascript_Core/dfg/DFGStoreBarrierClusteringPhase.cpp	2021-06-03 22:27:32 UTC (rev 278424)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2016-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -40,10 +40,12 @@
 
 namespace {
 
+constexpr bool verbose = false;
+
 class StoreBarrierClusteringPhase : public Phase {
 public:
     StoreBarrierClusteringPhase(Graph& graph)
-        : Phase(graph, "store barrier fencing")
+        : Phase(graph, "store barrier clustering")
         , m_insertionSet(graph)
     {
     }
@@ -98,6 +100,11 @@
             // would be weird because it would create a new root for OSR availability analysis. I
             // don't have evidence that it would be worth it.
             if (doesGC(m_graph, node) || mayExit(m_graph, node) != DoesNotExit) {
+                if (verbose) {
+                    dataLog("Possible GC point at ", node, "\n");
+                    dataLog("    doesGC = ", doesGC(m_graph, node), "\n");
+                    dataLog("    mayExit = ", mayExit(m_graph, node), "\n");
+                }
                 futureGC = true;
                 continue;
             }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to