diff options
Diffstat (limited to 'runtime/art_method.cc')
-rw-r--r-- | runtime/art_method.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/runtime/art_method.cc b/runtime/art_method.cc index a2db0f00ad..89dc93b895 100644 --- a/runtime/art_method.cc +++ b/runtime/art_method.cc @@ -94,11 +94,14 @@ ArtMethod* ArtMethod::GetNonObsoleteMethod() { } ArtMethod* ArtMethod::GetSingleImplementation(PointerSize pointer_size) { - if (!IsAbstract()) { - // A non-abstract's single implementation is itself. + if (IsInvokable()) { + // An invokable method single implementation is itself. return this; } - return reinterpret_cast<ArtMethod*>(GetDataPtrSize(pointer_size)); + DCHECK(!IsDefaultConflicting()); + ArtMethod* m = reinterpret_cast<ArtMethod*>(GetDataPtrSize(pointer_size)); + CHECK(m == nullptr || !m->IsDefaultConflicting()); + return m; } ArtMethod* ArtMethod::FromReflectedMethod(const ScopedObjectAccessAlreadyRunnable& soa, @@ -736,9 +739,9 @@ void ArtMethod::CopyFrom(ArtMethod* src, PointerSize image_pointer_size) { image_pointer_size); } } - if (interpreter::IsNterpSupported() && - (GetEntryPointFromQuickCompiledCodePtrSize(image_pointer_size) == - interpreter::GetNterpEntryPoint())) { + if (interpreter::IsNterpSupported() && + (GetEntryPointFromQuickCompiledCodePtrSize(image_pointer_size) == + interpreter::GetNterpEntryPoint())) { // If the entrypoint is nterp, it's too early to check if the new method // will support it. So for simplicity, use the interpreter bridge. SetEntryPointFromQuickCompiledCodePtrSize(GetQuickToInterpreterBridge(), image_pointer_size); |