Skip to content

Commit 28b01e8

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[vm, gc] Honor HeapSizeFromClass not touching the header for FreeListElement and ForwardingCorpse.
TEST=ci Change-Id: I5623f4f83c9898053fa057f666096a81b06d8d3d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214864 Reviewed-by: Siva Annamalai <[email protected]> Commit-Queue: Ryan Macnak <[email protected]>
1 parent 7ee2744 commit 28b01e8

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

runtime/vm/heap/become.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ class ForwardingCorpse {
2727
ObjectPtr target() const { return target_; }
2828
void set_target(ObjectPtr target) { target_ = target; }
2929

30-
intptr_t HeapSize() {
31-
intptr_t size = UntaggedObject::SizeTag::decode(tags_);
30+
intptr_t HeapSize() { return HeapSize(tags_); }
31+
intptr_t HeapSize(uword tags) {
32+
intptr_t size = UntaggedObject::SizeTag::decode(tags);
3233
if (size != 0) return size;
3334
return *SizeAddress();
3435
}

runtime/vm/heap/freelist.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ class FreeListElement {
2828

2929
void set_next(FreeListElement* next) { next_ = next; }
3030

31-
intptr_t HeapSize() {
32-
intptr_t size = UntaggedObject::SizeTag::decode(tags_);
31+
intptr_t HeapSize() { return HeapSize(tags_); }
32+
intptr_t HeapSize(uword tags) {
33+
intptr_t size = UntaggedObject::SizeTag::decode(tags);
3334
if (size != 0) return size;
3435
return *SizeAddress();
3536
}

runtime/vm/raw_object.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,13 +222,13 @@ intptr_t UntaggedObject::HeapSizeFromClass(uword tags) const {
222222
case kFreeListElement: {
223223
uword addr = UntaggedObject::ToAddr(this);
224224
FreeListElement* element = reinterpret_cast<FreeListElement*>(addr);
225-
instance_size = element->HeapSize();
225+
instance_size = element->HeapSize(tags);
226226
break;
227227
}
228228
case kForwardingCorpse: {
229229
uword addr = UntaggedObject::ToAddr(this);
230230
ForwardingCorpse* element = reinterpret_cast<ForwardingCorpse*>(addr);
231-
instance_size = element->HeapSize();
231+
instance_size = element->HeapSize(tags);
232232
break;
233233
}
234234
case kWeakSerializationReferenceCid: {

0 commit comments

Comments
 (0)