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*. >>> Cheers, >>> -- Pavel >>> >> >> > > > -- > best, > Eliot >
