diff --git a/src/builtin.cmod b/src/builtin.cmod index 3033f1ac49197fa7a9ee7ea3e10c470acb28b2bb..73b6b130ccaaea0bff762c74878cbe3640192326 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -5233,38 +5233,16 @@ PIKECLASS List } } - /* These two functions perform the same thing, - * but are optimized to minimize recursion. - */ - static void gc_check_list_node_backward(struct pike_list_node *node, - const char *msg); - static void gc_check_list_node_forward(struct pike_list_node *node, - const char *msg) - { - while (node && !debug_gc_check(&node->refs, msg)) { - if (node->next) - debug_gc_check_svalues(&node->val, 1, " as a list node value"); - gc_check_list_node_backward(node->prev, msg); - node = node->next; - } - } - - static void gc_check_list_node_backward(struct pike_list_node *node, - const char *msg) - { - while (node && !debug_gc_check(&node->refs, msg)) { - if (node->prev) - debug_gc_check_svalues(&node->val, 1, " as a list node value"); - gc_check_list_node_forward(node->next, msg); - node = node->prev; - } - } - /* Called at gc_check time. */ GC_CHECK { - gc_check_list_node_backward(HEAD_SENTINEL(THIS), " as a list node"); - gc_check_list_node_forward(TAIL_SENTINEL(THIS), " as a list node"); + struct pike_list_node *node = THIS->head; + struct pike_list_node *next; + + while ((next = node->next)) { + debug_gc_check_svalues(&node->val, 1, "as a list node value"); + node = next; + } } /* Called at gc_mark time */ @@ -5613,12 +5591,6 @@ PIKECLASS List } } - /* Called at gc_check time. */ - GC_CHECK - { - gc_check_list_node_forward(THIS->cur, " held by an iterator"); - } - /* These two functions perform the same thing, * but are optimized to minimize recursion. */