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

Implement z/OS XPLINK system linkage #5609

Merged
merged 7 commits into from
May 11, 2019

Conversation

fjeremic
Copy link
Contributor

To get JitBuilder working on z/OS we need a proper z/OS system linkage in place, that means both frame shape and callout support. At the moment we have some half-baked solution in OMR which does not cut it, since we cannot even run the simplest JitBuilder test cases (see eclipse-omr/omr#3693).

This PR introduces minimal, but proper XPLINK support to OMR and lays out the groundwork for pushing Java-isms out of OMR and consolidating much of the system linkage support across Linux and z/OS. There are many changes in the PR, each of which deserves it's own commit. Each commit comment outlines the specific change made. The work is not done yet, but to avoid feature creep as this is a deep rabbit hole I've chosen this as the point where the code is good enough to be reviewed and contributed to the project while I continue to work on it in the background.

The following is a summary of some of the goals of this PR:

  • Implement proper XPLINK z/OS system linkage to allow for JitBuilder test cases in Migrate z/OS to a CMake build system eclipse-omr/omr#3693 to run
  • Create necessary snippets for XPLINK
  • Partition Linux and z/OS system linkages so they're as identical as possible to make the code simple to understand
  • Sink OpenJ9 code into OMR and vice-versa
  • Document existing and newly added APIs

@fjeremic fjeremic added comp:jit depends:omr Pull request is dependent on a corresponding change in OMR comp:jit:z labels Apr 24, 2019
@fjeremic fjeremic requested review from joransiu and 0xdaryl April 24, 2019 21:31
@fjeremic fjeremic changed the title Xplink zos pr Implement z/OS XPLINK system linkage Apr 24, 2019
@fjeremic
Copy link
Contributor Author

Depends on eclipse-omr/omr#3779.

@fjeremic
Copy link
Contributor Author

Jenkins test sanity all depends eclipse-omr/omr#3779

Copy link
Member

@joransiu joransiu left a comment

Choose a reason for hiding this comment

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

The changes in this PR LGTM. Will review the OMR changes next.

@fjeremic
Copy link
Contributor Author

fjeremic commented May 8, 2019

Jenkins test sanity zlinux depends eclipse-omr/omr#3779

fjeremic added 6 commits May 10, 2019 16:09
The `generateBinaryEncodingPrologue` has generic code for the following:

1. Creating the recompilation preprologue
2. Creating the method preprologue
3. Creating the method prologue

On Z there is nothing specific to OpenJ9 about the above steps. In fact
the steps are missing from OMR and hence no prologue/preprologue is
generated of system linkages at the OMR level during binary encoding.
This is a problem and the fix is to simply migrate this code over.

Signed-off-by: Filip Jeremic <[email protected]>
Signed-off-by: Filip Jeremic <[email protected]>
Signed-off-by: Filip Jeremic <[email protected]>
The Linux and z/OS system linkage classes are large and complicated
enough that they deserve to live within their own compilation units.
This commit partitions up the two classes into:

- SystemLinkageLinux.cpp
- SystemLinkagezOS.cpp

and updates the corresponding include files in the rest of the
codebase. We take this opportunity to completely fold
`S390SystemLinkage` as it really serves no purpose since the
`SystemLinkage` class already exists in the `TR` namespace.

Signed-off-by: Filip Jeremic <[email protected]>
- Create the new snippet
- Migrate Call Descriptor generation function to the snippet
- Document all the new APIs
- Make use of the new snippet when generating the call outs
- Clean up generation of Call Descriptor relocation
- Remove XPLINKDESC, now unused pseudo-instruction
- Enhance internal relocation class to be more generic

Signed-off-by: Filip Jeremic <[email protected]>
@fjeremic
Copy link
Contributor Author

Jenkins test sanity all depends eclipse-omr/omr#3779

@0xdaryl 0xdaryl merged commit b64154f into eclipse-openj9:master May 11, 2019
@0xdaryl 0xdaryl added arch:z and removed comp:jit:z labels Jun 24, 2019
@0xdaryl 0xdaryl self-assigned this Jun 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch:z comp:jit depends:omr Pull request is dependent on a corresponding change in OMR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants