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