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_;