diff options
author | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-05 00:40:29 +0000 |
---|---|---|
committer | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-05 00:40:29 +0000 |
commit | 7931d83d0d4d552a8c6740ae97b3f746fe93724d (patch) | |
tree | 84967d285d7158e5985bd745fe52ad73f93f081b /compiler | |
parent | 888c9bd1fe419ab9e9e1bd90e8534336107515be (diff) | |
parent | ac1c3a4c22cb51b1f6887058a09d54695d069ade (diff) | |
download | art-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
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/optimizing/inliner.cc | 9 |
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; } |