mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
maple_tree: simplify mas_wr_node_walk()
Simplify code of mas_wr_node_walk() without changing functionality, and improve readability. Remove some special judgments. Instead of dynamically recording the min and max in the loop, get the final min and max directly at the end. Link: https://lkml.kernel.org/r/20230314124203.91572-3-zhangpeng.00@bytedance.com Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9bc47f1152
commit
97f7e09481
@ -2312,9 +2312,7 @@ static inline struct maple_enode *mte_node_or_none(struct maple_enode *enode)
|
||||
static inline void mas_wr_node_walk(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
struct ma_state *mas = wr_mas->mas;
|
||||
unsigned char count;
|
||||
unsigned char offset;
|
||||
unsigned long index, min, max;
|
||||
unsigned char count, offset;
|
||||
|
||||
if (unlikely(ma_is_dense(wr_mas->type))) {
|
||||
wr_mas->r_max = wr_mas->r_min = mas->index;
|
||||
@ -2327,34 +2325,12 @@ static inline void mas_wr_node_walk(struct ma_wr_state *wr_mas)
|
||||
count = wr_mas->node_end = ma_data_end(wr_mas->node, wr_mas->type,
|
||||
wr_mas->pivots, mas->max);
|
||||
offset = mas->offset;
|
||||
min = mas_safe_min(mas, wr_mas->pivots, offset);
|
||||
if (unlikely(offset == count))
|
||||
goto max;
|
||||
|
||||
max = wr_mas->pivots[offset];
|
||||
index = mas->index;
|
||||
if (unlikely(index <= max))
|
||||
goto done;
|
||||
while (offset < count && mas->index > wr_mas->pivots[offset])
|
||||
offset++;
|
||||
|
||||
if (unlikely(!max && offset))
|
||||
goto max;
|
||||
|
||||
min = max + 1;
|
||||
while (++offset < count) {
|
||||
max = wr_mas->pivots[offset];
|
||||
if (index <= max)
|
||||
goto done;
|
||||
else if (unlikely(!max))
|
||||
break;
|
||||
|
||||
min = max + 1;
|
||||
}
|
||||
|
||||
max:
|
||||
max = mas->max;
|
||||
done:
|
||||
wr_mas->r_max = max;
|
||||
wr_mas->r_min = min;
|
||||
wr_mas->r_max = offset < count ? wr_mas->pivots[offset] : mas->max;
|
||||
wr_mas->r_min = mas_safe_min(mas, wr_mas->pivots, offset);
|
||||
wr_mas->offset_end = mas->offset = offset;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user