Add Method::dex_cache_*_ short cuts to declaring_class_->dex_cache_
Change-Id: I6e14b296abdd74b7fe810fc43d814931fd8cb770
diff --git a/src/class_linker_test.cc b/src/class_linker_test.cc
index 88ddd07..ca305f1 100644
--- a/src/class_linker_test.cc
+++ b/src/class_linker_test.cc
@@ -2,6 +2,7 @@
#include "common_test.h"
#include "class_linker.h"
+#include "dex_cache.h"
#include "dex_file.h"
#include "heap.h"
@@ -79,6 +80,28 @@
EXPECT_EQ(2U, array->NumInterfaces());
}
+ void AssertDexFileMethod(Class* klass, Method* method) {
+ EXPECT_TRUE(method != NULL);
+ EXPECT_TRUE(method->GetName() != NULL);
+ EXPECT_TRUE(method->GetSignature() != NULL);
+
+ EXPECT_TRUE(method->dex_cache_strings_ != NULL);
+ EXPECT_TRUE(method->dex_cache_classes_ != NULL);
+ EXPECT_TRUE(method->dex_cache_methods_ != NULL);
+ EXPECT_TRUE(method->dex_cache_fields_ != NULL);
+ EXPECT_EQ(method->declaring_class_->dex_cache_->GetStrings(), method->dex_cache_strings_);
+ EXPECT_EQ(method->declaring_class_->dex_cache_->GetClasses(), method->dex_cache_classes_);
+ EXPECT_EQ(method->declaring_class_->dex_cache_->GetMethods(), method->dex_cache_methods_);
+ EXPECT_EQ(method->declaring_class_->dex_cache_->GetFields(), method->dex_cache_fields_);
+ }
+
+ void AssertDexFileField(Class* klass, Field* field) {
+ EXPECT_TRUE(field != NULL);
+ EXPECT_EQ(klass, field->GetDeclaringClass());
+ EXPECT_TRUE(field->GetName() != NULL);
+ EXPECT_TRUE(field->GetDescriptor() != NULL);
+ }
+
void AssertDexFileClass(ClassLoader* class_loader, const char* descriptor) {
ASSERT_TRUE(descriptor != NULL);
Class* klass = class_linker_->FindSystemClass(descriptor);
@@ -132,35 +155,26 @@
for (size_t i = 0; i < klass->NumDirectMethods(); i++) {
Method* method = klass->GetDirectMethod(i);
- EXPECT_TRUE(method != NULL);
+ AssertDexFileMethod(klass, method);
EXPECT_EQ(klass, method->GetDeclaringClass());
- EXPECT_TRUE(method->GetName() != NULL);
- EXPECT_TRUE(method->GetSignature() != NULL);
}
for (size_t i = 0; i < klass->NumVirtualMethods(); i++) {
Method* method = klass->GetVirtualMethod(i);
- EXPECT_TRUE(method != NULL);
- EXPECT_TRUE(method->GetName() != NULL);
- EXPECT_TRUE(method->GetSignature() != NULL);
+ AssertDexFileMethod(klass, method);
+ EXPECT_TRUE(method->GetDeclaringClass()->IsAssignableFrom(klass));
}
for (size_t i = 0; i < klass->NumInstanceFields(); i++) {
Field* field = klass->GetInstanceField(i);
- EXPECT_TRUE(field != NULL);
+ AssertDexFileField(klass, field);
EXPECT_FALSE(field->IsStatic());
- EXPECT_EQ(klass, field->GetDeclaringClass());
- EXPECT_TRUE(field->GetName() != NULL);
- EXPECT_TRUE(field->GetDescriptor() != NULL);
}
for (size_t i = 0; i < klass->NumStaticFields(); i++) {
Field* field = klass->GetStaticField(i);
- EXPECT_TRUE(field != NULL);
+ AssertDexFileField(klass, field);
EXPECT_TRUE(field->IsStatic());
- EXPECT_EQ(klass, field->GetDeclaringClass());
- EXPECT_TRUE(field->GetName() != NULL);
- EXPECT_TRUE(field->GetDescriptor() != NULL);
}
// Confirm that all instances fields are packed together at the start