diff options
Diffstat (limited to 'runtime/mirror/class-inl.h')
-rw-r--r-- | runtime/mirror/class-inl.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h index cba221d01f..e82c39389d 100644 --- a/runtime/mirror/class-inl.h +++ b/runtime/mirror/class-inl.h @@ -85,6 +85,7 @@ inline uint32_t Class::NumDirectMethods() { return (GetDirectMethods() != NULL) ? GetDirectMethods()->GetLength() : 0; } +template<VerifyObjectFlags kVerifyFlags> inline ObjectArray<ArtMethod>* Class::GetVirtualMethods() { DCHECK(IsLoaded() || IsErroneous()); return GetFieldObject<ObjectArray<ArtMethod> >( @@ -103,8 +104,9 @@ inline uint32_t Class::NumVirtualMethods() { return (GetVirtualMethods() != NULL) ? GetVirtualMethods()->GetLength() : 0; } +template<VerifyObjectFlags kVerifyFlags> inline ArtMethod* Class::GetVirtualMethod(uint32_t i) { - DCHECK(IsResolved() || IsErroneous()); + DCHECK(IsResolved<kVerifyFlags>() || IsErroneous<kVerifyFlags>()); return GetVirtualMethods()->Get(i); } @@ -415,14 +417,16 @@ inline void Class::SetVerifyErrorClass(Class* klass) { } } +template<VerifyObjectFlags kVerifyFlags> inline uint32_t Class::GetAccessFlags() { // Check class is loaded or this is java.lang.String that has a // circularity issue during loading the names of its members - DCHECK(IsLoaded() || IsErroneous() || + DCHECK(IsLoaded<kVerifyFlags>() || + IsErroneous<static_cast<VerifyObjectFlags>(kVerifyFlags & ~kVerifyThis)>() || this == String::GetJavaLangString() || this == ArtField::GetJavaLangReflectArtField() || this == ArtMethod::GetJavaLangReflectArtMethod()); - return GetField32(OFFSET_OF_OBJECT_MEMBER(Class, access_flags_), false); + return GetField32<kVerifyFlags>(OFFSET_OF_OBJECT_MEMBER(Class, access_flags_), false); } inline String* Class::GetName() { |