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