> Shenandoah and G1 are using CardTable for most of its infrastructure, but > flip the card tables as they go, and maintain the actual card table reference > in TLS. As such, accessing card table base from assembler and compilers runs > into risk of accidentally encoding the wrong card table base in generated > code. > > Most of the current code avoids this trouble by carefully implementing their > GC barriers to avoid touching shared parts where card table base constness is > assumed. _Except_ for JVMCI, that reads the card table base for G1 barrier > set, and that is wrong. The JVMCI users would need to rectify this downstream. > > Shenandoah added a few asserts to catch these errors: > SHENANDOAHGC_ONLY(assert(!UseShenandoahGC, "Shenandoah byte_map_base is not > constant.");) > > ...but G1 would also benefit from the similar safety mechanism. > > This PR strengthens the code to prevent future accidents. > > Additional testing: > - [x] Linux x86_64 server fastdebug, `hotspot_gc` > - [x] Linux x86_64 server fastdebug, `all` with Serial, Parallel, G1, > Shenandoah, Z > - [x] Linux AArch64 server fastdebug, `all` with Serial, Parallel, G1, > Shenandoah, Z > - [x] GHA, cross-compilation only
Aleksey Shipilev has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision: Some polishing ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28703/files - new: https://git.openjdk.org/jdk/pull/28703/files/5c2206b9..db78bed3 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28703&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28703&range=03-04 Stats: 23 lines in 1 file changed: 0 ins; 23 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28703.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28703/head:pull/28703 PR: https://git.openjdk.org/jdk/pull/28703
