<div dir="ltr"><div>... at <a href="http://www.mirandabanda.org/files/Cog/VM/VM.r3410">http://www.mirandabanda.org/files/Cog/VM/VM.r3410</a></div><div><br></div><div>Note that there&#39;s a functional 64-bit Spur Linux StackInterpreter included with these VMs and a 64-bit image to test at <a href="http://mirandabanda.org/files/Cog/SpurImages">http://mirandabanda.org/files/Cog/SpurImages</a>.</div><div><br></div><div>CogVM binaries as per VMMaker.oscog-eem.1427/r3410<br></div><div><br></div><div>General:</div><div>Implement a machine code perform:[with:]* primitive.  Eliminate the duplication</div><div>of SimpleStackBasedCogit/StackToRegisterMappingCogit&gt;&gt;compileOpenPIC:numArgs:</div><div>now that we have dead code elimination enabled.</div><div><br></div><div>Change the type of the event buffer from int[8] to long[8], along with the</div><div>matching event typedefs in sq.h (fixes 64-bit SPur issues).  Add a fence before</div><div>reading checkSignalRequests and useTideA in doSignalExternalSemaphores.</div><div><br></div><div>ARM</div><div>Include the Alien support in the Squeak ARM VMs now that it works to a fair</div><div>extent in Newspeak.</div><div><br></div><div>ARM Cogits:</div><div>Use __aeabit_idivmod to implement machine code div/mod primitives on ARM.</div><div><br></div><div>64-bit Spur</div><div>Fix at least one set of 64-bit issues caused by Slang.  In particular the</div><div>integerObjectOf: code resulted in</div><div><span class="" style="white-space:pre">        </span>(objectMemory integerObjectOf: MillisecondClockMask)</div><div>evaluating to the -1 object, instead of the 16r1FFFFFFF object, which was the</div><div>cause of the initially nresponsive 64-bit image on the real VM.</div><div><br></div><div>Newspeak:</div><div>Compile Newspeak self and super sends as clean sends as well.</div><div>Slower in monomorphic case but net win for the larger benchmarks, presumably</div><div>because it avoids I-cache flushes in the polymorphic case.</div><div><br></div><div>Also means implementing polymorphic caches for clean sends will benefit all</div><div>non-ordinary sends.</div><div><br></div><div><span class="" style="white-space:pre">        </span>DeltaBlue +8.2%</div><div><span class="" style="white-space:pre">        </span>Splay +7.6%</div><div><span class="" style="white-space:pre">        </span>ParserCombinators +4.7%</div><div><span class="" style="white-space:pre">        </span>Richards +0.5%</div><div><span class="" style="white-space:pre">        </span>SlotRead (replaced with self send) -17.6%</div><div><br></div><div>Spill ReceiverResultReg before runtime call to fix pushEnclosingObject on ARM.</div><div>(ReceiverResultReg is edx/caller-saved on IA32 but r7/callee-saved on ARM.)</div><div><br></div><div>Fix some primitiveFail[For:] calls in potential mirror primitives that did not</div><div>return after falure, and could hence continue to do damage after detecting a</div><div>failure condition.</div><div><br></div><div>Fix the 64-bit Newspeak builds&#39; plugins.ext</div><div><br></div><div>Integrate Ryan&#39;s code for ARM call-out and callback support in the Alien plugin.</div><div><br></div><div>Implement the relevant implicitReceiveCacheAt: for the ARM Cogits.</div><div><br></div><div>ThreadedFFIPlugin:</div><div>Allow ffiCreateIntegralResultOop:ofAtomicType:in: to be inlined.  Reduce the</div><div>number of tests leading to the common case of an integral return in</div><div>ffiCalloutTo:SpecOnStack:in: etc.</div><div><br></div><div>Refactor the remapOop:in: idiom up into InterpreterPlugin and use it in the</div><div>ThreadedFFIPlugin. Hence avoid unnecessary push/popRemappableOop calls.</div><div><br></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div>