2011/8/29 Nicolas Cellier <[email protected]>

> 2011/8/29 Levente Uzonyi <[email protected]>:
> > On Mon, 29 Aug 2011, Stéphane Ducasse wrote:
> >
> >> and we could keep all the Object method in a extension of the halt
> >> packages and just some of them as forward to Halt.
> >>
> >> I know that there was an attempt on the inbox to do that. But I was
> >> worried that people will complain.
> >> Now cleaning Object would be nice.
> >>
> >> Stef
> >>
> >> On Aug 28, 2011, at 8:10 PM, Lukas Renggli wrote:
> >>
> >>> We have a class Halt and the class-side is empty. This seems to be the
> >>> right place to hold all the code in the protocols #debugging and
> >>> #debuggin-haltonce of Object. With a few renames we could get a really
> >>> nice DSL:
> >>>
> >>>   Halt now.
> >>>   Halt if: a = 2.
> >>
> >> why not
> >>        Halt ifTrue: [a = 2].
> >>
> >> ?
> >>
> >> two questions in my questions :)
> >> [] and True:
> >
> > Currently you can't send #ifTrue: to any object. If you want to enable
> that,
> > then you have to:
> > - remove the optimization which will result in worse performance and will
> > break code that assumes this method is atomic
> > - or you have to change the compiler to generate extra bytecodes which
> will
> > perform the real message send when the receiver is not a boolean and
> change
> > the VM to not send the message in specialObjectsArray (currently
> > #mustBeBoolean), but execute those extra bytecodes
> > - or you have to change the handling of NonBooleanReceiver, use the
> > decompiler to find out what has to be sent to who, etc.
> >
> > Btw Halt if: a = 2 is much more readable IMHO.
> >
> >
> > Levente
> >
>
> More exactly, you can't send #ifTrue: with a block argument. If you
> use anything else but a block, the compiler will use a normal message
> send (at least in Squeak, can't remember if it was ported to Pharo).
>

ok, the complier applies the optimisation only is the argument is a Block.
Because I tried:

Foo ifTrue: a=2 " and it works perfectly"

Foo ifTrue: [a=2] "but this one not. mustBeBoolean receiver"

Thanks Nicolas,

Luc



> For example: (Halt ifTrue: [a = 2] yourself) would be possible (but
> block is useless in this case as already said)
>
> Nicolas
>
> >>
> >>>   Halt once.
> >>>
> >>> Lukas
> >>>
> >>>
> >>> On 28 August 2011 19:47, Marcus Denker <[email protected]> wrote:
> >>>>
> >>>> On Aug 28, 2011, at 7:24 PM, Sean P. DeNigris wrote:
> >>>>
> >>>>>
> >>>>> 2. Using Object to halt causes bloat, and doesn't buy much (except
> >>>>> that's
> >>>>> how we've always done it).
> >>>>
> >>>>
> >>>> Back in the days, we were virtually crucified for introducing the
> Beeper
> >>>> class along the
> >>>> same reasoning...
> >>>>
> >>>> The Beeper actually got very depressed due to having his very
> existance
> >>>> being
> >>>> questioned.
> >>>>
> >>>> "I am just the result of a random refactoring" he was complaining
> "maybe
> >>>> I should just
> >>>> just delete myself and everyone will be happy".
> >>>>
> >>>> (you know, reflection *is* dangerous! There has been a lot of talk to
> >>>> make reflection more
> >>>> secure... for a reason!).
> >>>>
> >>>> To cheer him up, I gave him the lead role in a real, peer reviewed
> >>>> Paper:
> >>>>
> >>>>       http://scg.unibe.ch/archive/papers/Denk08bMetaContextLNBIP.pdf
> >>>>
> >>>> The Beeper thus was the first Class to be really "Meta" in the history
> >>>> of
> >>>> Objects. What a thrill. In an interview, the Beeper said: "You know,
> >>>> being meta is hard
> >>>> to decribe... Classes claim to be Meta all the time. But I doubt they
> >>>> ever really are Meta. Being
> >>>> Meta is special. The whole System looks different when meta!"
> >>>>
> >>>> ;-)
> >>>>
> >>>> --
> >>>> Marcus Denker -- http://marcusdenker.de
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Lukas Renggli
> >>> www.lukas-renggli.ch
> >>>
> >>
> >>
> >
>
>

Reply via email to