Hi Rémi

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.

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.

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?

thanks

mark

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to