From 5d28a43eb8e8343b76591e1625eb12730242cccb Mon Sep 17 00:00:00 2001 From: d-netto Date: Wed, 19 Jul 2023 14:07:44 -0300 Subject: [PATCH] faster valid object lookup in conservative gc --- src/gc.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/gc.c b/src/gc.c index ec6d6b42cc71e..7b50a6cd10fad 100644 --- a/src/gc.c +++ b/src/gc.c @@ -4070,18 +4070,10 @@ JL_DLLEXPORT jl_value_t *jl_gc_internal_obj_base_ptr(void *p) // before the freelist pointer was either live during the last // sweep or has been allocated since. if (gc_page_data(cell) == gc_page_data(pool->freelist) - && (char *)cell < (char *)pool->freelist) { + && (char *)cell < (char *)pool->freelist) goto valid_object; - } - else { - jl_taggedvalue_t *v = pool->freelist; - while (v != NULL) { - if (v == cell) { - return NULL; - } - v = v->next; - } - } + else + return NULL; // Not a freelist entry, therefore a valid object. valid_object: // We have to treat objects with type `jl_buff_tag` differently,