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.

/Erik

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