rbyd: Trying to get separate r/b diverged trimming working
The conflicts between y-pruning and diverged-pruning are proving
difficult to resolve...
This is a step backwards but also a work in progress:
test_rbyd+balance before: 156/385878 failed
test_rbyd+balance after: 312/385878 failed (+100.0%)
Code changes:
code stack ctx
before: 38644 2624 640
after: 38860 (+0.6%) 2624 (+0.0%) 640 (+0.0%)
This commit is contained in:
@@ -3866,32 +3866,32 @@ trunk:;
|
||||
// .-'| .--'
|
||||
// 3 4 3 4 x
|
||||
} else if (diverged) {
|
||||
// diverging = lfsr_tag_diverging2(
|
||||
// alt, weight,
|
||||
// p[0].alt, p[0].weight,
|
||||
// lower_rid, upper_rid,
|
||||
// a_rid, a_tag,
|
||||
// b_rid, b_tag);
|
||||
// diverging_red = lfsr_tag_isred(p[0].alt)
|
||||
// && lfsr_tag_diverging(
|
||||
// p[0].alt, p[0].weight,
|
||||
// lower_rid, upper_rid,
|
||||
// a_rid, a_tag,
|
||||
// b_rid, b_tag);
|
||||
// if (diverging_red) {
|
||||
// LFS_DEBUG("%04x->%04x: div r pruning",
|
||||
// branch, lfsr_rbyd_eoff(rbyd));
|
||||
// // trim so alt is pruned
|
||||
// lfsr_tag_trim(
|
||||
// p[0].alt, p[0].weight,
|
||||
// &lower_rid, &upper_rid,
|
||||
// &lower_tag, &upper_tag);
|
||||
// p[0].weight = 0;
|
||||
//
|
||||
// lfsr_rbyd_p_pop(p);
|
||||
//
|
||||
// // TODO prune? (trim?)
|
||||
// }
|
||||
diverging = lfsr_tag_diverging2(
|
||||
alt, weight,
|
||||
p[0].alt, p[0].weight,
|
||||
lower_rid, upper_rid,
|
||||
a_rid, a_tag,
|
||||
b_rid, b_tag);
|
||||
diverging_red = lfsr_tag_isred(p[0].alt)
|
||||
&& lfsr_tag_diverging(
|
||||
p[0].alt, p[0].weight,
|
||||
lower_rid, upper_rid,
|
||||
a_rid, a_tag,
|
||||
b_rid, b_tag);
|
||||
if (diverging_red) {
|
||||
LFS_DEBUG("%04x->%04x: div r pruning",
|
||||
branch, lfsr_rbyd_eoff(rbyd));
|
||||
// trim so alt is pruned
|
||||
lfsr_tag_trim(
|
||||
p[0].alt, p[0].weight,
|
||||
&lower_rid, &upper_rid,
|
||||
&lower_tag, &upper_tag);
|
||||
p[0].weight = 0;
|
||||
|
||||
lfsr_rbyd_p_pop(p);
|
||||
|
||||
// TODO prune? (trim?)
|
||||
}
|
||||
|
||||
diverging = lfsr_tag_diverging2(
|
||||
alt, weight,
|
||||
@@ -3899,9 +3899,9 @@ trunk:;
|
||||
lower_rid, upper_rid,
|
||||
a_rid, a_tag,
|
||||
b_rid, b_tag);
|
||||
if (diverging) {
|
||||
// && (!lfsr_tag_isred(alt)
|
||||
// || lfsr_tag_isred(p[0].alt))) {
|
||||
if (diverging
|
||||
&& (!lfsr_tag_isred(alt)
|
||||
|| lfsr_tag_isred(p[0].alt))) {
|
||||
LFS_DEBUG("%04x->%04x: div trimming",
|
||||
branch, lfsr_rbyd_eoff(rbyd));
|
||||
// trim so alt is pruned
|
||||
|
||||
Reference in New Issue
Block a user