diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/elf_writer_test.cc | 2 | ||||
-rw-r--r-- | compiler/image_writer.cc | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/compiler/elf_writer_test.cc b/compiler/elf_writer_test.cc index b58004976e..6f48779258 100644 --- a/compiler/elf_writer_test.cc +++ b/compiler/elf_writer_test.cc @@ -94,7 +94,7 @@ TEST_F(ElfWriterTest, dlsym) { /*low_4gb*/false, &error_msg)); CHECK(ef.get() != nullptr) << error_msg; - CHECK(ef->Load(false, /*low_4gb*/false, &error_msg)) << error_msg; + CHECK(ef->Load(file.get(), false, /*low_4gb*/false, &error_msg)) << error_msg; EXPECT_EQ(dl_oatdata, ef->FindDynamicSymbolAddress("oatdata")); EXPECT_EQ(dl_oatexec, ef->FindDynamicSymbolAddress("oatexec")); EXPECT_EQ(dl_oatlastword, ef->FindDynamicSymbolAddress("oatlastword")); diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 13c73dcf42..83c7332151 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -1492,10 +1492,15 @@ void ImageWriter::CalculateNewObjectOffsets() { // Calculate how big the intern table will be after being serialized. InternTable* const intern_table = image_info.intern_table_.get(); CHECK_EQ(intern_table->WeakSize(), 0u) << " should have strong interned all the strings"; - image_info.intern_table_bytes_ = intern_table->WriteToMemory(nullptr); + if (intern_table->StrongSize() != 0u) { + image_info.intern_table_bytes_ = intern_table->WriteToMemory(nullptr); + } // Calculate the size of the class table. ReaderMutexLock mu(self, *Locks::classlinker_classes_lock_); - image_info.class_table_bytes_ += image_info.class_table_->WriteToMemory(nullptr); + DCHECK_EQ(image_info.class_table_->NumZygoteClasses(), 0u); + if (image_info.class_table_->NumNonZygoteClasses() != 0u) { + image_info.class_table_bytes_ += image_info.class_table_->WriteToMemory(nullptr); + } } // Calculate bin slot offsets. |