diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp | 16 |
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; |