diff options
Diffstat (limited to 'runtime/runtime.cc')
-rw-r--r-- | runtime/runtime.cc | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/runtime/runtime.cc b/runtime/runtime.cc index 3645695bce..72fa118f5b 100644 --- a/runtime/runtime.cc +++ b/runtime/runtime.cc @@ -3068,13 +3068,12 @@ bool Runtime::IsVerificationSoftFail() const { return verify_ == verifier::VerifyMode::kSoftFail; } -bool Runtime::IsAsyncDeoptimizeable(ArtMethod* method, uintptr_t code) const { +bool Runtime::IsAsyncDeoptimizeable(uintptr_t code) const { if (OatQuickMethodHeader::NterpMethodHeader != nullptr) { if (OatQuickMethodHeader::NterpMethodHeader->Contains(code)) { return true; } } - // We only support async deopt (ie the compiled code is not explicitly asking for // deopt, but something else like the debugger) in debuggable JIT code. // We could look at the oat file where `code` is being defined, @@ -3082,14 +3081,8 @@ bool Runtime::IsAsyncDeoptimizeable(ArtMethod* method, uintptr_t code) const { // only rely on the JIT for debuggable apps. // The JIT-zygote is not debuggable so we need to be sure to exclude code from the non-private // region as well. - if (GetJit() != nullptr && - GetJit()->GetCodeCache()->PrivateRegionContainsPc(reinterpret_cast<const void*>(code))) { - // If the code is JITed code then check if it was compiled as debuggable. - const OatQuickMethodHeader* header = method->GetOatQuickMethodHeader(code); - return CodeInfo::IsDebuggable(header->GetOptimizedCodeInfoPtr()); - } - - return false; + return IsJavaDebuggable() && GetJit() != nullptr && + GetJit()->GetCodeCache()->PrivateRegionContainsPc(reinterpret_cast<const void*>(code)); } LinearAlloc* Runtime::CreateLinearAlloc() { |