diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp b/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp index 848917f70..1b7472460 100644 --- a/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp +++ b/Source/JavaScriptCore/dfg/DFGNaturalLoops.cpp @@ -29,6 +29,7 @@ #if ENABLE(DFG_JIT) #include "DFGGraph.h" +#include "JSCInlines.h" #include <wtf/CommaPrinter.h> namespace JSC { namespace DFG { @@ -41,11 +42,10 @@ void NaturalLoop::dump(PrintStream& out) const out.print("]"); } -NaturalLoops::NaturalLoops() { } -NaturalLoops::~NaturalLoops() { } - -void NaturalLoops::compute(Graph& graph) +NaturalLoops::NaturalLoops(Graph& graph) { + ASSERT(graph.m_dominators); + // 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,11 +56,9 @@ void NaturalLoops::compute(Graph& graph) static const bool verbose = false; - graph.m_dominators.computeIfNecessary(graph); - if (verbose) { dataLog("Dominators:\n"); - graph.m_dominators.dump(graph, WTF::dataFile()); + graph.m_dominators->dump(WTF::dataFile()); } m_loops.resize(0); @@ -72,7 +70,7 @@ void NaturalLoops::compute(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--;) { @@ -107,7 +105,7 @@ void NaturalLoops::compute(Graph& graph) dataLog("Dealing with loop ", loop, "\n"); for (unsigned j = loop.size(); j--;) { - seenBlocks.set(loop[j]->index); + seenBlocks[loop[j]->index] = true; blockWorklist.append(loop[j]); } @@ -122,12 +120,12 @@ void NaturalLoops::compute(Graph& graph) for (unsigned j = block->predecessors.size(); j--;) { BasicBlock* predecessor = block->predecessors[j]; - if (seenBlocks.get(predecessor->index)) + if (seenBlocks[predecessor->index]) continue; loop.addBlock(predecessor); blockWorklist.append(predecessor); - seenBlocks.set(predecessor->index); + seenBlocks[predecessor->index] = true; } } } @@ -195,6 +193,8 @@ void NaturalLoops::compute(Graph& graph) dataLog("Results: ", *this, "\n"); } +NaturalLoops::~NaturalLoops() { } + Vector<const NaturalLoop*> NaturalLoops::loopsOf(BasicBlock* block) const { Vector<const NaturalLoop*> result; |