summaryrefslogtreecommitdiff
path: root/runtime/image.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/image.cc')
-rw-r--r--runtime/image.cc24
1 files changed, 23 insertions, 1 deletions
diff --git a/runtime/image.cc b/runtime/image.cc
index 44193da4ee..ba1e58bb2c 100644
--- a/runtime/image.cc
+++ b/runtime/image.cc
@@ -24,7 +24,7 @@
namespace art {
const uint8_t ImageHeader::kImageMagic[] = { 'a', 'r', 't', '\n' };
-const uint8_t ImageHeader::kImageVersion[] = { '0', '1', '7', '\0' };
+const uint8_t ImageHeader::kImageVersion[] = { '0', '1', '8', '\0' };
ImageHeader::ImageHeader(uint32_t image_begin,
uint32_t image_size,
@@ -147,4 +147,26 @@ std::ostream& operator<<(std::ostream& os, const ImageSection& section) {
return os << "size=" << section.Size() << " range=" << section.Offset() << "-" << section.End();
}
+void ImageSection::VisitPackedArtFields(ArtFieldVisitor* visitor, uint8_t* base) const {
+ for (size_t pos = 0; pos < Size(); ) {
+ auto* array = reinterpret_cast<LengthPrefixedArray<ArtField>*>(base + Offset() + pos);
+ for (size_t i = 0; i < array->Length(); ++i) {
+ visitor->Visit(&array->At(i, sizeof(ArtField)));
+ }
+ pos += array->ComputeSize(array->Length(), sizeof(ArtField));
+ }
+}
+
+void ImageSection::VisitPackedArtMethods(ArtMethodVisitor* visitor,
+ uint8_t* base,
+ size_t method_size) const {
+ for (size_t pos = 0; pos < Size(); ) {
+ auto* array = reinterpret_cast<LengthPrefixedArray<ArtMethod>*>(base + Offset() + pos);
+ for (size_t i = 0; i < array->Length(); ++i) {
+ visitor->Visit(&array->At(i, method_size));
+ }
+ pos += array->ComputeSize(array->Length(), method_size);
+ }
+}
+
} // namespace art