<div dir="ltr">... at <a href="http://www.mirandabanda.org/files/Cog/VM/VM.r3056/">http://www.mirandabanda.org/files/Cog/VM/VM.r3056/</a>.<div><div><br></div><div>CogVM binaries as per VMMaker.oscog-eem.832/r3056<br></div>
<div>Add the time zone to the version info on Mac OS X and Win32.</div><div><br></div><div>Fix bug in assigning parameter 55 (growth ratio at which to do a global GC).</div><div><br></div><div>Add vmParameter 52 to answer the capacity of the root table</div>
<div>(in Spur a.k.a. the rememberedSet).</div><div><br></div><div>In the wake of the inlining change below (see Slang:), split</div><div>lookupInMethodCacheSel:classTag: into inlineLookupInMethodCacheSel:classTag:,</div><div>
and use the inline version in internalFindNewMethod.</div><div><br></div><div>Fix printStringOf: (used in e.g. frame print) to not print crs</div><div>that would cause previous info to be overwritten.</div><div><br></div>
<div>Spur:</div><div>Fix bug with class table management and two-way become.  Because two-way become</div><div>may do an in-place swap obj1 &amp; obj2 in SpurMemoryManager&gt;&gt;doBecome:and:copyHash:</div><div>may not be forwarded after the inner become.  Hence they should not be followed</div>
<div>if not forwarded.  The bug manifested as Object&#39;s identityHash changing:</div><div>superclass is the first slot in a class. Following an unforwarded subclass of</div><div>object yields Object.  Setting the hash bits of the followed object smashes</div>
<div>Object&#39;s identityHash.  Thanks to Stephane Rollandin for finding the bug.</div><div><br></div><div>More rationalization of the class table management post become.  Now no post</div><div>become scan of the class table is necessary at all.</div>
<div><br></div><div>Add vm parameter 53 to answer the number of segments.<br></div><div><br></div><div>Move the rememberedSet into a pinned object in oldSpace.  Allow it to grow</div><div>on demand, starting at 1k entries, doubling on each grow.  Make sure to abort</div>
<div>if the attempt to grow the remembered set fails.  Try to grow by another 1k</div><div>slots if doubling fails, then abort.</div><div><br></div><div>Revise markAndTrace: given that markAndShouldScan: is inlined within it (see</div>
<div>Slang changes below).  Move the ephemeron processing into markAndShouldScan:</div><div>out of the now unused numStringSlotsOf:ephemeronInactiveIf: circumlocution.</div><div>Add activeAndDeferredScan: and numStrongSlotsOfInephemeral: in place of the</div>
<div>double negative inactiveOrFailedToDeferScan: and hence inline</div><div>numStrongSlotsOfInephemeral:.  Increase the traceImmediatelySlotLimit.  These</div><div>changes plus the 2 repeats for compaction speed up global GC by at least x2.</div>
<div><br></div><div>Change the defaultEdenBytes to 4Mb.</div><div><br></div><div>Allow the number of compaction passes to vary, 2 on GC, 3 on GC for snapshot.</div><div><br></div><div>Slang:</div><div>Add support for inlining into the condition of ifTrue:/ifFalse:</div>
<div>when it is marked as inline. Transform</div><div><span class="" style="white-space:pre">        </span>expr1 ifTrue:/ifFalse: [^expr2]</div><div>by inlining ^expr2 into expr1.  Transform</div><div><span class="" style="white-space:pre">        </span>expr ifTrue:/ifFalse: [statements]</div>
<div>by replacing ^boolean occurrences in expr with gotos.</div>-- <br>Aloha,<div>Eliot</div>
</div></div>