[Vm-dev] New Cog VMs available

Eliot Miranda eliot.miranda at gmail.com
Sun Jul 19 05:26:56 UTC 2015


... 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.


-- 
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150718/3fc3005f/attachment.htm


More information about the Vm-dev mailing list