Am 21.03.2013 20:31, schrieb Krystal Mo: > Hi Jochen, > > At least with the current tip version of HotSpot, the > mh.invokeWithArguments() callsite is not likely to get its actual target > inlined into the caller; we depended a lot on being able to prove that > the MethodHandle is a (JIT-)compiled-time constant to be able to do > inlining across the MethodHandle.invoke/invokeExact boundary.
ah yes, I forgot that. > I'm working on adding profiling support for > MethodHandle.invoke/invokeExact (which invokeWithArguments() will call), > and it looks at what MethodHandles get passed in. > When that work lands in HotSpot, your example will be a source of > profile pollution just like the well-known megamorphic callsites in the > old days, so I wouldn't suggest doing that. ok, thanks. I guessed it would be. but maybe some can give my an alternative solution then. My "problem" is that if you have a Java program (1.7) and that is supposed to call something available as MethodHandle, and several of these, then you have either a big useless try-catch or several of them, bloating your code a lot. My idea with > public static Object invoke(MethodHandle mh, Object[] args) { > try { > return mv.invokeWithArguments(args); > } catch (Throwable th) { > ExceptionUtils.sneakyThrow(th); > } > } was to give an alternative way of calling, without having to try-catch every time. Then sam conversion seems to be the only way left for this. 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