summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-11-17 12:36:24 -0800
committerMathieu Chartier <mathieuc@google.com>2014-11-17 13:21:43 -0800
commitbc58ede2eebe20d592959b88c36fb74d4d832441 (patch)
treed7fe67259afb70cb9ff911762c7edccc1d68ed1d
parent5d99e333bcb454add372fe776a00d3172146bd6b (diff)
downloadart-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.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 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()) {