diff options
author | 2017-10-12 11:19:47 +0000 | |
---|---|---|
committer | 2017-10-12 11:19:47 +0000 | |
commit | 387c28110e562a11cc27448472f2031251a9ded4 (patch) | |
tree | 9dc69f88cf59703d24537fe8d23ef89373c76bfd /compiler/optimizing/dead_code_elimination.cc | |
parent | 0284f43d625f0776ee0586a7cc321e11f5405e8c (diff) | |
parent | 009d166842195711eca4d5768c59a8f7404e6875 (diff) |
Merge "Use ScopedArenaAllocator in BCE, DCE, LSE, ..."
Diffstat (limited to 'compiler/optimizing/dead_code_elimination.cc')
-rw-r--r-- | compiler/optimizing/dead_code_elimination.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/compiler/optimizing/dead_code_elimination.cc b/compiler/optimizing/dead_code_elimination.cc index 5117e07a12..3cc7b0e78d 100644 --- a/compiler/optimizing/dead_code_elimination.cc +++ b/compiler/optimizing/dead_code_elimination.cc @@ -18,13 +18,18 @@ #include "base/array_ref.h" #include "base/bit_vector-inl.h" +#include "base/scoped_arena_allocator.h" +#include "base/scoped_arena_containers.h" #include "base/stl_util.h" #include "ssa_phi_elimination.h" namespace art { static void MarkReachableBlocks(HGraph* graph, ArenaBitVector* visited) { - ArenaVector<HBasicBlock*> worklist(graph->GetAllocator()->Adapter(kArenaAllocDCE)); + // Use local allocator for allocating memory. + ScopedArenaAllocator allocator(graph->GetArenaStack()); + + ScopedArenaVector<HBasicBlock*> worklist(allocator.Adapter(kArenaAllocDCE)); constexpr size_t kDefaultWorlistSize = 8; worklist.reserve(kDefaultWorlistSize); visited->SetBit(graph->GetEntryBlock()->GetBlockId()); @@ -305,9 +310,12 @@ void HDeadCodeElimination::ConnectSuccessiveBlocks() { } bool HDeadCodeElimination::RemoveDeadBlocks() { + // Use local allocator for allocating memory. + ScopedArenaAllocator allocator(graph_->GetArenaStack()); + // Classify blocks as reachable/unreachable. - ArenaAllocator* allocator = graph_->GetAllocator(); - ArenaBitVector live_blocks(allocator, graph_->GetBlocks().size(), false, kArenaAllocDCE); + ArenaBitVector live_blocks(&allocator, graph_->GetBlocks().size(), false, kArenaAllocDCE); + live_blocks.ClearAllBits(); MarkReachableBlocks(graph_, &live_blocks); bool removed_one_or_more_blocks = false; |