At 10:14 AM 7/18/2002 -0700, Dan Ingalls wrote:
So I am NOT suggesting to write the Snort (Strong Squeak, get it ;-) compiler in Slang. It is a compiler, so running it on itself WILL make it faster. The idea is to write it all in Snort (not Slang), except for the runtime required by the compiler (hopefully much of that could still be written in Slang). [I've talked with Ian about applying the same approach to Jitter].
So, what happens when you start it?
It starts to run the first method which is not translated so it runs the interpreter Things lumber along for a while this way until something notices the umpteenth execution of the same method and asks for it to be compiled Now the compiler starts to run but, of course, it's not translated so it starts kind of slow Along the way the compiler hits some inner loops and these need in turn to be translated Gradually the compiler speeds up until it runs as fast as StrongTalk, and what more could we ask for?
Dan, An approach very similar to this was taken by the JalapeƱo project at IBM T J Watson for building a high performance dynamic compilation Java vm that used Java as it's implementation language. Numerious papers have been published on various aspects of this project and the actual implementation (renamed to "Jikes Research VM") is available under an open source license. I believe the experiences reported in these papers would be highly valuable to anyone attempting to building a Smalltalk implementation of the sort you describe above.
For links to papers, etc. see: http://www.research.ibm.com/jalapeno/ http://www-124.ibm.com/developerworks/oss/jikesrvm/
Also note that there is an upcoming OOPSLA'2002 tutorial titled "The Design and Implementation of the Jikes RVM Optimizing Compiler"
Allen_Wirfs-Brock@Instantiations.com