Current VM's use JIT or dynamic profiling/performance optimisation techniques to improve the code running on them, but this only applies to application code. Would it be possible to write the VM in such a way as the VM itself is able to be optimised at runtime?

Yes. This is what already happens in Jikes RVM. The most performance critical examples are the barriers and allocation sequences, which the optimizing compiler gets to inline and then optimize in context. As I said in an earlier post, these dynamic optimizations can lead to the Java implementation of the allocator out-performing highly tuned C allocators (important since Java programs tend to be allocation intensive). This is an argument for implementing the VM in Java.


Other elements of the VM such as the garbage collector and the compiler/s may not benefit so much from adaptive compilation since they are monolithic and their behavior tends to be so predictable.

--Steve

Reply via email to