RFR: 8315247: GenShen: Condition calls to post-write barrier code generation by a flag

Y. Srinivas Ramakrishna ysr at openjdk.org
Tue Aug 29 18:48:32 UTC 2023


On Tue, 29 Aug 2023 18:04:11 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

>> Maybe the comment can say: "ShenandoahCardBarrier" is true by default iff ShenandoahGCMode is generational.
>> 
>> Otherwise, I think we would need to change all of the existing test configurations that have generational mode to add -XX:ShenandoahCardBarrier=true
>
> I updated with an attempt to address the comments above. Take a look and see how it looks.
> 
> I'll also take this out of draft form to a regular PR.

So we'll now exit with an appropriate error message if the user changes `ShenandoahCardBarrier` to a value that conflicts with the `ShenandoahGCMode` they selected:

**1. No user selection of barrier flag:**

(23-08-29 17:54:47) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier
     bool ShenandoahCardBarrier                    = false                                  {diagnostic} {default}
openjdk version "22-internal" 2024-03-19
OpenJDK Runtime Environment (slowdebug build 22-internal-adhoc.ysr.shenandoah)
OpenJDK 64-Bit Server VM (slowdebug build 22-internal-adhoc.ysr.shenandoah, mixed mode)

(23-08-29 18:11:09) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier
     bool ShenandoahCardBarrier                    = true                                   {diagnostic} {default}
openjdk version "22-internal" 2024-03-19
OpenJDK Runtime Environment (slowdebug build 22-internal-adhoc.ysr.shenandoah)
OpenJDK 64-Bit Server VM (slowdebug build 22-internal-adhoc.ysr.shenandoah, mixed mode)


**2. User sets barrier flag to value that conflicts with gc mode:**

(23-08-29 18:11:36) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+ShenandoahCardBarrier -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier                                  
Error: GC mode needs -XX:-ShenandoahCardBarrier to work correctly

(23-08-29 18:11:55) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:-ShenandoahCardBarrier -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier
Error: GC mode needs -XX:+ShenandoahCardBarrier to work correctly


**3. Use sets barrier flag to value consistent with gc mode:**

(23-08-29 18:12:15) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:-ShenandoahCardBarrier -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier
     bool ShenandoahCardBarrier                    = false                                  {diagnostic} {command line}
openjdk version "22-internal" 2024-03-19
OpenJDK Runtime Environment (slowdebug build 22-internal-adhoc.ysr.shenandoah)
OpenJDK 64-Bit Server VM (slowdebug build 22-internal-adhoc.ysr.shenandoah, mixed mode)

(23-08-29 18:12:43) <0> [~/workplace/ysr/genshen-ysr/shenandoah]  
dev-dsk-ysr-2a-87502c94 % build/linux-x86_64-server-slowdebug/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+ShenandoahCardBarrier -XX:+PrintFlagsFinal -version | grep ShenandoahCardBarrier
     bool ShenandoahCardBarrier                    = true                                   {diagnostic} {command line}
openjdk version "22-internal" 2024-03-19
OpenJDK Runtime Environment (slowdebug build 22-internal-adhoc.ysr.shenandoah)
OpenJDK 64-Bit Server VM (slowdebug build 22-internal-adhoc.ysr.shenandoah, mixed mode)

-------------

PR Review Comment: https://git.openjdk.org/shenandoah/pull/313#discussion_r1309186174


More information about the shenandoah-dev mailing list