summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitbc58ede2eebe20d592959b88c36fb74d4d832441 (patch)
treed7fe67259afb70cb9ff911762c7edccc1d68ed1d
parent5d99e333bcb454add372fe776a00d3172146bd6b (diff)
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.cc1
-rw-r--r--runtime/runtime.cc7
2 files changed, 6 insertions, 2 deletions
diff --git a/runtime/intern_table.cc b/runtime/intern_table.cc
index 56a6d2cc50..7ecb58e7e9 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 78c6542827..d50a4f0d17 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()) {