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

Reply via email to