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