summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-10-26 12:39:04 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-10-26 12:39:04 +0000
commit1839d3c7557a48358dcdb78934aac8f62d0916bc (patch)
tree983e7803dbb3c3362f4bedfb81d2f3fb47744a3b /compiler/optimizing/optimizing_compiler.cc
parent605f27d8719c8238679038b452b4665f47a6916a (diff)
parent271743601650308c7ac5c7a3ec35025d8130a298 (diff)
Merge "Revert "Run type propagation after inliner only when needed.""
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index ec9b4d9797..d6f2543890 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -390,9 +390,19 @@ static void MaybeRunInliner(HGraph* graph,
return;
}
- HInliner* inliner = new (graph->GetArena()) HInliner(
+ ArenaAllocator* arena = graph->GetArena();
+ HInliner* inliner = new (arena) HInliner(
graph, dex_compilation_unit, dex_compilation_unit, driver, handles, stats);
- HOptimization* optimizations[] = { inliner };
+ ReferenceTypePropagation* type_propagation =
+ new (arena) ReferenceTypePropagation(graph, handles,
+ "reference_type_propagation_after_inlining");
+
+ HOptimization* optimizations[] = {
+ inliner,
+ // Run another type propagation phase: inlining will open up more opportunities
+ // to remove checkcast/instanceof and null checks.
+ type_propagation,
+ };
RunOptimizations(optimizations, arraysize(optimizations), pass_observer);
}