On 03/21/2013 08:31 PM, Krystal Mo wrote: > 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. > > 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.
I suppose you take a look to the instances. You can do something similar actually by using invokedynamic + a guardWithTest that checks already seen instances instead of doing a plain mh.invoke* I think Duncan and Georges do something like that in Magik. > > More details on my work-in-progress will be send to this list later. > > - Kris RĂ©mi > > On 2013/3/21 1:23, Jochen Theodorou wrote: >> Hi all, >> >> assuming I have in Java a method: >> >> public static Object invoke(MethodHandle mh, Object[] args) { >> try { >> return mv.invokeWithArguments(args); >> } catch (Throwable th) { >> ExceptionUtils.sneakyThrow(th); >> } >> } >> >> (sneakyThrow is to work around checked exceptions and does basically >> just throw the throwable again without declaring it) >> >> I am wondering if the call site in this method can become megamorphic or >> not. And assuming it does not, I further assume the call to this method >> cannot become megamorphic as well... so my next question is if that can >> be always be potentially inlined then. >> >> bye blackdrag >> > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev