nil, false and true are special objects that are well know by the vm, and they have a specific location on the vm... if you look at the class ObjectMemory and Interpreter (and InterpreterSimulator) you will see that (not sure they are still in pharo, if not, look for an old version of squeak, like 2.8... if you need an image to make the simulator work, let me know)
On Thursday, August 5, 2010, Mariano Martinez Peck
<marianopeck@gmail.com> wrote:Magic in the compiler. They are also referenced �in the special objects array.
> Hi. I know this is a newbie question, but there is something I don't understand about globals.
>
> I am writing a piece of code, and I refer to "a class" that does exist. Suppose:
>
> testSomething
>
> ��� NonExistenteClass
>
>
> Whem I accept the method, a popup brings saying it doesn't exist...etc. Then, I can define as global.
>
> If I then evaluate:�� Smalltalk globals at: #NonExistenteClass
>
> the key exist and it has nil as value. Perfect.
>
> So..if I understand well, all these globals variables AND classes are stored in this globals, which is the only instance of SystemDictionary (for the moment).
>
> Now my question is, where are nil, true, false, etc stored?
Efficiency. There are special bytecodes to push them.
> I know there are only one instance of� UndefinedObject, False, True, etc have only one instance...but WHERE are they stored? who keep them?� They don't seem to be in SystemDictionary. Why no?
AFAIK Gemstone is the only Smalltalk that has them in the "SystemDictionary".
Lukas
>
> I did a "chase pointers" to nil for example, and it says
> "CLASS: SmalltalkImage class
> subclasses: UndefinedObject"
>
> I still don't understand :(
>
> Thanks for any hints
>
> Mariano
>
>
_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project