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

Y. Srinivas Ramakrishna ysr at openjdk.org
Tue Aug 29 19:59:47 UTC 2023


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

>> 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 -X...

Elaborated documentation so users aren't confused when they try and toggle settings to those that might conflict, and the JVM exits with a somewhat terse error message such as above.

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

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


More information about the shenandoah-dev mailing list