8383912: Deduplicate klass fetching and decoding in oopDesc#31055
8383912: Deduplicate klass fetching and decoding in oopDesc#31055stefank wants to merge 3 commits intoopenjdk:pr/31053from
Conversation
|
👋 Welcome back stefank! A progress list of the required criteria for merging this PR into |
|
❗ This change is not yet ready to be integrated. |
|
The total number of required reviews for this PR has been set to 2 based on the presence of this label: |
Webrevs
|
shipilev
left a comment
There was a problem hiding this comment.
Right, this makes sense. Kim would probably crash into this PR and say _compressed_klass should probably be Atomic in itself then :)
Probably. :) I used AtomicAccess here because that is what is used inside oopDesc::release_set_klass. |
I've been investigating the regression reported in JDK-8382041, which is caused by JDK-8363996: "Obsolete UseCompressedClassPointers". While doing that I've found that calls to oopDesc::klass() bloat the code and that affects inilining, which cause performance regressions in the GC.
A localized fix for JDK-8382041, is to deduplicate multiple calls to
klass()into fewer calls. That fixes the imminent performance issue. However, while looking intoklass()I see that there's opportunity to somewhat simplify the implementation, and that seems to have almost the same level of performance improvements. I propose that we make that change because it both makes the code smaller, cleaner, and faster.The performance was measured with the org.openjdk.bench.vm.gc.systemgc.AllLive.gc microbenchmark + UseZGC.
I will run tier1-tier3
Progress
Integration blocker
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/31055/head:pull/31055$ git checkout pull/31055Update a local copy of the PR:
$ git checkout pull/31055$ git pull https://git.openjdk.org/jdk.git pull/31055/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 31055View PR using the GUI difftool:
$ git pr show -t 31055Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/31055.diff
Using Webrev
Link to Webrev Comment