Rbyd prune now working

This commit is contained in:
Christopher Haster
2022-12-26 23:14:36 -06:00
parent 471f12c79a
commit d9b419d36a
2 changed files with 143 additions and 166 deletions
+12 -35
View File
@@ -1470,42 +1470,19 @@ static int lfs_rbyd_commit(lfs_t *lfs, lfs_rbyd_t *rbyd,
jump = branch - jump;
lfs_rtag_t branch_ = branch + delta;
// // prune?
// printf("prune? %x >= %x (%x+%x+1)\n", lfs_rtag_weight(alt), lt+gt+1, lt, gt);
// if (lfs_rtag_weight(alt) >= lt+gt+1) {
// printf("prune!\n");
// LFS_ASSERT(p_alts[0]);
//
// branch = jump;
// branch_ = 0; // TODO is this needed?
// alt = lfs_rtag_black(p_alts[0]);
// jump = p_jumps[0];
// lfs_rbyd_p_pop(p_alts, p_jumps);
// }
// prune?
if (lfs_rtag_weight(alt) >= lt+gt+1) {
printf("prune!\n");
LFS_ASSERT(p_alts[0]);
alt = lfs_rtag_black(p_alts[0]);
branch_ = jump;
jump = p_jumps[0];
lfs_rbyd_p_pop(p_alts, p_jumps);
lfs_rtag_untrim(alt, &lt, &gt);
}
// // prune?
// // TODO ugh, just clean this up later
// if (p_alts[0]
// && lfs_rtag_isred(p_alts[0])
// && lfs_rtag_weight2(alt, p_alts[0]) >= lt+gt+1) {
// LFS_ASSERT(p_alts[0]);
//
// branch = jump;
// alt = lfs_rtag_black(p_alts[0]);
// jump = p_jumps[0];
// lfs_rbyd_p_pop(p_alts, p_jumps);
//
// } else if (lfs_rtag_weight(alt) >= lt+gt+1) {
// // TODO does this get hit?
// // TODO can we simplify these two?
// LFS_ASSERT(p_alts[0]);
//
// branch = jump;
// alt = lfs_rtag_black(p_alts[0]);
// jump = p_jumps[0];
// lfs_rbyd_p_pop(p_alts, p_jumps);
// }
//
// two reds makes a yellow, split?
if (p_alts[0]
&& lfs_rtag_isred(p_alts[0])