tag-returning: Adopted tag-returns in btree lookups
- lfs3_btree_lookupleaf
- lfs3_btree_lookupnext
- lfs3_btree_lookup
- lfs3_btree_traverse
- NOT lfs3_btree_namelookup
Looks like we're starting to claw back stack usage a bit. This makes
sense as the btree logic involves the most layers -- with out-pointers
it needs more temporary copies to inspect tags along the way:
code stack ctx
before: 36576 2376 656
after: 36520 (-0.2%) 2352 (-1.0%) 656 (+0.0%)
This commit is contained in:
+60
-60
@@ -190,13 +190,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -338,13 +338,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -604,13 +604,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -767,13 +767,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2095,13 +2095,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2247,13 +2247,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2546,13 +2546,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2713,13 +2713,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3006,13 +3006,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3177,13 +3177,13 @@ code = '''
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
lfs3_bid_t bid;
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_traverse(&lfs3, &file.b, &bt,
|
||||
&bid, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4988,13 +4988,13 @@ code = '''
|
||||
lfs3_file_open(&lfs3, &file, "hello", LFS3_O_WRONLY) => 0;
|
||||
lfs3_off_t pos = 0;
|
||||
while (true) {
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_lookupnext(&lfs3, &file.b, pos,
|
||||
&pos, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_lookupnext(&lfs3, &file.b, pos,
|
||||
&pos, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5098,13 +5098,13 @@ code = '''
|
||||
lfs3_file_open(&lfs3, &file, "hello", LFS3_O_WRONLY) => 0;
|
||||
lfs3_off_t pos = 0;
|
||||
while (true) {
|
||||
lfs3_tag_t tag;
|
||||
lfs3_stag_t tag;
|
||||
lfs3_bid_t weight;
|
||||
lfs3_data_t data;
|
||||
int err = lfs3_bshrub_lookupnext(&lfs3, &file.b, pos,
|
||||
&pos, &tag, &weight, &data);
|
||||
assert(!err || err == LFS3_ERR_NOENT);
|
||||
if (err == LFS3_ERR_NOENT) {
|
||||
tag = lfs3_bshrub_lookupnext(&lfs3, &file.b, pos,
|
||||
&pos, &weight, &data);
|
||||
assert(tag >= 0 || tag == LFS3_ERR_NOENT);
|
||||
if (tag == LFS3_ERR_NOENT) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user