-
Notifications
You must be signed in to change notification settings - Fork 396
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
Add full support for calls on z/OS and enable corresponding tests #4907
Commits on Mar 13, 2020
-
Enhance JitBuilder Call sample to be more exhaustive
In this change we rewrite the Call sample with a few enhancements to introduce all call types: - JIT to JIT - JIT to native - JIT to computed native - Native to JIT The test computation is still the same, i.e. we still compute a double sum, however we do it in several different ways so as to test calls both to and from JIT/native to ensure all paths are working as expected. This is particularly useful for platforms which have special handling of function pointers, such as AIX and z/OS. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for c195267 - Browse repository at this point
Copy the full SHA c195267View commit details -
Enable Tril tests with calls on z/OS
Now that we have full support for calls on z/OS we can safely enable all Tril tests which were previously disabled. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 7b3ecf2 - Browse repository at this point
Copy the full SHA 7b3ecf2View commit details -
Deprecate isXPLinkToPureOSLinkageCall path
OMR nor any downstream projects support 31-bit XPLINK to OS linkage, and the support is also not present in the rest of the compiler. This code block is slated for deprecation as we don't anticipate it being used. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for cda9342 - Browse repository at this point
Copy the full SHA cda9342View commit details -
Fix loading of double arguments on Z
The path for loading double arguments for outgoing calls was disabled within the `J9_PROJECT_SPECIFIC` ifdef, and as such double arguments were not being loaded for outgoing calls. We fix this by moving the case label outside of the ifdef. In addition there is no need to check for `getNumIntegerArgumentRegisters` before incrementing the GPR index, similarly to the integer cases since the `getIntegerArgumentRegister` API will already return the default value if the register index does not participate in the calling convention. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for a971b3c - Browse repository at this point
Copy the full SHA a971b3cView commit details -
Add documentation on PPM file format of Mandelbrot sample
In addition there are some problems with the CMakeLists.txt definition for this sample, likely because the sample has been disabled due to lack of support for passing arguments to tests generated. We also fix this minor issue as part of this commit. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for f20d681 - Browse repository at this point
Copy the full SHA f20d681View commit details -
Enhance Tril LinkageTest to be much more comprehensive
The current LinkageTest is geared towards running on x86. Now that we have full support for calls on z/OS this test can be enhanced. The current test has implicit assumptions on the number of arguments that are passed on the stack for a particular calling convention. To be more exhaustive we greatly expand the scope of the testing here to the following: - JIT to {jit|native} calls to functions of different number of arguments ranging from 1 to 9 with the same argument type - JIT to {jit|native}calls to functions of different number of arguments ranging from 1 to 9 with mixed argument types This ends up running 136 different tests (+ 4 for invalid linkage) which covers most cases for passing arguments to and from JIT methods. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for bb4cbe8 - Browse repository at this point
Copy the full SHA bb4cbe8View commit details -
Create the XPLINK Function Descriptor for OMR compiled bodies on z/OS
System linkage OMR compiled function bodies need to come with a proper function descriptor to adhere to XPLINK linkage on z/OS. Currently OMR compiled functions return to the user the entry point of the function (function's address), however on z/OS we should instead be returning the Function Descriptor data structure. This change implements the Function Descriptor as a snippet in the compiled body, similar to the PPA1 and PPA2 snippets. The descriptor is then baked into the function literal pool, and when we emit the snippet we will update the method address which is used by external APIs. When dispatching to other native methods (JIT or C-native) we must also call through the function descriptor. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for e0fdba4 - Browse repository at this point
Copy the full SHA e0fdba4View commit details -
Use method symbol address to get the entry point in Tril and JitBuilder
Some platforms, such as AIX and z/OS, use metadata structures to represent "pointer to a function" retrieved via the C `&` operator. On AIX and z/OS these are called Function Descriptors. We need to disambiguate between the "pointer to a function" and "address of entry point of a function". Currently `getCodeStart` API returns the latter, however this is not what we want when we query for the result of a compilation in Tril and JitBuilder. We want the former, i.e. the value of the "pointer to a function" of the JIT compiled method. We use the method symbol `getAddress` API here to query for such values, and ensuring this value is set properly after binary encoding. It is currently set to the result of `getCodeStart` by default, so no change in value. If platforms have Function Descriptors it is up to those linkages to update this value once the location of the Function Descriptor is known. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com> Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for cbc0185 - Browse repository at this point
Copy the full SHA cbc0185View commit details -
Reformat performProcessRelocationsPhase function
The indentation in it's current state is very confusing [1], and at first sight one may think the: ``` if (comp->getCurrentMethod() == NULL) { comp->getMethodSymbol()->setMethodAddress(cg->getBinaryBufferStart()); } ``` piece of code is guarded by the `if (cg->getAheadOfTimeCompile() &&` check, which is what I first thought, but upon a more careful inspection the indentation was hiding this is not the case. [1] https://github.com/eclipse/omr/blob/31db81f3d84a431736ac7a9ff1b3980158fae258/compiler/codegen/OMRCodeGenPhase.cpp#L182-L202 Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 448f3f0 - Browse repository at this point
Copy the full SHA 448f3f0View commit details -
Enable JitBuilder extended tests on z/OS
Now that we have full support for calling methods on z/OS we can enable the full suite of extended JitBuilder tests on the farm. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for eaaa3c7 - Browse repository at this point
Copy the full SHA eaaa3c7View commit details -
Revert "Disable test compiler tests on z/OS"
This reverts commit eb3b237. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 9278fbe - Browse repository at this point
Copy the full SHA 9278fbeView commit details -
Revert "Disable Tril's IlGenTest on z/OS"
Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 5545930 - Browse repository at this point
Copy the full SHA 5545930View commit details
Commits on Mar 20, 2020
-
Replace uintptrj_t with uintptr_t
Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 68fafb1 - Browse repository at this point
Copy the full SHA 68fafb1View commit details -
Add missing OMRPORT_ACCESS_FROM_OMRPORT in LinkageTest
Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for 0bd553a - Browse repository at this point
Copy the full SHA 0bd553aView commit details
Commits on Mar 31, 2020
-
Simplify if/else to ternary in OMRLinkage.cpp
Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for f5f00a4 - Browse repository at this point
Copy the full SHA f5f00a4View commit details -
Remove redundant static_cast in LinkageTest.cpp
Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for fa96327 - Browse repository at this point
Copy the full SHA fa96327View commit details -
Add SKIP_ON_S390_LINUX macros and use them in LinkageTest.cpp
These helper macros will skip tests based on architecture and operating system combinations. Signed-off-by: Filip Jeremic <fjeremic@ca.ibm.com>
Configuration menu - View commit details
-
Copy full SHA for cf60a96 - Browse repository at this point
Copy the full SHA cf60a96View commit details