at�http://www.mirandabanda.org/files/Cog/VM/VM.r2673.
Fix becomeForward: when the rootTbale overflows. �There were two bugs here.
One is that initializeMemoryFirstFree: used to clear the needGCFlag so if the
rootTable overflowed noteAsRoot:headerLoc:'s setting of the needGCFlag would
be undone after the sweep. �The other is that rooitTable overflow was indicated
by rootTableCount >= RootTableSize which could be undone by becomeForward:
freeing roots which need to be removed from the rootTable. �At some point in
becomeForward the rootTable would fill but at a later point a root would be
freed, causing the table to become not full.
The fix is two fold. �1. Add an explicit rootTableOverflowed flag instead of
relying on rootTableCount >= RootTableSize. �2. move the clearing of the
needGCFlag to the GC routines. �Remove unnecessary senders of needGCFlag: false,
and remove the accessor.
As a side effect rewrite primitiveRootTable in terms of a new
ObjectMemory>>rootTableObject. �Remove the rootTable: accessor.
Implement checkAllAccessibleObjectsOkay &
checkOkayInterpreterObjects: (used to debug the above).
Fix NewObjectMemory initialization to set freeStart at the same
time as setting endOfMemory. �This allows load-time scans and
assert code to use freeStart instead of endOfMemory.
Simplify markAndTraceStackPage: ; since the two implementations
are distinct they don't need to contain the isCog if-then-else.
Implement NewObjectMemory>>shorten:toIndexableSize: so that the last object
is correctly shortened (cut back freeStart). �Refactor the allocation check
filling code into maybeFillWithAllocationCheckFillerFrom:to:.
Make longPrintOop: print the class oop.
Fix bug in printCallStackOf:currentFP: for widowed contexts.
Use fputs for print: instead of printf.
Rewrite the stackLimit computation after a moment of clarity. �Allow the system
to reduce the space for frames by up to an 1/8th. �Make sure there's at least
as much headroom as asked for. �This changes the stack page size from 4096 to
2048 and much reduces the interpreterAllocationReserveBytes.
Don't round up interpreterAllocationReserveBytes to a power of two.
Integrate the named serial primitives plus Luc Fabresse's latest fix.
Improve cygwin HoiwToBuilds with info on latest versions (thanks Ron).
--
best,
Eliot