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: Properly find compressed refs sequence in implicit NULLCHK #12351

Merged

Conversation

Akira1Saitoh
Copy link
Contributor

evaluateNULLCHKWithPossibleResolve does pattern matching to
find load operation in compressed references sequences, but it searches for
TR::i2l instead of correct opcode TR::iu2l.
Also, if it is a load operation and the reference count of the load node
under the compressed refs sequence is 1, explicit NULLCHK is used
even if the reference count of TR::l2a node is more than 2.
This commit changes evaluateNULLCHKWithPossibleResolve to

  • Use opcode value of the parent of the reference node for judging
    whether it is a load operation instead of searching TR::iu2l.
  • Use implicit NULLCHK if TR::l2a node's reference count > 2.

Signed-off-by: Akira Saitoh saiaki@jp.ibm.com

@knn-k
Copy link
Contributor

knn-k commented Apr 6, 2021

jenkins test sanity alinux64 jdk11

// iu2l
// iloadi/irdbari f <- n
// aload O <- reference
// iconst shftKonst
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I updated the compressed sequence tree in the comment to be consistent with the current IL.
We do not have ladd anymore since heapbase has been eliminated in #11688

@knn-k
Copy link
Contributor

knn-k commented Apr 7, 2021

jenkins test sanity alinux64 jdk11

@knn-k
Copy link
Contributor

knn-k commented Apr 7, 2021

The previous test was aborted:
https://ci.eclipse.org/openj9/job/Test_openjdk11_j9_sanity.functional_aarch64_linux_Personal_testList_0/87/consoleText

Resuming build at Tue Apr 06 11:41:06 EDT 2021 after Jenkins restart
Waiting to resume part of Test_openjdk11_j9_sanity.functional_aarch64_linux_Personal_testList_0 #87: ‘cent7-aarch64-1’ is offline
(... snip ...)
Waiting to resume part of Test_openjdk11_j9_sanity.functional_aarch64_linux_Personal_testList_0 #87: Waiting for next available executor on ‘cent7-aarch64-1’
Calling Pipeline was cancelled
[Pipeline] End of Pipeline
java.util.concurrent.CancellationException: Task was cancelled.

@knn-k
Copy link
Contributor

knn-k commented Apr 7, 2021

jenkins test sanity alinux64 jdk11

@knn-k knn-k self-assigned this Apr 7, 2021
`evaluateNULLCHKWithPossibleResolve` does pattern matching to
find load operation in compressed references sequences, but it searches for
`TR::i2l` instead of correct opcode `TR::iu2l`.
Also, if it is a load operation and the reference count of the load node
under the compressed refs sequence is 1, explicit NULLCHK is used
even if the reference count of `TR::l2a` node is more than 2.

This commit changes `evaluateNULLCHKWithPossibleResolve` to
- Use opcode value of the parent of the reference node for judging
   whether it is a load operation instead of searching `TR::iu2l`.
- Use implicit NULLCHK if `TR::l2a` node's reference count > 2.
- Use recursivelyDecReferenceCount for firstChild if it is not evaluated.

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

knn-k commented Apr 8, 2021

jenkins test sanity alinux64 jdk11

@knn-k knn-k merged commit 23c0557 into eclipse-openj9:master Apr 8, 2021
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