Skip to content

Commit

Permalink
maple_tree: simplify mas_wr_node_walk()
Browse files Browse the repository at this point in the history
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/[email protected]
Signed-off-by: Peng Zhang <[email protected]>
Reviewed-by: Liam R. Howlett <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
  • Loading branch information
Peng Zhang authored and akpm00 committed Apr 18, 2023
1 parent 9bc47f1 commit 97f7e09
Showing 1 changed file with 5 additions and 29 deletions.
34 changes: 5 additions & 29 deletions lib/maple_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

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;
}
while (offset < count && mas->index > wr_mas->pivots[offset])
offset++;

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;
}

Expand Down

0 comments on commit 97f7e09

Please sign in to comment.