diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-11-17 12:36:24 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-11-17 13:21:43 -0800 |
commit | bc58ede2eebe20d592959b88c36fb74d4d832441 (patch) | |
tree | d7fe67259afb70cb9ff911762c7edccc1d68ed1d | |
parent | 5d99e333bcb454add372fe776a00d3172146bd6b (diff) | |
download | art-bc58ede2eebe20d592959b88c36fb74d4d832441.zip art-bc58ede2eebe20d592959b88c36fb74d4d832441.tar.gz art-bc58ede2eebe20d592959b88c36fb74d4d832441.tar.bz2 |
Don't call AddImageStringsToTable or MoveImageClassesToClassTable if running imageless
If we fail to create the image we use imageless running, this was
breaking AddImageStringsToTable since we didn't check for this
case. Added a check which avoids calling AddImageStringsToTable and
MoveImageClassesToClassTable if we don't have an image.
Bug: 18412472
(cherry picked from commit ab1953f35880f94752e1fcde3f6b3f0d3532125b)
Change-Id: Ida18e1fcd04d752d55923e65c3122c0ac0bde728
-rw-r--r-- | runtime/intern_table.cc | 1 | ||||
-rw-r--r-- | runtime/runtime.cc | 7 |
2 files changed, 6 insertions, 2 deletions
diff --git a/runtime/intern_table.cc b/runtime/intern_table.cc index 56a6d2c..7ecb58e 100644 --- a/runtime/intern_table.cc +++ b/runtime/intern_table.cc @@ -148,6 +148,7 @@ void InternTable::RemoveWeakFromTransaction(mirror::String* s) { } void InternTable::AddImageStringsToTable(gc::space::ImageSpace* image_space) { + CHECK(image_space != nullptr); MutexLock mu(Thread::Current(), *Locks::intern_table_lock_); if (!image_added_to_intern_table_) { mirror::Object* root = image_space->GetImageHeader().GetImageRoot(ImageHeader::kDexCaches); diff --git a/runtime/runtime.cc b/runtime/runtime.cc index 78c6542..d50a4f0 100644 --- a/runtime/runtime.cc +++ b/runtime/runtime.cc @@ -440,8 +440,11 @@ bool Runtime::Start() { if (IsZygote()) { ScopedObjectAccess soa(self); - Runtime::Current()->GetInternTable()->AddImageStringsToTable(heap_->GetImageSpace()); - Runtime::Current()->GetClassLinker()->MoveImageClassesToClassTable(); + gc::space::ImageSpace* image_space = heap_->GetImageSpace(); + if (image_space != nullptr) { + Runtime::Current()->GetInternTable()->AddImageStringsToTable(image_space); + Runtime::Current()->GetClassLinker()->MoveImageClassesToClassTable(); + } } if (!IsImageDex2OatEnabled() || !Runtime::Current()->GetHeap()->HasImageSpace()) { |