From dc5aeca168629183e64087b1147d3c2645e49ddc Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 18 Oct 2012 19:04:20 -0400 Subject: Remove unnecessary "head" arguments from some dlist/slist functions. dlist_delete, dlist_insert_after, dlist_insert_before, slist_insert_after do not need access to the list header, and indeed insisting on that negates one of the main advantages of a doubly-linked list. In consequence, revert addition of "cache_bucket" field to CatCTup. --- src/include/lib/ilist.h | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) (limited to 'src/include/lib') diff --git a/src/include/lib/ilist.h b/src/include/lib/ilist.h index 22cd270659a..bc684b84af6 100644 --- a/src/include/lib/ilist.h +++ b/src/include/lib/ilist.h @@ -89,7 +89,7 @@ * continue; // don't touch this one * * // unlink the current table from the linked list - * dlist_delete(&db->tables, miter.cur); + * dlist_delete(miter.cur); * // as these lists never manage memory, we can still access the table * // after it's been unlinked * drop_table(db, tbl); @@ -271,11 +271,9 @@ extern void dlist_init(dlist_head *head); extern bool dlist_is_empty(dlist_head *head); extern void dlist_push_head(dlist_head *head, dlist_node *node); extern void dlist_push_tail(dlist_head *head, dlist_node *node); -extern void dlist_insert_after(dlist_head *head, - dlist_node *after, dlist_node *node); -extern void dlist_insert_before(dlist_head *head, - dlist_node *before, dlist_node *node); -extern void dlist_delete(dlist_head *head, dlist_node *node); +extern void dlist_insert_after(dlist_node *after, dlist_node *node); +extern void dlist_insert_before(dlist_node *before, dlist_node *node); +extern void dlist_delete(dlist_node *node); extern dlist_node *dlist_pop_head_node(dlist_head *head); extern void dlist_move_head(dlist_head *head, dlist_node *node); extern bool dlist_has_next(dlist_head *head, dlist_node *node); @@ -352,50 +350,34 @@ dlist_push_tail(dlist_head *head, dlist_node *node) * Insert a node after another *in the same list* */ STATIC_IF_INLINE void -dlist_insert_after(dlist_head *head, dlist_node *after, dlist_node *node) +dlist_insert_after(dlist_node *after, dlist_node *node) { - dlist_check(head); - /* XXX: assert 'after' is in 'head'? */ - node->prev = after; node->next = after->next; after->next = node; node->next->prev = node; - - dlist_check(head); } /* * Insert a node before another *in the same list* */ STATIC_IF_INLINE void -dlist_insert_before(dlist_head *head, dlist_node *before, dlist_node *node) +dlist_insert_before(dlist_node *before, dlist_node *node) { - dlist_check(head); - /* XXX: assert 'before' is in 'head'? */ - node->prev = before->prev; node->next = before; before->prev = node; node->prev->next = node; - - dlist_check(head); } /* - * Delete 'node' from list. - * - * It is not allowed to delete a 'node' which is is not in the list 'head' + * Delete 'node' from its list (it must be in one). */ STATIC_IF_INLINE void -dlist_delete(dlist_head *head, dlist_node *node) +dlist_delete(dlist_node *node) { - dlist_check(head); - node->prev->next = node->next; node->next->prev = node->prev; - - dlist_check(head); } /* @@ -408,7 +390,7 @@ dlist_pop_head_node(dlist_head *head) Assert(!dlist_is_empty(head)); node = head->head.next; - dlist_delete(head, node); + dlist_delete(node); return node; } @@ -425,7 +407,7 @@ dlist_move_head(dlist_head *head, dlist_node *node) if (head->head.next == node) return; - dlist_delete(head, node); + dlist_delete(node); dlist_push_head(head, node); dlist_check(head); @@ -591,8 +573,7 @@ dlist_tail_node(dlist_head *head) extern void slist_init(slist_head *head); extern bool slist_is_empty(slist_head *head); extern void slist_push_head(slist_head *head, slist_node *node); -extern void slist_insert_after(slist_head *head, - slist_node *after, slist_node *node); +extern void slist_insert_after(slist_node *after, slist_node *node); extern slist_node *slist_pop_head_node(slist_head *head); extern bool slist_has_next(slist_head *head, slist_node *node); extern slist_node *slist_next_node(slist_head *head, slist_node *node); @@ -640,12 +621,10 @@ slist_push_head(slist_head *head, slist_node *node) * Insert a node after another *in the same list* */ STATIC_IF_INLINE void -slist_insert_after(slist_head *head, slist_node *after, slist_node *node) +slist_insert_after(slist_node *after, slist_node *node) { node->next = after->next; after->next = node; - - slist_check(head); } /* -- cgit v1.2.3