Closure conversion in 3.10

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

Closure conversion in 3.10

Andreas.Raab
 
Hi Eliot -

I've just successfully converted a 3.10.2 image to closures (see
follow-on message to Squeak-dev). In the process, the following three
problems occurred:

1) DecompilerTests is not present in 3.10 and PreRecompilationPatches.st
doesn't load unless you remove the modification to DecompilerTests.

2) #isMessageNode is not understood by ParseNode or MessageNode but sent
in the recompilation process. I'm not sure where this is coming from (or
where it should be); it could be a bug in 3.10.

3) Recompilation of Preferences results in spurious ERROR listings in
the transcript during recompilation. Again, no idea where this comes from.

Other than that the conversion went entirely flawless.

Cheers,
   - Andreas
Reply | Threaded
Open this post in threaded view
|

Re: Closure conversion in 3.10

Eliot Miranda-2
 
Hi Andreas,

On Fri, Mar 6, 2009 at 11:20 PM, Andreas Raab <[hidden email]> wrote:

Hi Eliot -

I've just successfully converted a 3.10.2 image to closures (see follow-on message to Squeak-dev). In the process, the following three problems occurred:

1) DecompilerTests is not present in 3.10 and PreRecompilationPatches.st doesn't load unless you remove the modification to DecompilerTests.

2) #isMessageNode is not understood by ParseNode or MessageNode but sent in the recompilation process. I'm not sure where this is coming from (or where it should be); it could be a bug in 3.10.

3) Recompilation of Preferences results in spurious ERROR listings in the transcript during recompilation. Again, no idea where this comes from.

Other than that the conversion went entirely flawless.

Thanks!  Usage is building.  I got the following classic bug from Lukas Renggli this a.m. (I don't have a fix yet)

 | col |
  col := OrderedCollection new.
  1 to: 11 do: [ :each | col add: [ each ] ].
   col collect: [ :each | each value ])

answers #(12 12 12 12 12 12 12 12 12 12 12) instead of #(1 2 3 4 5 6 7 8 9 10 11).

(Sigh...)


Cheers,
 - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: Closure conversion in 3.10

Eliot Miranda-2
 
Oops.  That was intended for Andreas.  I'm not sure I like the gmail interface so much :(  Apologies.

On Sat, Mar 7, 2009 at 10:34 AM, Eliot Miranda <[hidden email]> wrote:
Hi Andreas,

On Fri, Mar 6, 2009 at 11:20 PM, Andreas Raab <[hidden email]> wrote:

Hi Eliot -

I've just successfully converted a 3.10.2 image to closures (see follow-on message to Squeak-dev). In the process, the following three problems occurred:

1) DecompilerTests is not present in 3.10 and PreRecompilationPatches.st doesn't load unless you remove the modification to DecompilerTests.

2) #isMessageNode is not understood by ParseNode or MessageNode but sent in the recompilation process. I'm not sure where this is coming from (or where it should be); it could be a bug in 3.10.

3) Recompilation of Preferences results in spurious ERROR listings in the transcript during recompilation. Again, no idea where this comes from.

Other than that the conversion went entirely flawless.

Thanks!  Usage is building.  I got the following classic bug from Lukas Renggli this a.m. (I don't have a fix yet)

 | col |
  col := OrderedCollection new.
  1 to: 11 do: [ :each | col add: [ each ] ].
   col collect: [ :each | each value ])

answers #(12 12 12 12 12 12 12 12 12 12 12) instead of #(1 2 3 4 5 6 7 8 9 10 11).

(Sigh...)


Cheers,
 - Andreas


Reply | Threaded
Open this post in threaded view
|

Re: Closure conversion in 3.10

Andreas.Raab
In reply to this post by Eliot Miranda-2
 
Eliot Miranda wrote:

> Thanks!  Usage is building.  I got the following classic bug from Lukas
> Renggli this a.m. (I don't have a fix yet)
>
>  | col |
>   col := OrderedCollection new.
>   1 to: 11 do: [ :each | col add: [ each ] ].
>    col collect: [ :each | each value ])
>
> answers #(12 12 12 12 12 12 12 12 12 12 12) instead of #(1 2 3 4 5 6 7 8
> 9 10 11).
>
> (Sigh...)

I noticed that. It's optimized to:do: blocks. My first attempt at
showing the difference between closure and context VM was:

1 to: 10 do:[:i|
   WorldState addDeferredUIMessage:[Transcript cr; show: i].
].

And of course, that prints 11. If you change it to this:

(1 to: 10) do:[:i|
   WorldState addDeferredUIMessage:[Transcript cr; show: i].
].

it works fine because to:do: is no longer optimized.

Cheers,
   - Andreas