[Vm-dev] new Cog VMs available
eliot.miranda at gmail.com
Fri Jan 18 21:26:26 UTC 2013
Fix becomeForward: when the rootTbale overflows. There were two bugs here.
One is that initializeMemoryFirstFree: used to clear the needGCFlag so if
rootTable overflowed noteAsRoot:headerLoc:'s setting of the needGCFlag would
be undone after the sweep. The other is that rooitTable overflow was
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:
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
to reduce the space for frames by up to an 1/8th. Make sure there's at
as much headroom as asked for. This changes the stack page size from 4096
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).
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev