summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp b/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp
index 89ca68b9c..848917f70 100644
--- a/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp
+++ b/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp
@@ -29,7 +29,6 @@
#if ENABLE(DFG_JIT)
#include "DFGGraph.h"
-#include "JSCInlines.h"
#include <wtf/CommaPrinter.h>
namespace JSC { namespace DFG {
@@ -42,10 +41,11 @@ void NaturalLoop::dump(PrintStream& out) const
out.print("]");
}
-NaturalLoops::NaturalLoops(Graph& graph)
-{
- ASSERT(graph.m_dominators);
+NaturalLoops::NaturalLoops() { }
+NaturalLoops::~NaturalLoops() { }
+void NaturalLoops::compute(Graph& graph)
+{
// Implement the classic dominator-based natural loop finder. The first
// step is to find all control flow edges A -> B where B dominates A.
// Then B is a loop header and A is a backward branching block. We will
@@ -56,9 +56,11 @@ NaturalLoops::NaturalLoops(Graph& graph)
static const bool verbose = false;
+ graph.m_dominators.computeIfNecessary(graph);
+
if (verbose) {
dataLog("Dominators:\n");
- graph.m_dominators->dump(WTF::dataFile());
+ graph.m_dominators.dump(graph, WTF::dataFile());
}
m_loops.resize(0);
@@ -70,7 +72,7 @@ NaturalLoops::NaturalLoops(Graph& graph)
for (unsigned i = block->numSuccessors(); i--;) {
BasicBlock* successor = block->successor(i);
- if (!graph.m_dominators->dominates(successor, block))
+ if (!graph.m_dominators.dominates(successor, block))
continue;
bool found = false;
for (unsigned j = m_loops.size(); j--;) {
@@ -193,8 +195,6 @@ NaturalLoops::NaturalLoops(Graph& graph)
dataLog("Results: ", *this, "\n");
}
-NaturalLoops::~NaturalLoops() { }
-
Vector<const NaturalLoop*> NaturalLoops::loopsOf(BasicBlock* block) const
{
Vector<const NaturalLoop*> result;