RFR: Can not dedup string inside write barrier

Aleksey Shipilev shade at redhat.com
Mon Nov 6 16:25:47 UTC 2017


On 11/06/2017 05:20 PM, Zhengyu Gu wrote:
> 
> 
> On 11/06/2017 10:46 AM, Aleksey Shipilev wrote:
>> On 11/06/2017 04:25 PM, Zhengyu Gu wrote:
>>> On 11/06/2017 10:13 AM, Aleksey Shipilev wrote:
>>>> On 11/06/2017 03:59 PM, Zhengyu Gu wrote:
>>>>> Can not perform String deduplication inside a write barrier, as it takes lock, that violates write
>>>>> barrier's leaf call constraint.
>>>>>
>>>>>
>>>>> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/strdedup_wb/webrev.00/
>>>>
>>>> Okay, but minor nits:
>>>>
>>>>    *) I think there is no need for templates, because the method is already slow-path. A simple
>>>> boolean arg would be enough? This will simplify backports too, because the signature change
>>>> would be
>>>> needed everywhere, instead of blind substitution of evacuate_object.
>>> Yes, for write barrier, it is slow path. However, it is also used by GC, that can have some
>>> impact (?).
>>
>> If we care as much, then ShenandoahStringDedup::is_enabled() check is already on critical path
>> there. So, do a boolean flag, and hide it *after* the ShenandoahStringDedup::is_enabled() check?
>>
>>   373   if (ShenandoahStringDedup::is_enabled() && !from_write_barrier &&
>>   374       java_lang_String::is_instance_inlined(copy_val)) {
> Okay.
> 
> http://cr.openjdk.java.net/~zgu/shenandoah/strdedup_wb/webrev.02/index.html

Looks good.

-Aleksey



More information about the shenandoah-dev mailing list