JSR 292: invokedynamic
The invokedynamic instruction is in many ways similar to the existing invokevirtual instruction. However, it is much less constrained by byte code verification rules. Instead, it relies on dynamic typechecking to ensure the integrity of the virtual machine.
Such instructions have long been present in virtual machines that support dynamically typed object oriented languages, such as Smalltalk or Self. Well known techniques exist for high performance implementation of these instructions, typically based on (polymorphic) in line caching.
Similarly, hotswapping has been part of dynamically typed programming systems for decades (e.g., APL, Lisp, Smalltalk, Self). It is much harder to provide such support for statically typed languages. To the extent that viable support can be added for the Java platform as a whole, we will capitalize on it. In cases where this is not feasible, support that applies only to dynamically typed languages running on the JVM can be added.
More engines? Groovy, Ruby, Python, E, Intercal?
Perhaps this is a bit bloated?