RFR: 8214338: Move IC stub refilling out of IC cache transitions
erik.osterlund at oracle.com
Tue Nov 27 13:00:15 UTC 2018
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.
More information about the hotspot-dev