RFR: 8212681: Refactor IC locking to use a fine grained CompiledICLocker
David Holmes
david.holmes at oracle.com
Mon Oct 22 11:22:56 UTC 2018
Hi Erik,
The CompiledIC_lock also "guards" use of other nested locks and thereby
avoids the possibility of lock sneaking on those nested locks [1]. Will
your concurrent unloading changes change this?
Thanks,
David
[1] https://bugs.openjdk.java.net/browse/JDK-8210832
On 22/10/2018 8:59 PM, Erik Österlund wrote:
> Hi,
>
> Today, one must acquire the global CompiledIC_lock to have permission to
> perform certain IC updating activities. The lock is used outside of
> safepoints, but for example during nmethod unloading due to GC, lock
> free IC cache cleaning is performed, which is safe due to being in a
> safepoint.
>
> With concurrent class unloading introduced, the global lock is too
> coarse grained, and a per-nmethod mechanism is needed instead. In order
> to allow this, an abstract CompiledICLocker class could help ensuring
> the safety of IC caches, and allow both the fine grained (but density
> costly) approach for users of concurrent class unloading, and resort to
> the default global locking approach otherwise.
>
> The idea is to retain the coarse grained implementation of the
> synchronization when concurrent class unloading is not being used, as
> supporting fine grained locking could be more costly in memory, and
> there does not seem to be any use in doing this unless concurrent class
> unloading is being used.
>
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8212681/webrev.00/
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8212681
>
> Thanks,
> /Erik
More information about the hotspot-dev
mailing list