diff options
Diffstat (limited to 'runtime/debugger.cc')
| -rw-r--r-- | runtime/debugger.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/runtime/debugger.cc b/runtime/debugger.cc index e523fbb104..13d0b844a6 100644 --- a/runtime/debugger.cc +++ b/runtime/debugger.cc @@ -3284,9 +3284,9 @@ static DeoptimizationRequest::Kind GetRequiredDeoptimizationKind(Thread* self, return DeoptimizationRequest::kFullDeoptimization; } else { // We don't need to deoptimize if the method has not been compiled. - ClassLinker* const class_linker = Runtime::Current()->GetClassLinker(); - const bool is_compiled = class_linker->GetOatMethodQuickCodeFor(m) != nullptr; + const bool is_compiled = m->HasAnyCompiledCode(); if (is_compiled) { + ClassLinker* const class_linker = Runtime::Current()->GetClassLinker(); // If the method may be called through its direct code pointer (without loading // its updated entrypoint), we need full deoptimization to not miss the breakpoint. if (class_linker->MayBeCalledWithDirectCodePointer(m)) { @@ -4069,13 +4069,15 @@ void Dbg::ExecuteMethodWithoutPendingException(ScopedObjectAccess& soa, DebugInv if (is_constructor) { // If we invoked a constructor (which actually returns void), return the receiver, // unless we threw, in which case we return null. - result_tag = JDWP::JT_OBJECT; + DCHECK_EQ(JDWP::JT_VOID, result_tag); if (exceptionObjectId == 0) { // TODO we could keep the receiver ObjectId in the DebugInvokeReq to avoid looking into the // object registry. result_value = GetObjectRegistry()->Add(pReq->receiver.Read()); + result_tag = TagFromObject(soa, pReq->receiver.Read()); } else { result_value = 0; + result_tag = JDWP::JT_OBJECT; } } |