ART: Move DexCache arrays to native.

This CL has a companion CL in libcore/
    https://android-review.googlesource.com/162985

Change-Id: Icbc9e20ad1b565e603195b12714762bb446515fa
diff --git a/runtime/class_linker-inl.h b/runtime/class_linker-inl.h
index d2dbff6..6a55c32 100644
--- a/runtime/class_linker-inl.h
+++ b/runtime/class_linker-inl.h
@@ -63,7 +63,9 @@
 inline mirror::String* ClassLinker::ResolveString(uint32_t string_idx,
                                                   ArtMethod* referrer) {
   mirror::Class* declaring_class = referrer->GetDeclaringClass();
-  mirror::String* resolved_string = declaring_class->GetDexCacheStrings()->Get(string_idx);
+  // MethodVerifier refuses methods with string_idx out of bounds.
+  DCHECK_LT(string_idx, declaring_class->GetDexCache()->NumStrings());
+  mirror::String* resolved_string = declaring_class->GetDexCacheStrings()[string_idx].Read();
   if (UNLIKELY(resolved_string == nullptr)) {
     StackHandleScope<1> hs(Thread::Current());
     Handle<mirror::DexCache> dex_cache(hs.NewHandle(declaring_class->GetDexCache()));
@@ -76,9 +78,8 @@
   return resolved_string;
 }
 
-inline mirror::Class* ClassLinker::ResolveType(uint16_t type_idx,
-                                               ArtMethod* referrer) {
-  mirror::Class* resolved_type = referrer->GetDexCacheResolvedType(type_idx);
+inline mirror::Class* ClassLinker::ResolveType(uint16_t type_idx, ArtMethod* referrer) {
+  mirror::Class* resolved_type = referrer->GetDexCacheResolvedType(type_idx, image_pointer_size_);
   if (UNLIKELY(resolved_type == nullptr)) {
     mirror::Class* declaring_class = referrer->GetDeclaringClass();
     StackHandleScope<2> hs(Thread::Current());