[master] Integrated: Simplify stable_mark() routine
Roman Kennke
rkennke at openjdk.java.net
Thu Apr 14 12:42:04 UTC 2022
On Wed, 30 Mar 2022 14:36:19 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
> The code in ObjectSynchronizer::stable_mark() is a bit over-complicated: it has a 'fast' path (which really isn't a fast-path, because the really-fast path is already in the various oopDesc::klass() methods), and for the slow-path loop dives into ObjectSynchronizer::safe_load_mark(). This change proposes to remove the stable_mark() method, and rename safe_load_mark() to stable_mark() instead.
>
> I also propose a small improvement: we can use read_stable_mark() to deal with INFLATING mark properly, and handle the remaining cases in the loop: monitor and stack-locked are the most common - deal with them first. Stack-locked can safely access the mark when current thread is owning thread of the lock - avoid CASing INFLATING into the header in this case. Neutral and Marked cases go last, because they should not be very common (neutral is already caught in oopDesc::klass() variants, marked should only happen during full GCs by GC internal code).
>
> Testing:
> - [x] tier1
> - [x] tier2
> - [x] tier3
> - [x] tier4
This pull request has now been integrated.
Changeset: b6c888bf
Author: Roman Kennke <rkennke at openjdk.org>
URL: https://git.openjdk.java.net/lilliput/commit/b6c888bf303c846ff5c3f690a7b5ade42eadb094
Stats: 62 lines in 3 files changed: 12 ins; 42 del; 8 mod
Simplify stable_mark() routine
Reviewed-by: zgu, stuefe
-------------
PR: https://git.openjdk.java.net/lilliput/pull/46
More information about the lilliput-dev
mailing list