What would Squeak be like without non-local returns

Rob Withers reefedjib at yahoo.com
Wed Nov 7 17:39:27 UTC 2007

----- Original Message ----- 
From: "Mathieu Suen" <mathk.sue at gmail.com>
To: "The general-purpose Squeak developers list" 
<squeak-dev at lists.squeakfoundation.org>
Sent: Wednesday, November 07, 2007 3:42 AM
Subject: Re: What would Squeak be like without non-local returns

> By the way I have a suggestion for the #class and #==.
> Instead of building a new VM you could patch the compiler to avoid 
> emitting the bytecodePrimEquals...
> So people can just use you code without having a compiled VM.

I have actually decided that #== and #class are protocol belonging to the 
reference and not to be eventually sent.  So I disabled the VM changes I 
made in this regard.   I see now that I am more familiar with the Compiler, 
that I could patch the compiler to make these msg sends, rather than 
bytecodes and if I change my mind about these, that is definitely that 
approach to take.

There is a need for an #eventuallyEquals: operation, when the distributed 
stuff is added back in to the framework.  Object a holds Object b from Vat 
B, and Object c calls Object a with a remote reference to Object b, called 
b'.  b should equal b'.

Since I no longer need vm changes for #== and #class, the only current 
changes I have are for the Larger Contexts (80) and for the extra long 
jumps, added to support the combined macros I added to the compiler for 
#ifTrue:, #whileTrue: and so on.  I still haven't gotten those changes to be 

As the roadmap on http://wiki.squeak.org/squeak/6011 describes, I plan on 
protecting primitives to allow them to have eventual arguments.  This would 
entail vm changes.  Finally, supporting messaging between vats may entail vm 
changes, which I attempted last week but failed.  I tried to add a word to 
every object header, but it kept crashing on me.

So, in summary, vm changes are possible for:
    - support Compiler changes for combined macros
    - protecting Primitives from eventual arguments
    - support messaging between multiple vats


More information about the Squeak-dev mailing list