RFR: 8214338: Move IC stub refilling out of IC cache transitions

dean.long at oracle.com dean.long at oracle.com
Tue Nov 27 18:07:26 UTC 2018

Hi Erik.  Can you explain why you removed the pre-allocated "next 
stub"?  I guess it was no longer necessary?  If so, then you should 
update the "always has sentinel" comment in is_empty.

In your guarantee messages, some use "should not fail" and some use 
"should never fail".  It's not a big deal but maybe they should be the same.

You introduced a couple of infinite loops.  Are we guaranteed to exit 
these loops eventually?  Is there an upper bound on how many iterations 
are needed?

The rest looks good.


On 11/27/18 5:00 AM, Erik Österlund wrote:
> Hi,
> IC stub refilling currently requires a safepoint operation. When done 
> right at the point where an CompiledIC is about to get patched to a 
> transitional state using an IC stub, locks may already be held, 
> causing a bunch of locking issues - especially for concurrent class 
> unloading. Therefore, the IC stub refilling ought to be moved out so 
> that IC cache cleaning and transitioning may be done without any 
> safepoints, and the locks in the path ought to not perform safepoint 
> checking.
> This is implemented by allowing IC transitions to fail when they 
> require IC stubs, and we run out of them. This propages back to a 
> higher level where IC stubs are refilled after having released the IC 
> locker.
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8214338/webrev.00/
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8214338
> Thanks,
> /Erik

More information about the hotspot-dev mailing list