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