mbox series

[0/4] refine mas_end of mas_mab_cp()

Message ID 20240919234832.24237-1-richard.weiyang@gmail.com (mailing list archive)
Headers show
Series refine mas_end of mas_mab_cp() | expand

Message

Wei Yang Sept. 19, 2024, 11:48 p.m. UTC
mas_mab_cp() copy range [mas_start, mas_end] inclusively. For some usage, the
mas_end passed could be refined.

Patch 1: if we know the end of a maple_node, we don't need to copy end + 1.
Patch 2: this one tries to leverage mt_pivot_count() for optimize the code.
Patch 3: the maximum end of a maple_node is mt_pivot_count() instead of
         mt_slot_count()
Patch 4: after above cleanup, we are sure mas_end won't exceed mt_pivots[], so
         we can remove the check in mas_mab_cp()

Wei Yang (4):
  maple_tree: not necessary to copy mas->end + 1
  maple_tree: use mt_pivot_count() to replace mt_slot_count() - 1
  maple_tree: copy to mt_pivot_count() instead of mt_slot_count()
  maple_tree: now we are sure mas_end wouldn't exceed mt_pivots[mt]

 lib/maple_tree.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

Comments

Liam R. Howlett Sept. 23, 2024, 7:57 p.m. UTC | #1
* Wei Yang <richard.weiyang@gmail.com> [240919 20:40]:
> mas_mab_cp() copy range [mas_start, mas_end] inclusively. For some usage, the
> mas_end passed could be refined.
> 
> Patch 1: if we know the end of a maple_node, we don't need to copy end + 1.

I haven't looked too hard at patch 1, I am currently away.

> Patch 2: this one tries to leverage mt_pivot_count() for optimize the code.
> Patch 3: the maximum end of a maple_node is mt_pivot_count() instead of
>          mt_slot_count()
> Patch 4: after above cleanup, we are sure mas_end won't exceed mt_pivots[], so
>          we can remove the check in mas_mab_cp()

You are changing the generic code to only work for the current node
types and I don't want to do that.  I wrote it to be more generic, so
now we are introducing the requirement that slots are one larger than
pivots.

Again, I haven't looked too closely at this but it seems like you are
making the code depend on the array differences staying constant.

> 
> Wei Yang (4):
>   maple_tree: not necessary to copy mas->end + 1
>   maple_tree: use mt_pivot_count() to replace mt_slot_count() - 1
>   maple_tree: copy to mt_pivot_count() instead of mt_slot_count()
>   maple_tree: now we are sure mas_end wouldn't exceed mt_pivots[mt]
> 
>  lib/maple_tree.c | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> -- 
> 2.34.1
>