Use Java strings for Method's name.

Change-Id: Ibf0a847358a1b480069f49a0aefc783ad96a0332
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 593b3e0..3e1eb06 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -94,7 +94,8 @@
   java_lang_reflect_Method->object_size_ = sizeof(Method);
   class_roots_->Set(kJavaLangReflectMethod, java_lang_reflect_Method);
 
-  FindSystemClass("Ljava/lang/String;");
+  Class* String_class = FindSystemClass("Ljava/lang/String;");
+  CHECK_EQ(java_lang_String, String_class);
   CHECK_EQ(java_lang_String->object_size_, sizeof(String));
   java_lang_String->object_size_ = sizeof(String);
   class_roots_->Set(kJavaLangString, java_lang_String);
@@ -141,7 +142,9 @@
   class_roots_->Set(kPrimitiveVoid, CreatePrimitiveClass("V"));
   // now we can use FindSystemClass for anything, including for "[C"
 
-  class_roots_->Set(kCharArrayClass, FindSystemClass("[C"));
+  Class* char_array = FindSystemClass("[C");
+  class_roots_->Set(kCharArrayClass, char_array);
+  String::InitClasses(java_lang_String, char_array);
   // Now AllocString* can be used
 
   // ensure all class_roots_ were initialized
@@ -426,7 +429,7 @@
                              Method* dst) {
   const DexFile::MethodId& method_id = dex_file.GetMethodId(src.method_idx_);
   dst->klass_ = klass;
-  dst->name_.set(dex_file.dexStringById(method_id.name_idx_));
+  dst->java_name_ = ResolveString(klass, method_id.name_idx_);
   dst->proto_idx_ = method_id.proto_idx_;
   dst->shorty_.set(dex_file.GetShorty(method_id.proto_idx_));
   dst->access_flags_ = src.access_flags_;