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

Salt on Nursery resize #5188

Merged
merged 1 commit into from
Mar 21, 2019

Conversation

amicic
Copy link
Contributor

@amicic amicic commented Mar 20, 2019

Fix incorrect update of low/high Nursery bounds for Hash Salt
calculation purposes.

On Nursery contract, the new bounds would end up being the range of
contracted area. An example:
old Nursery bounds hashData1/2 ff740000/100000000
low/highAddress (range being contracted) ff740000/ff760000
new Nursery bounds hashData1/2 ff740000/ff760000

Instead, the correct new bounds of Nursery should be: ff760000/100000000

This is relatively benign problem for STW Scavenger (there would be less
variety in Salt value). However, this a malign problem for Concurrent
Scavenger. The salt value (hence, hash value, too) would change for
objects that are allocated during active CS cycle and has been just
hashed, if there was a Nursery contract at the end of that cycle.
Such an object would reside in Nursery both before and after the
second/last STW increment of CS cycle, but salt value would be
different, because the Nursery range for Salt calculation was
incorrectly updated, and that object would be incorrectly treated as out
of Nursery, after the contract.

Some other minor ranges in the logic is to ensure that range being
contracted/expanded is always exactly at the border of exactly one of
the lower or higher bound.

Signed-off-by: Aleksandar Micic amicic@ca.ibm.com

Fix incorrect update of low/high Nursery bounds for Hash Salt
calculation purposes.

On Nursery contract, the new bounds would end up being the range of
contracted area. An example:
old Nursery bounds hashData1/2 ff740000/100000000
low/highAddress (range being contracted) ff740000/ff760000
new Nursery bounds hashData1/2 ff740000/ff760000

Instead, the correct new bounds of Nursery should be: ff760000/100000000

This is relatively benign problem for STW Scavenger (there would be less
variety in Salt value). However, this a malign problem for Concurrent
Scavenger. The salt value (hence, hash value, too) would change for
objects that are allocated during active CS cycle and has been just
hashed, if there was a Nursery contract at the end of that cycle.
Such an object would reside in Nursery both before and after the
second/last STW increment of CS cycle, but salt value would be
different, because the Nursery range for Salt calculation was
incorrectly updated, and that object would be incorrectly treated as out
of Nursery, after the contract.

Some other minor ranges in the logic is to ensure that range being
contracted/expanded is always exactly at the border of exactly one of
the lower or higher bound.

Signed-off-by: Aleksandar Micic <amicic@ca.ibm.com>
@amicic amicic changed the title WIP: Salt on Nursery resize Salt on Nursery resize Mar 20, 2019
@amicic
Copy link
Contributor Author

amicic commented Mar 20, 2019

jenkins compile win jdk11

@dmitripivkine dmitripivkine self-assigned this Mar 21, 2019
@dmitripivkine dmitripivkine self-requested a review March 21, 2019 12:37
@dmitripivkine
Copy link
Contributor

Jenkins test sanity xLinux jdk8

@dmitripivkine
Copy link
Contributor

Jenkins test sanity xLinux jdk11

@dmitripivkine
Copy link
Contributor

Jenkins test sanity zLinux jdk8

@dmitripivkine
Copy link
Contributor

Jenkins test sanity xLinux jdk8

@dmitripivkine dmitripivkine merged commit a4cfa38 into eclipse-openj9:master Mar 21, 2019
@amicic amicic deleted the salt_on_nursery_resize branch April 3, 2020 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants