Wooooosh

Rémi Forax forax at univ-mlv.fr
Thu Jun 18 12:11:47 PDT 2009


Attila Szegedi a écrit :
> Rémi, you rock.
>
> Attila.
>   
or better : Java rocks, or JFluid/Hotswap rocks :)

Rémi

> On 2009.06.18., at 15:37, Rémi Forax wrote:
>
>   
>> Christian has sent his first patch to enable compiler support of
>> invokedynamic today,
>> I've worked late last night to do the same for the backport.
>>
>> I am please to announce that the jsr292 backport now comes with a  
>> JIT (a
>> kind of) that
>> recompiles at runtime a tree of method handle adapters to a single  
>> blob
>> of byte code.
>>
>> Just a small test: with jdk7
>> [forax at localhost sandbox]$ /usr/jdk/jdk1.7.0/bin/java
>> -XX:+EnableInvokeDynamic JITTest
>> value 100000
>> elapsed 30250982 ns
>>
>> with jdk5 + backport without JIT:
>> [forax at localhost sandbox]$ java -javaagent:../lib/jsr292-backport.jar
>> -Dallow.JIT=false JITTest
>> value 100000
>> elapsed 30997166 ns
>>
>> with jdk5 + backport JIT enable
>> [forax at localhost sandbox]$ java -javaagent:../lib/jsr292-backport.jar
>> JITTest
>> value 100000
>> elapsed 14863411 ns
>>
>> Wooosh, it's faster :)
>>
>> I hope to come with the complete support of invokedynamic is the next
>> milestone.
>>
>> Enjoy,
>> Rémi
>>
>> ----------------------------------------------------------------------------------------------------------
>> JITTest.java:
>> import java.dyn.MethodHandle;
>> import java.dyn.MethodHandles;
>> import java.dyn.MethodType;
>>
>> public class JITTest {
>>    public static class Test {
>>        public static int inc(int value) {
>>        return value + 1;
>>        }
>>    }
>>
>>    public static void main(String[] args) {
>>    MethodHandle mh=MethodHandles.lookup().findStatic(Test.class,  
>> "inc",
>>        MethodType.make(int.class, int.class));
>>
>>    long start = System.nanoTime();
>>
>>    int value = 0;
>>    for(int i=0;i<100000;i++) {
>>      value = mh.<int>invoke(value);
>>    }
>>
>>    long end = System.nanoTime();
>>
>>    //jsr292.weaver.jit.JIT.debugCounter(Test.class);
>>
>>    System.out.println("value " + value);
>>    System.out.println("elapsed " + (end - start) + " ns");
>>    }
>> }
>>     
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>   




More information about the mlvm-dev mailing list