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

Enable scan all slots in a class during Scavenge #7636

Merged

Conversation

LinHu2016
Copy link
Contributor

@LinHu2016 LinHu2016 commented Oct 29, 2019

Remove _condyOnly and _condyEnabled from
 GC_ConstantPoolObjectSlotIterator
Scan whole class objects(classStatics,constantPoolObject,
callSites, methodTypes, varHandlesMethodTypes, valueTypesIterator)
during Scavenge.
Replace poisonConstantPoolObjects(), poisonStaticClassSlots()
 with poisonClass() for ReadBarrierVerifier.
(only the class, which contains the object references are in
nursery, will be scaned)

fix: #7486

Signed-off-by: Lin Hu linhu@ca.ibm.com

@LinHu2016
Copy link
Contributor Author

@dmitripivkine please review the change, Thanks

@LinHu2016
Copy link
Contributor Author

move variable _enableScanConstantPoolObjects to ScavengerDelegate
remove check flag in RootScannerReadBarrierVerifier
remove -Xgc:enableScanConstantPoolObjectInScavenge

@dmitripivkine
Copy link
Contributor

After discussion with @DanHeidinga we are going to enable CP scan all Java versions including Java 8. So it means we don't need _enableScanConstantPoolObjects any more. @LinHu2016 Would you please update code again? Thank you.

@LinHu2016
Copy link
Contributor Author

After discussion with @DanHeidinga we are going to enable CP scan all Java versions including Java 8. So it means we don't need _enableScanConstantPoolObjects any more. @LinHu2016 Would you please update code again? Thank you.

done

@LinHu2016
Copy link
Contributor Author

LinHu2016 commented Oct 31, 2019

now the code has been updated to scan all class related objects during scavenge, performance test result: 2% regression on scavenge pause for gencon mode, 6.25% regression for concurrent scavenge.

while (NULL != (slotPtr = (omrobjectptr_t*)constantPoolObjectSlotIterator.nextSlot())) {
if (NULL != *slotPtr) {
doConstantPoolObjectSlots((omrobjectptr_t *)slotPtr);
}
}
#endif /* J9VM_GC_MODRON_SCAVENGER */
Copy link
Contributor

@dmitripivkine dmitripivkine Nov 4, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe GC_ClassIterator should be used here as well. Obviously it would require some code refactoring: you can replace poisonStaticClassSlots(env) and poisonConstantPoolObjects(env) by one method poisonClassSlots(env)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update the code to replace poisonConstantPoolObjects(), poisonStaticClassSlots()
with poisonClass() for ReadBarrierVerifier

@LinHu2016 LinHu2016 force-pushed the scanConstantPoolInSacavenge branch 4 times, most recently from d7a60f8 to 20da633 Compare November 5, 2019 16:01
	Remove _condyOnly and _condyEnabled from
	 GC_ConstantPoolObjectSlotIterator
	Scan whole class objects(classStatics,constantPoolObject,
	callSites, methodTypes, varHandlesMethodTypes, valueTypesIterator)
	during Scavenge.
	Replace poisonConstantPoolObjects(), poisonStaticClassSlots()
	 with poisonClass() for ReadBarrierVerifier.
	(only the class, which contains the object references are in
	nursery, will be scaned)

Signed-off-by: Lin Hu <linhu@ca.ibm.com>
@LinHu2016 LinHu2016 changed the title Enable scan ConstantPool Objects during Scavenge Enable scan all slots in a class during Scavenge Nov 13, 2019
@dmitripivkine
Copy link
Contributor

Jenkins test sanity xLinux jdk11

@DanHeidinga
Copy link
Member

The UNB machines are all down until Thursday night due to Lab work. Maybe relaunch on zLinux in the mean time for the PR build?

@dmitripivkine
Copy link
Contributor

Jenkins compile win jdk8

@dmitripivkine
Copy link
Contributor

The UNB machines are all down until Thursday night due to Lab work. Maybe relaunch on zLinux in the mean time for the PR build?

right, thanks

@dmitripivkine
Copy link
Contributor

Jenkins test sanity zLinux jdk11

@dmitripivkine
Copy link
Contributor

Merging based on zLinux and Win testing. xLinux build is not available at the moment

@dmitripivkine dmitripivkine merged commit 787d274 into eclipse-openj9:master Nov 13, 2019
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.

Support non-tenured objects in the constantpool
4 participants