Re: [squeak-dev] Cog VM problem?

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

Re: [squeak-dev] Cog VM problem?

Eliot Miranda-2
Hi Raymond,

    yes, thanks.  We have a regression in the code generator due to recent changes to #== compilation.  We're working on it.  I hope to have a fix soon.  Apologies for the inconvenience.

For those of you curious why this only affects the V3 VM, not the Spur VM, the reason is that in Spur the Cogit passes up to 2 argument sends in registers but in V3 it passes only up to 1 arg sends in registers.  In 

(borderWidth = style width and: 
["Hah! Try understanding this..."

borderColor == style style or: 
["#raised/#inset etc"

#simple == style style and: [borderColor = style color]]]) 
ifFalse: 
[style := borderColor isColor 
ifTrue: [BorderStyle width: borderWidth color: borderColor]
ifFalse: [(BorderStyle perform: borderColor) width: borderWidth "argh."].
self setProperty: #borderStyle toValue: style].

#simple erroneously ends up getting spilled to the stack, so that when the send of width:color: to BorderStyle occurs the code generator emits code to access what it thinks is BorderWidth, but ends up accessing #simple instead.

As I say we're working on it and should have a fix soon.

On Thu, May 14, 2015 at 8:13 AM, Raymond Asselin <[hidden email]> wrote:
Cog.app-15.19.3336.tgz
gave me a Debugger window

 

with these artefacts
This is a MauiDomainMorph







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

Re: [squeak-dev] Cog VM problem?

Tobias Pape
Hi Eliot

On 15.05.2015, at 02:07, Eliot Miranda <[hidden email]> wrote:

> Hi Raymond,
>
>     yes, thanks.  We have a regression in the code generator due to recent changes to #== compilation.  We're working on it.  I hope to have a fix soon.  Apologies for the inconvenience.
>
> For those of you curious why this only affects the V3 VM, not the Spur VM, the reason is that in Spur the Cogit passes up to 2 argument sends in registers but in V3 it passes only up to 1 arg sends in registers.  In
>
> (borderWidth = style width and:
> ["Hah! Try understanding this..."
>
> borderColor == style style or:
> ["#raised/#inset etc"
>
> #simple == style style and: [borderColor = style color]]])
> ifFalse:
> [style := borderColor isColor
> ifTrue: [BorderStyle width: borderWidth color: borderColor]
> ifFalse: [(BorderStyle perform: borderColor) width: borderWidth "argh."].
> self setProperty: #borderStyle toValue: style].
>
> #simple erroneously ends up getting spilled to the stack, so that when the send of width:color: to BorderStyle occurs the code generator emits code to access what it thinks is BorderWidth, but ends up accessing #simple instead.
>
> As I say we're working on it and should have a fix soon.

Thank you!
Best regards
        -Tobias

>
> On Thu, May 14, 2015 at 8:13 AM, Raymond Asselin <[hidden email]> wrote:
> Cog.app-15.19.3336.tgz
> gave me a Debugger window
>
>  
>
> with these artefacts
> This is a MauiDomainMorph