Reverted attempted per-btree leaf caches

See the relevant commit for why. These just added surprisingly little
performance benefit for the code/stack cost.

Maybe in a future performance-preferring littlefs driver.
This commit is contained in:
Christopher Haster
2025-05-24 18:49:38 -05:00
parent a49e13b992
commit a1c90d2624
7 changed files with 726 additions and 782 deletions
+61 -61
View File
@@ -196,7 +196,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(3), 0, "c", 1))) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -220,7 +220,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -281,7 +281,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -307,7 +307,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -370,7 +370,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -390,7 +390,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(2), 0, "e", 1))) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -426,7 +426,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -687,7 +687,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -700,7 +700,7 @@ code = '''
assert(mdir.rbyd.weight == 0);
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -720,7 +720,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -777,7 +777,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -792,7 +792,7 @@ code = '''
assert(mdir.rbyd.weight == 0);
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -812,7 +812,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -875,7 +875,7 @@ code = '''
assert(mdir.rbyd.weight == 2);
// assert split/drop worked out
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -891,7 +891,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -944,7 +944,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -969,7 +969,7 @@ code = '''
assert(mdir.rbyd.weight == 1);
// assert split/drop worked out
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -995,7 +995,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert split/drop worked out
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1058,7 +1058,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1083,7 +1083,7 @@ code = '''
assert(mdir.rbyd.weight == 1);
// assert split/drop worked out
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1109,7 +1109,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert split/drop worked out
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1296,7 +1296,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(3), 0, "c", 1))) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1313,7 +1313,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1347,7 +1347,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1420,7 +1420,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1439,7 +1439,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1475,7 +1475,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1550,7 +1550,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1569,7 +1569,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mdir, &mdir) != 0);
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1605,7 +1605,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -1982,7 +1982,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2006,7 +2006,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2042,7 +2042,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2117,7 +2117,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2148,7 +2148,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2188,7 +2188,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2267,7 +2267,7 @@ code = '''
LFSR_RATTR_BUF(LFSR_TAG_ATTR(1), 0, "c", 1))) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2291,7 +2291,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2311,7 +2311,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was dropped
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2368,7 +2368,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2392,7 +2392,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2463,7 +2463,7 @@ code = '''
assert(lfsr_mdir_cmp(&old_mroot, &lfs.mroot) != 0);
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2489,7 +2489,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2888,7 +2888,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -2979,7 +2979,7 @@ code = '''
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3114,7 +3114,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3211,7 +3211,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3320,7 +3320,7 @@ code = '''
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3339,7 +3339,7 @@ code = '''
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (4 << lfs.mbits));
assert(lfs.mtree.weight == (4 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3430,7 +3430,7 @@ code = '''
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3440,7 +3440,7 @@ code = '''
assert(mdir.rbyd.weight == 0);
// assert mdir was dropped correctly
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3597,7 +3597,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3663,7 +3663,7 @@ code = '''
// and the tree should still work
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3683,7 +3683,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined
assert(lfs.mtree.root.weight == (1 << lfs.mbits));
assert(lfs.mtree.weight == (1 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3740,7 +3740,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3806,7 +3806,7 @@ code = '''
// and the tree should still work
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3828,7 +3828,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3887,7 +3887,7 @@ code = '''
lfsr_mdir_commit(&lfs, &lfs.mroot, NULL, 0) => 0;
// assert mdirs were unininlined and split
assert(lfs.mtree.root.weight == (2 << lfs.mbits));
assert(lfs.mtree.weight == (2 << lfs.mbits));
// assert mroot now has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3906,7 +3906,7 @@ code = '''
lfsr_mdir_commit(&lfs, &mdir, NULL, 0) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -3972,7 +3972,7 @@ code = '''
// and the tree should still work
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);
@@ -4000,7 +4000,7 @@ code = '''
lfsr_mount(&lfs, LFS_M_RDWR | M_FLAGS, CFG) => 0;
// assert mdir was split correctly
assert(lfs.mtree.root.weight == (3 << lfs.mbits));
assert(lfs.mtree.weight == (3 << lfs.mbits));
// assert mroot still has no entries
assert(lfs.mroot.rbyd.weight == 0);