diff options
| author | 2015-04-28 02:04:09 +0000 | |
|---|---|---|
| committer | 2015-04-28 02:04:09 +0000 | |
| commit | 9d1e19035a59ff8bf05a09ad880ede99806ba73f (patch) | |
| tree | 7eb3c9eb01d4f581f3e354d947300547582fdd38 /runtime/class_linker.cc | |
| parent | 3fd79afbb7490f52817f737ecceb694f6618dcf9 (diff) | |
| parent | 848f70a3d73833fc1bf3032a9ff6812e429661d9 (diff) | |
Merge "Replace String CharArray with internal uint16_t array."
Diffstat (limited to 'runtime/class_linker.cc')
| -rw-r--r-- | runtime/class_linker.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 8a0c315995..962e8215ee 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -349,8 +349,8 @@ void ClassLinker::InitWithoutImage(std::vector<std::unique_ptr<const DexFile>> b Handle<mirror::Class> java_lang_String(hs.NewHandle( AllocClass(self, java_lang_Class.Get(), mirror::String::ClassSize()))); mirror::String::SetClass(java_lang_String.Get()); - java_lang_String->SetObjectSize(mirror::String::InstanceSize()); mirror::Class::SetStatus(java_lang_String, mirror::Class::kStatusResolved, self); + java_lang_String->SetStringClass(); // Setup java.lang.ref.Reference. Handle<mirror::Class> java_lang_ref_Reference(hs.NewHandle( @@ -478,7 +478,6 @@ void ClassLinker::InitWithoutImage(std::vector<std::unique_ptr<const DexFile>> b String_class->DumpClass(os2, mirror::Class::kDumpClassFullDetail); LOG(FATAL) << os1.str() << "\n\n" << os2.str(); } - CHECK_EQ(java_lang_String->GetObjectSize(), mirror::String::InstanceSize()); mirror::Class::SetStatus(java_lang_DexCache, mirror::Class::kStatusNotReady, self); CHECK_EQ(java_lang_DexCache.Get(), FindSystemClass(self, "Ljava/lang/DexCache;")); CHECK_EQ(java_lang_DexCache->GetObjectSize(), mirror::DexCache::InstanceSize()); @@ -1740,6 +1739,13 @@ mirror::Class* ClassLinker::DefineClass(Thread* self, const char* descriptor, si SetupClass(dex_file, dex_class_def, klass, class_loader.Get()); + // Mark the string class by setting its access flag. + if (UNLIKELY(!init_done_)) { + if (strcmp(descriptor, "Ljava/lang/String;") == 0) { + klass->SetStringClass(); + } + } + ObjectLock<mirror::Class> lock(self, klass); klass->SetClinitThreadId(self->GetTid()); |