On Monday, 3 June 2013 at 16:16:48 UTC, Manu wrote:
Java is not compiled. If you compile Java code, all functions are virtualalways.
Java is JIT compiled and function that aren't overriden are finalized automatically by the JIT compiler.
It's even able to virtualize at runtime if an override is finally linked, or the other way around, refinalize.
We could do that in D as LTO, as long as we have a way to tell the compiler if a function can be overriden in a shared object.
