Radamsa
view release on metacpan or search on metacpan
radamsa/c/libradamsa.c view on Meta::CPAN
} else {
wdiff delta = (word)memstart - (word)old;
memend = memstart + new_words - MEMPAD; /* leave MEMPAD words alone */
if (delta)
fix_pointers(memstart, delta); /* d'oh! we need to O(n) all the pointers... */
return delta;
}
}
/* input desired allocation size and (the only) pointer to root object
return a pointer to the same object after heap compaction, possible heap size change and relocation */
static word *gc(int size, word *regs) {
word *root;
word *realend = memend;
wdiff nfree;
fp = regs + objsize(*regs);
root = fp+1;
*root = (word) regs;
memend = fp;
nalloc += fp - genstart;
mark(root, fp);
( run in 1.927 second using v1.01-cache-2.11-cpan-5511b514fd6 )