if (mte_is_leaf(mas->node))
return 1;
- do {
- // Ascend.
- printk("Ascend from %p\n", mas_mn(&prev_l_mas));
- printk("Ascend from %p\n", mas_mn(&prev_r_mas));
- mas_ascend(&prev_l_mas);
- mas_ascend(&prev_r_mas);
- // adopt children of nodes that don't have the correct parent
- mas_adopt_children(&prev_l_mas, prev_l_mas.node);
- mas_adopt_children(&prev_r_mas, prev_r_mas.node);
-
- } while (prev_l_mas.node != l);
+ mas_descend_adopt(mas);
if (mt_is_alloc(mas->tree))
mas_update_gap(mas, false);