RFR: 8356075: Support Shenandoah GC in JVMCI

Aleksey Shipilev shade at openjdk.org
Mon May 5 15:38:46 UTC 2025


On Fri, 2 May 2025 10:35:03 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

> In order to support Shenandoah GC in Graal, some changes are required in JVMCI, namely, export Shenandoah relevant symbols.
> 
> Testing:
>  - [x] extensive testing with https://github.com/oracle/graal/pull/10904

A few questions:

src/hotspot/share/gc/shenandoah/shenandoahRuntime.hpp line 42:

> 40:   static void pre_barrier(JavaThread* thread, oopDesc* orig) {
> 41:     write_ref_field_pre(orig, thread);
> 42:   }

So, why not export `write_ref_field_pre`, instead of introducing this new method? Style/cleanliness, or something else? I am asking, because every time we add a new stub here, we would need to record it in `AOTCache` tables for Leyden benefit.

src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp line 240:

> 238:     cardtable_shift = CardTable::card_shift();
> 239:   } else if (bs->is_a(BarrierSet::ShenandoahBarrierSet)) {
> 240:     cardtable_shift = CardTable::card_shift();

I understand the barrier code does not use `cardtable_start_address`, but should we still initialize it here to `nullptr`?

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

PR Review: https://git.openjdk.org/jdk/pull/25001#pullrequestreview-2815217376
PR Review Comment: https://git.openjdk.org/jdk/pull/25001#discussion_r2073674847
PR Review Comment: https://git.openjdk.org/jdk/pull/25001#discussion_r2073678010


More information about the shenandoah-dev mailing list