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