Overriding #class

bryce at kampjes.demon.co.uk bryce at kampjes.demon.co.uk
Tue Nov 13 23:06:53 UTC 2007


Martin Beck writes:
 > Bert Freudenberg schrieb:
 > > 
 > > Wouldn't overriding #class break more things than it solves? After all, 
 > > your object's class is not what it would claim to be.
 > > 
 > > Which "normal behavior" would you like to "retain"?
 > Infact, we don't want to override Object>>#class but the #class in our 
 > generated anonymous class. It would look like this:
 > 
 > AnonymousClass>>#class
 > 	^self baseClass
 > 
 > So normal system behaviour is not changed, only if you alter an instance 
 > by for example adding a method, an anonymous class in the class chain is 
 > inserted which overrides the #class method. One reason to do this, is 
 > that the CodA paper specifies this behaviour, too. Another one would be, 
 > if somewhere in the system instances are tested for their classes (which 
 > shouldn't be the case...).

I'd suggest disabling the bytecode that implements the class message.
It doesn't do a message look-up. You could do this either by
converting the bytecode to a normal send (there's several bytecodes
that just do sends so this should be easy) or by modifying the
compiler to generate a normal send bytecode with a selector in the
literal frame.

I doubt that disabling this optimisation will cause problems but
could be wrong.

Bryce



More information about the Squeak-dev mailing list