Symbolic references allow object spaces to implement primitive naming services. You can export objects in a local space using a symbolic name and then reference the object remotely using just the object name and the space containing the object. With symbolic references, the identity of an indicated object is not known until the reference is resolved by the space holding the object. As a result, two consecutive messages sent to the same remote reference may actually go to two different objects, if the name/object binding was changed between the messages.
may answer false because the remote references created by
sstIn: are symbolic and do not preserve identity. That is, the object registered under the key
#ObjectName in
aSpace could change between sends of
yourself, resulting in different objects being returned. (In some systems, the
yourself message is never sent. This example assumes
yourself is always sent.)
This code returns a remote reference to the Compiler (Smalltalk at: #Compiler) in
aSpace. Also, global remote references are symbolic and do not preserve identity. Further, the reference building constructs such as
sstGlobalIn: and
sstIn: do not cause remote messages to be sent. It is only when these references are message receivers do remote messages get sent.