Javac + invokedynamic
Just for fun, this morning, i've patched the java compiler
to be able to generate classes that use
invokedynamic instead of invokevirtual/invokeinterface when invoking
a method. following the JSR292 EDR
The patch is based on the source of the langtools repository of
the hotspot project, so to apply the patch, first clone the
repository
hg clone http://hg.openjdk.java.net/jdk7/hotspot/langtools/
An then apply the following patch
invokedynamic.patch
then run ant in langtools/make.
Now, you have a patched javac that will insert an
invokedynamic instead of an invokevirtual
when calling a method tagged by @InvokeDynamic.
import java.dyn.InvokeDynamic;
public class Test {
@InvokeDynamic
public void m(String message) {
System.out.println(message);
}
public static void main(String[] args) {
// here m is invoked dynamically
new Test().m("hello invoke dynamic");
}
}
And now, how to run it.
Hum, good question, i'm afraid we have to wait the RI implementation
of JSR 292 :)
Or perhaps an enhanced version of the
IKVM Proof of Concept.
Cheers,
Rémi
- Login or register to post comments
- Printer-friendly version
- forax's blog
- 1781 reads





