diff options
author | Ian Rogers <irogers@google.com> | 2012-01-30 15:54:44 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-01-30 15:54:44 -0800 |
commit | 0850c69c88d49efd4075288511b70d6c032bd0c8 (patch) | |
tree | a924efbf074d38c1f1e6bf1c1fff30146447843c /src/image_writer.cc | |
parent | d8c00d04361366a0156943bd98fee57392743e80 (diff) | |
parent | d418edaf4df0a410d678389e171ac6d96ae2af15 (diff) | |
download | android_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.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; |