diff options
Diffstat (limited to 'src/image_writer.cc')
-rw-r--r-- | src/image_writer.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/image_writer.cc b/src/image_writer.cc index ca57f41e74..293bd96d02 100644 --- a/src/image_writer.cc +++ b/src/image_writer.cc @@ -59,6 +59,7 @@ bool ImageWriter::Write(const char* image_filename, return false; } PruneNonImageClasses(); + ComputeLazyFieldsForImageClasses(); Heap::CollectGarbage(false); #ifndef NDEBUG CheckNonImageClassesRemoved(); @@ -92,6 +93,17 @@ bool ImageWriter::AllocMemory() { return true; } +void ImageWriter::ComputeLazyFieldsForImageClasses() { + Runtime* runtime = Runtime::Current(); + ClassLinker* class_linker = runtime->GetClassLinker(); + class_linker->VisitClasses(ComputeLazyFieldsForClassesVisitor, NULL); +} + +bool ImageWriter::ComputeLazyFieldsForClassesVisitor(Class* klass, void* arg) { + klass->ComputeName(); + return true; +} + bool ImageWriter::IsImageClass(const Class* klass) { if (image_classes_ == NULL) { return true; |