> Am 25.03.2014 um 00:33 schrieb "[email protected]" <[email protected]>: > >> On Tue, Mar 25, 2014 at 12:11 AM, Eliot Miranda <[email protected]> >> wrote: > >> >> >> >>> On Mon, Mar 24, 2014 at 4:02 PM, [email protected] <[email protected]> >>> wrote: >>> I am curious. >>> >>> Maybe on the first one, substitute something when a DNU is encountered. >>> Like logging undefined receivers. >>> >>> I wonder how the next one behaves on JITted methods. I fear that offset >>> errors may lead to weird errors. >> >> It *should* "just work" :-) (provided the jump distance of -12 is correct). >> The VM traps assignments to variables of contexts, and converts them to >> vanilla contexts. Therefore the jump doesn't occur in JITTED code but back >> in normal interpreted bytecode. > > How magical! > >>>> On Mon, Mar 24, 2014 at 11:51 PM, Pavel Krivanek >>>> <[email protected]> wrote: >>>> Who can find the most useful usage of this? >>>> >>>> thisContext instVarNamed: #receiver put: 42. >>>> self factorial >>>> >>>> GOTO statement in Pharo: >>>> >>>> FileStream stdout nextPutAll: 'Hello world'; lf. >>>> thisContext jump: -12. >>>> >>>> Let's collect the next ones :-) >> >> this is my favourite, and would lock-up a strict blue book VM. (I once >> locked up Allen Wirfs-Brock's 4404 with this and he wasn't best pleased >> [forgive me Allen]) >> >> >> | a | >> a := Array with: #perform:withArguments: with: nil. >> a at: 2 put: a. >> a perform: a first withArguments: a >> >> ;-) > > The infinite is near. > > Not as blocking, but still... (Alt-. interrupts this one) > > Crazy>>run > Continuation currentDo: [ :cc | here := cc ]. > here value: true. > > Crazy new run > > BTW, is there any support for partial continuations in Pharo? Continuations > like this one look like full continuations and that's *huge*. > If you mean delimited continuations have a look here:
http://www.lshift.net/blog/2011/04/20/direct-implementation-of-shiftreset-in-smalltalk Norbert > >>>> >>>> Cheers, >>>> -- Pavel >> >> >> >> -- >> best, >> Eliot >
