Am 07.05.2013 19:31, schrieb Christian Thalinger: [...] > Do you have any numbers?The problem is that if the MH is not constant > we can't do any inlining and it will be an out-of-line call (with a > trampoline in between). Is > your DMH a static or virtual?
arg... looks like I made a mistake. It is not the invokeExact that is slow, it is my preparation of the handle that is slow. I get the arguments as Object[] so I do: > MethodHandle mh = call.target.asSpreader(Object[].class, call.args.length); > mh = MethodHandles.insertArguments(mh, 0, call.receiver); > mh = mh.asType(VC); I found this code doesn't really make sense in my case, since the arguments length is 0. But even if I replace it by > MethodHandle mh = MethodHandles.dropArguments(call.target, 1, > Object[].class); > mh = MethodHandles.insertArguments(mh, 0, call.receiver); > mh = mh.asType(VC); //VC= Object[]:Object it takes long. It improved in my test from 15000 to 3000. The only problem is that my old way still takes only a fraction of that. In 3000 I can not only do the invocation plus adaption for the call, I can even do full method selection... and it still totals to only about 200. And of that 3000 an estimated 2900 goes into adapting the handle. Now I am a bit unsure of how to get this better. The problem is that I have such an invokeExact path in Groovy today already. It is called the first time the handle is selected and in case of a callsite that does not cached, or that got invalidated. In a typical microbenchmark that situation may not appear often, but in a general application it does. In further experiments I used spreadInvoker, which did help to get times down to 1500 > MethodHandle mh = MethodHandles.spreadInvoker(call.target.type(), > call.args.length+1); > mh = mh.asType(VC) //VC= MethodHandle,Object,Object[]:Object but I cannot get rid of the asType call in my generic code. If I use casts to force the right types and don't use asType I get about 250 bye blackdrag -- Jochen "blackdrag" Theodorou - Groovy Project Tech Lead blog: http://blackdragsview.blogspot.com/ german groovy discussion newsgroup: de.comp.lang.misc For Groovy programming sources visit http://groovy-lang.org _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev