Skip to content

Commit 617933c

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[vm, gc] As a debugging aid, remember the previous object during heap iteration.
Bug: #36906 Change-Id: Id7214aaa475929e33e5e5ae5bc58c99eb927b74b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127743 Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Siva Annamalai <asiva@google.com> Commit-Queue: Ryan Macnak <rmacnak@google.com>
1 parent 964c9d8 commit 617933c

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

runtime/vm/heap/pages.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,12 @@ void HeapPage::VisitObjects(ObjectVisitor* visitor) const {
9696
NoSafepointScope no_safepoint;
9797
uword obj_addr = object_start();
9898
uword end_addr = object_end();
99+
RawObject* volatile debugging_prev = 0; // TODO(36906): Remove.
99100
while (obj_addr < end_addr) {
100101
RawObject* raw_obj = RawObject::FromAddr(obj_addr);
101102
visitor->VisitObject(raw_obj);
102103
obj_addr += raw_obj->HeapSize();
104+
debugging_prev = raw_obj;
103105
}
104106
ASSERT(obj_addr == end_addr);
105107
}
@@ -110,9 +112,11 @@ void HeapPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
110112
NoSafepointScope no_safepoint;
111113
uword obj_addr = object_start();
112114
uword end_addr = object_end();
115+
RawObject* volatile debugging_prev = 0; // TODO(36906): Remove.
113116
while (obj_addr < end_addr) {
114117
RawObject* raw_obj = RawObject::FromAddr(obj_addr);
115118
obj_addr += raw_obj->VisitPointers(visitor);
119+
debugging_prev = raw_obj;
116120
}
117121
ASSERT(obj_addr == end_addr);
118122
}

runtime/vm/heap/scavenger.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,9 +956,11 @@ void Scavenger::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
956956
(Thread::Current()->task_kind() == Thread::kCompactorTask));
957957
MakeNewSpaceIterable();
958958
uword cur = FirstObjectStart();
959+
RawObject* volatile debugging_prev = 0; // TODO(36906): Remove.
959960
while (cur < top_) {
960961
RawObject* raw_obj = RawObject::FromAddr(cur);
961962
cur += raw_obj->VisitPointers(visitor);
963+
debugging_prev = raw_obj;
962964
}
963965
}
964966

@@ -967,10 +969,12 @@ void Scavenger::VisitObjects(ObjectVisitor* visitor) const {
967969
(Thread::Current()->task_kind() == Thread::kMarkerTask));
968970
MakeNewSpaceIterable();
969971
uword cur = FirstObjectStart();
972+
RawObject* volatile debugging_prev = 0; // TODO(36906): Remove.
970973
while (cur < top_) {
971974
RawObject* raw_obj = RawObject::FromAddr(cur);
972975
visitor->VisitObject(raw_obj);
973976
cur += raw_obj->HeapSize();
977+
debugging_prev = raw_obj;
974978
}
975979
}
976980

0 commit comments

Comments
 (0)