From 2dcdfc24bc66a091c00b4079c3cfb4cc1a17af67 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 9 Dec 2024 14:30:30 +0100 Subject: [PATCH] Field set: per-edge clear callback is optional --- src/field-set.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/field-set.h b/src/field-set.h index ef53f398d..ee7df811d 100644 --- a/src/field-set.h +++ b/src/field-set.h @@ -151,15 +151,17 @@ gc_field_set_clear(struct gc_field_set *set, struct gc_edge_buffer *buf, *next; for (buf = partly_full; buf; buf = next) { next = buf->next; - for (size_t i = 0; i < buf->size; i++) - forget_edge(buf->edges[i], heap); + if (forget_edge) + for (size_t i = 0; i < buf->size; i++) + forget_edge(buf->edges[i], heap); buf->size = 0; gc_edge_buffer_list_push(&set->empty, buf); } for (buf = full; buf; buf = next) { next = buf->next; - for (size_t i = 0; i < buf->size; i++) - forget_edge(buf->edges[i], heap); + if (forget_edge) + for (size_t i = 0; i < buf->size; i++) + forget_edge(buf->edges[i], heap); buf->size = 0; gc_edge_buffer_list_push(&set->empty, buf); }