RFR: Fixed two string dedup issues

Zhengyu Gu zgu at redhat.com
Tue Oct 10 13:45:07 UTC 2017



On 10/09/2017 02:28 PM, Aleksey Shipilev wrote:
> On 10/09/2017 06:45 PM, Zhengyu Gu wrote:
>> Fixed two issues:
>>
>> 1) Missing string dedeup on shenandoah write barrier fast path.
>> 2) Missing dedup table reference update on piggyback reference update path.
> 
> Please commit them as two separate changesets, if you can?
> 
>> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/strdedup_fix/webrev.00/
> 
> *)  Why this is needed?
> 
>    27 #include "classfile/javaClasses.inline.hpp"

45     assert(java_lang_String::is_instance_inlined(java_string), "Must 
be a String object");

in is_candidate(). complained in aarch64 build

> 
> *) I guess the parallel_update_refs() call during init_mark misses the profiling counters?

Yep. Fixed and that helped to unravel that update refs is not needed if 
it is full GC cycle.

Added more stress tests with -XX:ShenandoahUpdateRefsEarly=off


Also, fixed safepoint check to ensure that it is a Shenandoah GC 
safepoint. We can hit periodic or clean up safepoints during concurrent 
evacuation objects.

Updated webrev: 
file:///home/zgu/webrevs/shenandoah/strdedup_fix/webrev.01/index.html


Test:
   Reran tests.


Thanks,

-Zhengyu

> 
> Thanks,
> -Aleksey
> 


More information about the shenandoah-dev mailing list