Better unresolved type support.
Also fix bug where miranda methods were changing their declaring class
and thereby breaking their return type indices.
Add support for dumping stacks on abort.
Change-Id: I3782864736b12d1f81ab9aea4909213d3344ba13
diff --git a/src/dex_verifier.h b/src/dex_verifier.h
index d12e14f..b1e6e29 100644
--- a/src/dex_verifier.h
+++ b/src/dex_verifier.h
@@ -92,7 +92,9 @@
return IsUninitializedReference() || IsUninitializedThisReference() ||
IsUnresolvedAndUninitializedReference();
}
-
+ bool IsUnresolvedTypes() const {
+ return IsUnresolvedReference() || IsUnresolvedAndUninitializedReference();
+ }
bool IsLowHalf() const { return type_ == kRegTypeLongLo ||
type_ == kRegTypeDoubleLo ||
type_ == kRegTypeConstLo; }
@@ -191,6 +193,9 @@
return down_cast<Class*>(klass_or_descriptor_);
}
+ bool IsJavaLangObject() const {
+ return IsReference() && GetClass()->IsObjectClass();
+ }
String* GetDescriptor() const {
DCHECK(IsUnresolvedReference());
DCHECK(klass_or_descriptor_ != NULL);
@@ -1125,7 +1130,8 @@
* Returned references are assumed to be initialized. Returns kRegTypeUnknown for "void".
*/
const RegType& GetMethodReturnType() {
- return reg_types_.FromClass(method_->GetReturnType());
+ return reg_types_.FromDescriptor(method_->GetDeclaringClass()->GetClassLoader(),
+ method_->GetReturnTypeDescriptor());
}
/*