Message ID | 20230310140848.94485-3-zhangpeng.00@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Some fixes and cleanup for maple tree. | expand |
* Peng Zhang <zhangpeng.00@bytedance.com> [230310 09:09]: > Simplify code of mas_wr_node_walk() without changing functionality, > and improve readability. The change log needs to be updated to I like this change, thanks. Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> > > Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> > --- > lib/maple_tree.c | 34 +++++----------------------------- > 1 file changed, 5 insertions(+), 29 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index b3164266cfde..4d15202a0692 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -2251,9 +2251,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; > @@ -2266,34 +2264,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; > } > > -- > 2.20.1 >
在 2023/3/11 03:20, Liam R. Howlett 写道: > * Peng Zhang <zhangpeng.00@bytedance.com> [230310 09:09]: >> Simplify code of mas_wr_node_walk() without changing functionality, >> and improve readability. > The change log needs to be updated to Hi, Update to what? Did you not finish typing? > > I like this change, thanks. > > Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> > >> Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> >> --- >> lib/maple_tree.c | 34 +++++----------------------------- >> 1 file changed, 5 insertions(+), 29 deletions(-) >> >> diff --git a/lib/maple_tree.c b/lib/maple_tree.c >> index b3164266cfde..4d15202a0692 100644 >> --- a/lib/maple_tree.c >> +++ b/lib/maple_tree.c >> @@ -2251,9 +2251,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; >> @@ -2266,34 +2264,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; >> } >> >> -- >> 2.20.1 >>
diff --git a/lib/maple_tree.c b/lib/maple_tree.c index b3164266cfde..4d15202a0692 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -2251,9 +2251,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; @@ -2266,34 +2264,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; }
Simplify code of mas_wr_node_walk() without changing functionality, and improve readability. Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> --- lib/maple_tree.c | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-)