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