February 01, 2011
Mark Wielaard: New GPG key.
Finally created a new GPG key using gnupg. The old one was a DSA/1024 bits one and 8 years old. The new one is a RSA/2048 bits one. I will use the new one in the future to sign any release tarballs I might create. pub 2048R/57816A6A 2011-01-29 Key f...
More »
February 01, 2011
Andrew Hughes: [SECURITY] IcedTea6 1.7.8, 1.8.5, 1.9.5 Released!.
We are pleased to announce a new set of security releases, IcedTea6 1.7.8, IcedTea6 1.8.5 and IcedTea6 1.9.5.
This update contains the following security updates:
The IcedTea project provides a harness to build the source code from OpenJDK6 u...
More »
November/2024
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
|
|
Calling invokedynamic in Java
DynamicIndy
There is no way to invoke invokedynamic using the Java language. So testing invokedynamic is not that obvious if you don#039;t have your own dynamic language.
I#039;ve developed a small class DynamicIndy that uses ASM 4.0 (not an official release) to generate a static method that calls invokedynamic. These static method is after converted to a MethodHandle that can be called in Java
The code is available at the bottom of this post
How to use it ?
DynamicIndy defines a method named (judiciously :) invokedynamic that takes a name and a MethodType, a way to specify a bootstrap method (a triple class, method name, method type ) and some optional arguments for the bootstrap method.
The following code shows how to create a BigDecimal constant using invokedynamic.
This code shows how to use it:
public class DynamicIndyTest {
public static CallSite bsm(Lookup lookup, String name, MethodType methodType, Object arg) {
System.out.println(construct the BigDecimal constant +arg);
return new ConstantCallSite(
MethodHandles.constant(BigDecimal.class, new BigDecimal(arg.toString())));
}
public static void main(String[] args) throws Throwable {
DynamicIndy dynamicIndy = new DynamicIndy();
MethodHandle mh = dynamicIndy.invokeDynamic(_, MethodType.methodType(BigDecimal.class),
DynamicIndyTest.class, bsm, MethodType.methodType(CallSite.class, Lookup.class, String.class, MethodType.class, O...
Date: January, 07 2011
Url: http://www.java.net/blog/forax/archive/2011/01/07/call-invokedynamic-java
Others News
|