-
Notifications
You must be signed in to change notification settings - Fork 415
Offheap LoopStrider Fix and disable storing dataAddr in temps #7562
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
Conversation
Signed-off-by: Abdulrahman Alattas <rmnattas@gmail.com>
|
PR Tested and ready for merge @zl-wang |
|
@hzongaro please review/approve/merge ... |
|
Earlier code changed auto reassociation to store base object instead of dataAddrPtr and load the dataAddrPtr of the object when using the temp, that caused issues one being symbols and temps were still marked as internal-pointers causing further opts to break. A better fix is to disable auto reassociation when its targeting dataAddrPtrs. PR ready for merge. |
hzongaro
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I noticed a comment in TR_LoopStrider::reassociateAndHoistComputations that indicates trees like the following can be hoisted, but if I understand correctly, that's no longer true after these changes are applied.
off-heap mode:
aladd (internal pointer)
contiguousArrayDataAddrFieldSymbol (dataAddrPointer, internal pointer)
array_obj (pinning array pointer)
mul/shift/integer offset
If I've understood that correctly, I would suggest adjusting the comment to indicate that that's no longer the case, at least temporarily.
May I also ask you to add a little more detail to the message for the commit that changes TR_LoopStrider::reassociateAndHoistComputations to describe the motivation for those changes?
Otherwise, I think the changes look correct.
Given issues when storing dataAddrPtr in temps and the dual purpose of using that as the destination address (correct) and destination object (incorrect) from some evaluators, the store of dataAddrPtr in temps is disabled until its fixed (Issue: OMR eclipse-omr#7560) Signed-off-by: Abdulrahman Alattas <rmnattas@gmail.com>
|
Update commit from feedback |
hzongaro
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Thanks!
|
Jenkins build all |
|
Windows and RISC failures are CI related |
First commit fixes creating invariant initialization trees with array address calculation to insert loading the dataAddrPtr
Second commit disables remaining code that stores dataAddr pointers and calculations using it in temp variables (addressed in #7560).
It disables it in 2 areas:
Keeping in note that hoisting loop induction variable related calculations is still enabled by hoisting the baseObj and calculation separately