RFR: 8210236: Prepare ciReceiverTypeData::translate_receiver_data_from for concurrent class unloading

Erik Österlund erik.osterlund at oracle.com
Mon Sep 3 15:27:17 UTC 2018

Hi Coleen,

Thank you for the review.


On 2018-08-31 15:12, coleen.phillimore at oracle.com wrote:
> This looks good.
> Coleen
> On 8/30/18 3:08 PM, Erik Österlund wrote:
>> 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