A bit further along the track of multiple threads.
This also makes valgrind happy, and tsan mostly happy. (The heap, it turns out,
doesn't have a lock yet.)
The DexVerifier changes are just to make valgrind happy, and the code a little
less unidiomatic.
Change-Id: Ic5d436b4863b9d7088eb0b8fe9d32308919899d8
diff --git a/src/object.h b/src/object.h
index c0e725c..23ce3c4 100644
--- a/src/object.h
+++ b/src/object.h
@@ -1275,7 +1275,7 @@
}
// Returns true if the class has been linked.
- bool IsLinked() const {
+ bool IsResolved() const {
return GetStatus() >= kStatusResolved;
}
@@ -1630,7 +1630,7 @@
}
Method* GetVirtualMethod(uint32_t i) const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
return GetVirtualMethods()->Get(i);
}
@@ -1647,7 +1647,7 @@
}
ObjectArray<Method>* GetVTable() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
return GetFieldObject<ObjectArray<Method>*>(
OFFSET_OF_OBJECT_MEMBER(Class, vtable_), false);
}
@@ -1745,7 +1745,7 @@
}
size_t GetIFTableCount() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
DCHECK(sizeof(size_t) == sizeof(int32_t));
return GetField32(OFFSET_OF_OBJECT_MEMBER(Class, iftable_count_), false);
}
@@ -1757,7 +1757,7 @@
}
InterfaceEntry* GetIFTable() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
return GetFieldPtr<InterfaceEntry*>(
OFFSET_OF_OBJECT_MEMBER(Class, iftable_), false);
}
@@ -1768,7 +1768,7 @@
}
size_t GetIfviPoolCount() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
CHECK(sizeof(size_t) == sizeof(int32_t));
return GetField32(OFFSET_OF_OBJECT_MEMBER(Class, ifvi_pool_count_), false);
}
@@ -1780,7 +1780,7 @@
}
uint32_t* GetIfviPool() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
return GetFieldPtr<uint32_t*>(
OFFSET_OF_OBJECT_MEMBER(Class, ifvi_pool_), false);
}
@@ -1820,7 +1820,7 @@
// Returns the number of instance fields containing reference types.
size_t NumReferenceInstanceFields() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
DCHECK(sizeof(size_t) == sizeof(int32_t));
return GetField32(
OFFSET_OF_OBJECT_MEMBER(Class, num_reference_instance_fields_), false);
@@ -1840,7 +1840,7 @@
}
uint32_t GetReferenceInstanceOffsets() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
return GetField32(
OFFSET_OF_OBJECT_MEMBER(Class, reference_instance_offsets_), false);
}
@@ -1854,7 +1854,7 @@
// Returns the number of static fields containing reference types.
size_t NumReferenceStaticFields() const {
- DCHECK(IsLinked());
+ DCHECK(IsResolved());
DCHECK(sizeof(size_t) == sizeof(int32_t));
return GetField32(
OFFSET_OF_OBJECT_MEMBER(Class, num_reference_static_fields_), false);
@@ -2208,7 +2208,7 @@
}
inline uint32_t Method::GetReturnTypeIdx() const {
- DCHECK(GetDeclaringClass()->IsLinked());
+ DCHECK(GetDeclaringClass()->IsResolved());
return GetField32(OFFSET_OF_OBJECT_MEMBER(Method, java_return_type_idx_),
false);
}
@@ -2527,7 +2527,7 @@
}
inline MemberOffset Field::GetOffset() const {
- DCHECK(GetDeclaringClass()->IsLinked());
+ DCHECK(GetDeclaringClass()->IsResolved());
return MemberOffset(
GetField32(OFFSET_OF_OBJECT_MEMBER(Field, offset_), false));
}
@@ -2595,7 +2595,7 @@
}
inline uint16_t Method::GetMethodIndex() const {
- DCHECK(GetDeclaringClass()->IsLinked());
+ DCHECK(GetDeclaringClass()->IsResolved());
return GetField16(OFFSET_OF_OBJECT_MEMBER(Method, method_index_), false);
}