Simplify the code of mas_mab_cp(), and improve readability. No change in functionality. Signed-off-by: Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> --- lib/maple_tree.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index de43ff19da72..688b062728a2 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -1914,32 +1914,18 @@ static inline void mas_mab_cp(struct ma_state *mas, unsigned char mas_start, void __rcu **slots; unsigned long *pivots, *gaps; int i = mas_start, j = mab_start; - unsigned char piv_end; node = mas_mn(mas); mt = mte_node_type(mas->node); pivots = ma_pivots(node, mt); - if (!i) { - b_node->pivot[j] = pivots[i++]; - if (unlikely(i > mas_end)) - goto complete; - j++; - } - piv_end = min(mas_end, mt_pivots[mt]); - for (; i < piv_end; i++, j++) { - b_node->pivot[j] = pivots[i]; - if (unlikely(!b_node->pivot[j])) + for (; i < min(mas_end, mt_pivots[mt]); i++, j++) { + if (unlikely(!pivots[i] && i) || + unlikely(mas->max == pivots[i])) break; - - if (unlikely(mas->max == b_node->pivot[j])) - goto complete; + b_node->pivot[j] = pivots[i]; } - - if (likely(i <= mas_end)) - b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); - -complete: + b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); b_node->b_end = ++j; j -= mab_start; slots = ma_slots(node, mt); -- 2.20.1