From 27027dd8e3e0d24272b69aea3d950ca19db49e57 Mon Sep 17 00:00:00 2001 From: Christoph Kirsch Date: Sun, 10 Sep 2023 15:58:46 +0200 Subject: [PATCH] Reverting change to segment marking --- selfie.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/selfie.c b/selfie.c index d4a2b3a5..7a8adf61 100644 --- a/selfie.c +++ b/selfie.c @@ -10956,13 +10956,12 @@ void mark_object_selfie(uint64_t* context, uint64_t gc_address) { } void mark_segment(uint64_t* context, uint64_t segment_start, uint64_t segment_end) { - // assert: segment is not heap, segment_start >= GC_WORDSIZE + // assert: segment is not heap - // prevent 32-bit overflow by subtracting GC_WORDSIZE + // prevent (32-bit) overflow by subtracting GC_WORDSIZE from index segment_start = segment_start - GC_WORDSIZE; - segment_end = segment_end - GC_WORDSIZE; - while (segment_start < segment_end) { + while (segment_start < segment_end - GC_WORDSIZE) { // undo GC_WORDSIZE index offset before marking address mark_object(context, segment_start + GC_WORDSIZE);