]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: use mte_slots for dup
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 8 Sep 2020 17:00:59 +0000 (13:00 -0400)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 30 Oct 2020 19:11:20 +0000 (15:11 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/maple_tree.c

index e6b7e2ecb2add4d2cf0e2e1943d10e1c37ab2558..52c0b93a8b6c8860a2f8cb3e22d368f1c2e16d29 100644 (file)
@@ -4377,8 +4377,10 @@ static inline void mas_dup_children(struct ma_state *mas, int *node_cnt)
 {
        struct maple_node *child;
        struct maple_enode *oldchild, *echild;
-       unsigned char slot, end = mt_slot_count(mas->node);
+       unsigned char offset, end = mt_slot_count(mas->node);
        int allocated = mas_alloc_cnt(mas);
+       void **slots = ma_get_slots(mte_to_node(mas->node),
+                                   mte_node_type(mas->node));
 
        if (allocated < end) {
                mas->span_enode = mas->node;
@@ -4390,14 +4392,14 @@ static inline void mas_dup_children(struct ma_state *mas, int *node_cnt)
        }
 
 
-       for(slot = 0; slot < end; slot++) {
-               oldchild = mas_get_slot(mas, slot);
+       for(offset = 0; offset < end; offset++) {
+               oldchild = slots[offset];
                if (!oldchild)
                        return;
 
                child = mas_next_alloc(mas);
                echild = mt_mk_node(child, mte_node_type(oldchild));
-               mte_set_slot(mas->node, slot, echild);
+               slots[offset] = echild;
                memcpy(child, mte_to_node(oldchild), sizeof(struct maple_node));
        }
 }