Fix location of ICCEs and NoSuchMethodErrors.
Also add detail as to why verifier believes an ICCE.
Change-Id: Ie16ea2847fb94e157969c560a780c9345b1e7441
diff --git a/src/class_linker.cc b/src/class_linker.cc
index e693c56..41f14df 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -3524,40 +3524,40 @@
case kDirect:
case kStatic:
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kVirtual, resolved);
+ ThrowIncompatibleClassChangeError(type, kVirtual, resolved, referrer);
} else {
resolved = klass->FindInterfaceMethod(name, signature);
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kInterface, resolved);
+ ThrowIncompatibleClassChangeError(type, kInterface, resolved, referrer);
} else {
- ThrowNoSuchMethodError(type, klass, name, signature);
+ ThrowNoSuchMethodError(type, klass, name, signature, referrer);
}
}
break;
case kInterface:
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kDirect, resolved);
+ ThrowIncompatibleClassChangeError(type, kDirect, resolved, referrer);
} else {
resolved = klass->FindVirtualMethod(name, signature);
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kVirtual, resolved);
+ ThrowIncompatibleClassChangeError(type, kVirtual, resolved, referrer);
} else {
- ThrowNoSuchMethodError(type, klass, name, signature);
+ ThrowNoSuchMethodError(type, klass, name, signature, referrer);
}
}
break;
case kSuper:
- ThrowNoSuchMethodError(type, klass, name, signature);
+ ThrowNoSuchMethodError(type, klass, name, signature, referrer);
break;
case kVirtual:
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kDirect, resolved);
+ ThrowIncompatibleClassChangeError(type, kDirect, resolved, referrer);
} else {
resolved = klass->FindInterfaceMethod(name, signature);
if (resolved != NULL) {
- ThrowIncompatibleClassChangeError(type, kInterface, resolved);
+ ThrowIncompatibleClassChangeError(type, kInterface, resolved, referrer);
} else {
- ThrowNoSuchMethodError(type, klass, name, signature);
+ ThrowNoSuchMethodError(type, klass, name, signature, referrer);
}
}
break;