-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
8253030: ZGC: Change ZMarkCompleteTimeout unit to microseconds #120
Conversation
👋 Welcome back pliden! A progress list of the required criteria for merging this PR into |
@pliden The following label will be automatically applied to this pull request: When this pull request is ready to be reviewed, an RFR email will be sent to the corresponding mailing list. If you would like to change these labels, use the |
/cc hotspot-gc |
@pliden |
/cc remove hotspot |
@pliden |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change looks good. But I wonder, why choose microseconds as the units? That seems to be almost never used in HotSpot.
@pliden This change now passes all automated pre-integration checks. In addition to the automated checks, the change must also fulfill all project specific requirements After integration, the commit message will be:
Since the source branch of this PR was last updated there have been 19 commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge ➡️ To integrate this PR with the above commit message to the |
@kimbarrett Thanks for reviewing. I used micros because it seems like the natural unit to use here. Using nanos seems a bit overkill, as we will never need that precision and it would just add a bunch of zeros to the constant, which I'm not sure would help readability. What unit did you have in mind? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
Mailing list message from Kim Barrett on hotspot-gc-dev:
Nanos would have been my choice, since that's widely used. The configuration I?ll go click the reviewed button now. |
/integrate |
@pliden Since your change was applied there have been 19 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 07da3a1. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
It would install to /rivos/jdk/jdk instead of /rivos/jdk
…g to pointer In the cases like: ``` UNSAFE.putLong(address + off1 + 1030, lseed); UNSAFE.putLong(address + 1023, lseed); UNSAFE.putLong(address + off2 + 1001, lseed); ``` Unsafe intrinsifies direct memory access using a long as the base address, generating a `CastX2P` node converting long to pointer in C2. Then we get optoassembly code like: ``` ldr R10, [R15, openjdk#120] # int ! Field: address ldr R11, [R16, openjdk#136] # int ! Field: off1 ldr R12, [R16, openjdk#144] # int ! Field: off2 add R11, R11, R10 mov R11, R11 # long -> ptr add R12, R12, R10 mov R10, R10 # long -> ptr add R11, R11, openjdk#1030 # ptr str R17, [R11] # int add R10, R10, openjdk#1023 # ptr str R17, [R10] # int mov R10, R12 # long -> ptr add R10, R10, openjdk#1001 # ptr str R17, [R10] # int ``` In aarch64, the conversion from long to pointer could be a nop but C2 doesn't know it. On the existing code, we do nothing for `mov dst src` only when `dst` == `src` [1], then we have assembly: ``` ldr x10, [x15,openjdk#120] ldp x11, x12, [x16,openjdk#136] add x11, x11, x10 add x12, x12, x10 add x11, x11, #0x406 str x17, [x11] add x10, x10, #0x3ff str x17, [x10] mov x10, x12 <--- extra register copy add x10, x10, #0x3e9 str x17, [x10] ``` There is still one extra register copy, which we're trying to remove in this patch. This patch folds `CastX2P` into memory operands by introducing `indirectX2P` and `indOffX2P`. We also create a new opclass `iRegPorL2P` to remove extra copies from `CastX2P` in pointer addition. Tier 1~3 passed on aarch64. No obvious change in size of libjvm.so [1] https://github.com/openjdk/jdk/blob/5c612c230b0a852aed5fd36e58b82ebf2e1838af/src/hotspot/cpu/aarch64/aarch64.ad#L7906
…/jgdms-jeri/junit-junit-4.13.1 Bump junit from 4.6 to 4.13.1 in /JGDMS/jgdms-jeri
The ZMarkCompleteTimeout is currently specified in milliseconds, and its value is 1 (i.e. as low as it can be). In preparation for using a lower time out value than 1ms we should change the ZMarkCompleteTimeout unit to be microseconds, instead of milliseconds.
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/120/head:pull/120
$ git checkout pull/120