New Cog VMs available

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

New Cog VMs available

Eliot Miranda-2
 

CogVM binaries as per VMMaker.oscog-eem.1029/r3236

Fix stupid, stupid bug in copying vm profile samples between buffers when the
circular buffer index has wrapped.

Fix monumental blunder in jitted store-check code.  The saved registers mask
needs to be the *or* of the value reg and the caller-saved registers, not the
*and*!!

Make the pin primitives Spur-only.

Never inline mapStackPages, for debugging.

Spur:
Reduce the max num literals in the alternate header format to 15, and steal
the bit for the Sista optimized method flag.

Make postBecomeAction's stack sweep only occur in Spur (fix regression).
Refactor so that the scan is not inlined. Don't assume newMethod is
non-immediate in post-become actions.

Fix stack adjust slip in primitiveSmallFloatTimesTwoPower

Make ensureBehaviorHash: fail for uninitialized
behaviours and hence fix the Behavior basicNew basicNew hang.

Optionalize some api methods the Spur Cogit doesn't use.

Rename and correct ensureSemaphoreForwardedThroughContext: to
ensureSemaphoreUnforwardedThroughContext:, its intended function.

Make shouldRemapObj: filter-out objects already in newSpace
since mapStackPages, via mapInterpreterOops, can visit objects
twice in a scavenge, GC, compact sequence.

Make sure the caller (& saved) context(s) in base frames stack page are
followed post-become in followForwardingPointersInStackZone:.

Fix bad bug introduced in become changes in  VMMaker.oscog-eem.841 through 844.
The class table contains puns, e.g. using Array and WeakArray.  These class
index puns must not mislead the allInstances primitive into concluding that
the class in question is at multiple indices and wrongly purge it.

Fix slip in primitivePin. Also be lenient w.r.t. unpinning married contexts.
Move the check down into StackInterpreter's version.  This allows e.g.
    self allObjectsDo: [:o| o unpin]

Bow to the inevitable and add a manual override for primitive accessor depth.
Use it in at: & at:put:.  If manual override is not used then the automatically
computed depth is too deep because of context access.

Newspeak:
Integrate Ryan's newer absent receiver sends, which first apeared in
VMMaker.oscog-eem.919, abandoned because of Glue issues now resolved.  Includes
nice refactoring of absent send argument marshalling into its own routine.

LargeIntegersPlugin:
Remove/fix assumption of 32-bit digit length in normalization routines.

--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: New Cog VMs available

Chris Muller-3
 
Congratulations Eliot!  This is a major milestone for Spur's stability
and robustness.  With this release, I am comfortable to move the rest
of my production to Spur.  This is so great!

On Thu, Jan 29, 2015 at 7:26 PM, Eliot Miranda <[hidden email]> wrote:

>
> at http://www.mirandabanda.org/files/Cog/VM/VM.r3236/
>
> CogVM binaries as per VMMaker.oscog-eem.1029/r3236
>
> Fix stupid, stupid bug in copying vm profile samples between buffers when the
> circular buffer index has wrapped.
>
> Fix monumental blunder in jitted store-check code.  The saved registers mask
> needs to be the *or* of the value reg and the caller-saved registers, not the
> *and*!!
>
> Make the pin primitives Spur-only.
>
> Never inline mapStackPages, for debugging.
>
> Spur:
> Reduce the max num literals in the alternate header format to 15, and steal
> the bit for the Sista optimized method flag.
>
> Make postBecomeAction's stack sweep only occur in Spur (fix regression).
> Refactor so that the scan is not inlined. Don't assume newMethod is
> non-immediate in post-become actions.
>
> Fix stack adjust slip in primitiveSmallFloatTimesTwoPower
>
> Make ensureBehaviorHash: fail for uninitialized
> behaviours and hence fix the Behavior basicNew basicNew hang.
>
> Optionalize some api methods the Spur Cogit doesn't use.
>
> Rename and correct ensureSemaphoreForwardedThroughContext: to
> ensureSemaphoreUnforwardedThroughContext:, its intended function.
>
> Make shouldRemapObj: filter-out objects already in newSpace
> since mapStackPages, via mapInterpreterOops, can visit objects
> twice in a scavenge, GC, compact sequence.
>
> Make sure the caller (& saved) context(s) in base frames stack page are
> followed post-become in followForwardingPointersInStackZone:.
>
> Fix bad bug introduced in become changes in  VMMaker.oscog-eem.841 through 844.
> The class table contains puns, e.g. using Array and WeakArray.  These class
> index puns must not mislead the allInstances primitive into concluding that
> the class in question is at multiple indices and wrongly purge it.
>
> Fix slip in primitivePin. Also be lenient w.r.t. unpinning married contexts.
> Move the check down into StackInterpreter's version.  This allows e.g.
>     self allObjectsDo: [:o| o unpin]
>
> Bow to the inevitable and add a manual override for primitive accessor depth.
> Use it in at: & at:put:.  If manual override is not used then the automatically
> computed depth is too deep because of context access.
>
> Newspeak:
> Integrate Ryan's newer absent receiver sends, which first apeared in
> VMMaker.oscog-eem.919, abandoned because of Glue issues now resolved.  Includes
> nice refactoring of absent send argument marshalling into its own routine.
>
> LargeIntegersPlugin:
> Remove/fix assumption of 32-bit digit length in normalization routines.
>
> --
> best,
> Eliot
>
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] New Cog VMs available

douglas mcpherson
In reply to this post by Eliot Miranda-2
 
ARMv6 stack/v3 and stack/spur VMs updated accordingly. 

Doug

On Jan 29, 2015, at 17:26, Eliot Miranda <[hidden email]> wrote:


CogVM binaries as per VMMaker.oscog-eem.1029/r3236

Fix stupid, stupid bug in copying vm profile samples between buffers when the
circular buffer index has wrapped.

Fix monumental blunder in jitted store-check code.  The saved registers mask
needs to be the *or* of the value reg and the caller-saved registers, not the
*and*!!

Make the pin primitives Spur-only.

Never inline mapStackPages, for debugging.

Spur:
Reduce the max num literals in the alternate header format to 15, and steal
the bit for the Sista optimized method flag.

Make postBecomeAction's stack sweep only occur in Spur (fix regression).
Refactor so that the scan is not inlined. Don't assume newMethod is
non-immediate in post-become actions.

Fix stack adjust slip in primitiveSmallFloatTimesTwoPower

Make ensureBehaviorHash: fail for uninitialized
behaviours and hence fix the Behavior basicNew basicNew hang.

Optionalize some api methods the Spur Cogit doesn't use.

Rename and correct ensureSemaphoreForwardedThroughContext: to
ensureSemaphoreUnforwardedThroughContext:, its intended function.

Make shouldRemapObj: filter-out objects already in newSpace
since mapStackPages, via mapInterpreterOops, can visit objects
twice in a scavenge, GC, compact sequence.

Make sure the caller (& saved) context(s) in base frames stack page are
followed post-become in followForwardingPointersInStackZone:.

Fix bad bug introduced in become changes in  VMMaker.oscog-eem.841 through 844.
The class table contains puns, e.g. using Array and WeakArray.  These class
index puns must not mislead the allInstances primitive into concluding that
the class in question is at multiple indices and wrongly purge it.

Fix slip in primitivePin. Also be lenient w.r.t. unpinning married contexts.
Move the check down into StackInterpreter's version.  This allows e.g.
    self allObjectsDo: [:o| o unpin]

Bow to the inevitable and add a manual override for primitive accessor depth.
Use it in at: & at:put:.  If manual override is not used then the automatically
computed depth is too deep because of context access.

Newspeak:
Integrate Ryan's newer absent receiver sends, which first apeared in
VMMaker.oscog-eem.919, abandoned because of Glue issues now resolved.  Includes
nice refactoring of absent send argument marshalling into its own routine.

LargeIntegersPlugin:
Remove/fix assumption of 32-bit digit length in normalization routines.

--
best,
Eliot

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] New Cog VMs available

timrowledge


On 02-02-2015, at 9:24 AM, Douglas McPherson <[hidden email]> wrote:

> ARMv6 stack/v3 and stack/spur VMs updated accordingly.

We’ll soon be adding ARMv7 quadcore Pi support -
http://www.raspberrypi.org/raspberry-pi-2-on-sale/

I’ve been using one for some time now and it is certainly nicely faster. The multiple cores make quite a difference to overall system performance even if Squeak can’t directly take advantage. The memory interface seems faster too.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: FD: Failsafe Disarmed


Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] New Cog VMs available

douglas mcpherson


---- tim Rowledge <[hidden email]> wrote:

>
>
> On 02-02-2015, at 9:24 AM, Douglas McPherson <[hidden email]> wrote:
>
> > ARMv6 stack/v3 and stack/spur VMs updated accordingly.
>
> We’ll soon be adding ARMv7 quadcore Pi support -
> http://www.raspberrypi.org/raspberry-pi-2-on-sale/
>
> I’ve been using one for some time now and it is certainly nicely faster. The multiple cores make quite a difference to overall system performance even if Squeak can’t directly take advantage. The memory interface seems faster too.

I was going to ask you about this as I saw the RPi 2 announcement today. I figured you probably already had one :)

I haven’t been building the ARMv7 VMs recently since there is something broken in the ARM fast BitBlt enhancements for ARMv7, which I haven’t had time to look into. Have you been able to make any improvements to that?  (There’s also some potential issues noted by Ken Dickey regarding atomic operations).

Doug


>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Strange OpCodes: FD: Failsafe Disarmed
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] New Cog VMs available

timrowledge


On 02-02-2015, at 12:02 PM, Douglas McPherson <[hidden email]> wrote:

>
> ---- tim Rowledge <[hidden email]> wrote:
>>
>>
>> On 02-02-2015, at 9:24 AM, Douglas McPherson <[hidden email]> wrote:
>>
>>> ARMv6 stack/v3 and stack/spur VMs updated accordingly.
>>
>> We’ll soon be adding ARMv7 quadcore Pi support -
>> http://www.raspberrypi.org/raspberry-pi-2-on-sale/
>>
>> I’ve been using one for some time now and it is certainly nicely faster. The multiple cores make quite a difference to overall system performance even if Squeak can’t directly take advantage. The memory interface seems faster too.
>
> I was going to ask you about this as I saw the RPi 2 announcement today. I figured you probably already had one :)

VM building seems much faster if you add -j4 to the make line in the .mvm script. It’s quite impressive to see 99% cpu utilisation on a quadcore

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
"Bother" said Pooh, as the IRS kicked his door in.


Reply | Threaded
Open this post in threaded view
|

re: quad-core VM builds (was "New Cog VMs available")

ccrraaiigg
 

> It’s quite impressive to see 99% cpu utilisation on a quadcore

     I'm looking forward to this. :)


-C

--
Craig Latta
netjam.org
+31   6 2757 7177 (SMS ok)
+ 1 415  287 3547 (no SMS)

Reply | Threaded
Open this post in threaded view
|

re: quad-core VM builds (was "New Cog VMs available")

timrowledge


On 04-02-2015, at 5:28 AM, Craig Latta <[hidden email]> wrote:

>
>
>> It’s quite impressive to see 99% cpu utilisation on a quadcore
>
>     I'm looking forward to this. :)

`time ./mvm` says 4.5 mins to compile a stackvm with the usual optimisation settings. About half is the single threaded config stuff. The debug build takes less than 3 min, but the optimisation is -O0.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
..... REALITY.SYS Corrupted - Unable to recover Universe