summaryrefslogtreecommitdiffstats
path: root/src/image_writer.cc
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2012-01-30 15:54:44 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-01-30 15:54:44 -0800
commit0850c69c88d49efd4075288511b70d6c032bd0c8 (patch)
treea924efbf074d38c1f1e6bf1c1fff30146447843c /src/image_writer.cc
parentd8c00d04361366a0156943bd98fee57392743e80 (diff)
parentd418edaf4df0a410d678389e171ac6d96ae2af15 (diff)
downloadandroid_art-0850c69c88d49efd4075288511b70d6c032bd0c8.tar.gz
android_art-0850c69c88d49efd4075288511b70d6c032bd0c8.tar.bz2
android_art-0850c69c88d49efd4075288511b70d6c032bd0c8.zip
Merge "Class clean-up and compute name during image writing." into dalvik-dev
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;