[master] RFR: Implement Shenandoah support [v22]
Roman Kennke
rkennke at openjdk.java.net
Wed Apr 20 10:19:58 UTC 2022
On Tue, 19 Apr 2022 19:53:47 GMT, Zhengyu Gu <zgu at openjdk.org> wrote:
>> Roman Kennke has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 44 commits:
>>
>> - Merge remote-tracking branch 'origin/shenandoah-lilliput' into shenandoah-lilliput
>> - Merge remote-tracking branch 'origin/shenandoah-lilliput' into shenandoah-lilliput
>> - Merge branch 'master' into shenandoah-lilliput
>> - Merge branch 'master' into shenandoah-lilliput
>> - Revert some unnecessary changes
>> - Revert JVMTI related changes
>> - Add missing precompiled include
>> - 32bit fixes
>> - More reverts and cleanups
>> - Restore some commented-out parts
>> - ... and 34 more: https://git.openjdk.java.net/lilliput/compare/47392f37...00ca6aea
>
> src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp line 85:
>
>> 83:
>> 84: while (true) {
>> 85: markWord new_mark = markWord::encode_pointer_as_mark(update);
>
> You can hoist encoding `new_mark` outside the loop.
Done
> src/hotspot/share/gc/shenandoah/shenandoahObjectUtils.inline.hpp line 36:
>
>> 34: #include "runtime/thread.hpp"
>> 35:
>> 36: // This is a variant of ObjectSynchronizer::safe_load_mark(), which does the same thing, but also
>
> `ObjectSynchronizer::safe_load_mark()` no longer exists, please update the comment.
Done
> src/hotspot/share/gc/shenandoah/shenandoahObjectUtils.inline.hpp line 40:
>
>> 38: // code is supposed to observe from-space objects.
>> 39: #ifdef _LP64
>> 40: markWord ShenandoahObjectUtils::stable_mark(oop obj) {
>
> There is a lot of duplication with `ObjectSynchronizer::stable_mark()`. I think you can just call `objectSynchronizer::stable_mark()` after resolve forward pointer.
No, unfortunately not. We need to resolve inside the loop in order to catch concurrently evacuated objects. I considered the alternative to put some kind of GC hook into the loop in ObjectSynchronizer::stable_mark() but decided against it in order to keep shared code cleaner.
-------------
PR: https://git.openjdk.java.net/lilliput/pull/32
More information about the lilliput-dev
mailing list