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

AArch64: Add callUsesHelperImplementation query to code generator #7077

Merged
merged 1 commit into from
Jul 28, 2023

Conversation

Akira1Saitoh
Copy link
Contributor

This commit adds callUsesHelperImplementation query to code generator. It updates TR::ARM64ImmSymInstruction::generateBinaryEncoding() function to add a TR_Helper relocation to the branch instruction if that query returns true for the symbol.

This commit adds `callUsesHelperImplementation` query to code generator.
It updates `TR::ARM64ImmSymInstruction::generateBinaryEncoding()` function
to add a `TR_Helper` relocation to the branch instruction
if that query returns true for the symbol.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
@knn-k
Copy link
Contributor

knn-k commented Jul 28, 2023

Jenkins build aarch64,amac

@knn-k knn-k mentioned this pull request Jul 28, 2023
4 tasks
@knn-k knn-k self-assigned this Jul 28, 2023
@knn-k knn-k merged commit e5dabb6 into eclipse-omr:master Jul 28, 2023
5 checks passed
Akira1Saitoh pushed a commit to Akira1Saitoh/omr that referenced this pull request Aug 1, 2023
OMR eclipse-omr#7077 introduced `callUsesHelperImplementation()` query to add
`TR_Helper` relocation for dispatchJ9Method call under out of process
compilation. That PR also changes the binary encoder to use
`findHelperTrampoline` for dispatchJ9Method.
The symbol reference for that method does not have valid helper index
as the reference number, thus `findHelperTTrampoline` returns
an incorrect address.
This commit fixes the binary encoder to use `methodTrampolineLookup`
for the call target which is not a helper.

Avoid using `findHelperTrampoline` for non-helper reference number.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
Akira1Saitoh pushed a commit to Akira1Saitoh/omr that referenced this pull request Aug 1, 2023
OMR eclipse-omr#7077 introduced the `callUsesHelperImplementation()` query to add
a `TR_Helper` relocation for methods that are actually helper calls.
That PR also changes the way the binary encoder finds necessary trampolines.
Before OMR eclipse-omr#7077, `methodTrampolineLookup()` was used for call targets
whose method object returns false for the `isHelper()` query. The behavior
was changed to call `findHelperTrampoline()` instead of `methodTrampolineLookup()`
if the `callUsesHelperImplementation()` query returns true.

The problem is that the symbol reference for a certain method (which is
actually a helper call) does not have a valid helper index as the reference
number, thus causing findHelperTrampoline to return an incorrect address.

This commit fixes the binary encoder to use `methodTrampolineLookup`
for the call target whose method object returns false for the `isHelper()` query.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
Akira1Saitoh pushed a commit to Akira1Saitoh/omr that referenced this pull request Aug 1, 2023
OMR eclipse-omr#7077 introduced the `callUsesHelperImplementation()` query to add
a `TR_Helper` relocation for methods that are actually helper calls.
That PR also changes the way the binary encoder finds necessary trampolines.
Before OMR eclipse-omr#7077, `methodTrampolineLookup()` was used for call targets
whose method object returns false for the `isHelper()` query. The behavior
was changed to call `findHelperTrampoline()` instead of `methodTrampolineLookup()`
if the `callUsesHelperImplementation()` query returns true.

The problem is that the symbol reference for a certain method (which is
actually a helper call) does not have a valid helper index as the reference
number, thus causing `findHelperTrampoline` to return an incorrect address.

This commit fixes the binary encoder to use `methodTrampolineLookup`
for the call target whose method object returns false for the `isHelper()` query.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants