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

Optimized Reference ArrayCopy on X86 #2963

Merged
merged 1 commit into from
Oct 2, 2018

Conversation

0dvictor
Copy link
Contributor

@0dvictor 0dvictor commented Sep 20, 2018

Reference ArrayCopy has been optimized that reduces the code-path length,
and potentially improves performance.

Part of Issue: #3054

Signed-off-by: Victor Ding dvictor@ca.ibm.com

Reference ArrayCopy has been optimized that reduces the code-path length,
and potentially improves performance.

Signed-off-by: Victor Ding <dvictor@ca.ibm.com>
@0dvictor 0dvictor changed the title Optimized Reference ArrayCopy on X86 WIP: Optimized Reference ArrayCopy on X86 Sep 26, 2018
@0dvictor 0dvictor mentioned this pull request Sep 28, 2018
7 tasks
@0dvictor 0dvictor changed the title WIP: Optimized Reference ArrayCopy on X86 Optimized Reference ArrayCopy on X86 Sep 28, 2018
@andrewcraik
Copy link
Contributor

@0dvictor can you please expand on what has changed and the performance testing this has received please?

@0dvictor
Copy link
Contributor Author

0dvictor commented Oct 2, 2018

This PR is based on OMR's arraycopy evaluator and OpenJ9's own "VMarrayStoreCheckArrayCopyEvaluator".
The three changes are:

  1. J9 takes over the logic related to reference array copy even when store check is not required;
  2. Call reference array copy helper when store check is not required but Concurrent Scavenge is active;
  3. Create a JIT helper wrapper of GC's reference array copy to reduce JIT code register pressure.

@0dvictor
Copy link
Contributor Author

0dvictor commented Oct 2, 2018

Performance impact were analyzed in two ways:

  1. IBM's internal benchmarks showed no performance impact;
  2. Generate assemblies are verified to be identical as what OMR generates under GC policy GenCon, Concurrent Scavenge disabled, when array store check is not required.

@andrewcraik
Copy link
Contributor

Jenkins test sanity xlinux,win jdk8,jdk11

Copy link
Contributor

@andrewcraik andrewcraik left a comment

Choose a reason for hiding this comment

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

LGTM

@andrewcraik andrewcraik merged commit 91938ff into eclipse-openj9:master Oct 2, 2018
@0dvictor 0dvictor deleted the arraycopy branch October 2, 2018 21:24
@gacholio
Copy link
Contributor

gacholio commented Oct 3, 2018

@andrewcraik I don't like the fact this was merged without involving me. I would certainly have rejected the formatting in cnathelp.cpp and xnathelp.m4. The C code also contains unnecessary (though not strictly incorrect) code. Much like the new CS code, I would likely have insisted on a more sensible way of dealing with the differences in calling conventions.

@0dvictor
Copy link
Contributor Author

0dvictor commented Oct 3, 2018

@gacholio I apologize for forget to let you know. I've created #3112 base on your comments on the CS code. Could you take a look?

@andrewcraik
Copy link
Contributor

@gacholio my sincere apologies - I was reading for correctness and did not notice those changes were in files you normally review - @0dvictor thank you for opening #3112.

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.

4 participants