New Cog VMs available

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

New Cog VMs available

Eliot Miranda-2

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