Wooooosh
Rémi Forax
forax at univ-mlv.fr
Thu Jun 18 06:37:10 PDT 2009
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
[forax at localhost sandbox]$ /usr/jdk/jdk1.7.0/bin/java
-XX:+EnableInvokeDynamic JITTest
value 100000
elapsed 30250982 ns
with jdk5 + backport without JIT:
[forax at localhost sandbox]$ java -javaagent:../lib/jsr292-backport.jar
-Dallow.JIT=false JITTest
value 100000
elapsed 30997166 ns
with jdk5 + backport JIT enable
[forax at 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");
}
}
More information about the mlvm-dev
mailing list