Replaced rattr.u.etc with rattr relevant types
This does a couple things:
- Makes attr-lists a bit more self-documenting.
- Adds a bit more type-safety. The LFSR_RATTR_* macros should be able to
reject types that don't match the expected encoding.
- Makes it easier to adjust dsize estimates at one location.
Specifically, this makes it harder to forget bptr's LFSR_BPTR_DSIZE.
---
Surprisingly this did have a small impact on code size. I'm not entirely
sure why, but considering how much of the codebase this touches I'm just
going to chalk this up to compiler noise:
code stack ctx
before: 35488 2440 636
after: 35536 (+0.1%) 2440 (+0.0%) 636 (+0.0%)
lfsr_file_carve seems the hardest hit:
function (0 added, 0 removed) osize nsize dsize
lfsr_file_open 16 20 +4 (+25.0%)
lfsr_file_carve 1316 1356 +40 (+3.0%)
lfsr_remove 408 412 +4 (+1.0%)
TOTAL 35488 35536 +48 (+0.1%)
This commit is contained in:
+22
-30
@@ -1145,8 +1145,7 @@ code = '''
|
||||
LFSR_TAG_SUB | LFSR_TAG_DATA, 0,
|
||||
&(uint8_t){'A'+(i % 26)}, 1),
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0;
|
||||
|
||||
// update sim
|
||||
sim[bid] = 'A'+(i % 26);
|
||||
@@ -1255,7 +1254,7 @@ code = '''
|
||||
LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "a", 1))) => 0;
|
||||
// pop!
|
||||
lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
btree.blocks[0],
|
||||
@@ -1314,7 +1313,7 @@ code = '''
|
||||
LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "b", 1))) => 0;
|
||||
// pop!
|
||||
lfsr_btree_commit(&lfs, &btree, 1, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
btree.blocks[0],
|
||||
@@ -1387,7 +1386,7 @@ code = '''
|
||||
LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "b", 1))) => 0;
|
||||
// pop!
|
||||
lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
btree.blocks[0],
|
||||
@@ -1462,7 +1461,7 @@ code = '''
|
||||
LFSR_RATTR_BUF(LFSR_TAG_DATA, +1, "c", 1))) => 0;
|
||||
// pop!
|
||||
lfsr_btree_commit(&lfs, &btree, 2, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
btree.blocks[0],
|
||||
@@ -1555,7 +1554,7 @@ code = '''
|
||||
// drain the tree
|
||||
for (lfs_size_t i = 0; i < N-REMAINING; i++) {
|
||||
lfsr_btree_commit(&lfs, &btree, N-1-i, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
}
|
||||
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
@@ -1635,7 +1634,7 @@ code = '''
|
||||
// drain the tree
|
||||
for (lfs_size_t i = 0; i < N-REMAINING; i++) {
|
||||
lfsr_btree_commit(&lfs, &btree, 0, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
}
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -1733,7 +1732,7 @@ code = '''
|
||||
|
||||
// remove from btree
|
||||
lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
// remove from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
@@ -1807,7 +1806,7 @@ code = '''
|
||||
// drain the tree
|
||||
for (lfs_size_t i = 0; i < N-REMAINING; i++) {
|
||||
lfsr_btree_commit(&lfs, &btree, (N-1-i)*W+W-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -W, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -W))) => 0;
|
||||
}
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -1950,8 +1949,7 @@ code = '''
|
||||
lfsr_btree_commit(&lfs, &btree,
|
||||
weighted_bid+sim_weights[bid]-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_RM, -sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_RM, -sim_weights[bid]))) => 0;
|
||||
|
||||
// remove from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
@@ -2300,8 +2298,7 @@ code = '''
|
||||
lfsr_btree_commit(&lfs, &btree,
|
||||
weighted_bid+sim_weights[bid]-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_GROW, +weight1-sim_weights[bid],
|
||||
NULL, 0),
|
||||
LFSR_TAG_GROW, +weight1-sim_weights[bid]),
|
||||
LFSR_RATTR_BUF(
|
||||
LFSR_TAG_DATA, 0,
|
||||
&(uint8_t){'a'+(i % 26)}, 1),
|
||||
@@ -2469,7 +2466,7 @@ code = '''
|
||||
// now remove one entry, since this brings the rbyd down to zero,
|
||||
// this should force one of the blocks to drop
|
||||
lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -2540,7 +2537,7 @@ code = '''
|
||||
// do this while forcing a compaction
|
||||
btree.eoff = -1;
|
||||
lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -2604,7 +2601,7 @@ code = '''
|
||||
//
|
||||
btree.eoff = -1;
|
||||
lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -2683,7 +2680,7 @@ code = '''
|
||||
// down to zero while also triggering a merge
|
||||
btree.eoff = -1;
|
||||
lfsr_btree_commit(&lfs, &btree, SIBLING, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
printf("btree: w%d 0x%x.%x\n",
|
||||
btree.weight,
|
||||
@@ -2769,7 +2766,7 @@ code = '''
|
||||
} else {
|
||||
// pop from btree
|
||||
lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
// pop from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
@@ -2884,8 +2881,7 @@ code = '''
|
||||
LFSR_TAG_SUB | LFSR_TAG_DATA, 0,
|
||||
&(uint8_t){'a'+(i % 26)}, 1),
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0;
|
||||
|
||||
// update sim
|
||||
sim[bid] = 'a'+(i % 26);
|
||||
@@ -2896,8 +2892,7 @@ code = '''
|
||||
lfsr_btree_commit(&lfs, &btree,
|
||||
weighted_bid+sim_weights[bid]-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_RM, -sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_RM, -sim_weights[bid]))) => 0;
|
||||
|
||||
// remove from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
@@ -3635,8 +3630,7 @@ code = '''
|
||||
lfsr_btree_commit(&lfs, &btree,
|
||||
weighted_bid+sim_weights[bid]-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_GROW, +weight1-sim_weights[bid],
|
||||
NULL, 0),
|
||||
LFSR_TAG_GROW, +weight1-sim_weights[bid]),
|
||||
LFSR_RATTR_BUF(
|
||||
LFSR_TAG_DATA, 0,
|
||||
&(uint8_t){'0'+(i % 10)}, 1),
|
||||
@@ -3831,7 +3825,7 @@ code = '''
|
||||
} else {
|
||||
// pop from btree
|
||||
lfsr_btree_commit(&lfs, &btree, bid, LFSR_RATTRS(
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1, NULL, 0))) => 0;
|
||||
LFSR_RATTR(LFSR_TAG_RM, -1))) => 0;
|
||||
|
||||
// pop from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
@@ -3998,8 +3992,7 @@ code = '''
|
||||
LFSR_TAG_SUB | LFSR_TAG_DATA, 0,
|
||||
&(uint8_t){'0'+(i % 10)}, 1),
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_GROW, +weight-sim_weights[bid]))) => 0;
|
||||
|
||||
// update sim
|
||||
sim[bid] = '0'+(i % 10);
|
||||
@@ -4010,8 +4003,7 @@ code = '''
|
||||
lfsr_btree_commit(&lfs, &btree,
|
||||
weighted_bid+sim_weights[bid]-1, LFSR_RATTRS(
|
||||
LFSR_RATTR(
|
||||
LFSR_TAG_RM, -sim_weights[bid],
|
||||
NULL, 0))) => 0;
|
||||
LFSR_TAG_RM, -sim_weights[bid]))) => 0;
|
||||
|
||||
// pop from sim
|
||||
memmove(&sim[bid], &sim[bid+1], sim_size-(bid+1));
|
||||
|
||||
Reference in New Issue
Block a user