Hi guys. The last literal of a instance-side compiled method always points to the SAME (#==) association of the class in Smalltalk global.
The literals of a compiled method that refer to class variables refer to the same association (#==) of the classPool of its class:
self assert: ((GRPlatform class >> #current) literalAt: 1) == (GRPlatform classPool associationAt: #Current).�� -> true
However, if I do a copy of the class:
| copy |
copy := GRPlatform copy.
self assert: ((copy class >> #current) literalAt: 1) == (copy classPool associationAt: #Current).
this is not true anymore. Of course, you can see this because of the Class >> #copy implementation:
So my question is....is #copy breaking the contract (and therefore it has to be fixed) or this is not mandatory for the system (as it is with the last literal pointing to classes)?
Thanks,
--
Mariano
http://marianopeck.wordpress.com