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