Use Java strings for Field's name.

Change-Id: Ia75c9c0ed0a802e52e415d856a101affb9fddd8a
diff --git a/src/class_linker.cc b/src/class_linker.cc
index d3d1a96..593b3e0 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -49,11 +49,17 @@
   Class* object_array_class = AllocClass(java_lang_Class);
   CHECK(object_array_class != NULL);
 
+  // string is necessary so that FindClass can assigning names to members
+  Class* java_lang_String = AllocClass(java_lang_Class);
+  CHECK(java_lang_String != NULL);
+  java_lang_String->object_size_ = sizeof(String);
+
   // create storage for root classes, save away our work so far
   class_roots_ = ObjectArray<Class>::Alloc(object_array_class, kClassRootsMax);
   class_roots_->Set(kJavaLangClass, java_lang_Class);
   class_roots_->Set(kJavaLangObject, java_lang_Object);
   class_roots_->Set(kObjectArrayClass, object_array_class);
+  class_roots_->Set(kJavaLangString, java_lang_String);
   // now that these are registered, we can use AllocClass() and AllocObjectArray
 
   // setup boot_class_path_ now that we can use AllocObjectArray to
@@ -88,8 +94,7 @@
   java_lang_reflect_Method->object_size_ = sizeof(Method);
   class_roots_->Set(kJavaLangReflectMethod, java_lang_reflect_Method);
 
-  Class* java_lang_String = FindSystemClass("Ljava/lang/String;");
-  CHECK(java_lang_String != NULL);
+  FindSystemClass("Ljava/lang/String;");
   CHECK_EQ(java_lang_String->object_size_, sizeof(String));
   java_lang_String->object_size_ = sizeof(String);
   class_roots_->Set(kJavaLangString, java_lang_String);
@@ -235,6 +240,8 @@
         klass = class_roots_->Get(kJavaLangObject);
       } else if (descriptor == "Ljava/lang/Class;") {
         klass = class_roots_->Get(kJavaLangClass);
+      } else if (descriptor == "Ljava/lang/String;") {
+        klass = class_roots_->Get(kJavaLangString);
       } else {
         klass = AllocClass();
       }
@@ -408,7 +415,7 @@
                             Field* dst) {
   const DexFile::FieldId& field_id = dex_file.GetFieldId(src.field_idx_);
   dst->klass_ = klass;
-  dst->name_.set(dex_file.dexStringById(field_id.name_idx_));
+  dst->java_name_ = ResolveString(klass, field_id.name_idx_);
   dst->descriptor_.set(dex_file.dexStringByTypeIdx(field_id.type_idx_));
   dst->access_flags_ = src.access_flags_;
 }