Hi Ian,
The important thing that CLOS (e.g.) did was to make the additions to the models compilable so that metachanges could be as efficient as the kernel. We kind of have this with SLANG, but the whole apparatus could be much much cleaner.
A Jitter in Smalltalk would do the job.
I think two jitters would be simpler (and do a much better job: the right tool at the right level of abstraction for the particular problem in hand).
... ... ...
Is this a hint that we are going to have 2 Jitter plugins for 3.3 VM ;-)
The mechanism is almost all in place already in Squeak (with the named primitives). All that's missing is the primitive lookup to notice that the method starts with <slang> (instead of primitive:module:) and to fire up the Slang compiler to generate the binary. Drop the entry point into the primitive table and off you go. Beyond that we only need a translator from Slang bytecode to binary, which is *way* simpler than a "real" jitter. A week, maybe two, tops.
Please go for it, Ian. I beg you. :-)
After I split the traditional 'VM' into 'InterpreterPlugin', 'ObjectMemoryPlugin' and PrimitivesPlugin' I lost somewhere around 5% in performance.
I am desperate for some faster cycles, hoping to get them from Anthony and Scott optimisation and your Jitters.
Cheers,
PhiHo.