Fix bug in HasSameMethodDescriptorClass on return types
Also included:
- Make oatdump tolerant of missing code
- Include class status in oatdump output
- Additional oat_process support for testing
Change-Id: Id1b8d5662ca061f2dc22b2b087b5a5945e54b91c
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 9c00d72..becd6d5 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1444,7 +1444,9 @@
bool ClassLinker::HasSameMethodDescriptorClasses(const Method* method,
const Class* klass1,
const Class* klass2) {
- if (method->IsMiranda()) { return true; }
+ if (method->IsMiranda()) {
+ return true;
+ }
const DexFile& dex_file = FindDexFile(method->GetDeclaringClass()->GetDexCache());
const DexFile::ProtoId& proto_id = dex_file.GetProtoId(method->GetProtoIdx());
DexFile::ParameterIterator *it;
@@ -1463,7 +1465,7 @@
// Check the return type
const char* descriptor = dex_file.GetReturnTypeDescriptor(proto_id);
if (descriptor[0] == 'L' || descriptor[0] == '[') {
- if (HasSameDescriptorClasses(descriptor, klass1, klass2)) {
+ if (!HasSameDescriptorClasses(descriptor, klass1, klass2)) {
return false;
}
}