Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8259882: Reduce the inclusion of perfData.hpp #2123



Copy link

@iklam iklam commented Jan 18, 2021

perfData.hpp is about 1000 lines long, and is included by 829 out of about 1000 HotSpot .o files.

Several popular headers (such as synchronizer.hpp, objectMonitor.hpp, threadLocalAllocBuffer.hpp) include perfData.hpp. However, since these headers just declare pointers like

PerfCounter* foo;

there's no need to include perfData.hpp. A forward declaration of the PerfCount type would suffice.

With forward declaration, we can remove perfData.hpp from these headers. This reduces the number of .o files that include perfData.hpp to 183. Build time of HotSpot is reduced by about 0.4%.

Note: the forward declaration is in the new file perfDataTypes.hpp. It contains typedefs to make "aliases" of the types. These are probably relics from the past, where new classes likePerfIntConstant were to be added but that never happened.

typedef PerfLongSampleHelper PerfSampleHelper;
typedef PerfLongConstant PerfConstant;
typedef PerfLongCounter PerfCounter;
typedef PerfLongVariable PerfVariable;

The HotSpot code uses both the "real" type and the "alias" type (mostly the latter). I don't want to deal with the alises for now, so I just moved them from perfData.hpp to perfDataTypes.hpp. We should probably just rename PerfLongConstant to PerfConstant in a future RFE.

Tested with mach5: tier1, builds-tier2, builds-tier3, builds-tier4 and builds-tier5. Also locally: aarch64, arm, ppc64, s390, x86, and zero.


  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed




$ git fetch pull/2123/head:pull/2123
$ git checkout pull/2123

Copy link

@bridgekeeper bridgekeeper bot commented Jan 18, 2021

👋 Welcome back iklam! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

Copy link

@openjdk openjdk bot commented Jan 18, 2021

@iklam The following labels will be automatically applied to this pull request:

  • hotspot
  • serviceability

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command.

Copy link
Member Author

@iklam iklam commented Jan 18, 2021

/label remove serviceability

@openjdk openjdk bot removed the serviceability label Jan 18, 2021
Copy link

@openjdk openjdk bot commented Jan 18, 2021

The serviceability label was successfully removed.

@iklam iklam marked this pull request as ready for review Jan 18, 2021
@openjdk openjdk bot added the rfr label Jan 18, 2021
Copy link

@mlbridge mlbridge bot commented Jan 18, 2021


cl4es approved these changes Jan 20, 2021
Copy link

@cl4es cl4es left a comment

Looks good to me.

Copy link

@openjdk openjdk bot commented Jan 20, 2021

@iklam this pull request can not be integrated into master due to one or more merge conflicts. To resolve these merge conflicts and update this pull request you can run the following commands in the local repository for your personal fork:

git checkout 8259882-reduce-inclusion-of-perfData.hpp
git fetch master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push

Copy link

@coleenp coleenp left a comment


Copy link

@openjdk openjdk bot commented Jan 22, 2021

@iklam This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file for details.

After integration, the commit message for the final commit will be:

8259882: Reduce the inclusion of perfData.hpp

Reviewed-by: redestad, coleenp

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been no new commits pushed to the master branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added ready and removed merge-conflict labels Jan 22, 2021
Copy link
Member Author

@iklam iklam commented Jan 22, 2021

Thanks @cl4es and @coleenp for the review!

@openjdk openjdk bot closed this Jan 22, 2021
@openjdk openjdk bot added integrated and removed ready rfr labels Jan 22, 2021
Copy link

@openjdk openjdk bot commented Jan 22, 2021

@iklam Pushed as commit ba38661.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
3 participants