On 02/08/2012 10:47 PM, Mark Roos wrote: > Hi Rémi Hi Mark,
> > I think I am starting to get it. > > My normal fallback creates a GWT and does a getTarget + setTarget on > the root callsite to put this GWT at the > head of the chain. I assume that this use of setTarget is as expected > and causes no problems. I think I > found this technique in some of your early code. yes ! > > For the switchPoint approach I would set the first (root) target to a > switchPoint which invokes a new callsite > which then takes the normal fallback. This keeps the switchPoint at > the head with the GWT chain now > growing from the second callsite. > > The invalidate path has a method handle which will create a new > switchPoint with fallbacks and place it > in the root callsite replacing the now dead switchPoint. This > setTarget will occur on the next invocation > of the root callSite after the invalidation. > > This state is similar to the first after a bootstrap. yes ! > > So I am going to do a lot of setTargets. One for each method cache > miss and again for every call site which > is invalidated plus any lookups it needs to do. > > Given that every setTarget involves a safe point this sounds like it > could get expensive. Should I be > concerned? No :) setTarget() doesn't implies automatically a safepoint. There is a safepoint if you do a setTarget() on a Callsites which have been used to generate a compiled code. > > thanks > > mark > cheers, Rémi _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev