RFR(M): Shenandoah string dedup support

Zhengyu Gu zgu at redhat.com
Wed Aug 23 17:52:03 UTC 2017


On 08/23/2017 12:56 PM, Aleksey Shipilev wrote:
> On 08/22/2017 08:01 PM, Zhengyu Gu wrote:
>> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/strdedup/webrev.00/
> 
> General:
> 
>   *) Do we need to do StringDedup cleanup on each concurrent mark? Right now all the cleanup actions
> in final mark are done optionally (every 5-th cycle by default). Should we do the String table
> cleanup there as well?
Unless we want to mark the table (which I think it is a waste), 
otherwise, we will step on dead objects when update refs later.

> 
>   *) Trying to understand the logic for dedup during evacuation. Why do we need to have the block
> before the fwdptr CAS? Why can't we increment the copy_val age after successful copy?
> 
Roman answered. I added comments here.

> Nits:
> 
>   *) g1StringDedup.hpp, extra newline:
> 
>    104 private:
>    105
> 
>   *) shenandoahHeap.inline.hpp, typo:
> 
>   355     // Only dedeup evacuated string

Fixed both.
> 
>   *) Build fails:
> 
> /home/shade/trunks/shenandoah-jdk10/hotspot/src/share/vm/gc/g1/g1StringDedupThread.cpp:40:16: error:
> format not a string literal and no format arguments [-Werror=format-security]
>     set_name(name);
>          

My bad, I missed warning. You can build hotspot with 
--disable-warnings-as-error?

Webrev updated: 
http://cr.openjdk.java.net/~zgu/shenandoah/strdedup/webrev.01/index.html

Thanks,

-Zhengyu



         ^
> 
> Thanks,
> -Aleksey
> 


More information about the shenandoah-dev mailing list