Good. Thank you for testing. I don't have any more question about build changes.
I will wait C2 changes.
About C2 nodes names:
>> Is it possible to reuse LoadBarrier by adding GC specific flag to it?
>> I am not against adding new nodes if really needed. My concern is about
>> using GC name in node's names.
>
> That would be very weird. Shenandoah's barrier is *not* a load barrier.
> GC's names in node name makes sense (to me) because the generated code
> is GC specific, and it's used in .ad files to match. I guess we could
> give it a more generic names (ReadBarrier, WriteBarrier,
> GCCompareAndSwap, ..) and then match them in .ad and call via
> BarrierSetAssembler to generate GC specific code. But it seems odd and
> hard to read+understand to me.
I got that you can't reuse exisitng nodes.
Sorry, but I would prefer generic names for new nodes. You don't need BarrierSetAssembler if these new nodes are used
only for Shenandoah. Side note, don't use #ifdef in .ad files. The check for nodes generation should be done in C2 code
during ideal graph generation.
Thanks,
Vladimir
On 11/27/18 9:54 AM, Roman Kennke wrote:
You need to check if shenandoahgc is disabled first - check
DISABLED_JVM_FEATURES list (see code for jvmci).
Why? If Shenandoah is disabled, it will be on this list, and therefore
not be built (see JvmFeatures.gmk).
Did you test with --with-jvm-variants=-shenandoahgc to make sure it is
disabled?
Test: Built the Shenandoah-patched tree with
--with-jvm-features=-shenandoahgc. Then:
java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC --version
Error occurred during initialization of VM
Option -XX:+UseShenandoahGC not supported
Also, we regularily build minimal and zero, and those disable Shenandoah
too, that's how we know this works reliably.
Thanks,
Roman