What would Squeak be like without non-local returns
nicolas cellier
ncellier at ifrance.com
Wed Nov 7 04:07:26 UTC 2007
It seems like everything after has to become eventual.
But worse, some inst var could contain blocks with local return (see
ifFail: [^nil] pre-exception-handling kind in Compiler).
object eventual ifTrue: [failBlock value].
^4
Nothing obvious at compile time...
As already stated by Igor, you also have modern exception handling that
could play tricks...
Nicolas
Rob Withers a écrit :
>
> ----- Original Message ----- From: "Andreas Raab" <andreas.raab at gmx.de>
> To: "The general-purpose Squeak developers list"
> <squeak-dev at lists.squeakfoundation.org>
> Sent: Tuesday, November 06, 2007 5:55 PM
> Subject: Re: What would Squeak be like without non-local returns
>
>
>> Igor Stasenko wrote:
>>> On 07/11/2007, Rob Withers <reefedjib at yahoo.com> wrote:
>>>> E states that non-local returns are bad and we are seeing th
>>>> implications of
>>>> that statement. Our candidate solution of mixing non-local returns and
>>>> eventual refs is not pretty.
>>>
>>> Yeah, but we talking about Smalltalk, not E. Maybe they are bad for E,
>>> but why they should be bad for smalltalk? :)
>>
>> Indeed. And as a matter of fact I can't recall that particular
>> statement. Who said it and in what context? The main rule that matters
>> to E (for many reasons) is about globally mutable state which is a
>> complete no-no. But non-local returns? The only issue I can imagine
>> with this is that code could conceivably "escape" from an evaluation
>> which may make it harder for auditing but that's about all I can see.
>
> Well, now I can't find that statement, but I was sure I had read it on
> erights or Mark's thesis. I searched and found nothing. It may have
> been a statement regarding eventual-sending specifically with non-local
> return. It IS strange thinking about the correct behavior of an
> expression:
>
> object eventual ifTrue: [^3].
> ^4
>
> What should be the result?
>
> What I did find was discussion about escape from a block with an
> ejector, which I had always wondered about. It is non-local return from
> a synchronous send. Click on ii.3 Escape:
> http://www.erights.org/elib/concurrency/msg-passing.html and also
> http://www.erights.org/elang/kernel/EscapeExpr.html
>
> Cheers,
> Rob
>
>
More information about the Squeak-dev
mailing list
|