summaryrefslogtreecommitdiffstats
path: root/src/image_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/image_writer.cc')
-rw-r--r--src/image_writer.cc12
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;