bootstrap method registration is enabled AFTER class initialization
Yuri Gaevsky
Yuri.Gaevsky at Sun.COM
Fri Jun 5 09:11:13 PDT 2009
Hi John,
The following program:
--- LinkageTest.java ---
import java.dyn.*;
import java.io.*;
public class LinkageTest {
public static void main(String[] argv) {
System.exit(run(argv, System.out));
}
public static int run(String[] argv, PrintStream out) {
Linkage.registerBootstrapMethod("bsm");
InvokeDynamic.<void>dm();
out.println("OKAY");
return 0;
}
public static void m() {
System.out.print("m() ");
return;
}
private static CallSite bsm(Class caller, String name, MethodType type) {
MethodHandle target = MethodHandles.lookup().findStatic(
LinkageTest.class, "m", MethodType.make(void.class));
CallSite site = new CallSite(caller, name, type);
site.setTarget(target);
return site;
}
}
--- LinkageTest.java ---
doesn't throw any exceptions under jdk7-b59:
$ java -XX:+EnableInvokeDynamic -XX:+EnableMethodHandles LinkageTest
m() OKAY
That looks like a bug.
Regards,
-Yuri
More information about the mlvm-dev
mailing list