diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2016-10-05 16:03:30 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-10-05 16:03:30 +0000 |
commit | 4aa6a93c46a959df1ab71ee7a68ad345338046ef (patch) | |
tree | 30fe24096f6c3dcf3e0eecfb56a9372be49fef72 /compiler/optimizing/loop_optimization.cc | |
parent | 99ce62c3475765821024616b1223d37576e327dc (diff) | |
parent | 5ed20f90acd05e1f8697340f11113f0c61c22492 (diff) |
Merge "Make it possible to pass an arena allocator to HLoopOptimization."
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r-- | compiler/optimizing/loop_optimization.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc index 383a0278c6..b12a7f76c6 100644 --- a/compiler/optimizing/loop_optimization.cc +++ b/compiler/optimizing/loop_optimization.cc @@ -126,9 +126,14 @@ static void RemoveFromCycle(HInstruction* instruction) { HLoopOptimization::HLoopOptimization(HGraph* graph, HInductionVarAnalysis* induction_analysis) + : HLoopOptimization(graph, induction_analysis, nullptr) {} + +HLoopOptimization::HLoopOptimization(HGraph* graph, + HInductionVarAnalysis* induction_analysis, + ArenaAllocator* allocator) : HOptimization(graph, kLoopOptimizationPassName), induction_range_(induction_analysis), - loop_allocator_(nullptr), + loop_allocator_(allocator), top_loop_(nullptr), last_loop_(nullptr) { } @@ -141,7 +146,9 @@ void HLoopOptimization::Run() { } ArenaAllocator allocator(graph_->GetArena()->GetArenaPool()); - loop_allocator_ = &allocator; + if (loop_allocator_ == nullptr) { + loop_allocator_ = &allocator; + } // Build the linear order. This step enables building a loop hierarchy that // properly reflects the outer-inner and previous-next relation. @@ -157,7 +164,9 @@ void HLoopOptimization::Run() { // Traverse the loop hierarchy inner-to-outer and optimize. TraverseLoopsInnerToOuter(top_loop_); } - loop_allocator_ = nullptr; + if (loop_allocator_ == &allocator) { + loop_allocator_ = nullptr; + } } void HLoopOptimization::AddLoop(HLoopInformation* loop_info) { |