diff options
Diffstat (limited to 'compiler/optimizing/optimization.cc')
-rw-r--r-- | compiler/optimizing/optimization.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc index ef1f36ab08..bd8fbdf1d2 100644 --- a/compiler/optimizing/optimization.cc +++ b/compiler/optimizing/optimization.cc @@ -55,6 +55,7 @@ #include "licm.h" #include "load_store_elimination.h" #include "loop_optimization.h" +#include "reference_type_propagation.h" #include "scheduler.h" #include "select_generator.h" #include "sharpening.h" @@ -98,6 +99,8 @@ const char* OptimizationPassName(OptimizationPass pass) { return CodeSinking::kCodeSinkingPassName; case OptimizationPass::kConstructorFenceRedundancyElimination: return ConstructorFenceRedundancyElimination::kCFREPassName; + case OptimizationPass::kReferenceTypePropagation: + return ReferenceTypePropagation::kReferenceTypePropagationPassName; case OptimizationPass::kScheduling: return HInstructionScheduling::kInstructionSchedulingPassName; case OptimizationPass::kWriteBarrierElimination: @@ -154,6 +157,7 @@ OptimizationPass OptimizationPassByName(const std::string& pass_name) { X(OptimizationPass::kInvariantCodeMotion); X(OptimizationPass::kLoadStoreElimination); X(OptimizationPass::kLoopOptimization); + X(OptimizationPass::kReferenceTypePropagation); X(OptimizationPass::kScheduling); X(OptimizationPass::kSelectGenerator); X(OptimizationPass::kSideEffectsAnalysis); @@ -287,6 +291,10 @@ ArenaVector<HOptimization*> ConstructOptimizations( case OptimizationPass::kLoadStoreElimination: opt = new (allocator) LoadStoreElimination(graph, stats, pass_name); break; + case OptimizationPass::kReferenceTypePropagation: + opt = new (allocator) ReferenceTypePropagation( + graph, dex_compilation_unit.GetDexCache(), /* is_first_run= */ false, pass_name); + break; case OptimizationPass::kWriteBarrierElimination: opt = new (allocator) WriteBarrierElimination(graph, stats, pass_name); break; |