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