[Vm-dev] new Cog VMs available

Eliot Miranda eliot.miranda at gmail.com
Fri Jan 18 21:26:26 UTC 2013

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
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...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130118/2ce78b89/attachment.htm

More information about the Vm-dev mailing list