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.
dl
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