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
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev