[Newbies] true/false defined where?

Sean Allen sean at monkeysnatchbanana.com
Tue Aug 5 15:20:46 UTC 2008


On Aug 5, 2008, at 10:52 AM, Randal L. Schwartz wrote:

>>>>>> "Sean" == Sean Allen <sean at monkeysnatchbanana.com> writes:
>
> Sean> I have a feeling the secret to unraveling that confusion comes  
> from  this:
>
> Sean> 'true and false and some of the very few objects known to the  
> VM'
>
> Sean> does that mean that I can't go and find these variables  
> anywhere? that
> Sean> they arent true global variables they are some sort of special  
> global?
>
> If you explore "Smalltalk specialObjectsArray", you'll see a special  
> list of
> variables that both the VM and the Smalltalk code have to agree on  
> in order to
> run.  For example, if a primitive wants to return "false", it has to
> know what the rest of the Smalltalk image considers the sole instance
> of the "False" class.
>
> These items are established in
> "SystemDictionary>>#recreateSpecialObjectsArray", the first version  
> of which
> had to be executed essentially "by hand" on the first VM (either the  
> early
> versions of Smalltalk 76 or 80).  Since then, this special array has  
> gotten
> its initial values by running it in an already running system, so  
> the first
> few entries there (nil, false, true) are in fact clones of clones of  
> clones of
> the original handcrafted objects.  Of course, there's code on the VM  
> side that
> knows the precise order of this magical array, and this is what  
> allows them to
> communicate, so you can't just add new things here or change the  
> ordering
> without building a corresponding new VM.

Thanks for the pointer of where to explore and the background info.
In a couple days when I've had time to review and digest hopefully it  
will all make sense.



More information about the Beginners mailing list