Christian has sent his first patch to enable compiler support of invokedynamic today, I've worked late last night to do the same for the backport.
I am please to announce that the jsr292 backport now comes with a JIT (a kind of) that recompiles at runtime a tree of method handle adapters to a single blob of byte code. Just a small test: with jdk7 [fo...@localhost sandbox]$ /usr/jdk/jdk1.7.0/bin/java -XX:+EnableInvokeDynamic JITTest value 100000 elapsed 30250982 ns with jdk5 + backport without JIT: [fo...@localhost sandbox]$ java -javaagent:../lib/jsr292-backport.jar -Dallow.JIT=false JITTest value 100000 elapsed 30997166 ns with jdk5 + backport JIT enable [fo...@localhost sandbox]$ java -javaagent:../lib/jsr292-backport.jar JITTest value 100000 elapsed 14863411 ns Wooosh, it's faster :) I hope to come with the complete support of invokedynamic is the next milestone. Enjoy, Rémi ---------------------------------------------------------------------------------------------------------- JITTest.java: import java.dyn.MethodHandle; import java.dyn.MethodHandles; import java.dyn.MethodType; public class JITTest { public static class Test { public static int inc(int value) { return value + 1; } } public static void main(String[] args) { MethodHandle mh=MethodHandles.lookup().findStatic(Test.class, "inc", MethodType.make(int.class, int.class)); long start = System.nanoTime(); int value = 0; for(int i=0;i<100000;i++) { value = mh.<int>invoke(value); } long end = System.nanoTime(); //jsr292.weaver.jit.JIT.debugCounter(Test.class); System.out.println("value " + value); System.out.println("elapsed " + (end - start) + " ns"); } } _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev