From 2f6260f41991ae85d605fa10ed2056a40238ddc2 Mon Sep 17 00:00:00 2001 From: Kunal Sareen Date: Mon, 22 Jul 2024 17:38:20 +1000 Subject: [PATCH 1/4] Fix bug in line mark when `MARK_LINE_AT_SCAN_TIME=false` Previously we did not mark the line for an object in `trace_object_with_opportunistic_copy` if we leave the object in-place. --- src/policy/immix/immixspace.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/policy/immix/immixspace.rs b/src/policy/immix/immixspace.rs index 547ac6d794..ad7f098a6f 100644 --- a/src/policy/immix/immixspace.rs +++ b/src/policy/immix/immixspace.rs @@ -632,6 +632,11 @@ impl ImmixSpace { // We won the forwarding race but the object is already marked so we clear the // forwarding status and return the unmoved object object_forwarding::clear_forwarding_bits::(object); + + if !super::MARK_LINE_AT_SCAN_TIME { + self.mark_lines(object); + } + object } else { // We won the forwarding race; actually forward and copy the object if it is not pinned @@ -646,6 +651,10 @@ impl ImmixSpace { #[cfg(feature = "vo_bit")] vo_bit::helper::on_object_marked::(object); + if !super::MARK_LINE_AT_SCAN_TIME { + self.mark_lines(object); + } + object } else { // We are forwarding objects. When the copy allocator allocates the block, it should From 2ba4e7d69faa3474ccb89fda064956dfef7b12ac Mon Sep 17 00:00:00 2001 From: Kunal Sareen Date: Mon, 22 Jul 2024 17:55:43 +1000 Subject: [PATCH 2/4] Delete trailing whitespace --- src/policy/immix/immixspace.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/policy/immix/immixspace.rs b/src/policy/immix/immixspace.rs index ad7f098a6f..f17d072ec6 100644 --- a/src/policy/immix/immixspace.rs +++ b/src/policy/immix/immixspace.rs @@ -636,7 +636,7 @@ impl ImmixSpace { if !super::MARK_LINE_AT_SCAN_TIME { self.mark_lines(object); } - + object } else { // We won the forwarding race; actually forward and copy the object if it is not pinned @@ -654,7 +654,7 @@ impl ImmixSpace { if !super::MARK_LINE_AT_SCAN_TIME { self.mark_lines(object); } - + object } else { // We are forwarding objects. When the copy allocator allocates the block, it should From 7cbc1ceda8c12b19ef7c307602e50e0853f07bf4 Mon Sep 17 00:00:00 2001 From: Kunal Sareen Date: Mon, 22 Jul 2024 22:59:09 +1000 Subject: [PATCH 3/4] Update src/policy/immix/immixspace.rs Co-authored-by: Kunshan Wang --- src/policy/immix/immixspace.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/policy/immix/immixspace.rs b/src/policy/immix/immixspace.rs index f17d072ec6..442da3809b 100644 --- a/src/policy/immix/immixspace.rs +++ b/src/policy/immix/immixspace.rs @@ -633,9 +633,6 @@ impl ImmixSpace { // forwarding status and return the unmoved object object_forwarding::clear_forwarding_bits::(object); - if !super::MARK_LINE_AT_SCAN_TIME { - self.mark_lines(object); - } object } else { From 0e2d40eaa0acd84969e4e90dce26f04e23fd7c78 Mon Sep 17 00:00:00 2001 From: Kunal Sareen Date: Mon, 22 Jul 2024 23:00:12 +1000 Subject: [PATCH 4/4] Update immixspace.rs --- src/policy/immix/immixspace.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/policy/immix/immixspace.rs b/src/policy/immix/immixspace.rs index 442da3809b..73756d2f90 100644 --- a/src/policy/immix/immixspace.rs +++ b/src/policy/immix/immixspace.rs @@ -632,8 +632,6 @@ impl ImmixSpace { // We won the forwarding race but the object is already marked so we clear the // forwarding status and return the unmoved object object_forwarding::clear_forwarding_bits::(object); - - object } else { // We won the forwarding race; actually forward and copy the object if it is not pinned