From a26b3c51bfd97be1100d267f20c46535913e6bb7 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Mon, 9 May 2016 20:23:34 +0100 Subject: [PATCH] Attribute arena allocations previously marked as STL. Bug: 28603175 Bug: 28684584 (cherry picked from commit 3ea5a97d27468cec846d958c38d0d706ef7ec67e) Change-Id: I7f1bd22e7710cca74f4b10fd13cb8fa2c3b1b318 --- compiler/optimizing/dead_code_elimination.cc | 2 +- compiler/optimizing/nodes.cc | 14 +++++++++----- compiler/optimizing/ssa_builder.cc | 4 ++-- compiler/optimizing/ssa_phi_elimination.cc | 7 ++++--- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/compiler/optimizing/dead_code_elimination.cc b/compiler/optimizing/dead_code_elimination.cc index 5f1102499..49cfff46d 100644 --- a/compiler/optimizing/dead_code_elimination.cc +++ b/compiler/optimizing/dead_code_elimination.cc @@ -23,7 +23,7 @@ namespace art { static void MarkReachableBlocks(HGraph* graph, ArenaBitVector* visited) { - ArenaVector worklist(graph->GetArena()->Adapter()); + ArenaVector worklist(graph->GetArena()->Adapter(kArenaAllocDCE)); constexpr size_t kDefaultWorlistSize = 8; worklist.reserve(kDefaultWorlistSize); visited->SetBit(graph->GetEntryBlock()->GetBlockId()); diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index eb9c381c4..1e6bf07e4 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -56,9 +56,11 @@ void HGraph::FindBackEdges(ArenaBitVector* visited) { // Nodes that we're currently visiting, indexed by block id. ArenaBitVector visiting(arena_, blocks_.size(), false, kArenaAllocGraphBuilder); // Number of successors visited from a given node, indexed by block id. - ArenaVector successors_visited(blocks_.size(), 0u, arena_->Adapter()); + ArenaVector successors_visited(blocks_.size(), + 0u, + arena_->Adapter(kArenaAllocGraphBuilder)); // Stack of nodes that we're currently visiting (same as marked in "visiting" above). - ArenaVector worklist(arena_->Adapter()); + ArenaVector worklist(arena_->Adapter(kArenaAllocGraphBuilder)); constexpr size_t kDefaultWorklistSize = 8; worklist.reserve(kDefaultWorklistSize); visited->SetBit(entry_block_->GetBlockId()); @@ -228,11 +230,13 @@ void HGraph::ComputeDominanceInformation() { reverse_post_order_.push_back(entry_block_); // Number of visits of a given node, indexed by block id. - ArenaVector visits(blocks_.size(), 0u, arena_->Adapter()); + ArenaVector visits(blocks_.size(), 0u, arena_->Adapter(kArenaAllocGraphBuilder)); // Number of successors visited from a given node, indexed by block id. - ArenaVector successors_visited(blocks_.size(), 0u, arena_->Adapter()); + ArenaVector successors_visited(blocks_.size(), + 0u, + arena_->Adapter(kArenaAllocGraphBuilder)); // Nodes for which we need to visit successors. - ArenaVector worklist(arena_->Adapter()); + ArenaVector worklist(arena_->Adapter(kArenaAllocGraphBuilder)); constexpr size_t kDefaultWorklistSize = 8; worklist.reserve(kDefaultWorklistSize); worklist.push_back(entry_block_); diff --git a/compiler/optimizing/ssa_builder.cc b/compiler/optimizing/ssa_builder.cc index 35aa1b166..52ee3fbec 100644 --- a/compiler/optimizing/ssa_builder.cc +++ b/compiler/optimizing/ssa_builder.cc @@ -233,7 +233,7 @@ bool SsaBuilder::UpdatePrimitiveType(HPhi* phi, ArenaVector* worklist) { } void SsaBuilder::RunPrimitiveTypePropagation() { - ArenaVector worklist(graph_->GetArena()->Adapter()); + ArenaVector worklist(graph_->GetArena()->Adapter(kArenaAllocGraphBuilder)); for (HReversePostOrderIterator it(*graph_); !it.Done(); it.Advance()) { HBasicBlock* block = it.Current(); @@ -319,7 +319,7 @@ bool SsaBuilder::FixAmbiguousArrayOps() { // uses (because they are untyped) and environment uses (if --debuggable). // After resolving all ambiguous ArrayGets, we will re-run primitive type // propagation on the Phis which need to be updated. - ArenaVector worklist(graph_->GetArena()->Adapter()); + ArenaVector worklist(graph_->GetArena()->Adapter(kArenaAllocGraphBuilder)); { ScopedObjectAccess soa(Thread::Current()); diff --git a/compiler/optimizing/ssa_phi_elimination.cc b/compiler/optimizing/ssa_phi_elimination.cc index 0978ae17f..44bcadf84 100644 --- a/compiler/optimizing/ssa_phi_elimination.cc +++ b/compiler/optimizing/ssa_phi_elimination.cc @@ -30,7 +30,7 @@ void SsaDeadPhiElimination::MarkDeadPhis() { // Phis are constructed live and should not be revived if previously marked // dead. This algorithm temporarily breaks that invariant but we DCHECK that // only phis which were initially live are revived. - ArenaSet initially_live(graph_->GetArena()->Adapter()); + ArenaSet initially_live(graph_->GetArena()->Adapter(kArenaAllocSsaPhiElimination)); // Add to the worklist phis referenced by non-phi instructions. for (HReversePostOrderIterator it(*graph_); !it.Done(); it.Advance()) { @@ -127,8 +127,9 @@ void SsaRedundantPhiElimination::Run() { } } - ArenaSet visited_phis_in_cycle(graph_->GetArena()->Adapter()); - ArenaVector cycle_worklist(graph_->GetArena()->Adapter()); + ArenaSet visited_phis_in_cycle( + graph_->GetArena()->Adapter(kArenaAllocSsaPhiElimination)); + ArenaVector cycle_worklist(graph_->GetArena()->Adapter(kArenaAllocSsaPhiElimination)); while (!worklist_.empty()) { HPhi* phi = worklist_.back(); -- 2.11.0