diff options
| author | 2014-06-05 20:09:47 +0100 | |
|---|---|---|
| committer | 2014-06-06 11:03:11 +0100 | |
| commit | c9360ce1f1dabb4075b09dd6db49ee6d4212a6fc (patch) | |
| tree | 15db894a00ed90d3dbe930647368fd11bd52e47a /compiler/dex | |
| parent | 7ce610516242b1ffd47a42bfc31c2d562f443ca6 (diff) | |
Use ScopedArenaVector instead of std::vector in SSA transformation.
Change-Id: Ibf8471274f2d5e11fcc185044745434c3c82ed74
Diffstat (limited to 'compiler/dex')
| -rw-r--r-- | compiler/dex/mir_optimization_test.cc | 2 | ||||
| -rw-r--r-- | compiler/dex/ssa_transformation.cc | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/compiler/dex/mir_optimization_test.cc b/compiler/dex/mir_optimization_test.cc index 69c394f168..29c353a4e6 100644 --- a/compiler/dex/mir_optimization_test.cc +++ b/compiler/dex/mir_optimization_test.cc @@ -188,7 +188,9 @@ class ClassInitCheckEliminationTest : public testing::Test { } void PerformClassInitCheckElimination() { + cu_.mir_graph->SSATransformationStart(); cu_.mir_graph->ComputeDFSOrders(); + cu_.mir_graph->SSATransformationEnd(); bool gate_result = cu_.mir_graph->EliminateClassInitChecksGate(); ASSERT_TRUE(gate_result); RepeatingPreOrderDfsIterator iterator(cu_.mir_graph.get()); diff --git a/compiler/dex/ssa_transformation.cc b/compiler/dex/ssa_transformation.cc index bd6bc22531..43243254f1 100644 --- a/compiler/dex/ssa_transformation.cc +++ b/compiler/dex/ssa_transformation.cc @@ -16,6 +16,7 @@ #include "compiler_internals.h" #include "dataflow_iterator-inl.h" +#include "utils/scoped_arena_containers.h" #define NOTVISITED (-1) @@ -69,7 +70,8 @@ void MIRGraph::MarkPreOrder(BasicBlock* block) { } void MIRGraph::RecordDFSOrders(BasicBlock* block) { - std::vector<BasicBlock*> succ; + DCHECK(temp_scoped_alloc_.get() != nullptr); + ScopedArenaVector<BasicBlock*> succ(temp_scoped_alloc_->Adapter()); MarkPreOrder(block); succ.push_back(block); while (!succ.empty()) { @@ -176,7 +178,9 @@ void MIRGraph::ComputeDomPostOrderTraversal(BasicBlock* bb) { dom_post_order_traversal_->Reset(); } ClearAllVisitedFlags(); - std::vector<std::pair<BasicBlock*, ArenaBitVector::IndexIterator>> work_stack; + DCHECK(temp_scoped_alloc_.get() != nullptr); + ScopedArenaVector<std::pair<BasicBlock*, ArenaBitVector::IndexIterator>> work_stack( + temp_scoped_alloc_->Adapter()); bb->visited = true; work_stack.push_back(std::make_pair(bb, bb->i_dominated->Indexes().begin())); while (!work_stack.empty()) { |