There were some suggestions that a "prereceive" method be
allowed in ST-76 and -80 -- if present, a flag would be set somewhere efficient, and it would be called first with the actual message put in a place where it could be received later. This would have allowed all of these schemes, delegation, etc., to also be done in the later versions of ST. Someone on the list might want to figure out good ways to do these schemes in Squeak. Folks like Nathanial Scharli and Stephane, who are playing with metasystems, should add these kinds of considerations into their play.
Hmm, how about an additional format in the object format field of the base header with a special method entry in the method dictionary (like a key of 0 ...it could be called the zero method)? This would allow for a "prereceive" method for all instances of any given class.
To actually do delegation, you would still need a couple of primitives/bytecodes that supported a delegated send (where the current receiver gets propogated to the new method context...so that sends to the receiver flow back to the original receiver). I think I have a pretty good implemenation of the basic delegation primitives/bytecodes (see http://spair.swiki.net/delegation). Of course, a "prereceive" method would be useful for much more that simple delegation.
- Stephen