rattrs: Reverted implicit lfs3_path_namelen in LFS3_FROM_NAME

I don't think there was anything inherently wrong with this idea, but:

- The code savings (28 bytes) was surprisingly small.

- Expecting lfs3_path_namelen may be a headache for future
  non-null-terminated string support.

- Even if you don't care about non-null-terminated strings, precomputing
  strlen as early as possible is a good idea to minimize repeated strlen
  scans.

Reverting adds a bit of code:

                 code          stack          ctx
  before:       35288           2176          660
  after:        35316 (+0.1%)   2176 (+0.0%)  660 (+0.0%)

                 code          stack          ctx
  gbmap before: 38140           2192          772
  gbmap after:  38168 (+0.1%)   2192 (+0.0%)  772 (+0.0%)
This commit is contained in:
Christopher Haster
2025-11-30 01:19:27 -06:00
parent 03df517dae
commit b28b7c12aa
4 changed files with 316 additions and 226 deletions
+18 -9
View File
@@ -1301,10 +1301,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1389,10 +1390,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1496,10 +1498,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1606,10 +1609,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1716,19 +1720,21 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
path = "c";
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1835,10 +1841,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -1945,10 +1952,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;
@@ -2055,10 +2063,11 @@ code = '''
lfs3_mtree_pathlookup(&lfs3, &path,
&mdir, &did) => LFS3_TAG_REG;
lfs3_mdir_commit(&lfs3, &mdir, LFS3_RATTRS(
LFS3_RATTR(3, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_RATTR(4, LFS3_tag_MASK8 | (LFS3_TAG_NAME + 0x13), 0,
LFS3_FROM_NAME),
LFS3_RATTR_ARG(did),
LFS3_RATTR_ARG(path),
LFS3_RATTR_ARG(lfs3_path_namelen(path)),
LFS3_RATTR_NULL)) => 0;
lfs3_unmount(&lfs3) => 0;