Remi, thank you a lot for such a quick reply!

I tried to do what you suggested, but it keeps failing.

Note, that I don't use some customized build, but instead, as also mentionen in 
previous mail, JDK7 b116.
Could you please try the code by yourself? It's a single class.

Thanks again!



= = = = = = = = = =
CODE
= = = = = = = = = =

import java.dyn.*;

public final class _InvokeDynamic {

        private final static MethodHandle methodHandle;

        public static int methodA() {
                System.out.println("!...@#! MAGIC !...@#!");
                return 0;
        }

        static {
                Linkage.registerBootstrapMethod("bootstrap");
                methodHandle = 
MethodHandles.lookup().findStatic(_InvokeDynamic.class,
                                "methodA", MethodType.methodType(int.class));
        }

        private static CallSite bootstrap(Class<?> declaring, String name, 
MethodType type) {
                System.out.println("declaring class: " + declaring + ", name: " 
+ name
                                + ", method type:" + type);
                CallSite cs = new CallSite();
                cs.setTarget(methodHandle);
                return cs;
        }

        public static void main(String[] ars)
                        throws Throwable {
                try {
                        System.out.println("\n\nATTEMPT 1");
                        InvokeDynamic.<int>anything();
                } catch (Throwable t) {
                        t.printStackTrace(System.out);
                }

                try {
                        System.out.println("\n\nATTEMPT 2");
                        methodHandle.invokeExact(); // warning: unchecked 
generic array creation
                } catch (Throwable t) {
                        t.printStackTrace(System.out);
                }

                try {
                        System.out.println("\n\nATTEMPT 3");
                        (int) methodHandle.invokeExact(); // error: not a 
statement
                } catch (Throwable t) {
                        t.printStackTrace(System.out);
                }
        }

}

= = = = = = = = = =
OUTPUT
= = = = = = = = = =

ATTEMPT 1
declaring class: class _InvokeDynamic, name: anything, method type:()int
!...@#! MAGIC !...@#!


ATTEMPT 2
java.dyn.WrongMethodTypeException: ()I cannot be called as 
([Ljava/lang/Object;)Ljava/lang/Object;
        at _InvokeDynamic.main(_InvokeDynamic.java:40)


ATTEMPT 3
java.lang.RuntimeException: Uncompilable source code - not a statement
        at _InvokeDynamic.main(_InvokeDynamic.java:47)
BUILD SUCCESSFUL (total time: 0 seconds)
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to