But it would seem to me that a circular superclass relation would require a special termination test just as much as the current nil superclass one does. I would be very much interested in knowing what you can do in microcode that can't be done in assembly or C, specially since I am currently building a microcoded machine!
I would like to know the same.
The actual implementation of ST-76, as revealed in the appendix of http://users.ipa.net/~dwighth/smalltalk/St76/Smalltalk76ProgrammingSystem.ht... did not have a circular superclass chain. It ended with nil, as now. You can see this in the code for
send: message | class meth callee t i "send a message" [class := self top class. until:: (meth := class lookup: message) do:: "look up method" [class := class superclass. "follow the superclass chain if necessary" class = nil ==> [user notify: 'Unrecognized message: ' + message]] .... [I have had to substitute some characters. The original URL has them right, thanks to Dwight]
- Dan
PS: If you like teases, there's a chance that some time in May Squeakers will have an opportunity to play with Smalltalk-76 in an even more direct form than the ST-72 simulation from a couple of years ago.
(Helge knows about this, but he's not talking either ;-).
squeak-dev@lists.squeakfoundation.org