[squeak-dev] Re: [Pharo-dev] New CogVMs available

Tobias Pape Das.Linux at gmx.de
Fri Jun 5 05:13:05 UTC 2015


And updated on ci.
On 04.06.2015, at 23:00, Eliot Miranda <eliot.miranda at gmail.com> wrote:

> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3370
> 
> CogVM source as per VMMaker.oscog-eem.1339/r3370
> 
> Spur Cogit:
> Since the invariant is that the receiver is never forwarded, Spur must check for
> forwarding on block activation.  A become between closure creation and closure
> evaluation can forward the receiver, and it must be unforwarded.  Here we do so
> by checking for a forwarded receiver in the value[:] primitives. This is a
> major blow to block performance; e.g. the nfib block
> 	b := [:n| n <= 1
> 				ifTrue: [1]
> 				ifFalse: [1 + (b value: n - 1) + (b value: n - 2)]].
> slows down by 11%.  So we can and will do better.  We should scan for receiver
> usage in the JIT and optionally compile unforwarding code in the prolog
> depending on whether self is used or not.
> 
> Fix Spur block performance now that we follow forwarded receivers in blocks; see
> VMMaker.oscog-eem.1334.  Scan blocks for inst var usage, only unforwarding in
> the prologue of blocks that actually refer to inst vars.  In a test Spur Squeak
> image only 12.5% of blocks do refer to inst vars.  So this is definitely a win.
> 
> Add a special purpose store check trampoline to store check the updated
> receiver.  Make sure it's only called if the eceiuver is updated.
> 
> Add state to CogBytecodeDescriptor, CogBlockStart
> and CogBlockMethod to track block inst var usage.
> 
> Sista:
> Fix the bug where rcvrReg was nil in genEqualsEqualsnoBranch.
> 
> Generic Cogit:
> Use the Tst-based generators for immediate and SmallInteger tests more widely
> to save a few more instructions.
> 
> Fix the hack introduced in VMMaker.oscog-eem.1199 for Sista which merely stopped
> reclaiming closed PICs.  In non-Sista VMs do the usual thing of decaying usage
> counts on PICs, as with methods, and reclaiming those least used.  In Sista,
> retain PICs until the next cycle, identifying unused PICs as part of the
> compaction scan, reminiscent of tri-colour incremental GC.
> 
> Move defaultCogCodeSize into the CogAbstractInstruction hierarchy so that
> e.g.  CogARMCompiler can specify a larger default code zone.
> 
> Newspeak Cogit:
> Fix assert-fails with absent receiver sends in Newspeak.  Have the implicit
> and outer send lookup trampolines set the stacked receiver (when there is one)
> when setting the implciit receiver.
> 
> Streamline send trampoline creation by refactoring trampoline name generation
> so that the two limits, NumSendTrampolines - 2 and numRegArgs are treated
> separately, and numArgsOrSendNumArgsReg: answers the relevant numArgs argument.
> This should clear up confusion between numRegArgs (which can be 0, 1 & 2) and
> NumSendTrampolines - 2, which is always 2.
> 
> linux builds:
> Fix VERSION_TAG format to agree with existing convention.
> -- 
> best,
> Eliot



More information about the Squeak-dev mailing list