From e78e21e9c57351eb668264a7910f426379a0f436 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 20 Jul 2021 22:59:14 -0700 Subject: hash: remove unnecessary tests in weak processing. * hash.c (do_weak_tables): Do not test hash entries for reachability, only keys and values. This is not worth doing and possibly adds cycles. --- hash.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hash.c b/hash.c index 3746ad44..90e48858 100644 --- a/hash.c +++ b/hash.c @@ -1236,7 +1236,7 @@ static void do_weak_tables(void) for (iter = pchain; *iter; ) { val entry = us_car(*iter); - if (!gc_is_reachable(entry) && !gc_is_reachable(us_car(entry))) { + if (!gc_is_reachable(us_car(entry))) { *iter = us_cdr(*iter); #if CONFIG_EXTRA_DEBUGGING if (us_car(entry) == break_obj) @@ -1258,7 +1258,7 @@ static void do_weak_tables(void) for (iter = pchain; *iter; ) { val entry = us_car(*iter); - if (!gc_is_reachable(entry) && !gc_is_reachable(us_cdr(entry))) { + if (!gc_is_reachable(us_cdr(entry))) { *iter = us_cdr(*iter); #if CONFIG_EXTRA_DEBUGGING if (us_cdr(entry) == break_obj) @@ -1280,8 +1280,7 @@ static void do_weak_tables(void) for (iter = pchain; *iter; ) { val entry = us_car(*iter); - if (!gc_is_reachable(entry) && - (!gc_is_reachable(us_car(entry)) || !gc_is_reachable(us_cdr(entry)))) + if (!gc_is_reachable(us_car(entry)) || !gc_is_reachable(us_cdr(entry))) { *iter = us_cdr(*iter); #if CONFIG_EXTRA_DEBUGGING -- cgit v1.2.3