summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/entrypoints/quick/quick_trampoline_entrypoints.cc7
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()) {