diff options
| -rw-r--r-- | runtime/entrypoints/quick/quick_trampoline_entrypoints.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc index 680ffbeef9..5d2603f9e6 100644 --- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc @@ -767,11 +767,18 @@ extern "C" const void* artQuickResolutionTrampoline(mirror::ArtMethod* called, if (virtual_or_interface) { // Refine called method based on receiver. CHECK(receiver != nullptr) << invoke_type; + + mirror::ArtMethod* orig_called = called; if (invoke_type == kVirtual) { called = receiver->GetClass()->FindVirtualMethodForVirtual(called); } else { called = receiver->GetClass()->FindVirtualMethodForInterface(called); } + + CHECK(called != nullptr) << PrettyMethod(orig_called) << " " + << PrettyTypeOf(receiver) << " " + << invoke_type << " " << orig_called->GetVtableIndex(); + // We came here because of sharpening. Ensure the dex cache is up-to-date on the method index // of the sharpened method. if (called->GetDexCacheResolvedMethods() == caller->GetDexCacheResolvedMethods()) { |