diff options
author | 2015-04-16 15:41:02 +0000 | |
---|---|---|
committer | 2015-04-16 15:41:03 +0000 | |
commit | 8aec061f5e58876bcc892d8c0309bc13b5349f5c (patch) | |
tree | 468528f9081cc33299317a3fa62cfc6d84c224e8 /compiler/optimizing/inliner.cc | |
parent | f90b8548e91392dfc24e8b0f7d3000f4f121c19d (diff) | |
parent | f1c6d9e87cbfd27702103ccc7c7f08ce784dc872 (diff) |
Merge "Fallback to quick in case of soft verification errors"
Diffstat (limited to 'compiler/optimizing/inliner.cc')
-rw-r--r-- | compiler/optimizing/inliner.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index b249817698..6d2a8d77e2 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -31,6 +31,8 @@ #include "ssa_phi_elimination.h" #include "scoped_thread_state_change.h" #include "thread.h" +#include "dex/verified_method.h" +#include "dex/verification_results.h" namespace art { @@ -114,9 +116,11 @@ bool HInliner::TryInline(HInvoke* invoke_instruction, return false; } - if (!resolved_method->GetDeclaringClass()->IsVerified()) { + uint16_t class_def_idx = resolved_method->GetDeclaringClass()->GetDexClassDefIndex(); + if (!compiler_driver_->IsMethodVerifiedWithoutFailures( + resolved_method->GetDexMethodIndex(), class_def_idx, *resolved_method->GetDexFile())) { VLOG(compiler) << "Method " << PrettyMethod(method_index, caller_dex_file) - << " is not inlined because its class could not be verified"; + << " couldn't be verified, so it cannot be inlined"; return false; } |