summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <ricardo@cyngn.com>2015-11-05 00:40:29 +0000
committerRicardo Cerqueira <ricardo@cyngn.com>2015-11-05 00:40:29 +0000
commit7931d83d0d4d552a8c6740ae97b3f746fe93724d (patch)
tree84967d285d7158e5985bd745fe52ad73f93f081b
parent888c9bd1fe419ab9e9e1bd90e8534336107515be (diff)
parentac1c3a4c22cb51b1f6887058a09d54695d069ade (diff)
downloadart-7931d83d0d4d552a8c6740ae97b3f746fe93724d.zip
art-7931d83d0d4d552a8c6740ae97b3f746fe93724d.tar.gz
art-7931d83d0d4d552a8c6740ae97b3f746fe93724d.tar.bz2
Merge tag 'android-6.0.0_r26' into cm-13.0
Android 6.0.0 release 26
-rw-r--r--compiler/optimizing/inliner.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc
index 61d25d3..9b0a697 100644
--- a/compiler/optimizing/inliner.cc
+++ b/compiler/optimizing/inliner.cc
@@ -273,10 +273,16 @@ bool HInliner::TryBuildAndInline(ArtMethod* resolved_method,
continue;
}
+ // We only do this on the target. We still want deterministic inlining on the host.
+ constexpr bool kInliningMustBeDeterministic = !kIsTargetBuild;
+
if (current->CanThrow()) {
VLOG(compiler) << "Method " << PrettyMethod(method_index, caller_dex_file)
<< " could not be inlined because " << current->DebugName()
<< " can throw";
+ if (!kInliningMustBeDeterministic) {
+ resolved_method->SetShouldNotInline();
+ }
return false;
}
@@ -284,6 +290,9 @@ bool HInliner::TryBuildAndInline(ArtMethod* resolved_method,
VLOG(compiler) << "Method " << PrettyMethod(method_index, caller_dex_file)
<< " could not be inlined because " << current->DebugName()
<< " needs an environment";
+ if (!kInliningMustBeDeterministic) {
+ resolved_method->SetShouldNotInline();
+ }
return false;
}