[squeak-dev] Serious bug in 3.10

Igor Stasenko siguctua at gmail.com
Thu Jul 31 23:37:39 UTC 2008


2008/8/1 Ramon Leon <ramon.leon at allresnet.com>:
>
>> askoh wrote:
>> > | block |
>> > block := [:i | Transcript cr; show: i].
>> > 1 to: 10 do: [:i | block value: i+1]
>> >
>> > The above should print ten times. But it only prints the
>> five even numbers.
>> > That is a bug isn't it?
>> >
>> > Aik-Siong Koh
>> >
>> More of a "known limitation" than a bug... due to the fact
>> that squeak
>> does not have proper closures.
>>
>> try
>>
>> | block |
>> block := [:j | Transcript cr; show: j].
>> 1 to: 10 do: [:i | block value: i+1]
>>
>> Keith
>
> I was going to say that, but why does it work using (1 to: 10) do: rather
> than 1 to: 10 do:, seems related to #to:do: being inlined?
>

#to:do: is a hacky compiler optimization, which replaces true messages. :)
Someday its can be removed, when VM will be powered by good JIT

> Ramon Leon
> http://onsmalltalk.com
>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list