Squashed 'lispBM/lispBM/' changes from 10340fbf..077af235

077af235 small tweak to array-shrinker

git-subtree-dir: lispBM/lispBM
git-subtree-split: 077af235651edbe6507897a8a22d645af6601249
This commit is contained in:
Benjamin Vedder 2022-04-14 15:45:54 +02:00
parent d1f8cb5c06
commit 6c2d91819a
1 changed files with 25 additions and 3 deletions

View File

@ -324,18 +324,40 @@ int lbm_memory_shrink(lbm_uint *ptr, unsigned int n) {
if (status(ix+i) == END && i < n) {
return 0; // cannot shrink allocation to a larger size
}
switch(status(ix+i)) {
case START:
break;
case END:
break;
case START_END:
break;
case FREE_OR_USED:
break;
default:
break;
}
if (i == (n-1)) {
if (status(ix+i) == END ||
status(ix+i) == START_END) done = true;
if (i == 0) set_status(ix+i, START_END);
else set_status(ix+i, END);
status(ix+i) == START_END) {
done = true;
}
if (i == 0) {
set_status(ix+i, START_END);
}
else {
set_status(ix+i, END);
}
break;
}
}
if (!done) {
i++; // move to next position, prev position should be END or START_END
for (;i < ((bitmap_size << BITMAP_SIZE_SHIFT) - ix); i ++)
if (status(ix+i) == END) {
set_status(ix+i, FREE_OR_USED);
break;
}
}
return 1;