Make class roots an image root
Change-Id: I1f1513bf34caa736c0dd7518a92f493b4573d776
diff --git a/src/oatdump.cc b/src/oatdump.cc
index e96b25c..3856f34 100644
--- a/src/oatdump.cc
+++ b/src/oatdump.cc
@@ -51,6 +51,7 @@
"kCalleeSaveMethod",
"kOatLocation",
"kDexCaches",
+ "kClassRoots",
};
class OatDump {
@@ -73,8 +74,18 @@
CHECK_EQ(arraysize(image_roots_descriptions_), size_t(ImageHeader::kImageRootsMax));
for (int i = 0; i < ImageHeader::kImageRootsMax; i++) {
ImageHeader::ImageRoot image_root = static_cast<ImageHeader::ImageRoot>(i);
- os << StringPrintf("%s: %p\n",
- image_roots_descriptions_[i], image_header.GetImageRoot(image_root));
+ const char* image_root_description = image_roots_descriptions_[i];
+ Object* image_root_object = image_header.GetImageRoot(image_root);
+ os << StringPrintf("%s: %p\n", image_root_description, image_root_object);
+ if (image_root_object->IsObjectArray()) {
+ // TODO: replace down_cast with AsObjectArray (g++ currently has a problem with this)
+ ObjectArray<Object>* image_root_object_array
+ = down_cast<ObjectArray<Object>*>(image_root_object);
+ // = image_root_object->AsObjectArray<Object>();
+ for (int i = 0; i < image_root_object_array->GetLength(); i++) {
+ os << StringPrintf("\t%d: %p\n", i, image_root_object_array->Get(i));
+ }
+ }
}
os << "\n";