RFR: 8210236: Prepare ciReceiverTypeData::translate_receiver_data_from for concurrent class unloading
Erik Österlund
erik.osterlund at oracle.com
Thu Aug 30 19:08:10 UTC 2018
Hi,
When concurrently unloading classes, it is possible for MDOs to have
stale metadata entries in them until the GC comes around to clean it up.
That is fine, but there is one place where extra care needs to be taken:
when the compiler interface fetches ReceiverTypeData. This is done by
memcpy:ing the ReceiverTypeData to a new memory buffer, and walking the
metadata, patching it with corresponding ci metadata classes in the new
buffer. The metadata could be stale by now. In such scenarios, the rows
should be lazily cleaned. Once the ci metadata handles are created, they
are safe to use in the rest of the code.
This patch builds on 8210233 which makes Klass::is_loader_alive()
concurrency friendly using phantom loads.
Webrev:
http://cr.openjdk.java.net/~eosterlund/8210236/webrev.00
Bug:
https://bugs.openjdk.java.net/browse/JDK-8210236
Thanks,
/Erik
More information about the hotspot-dev
mailing list