-
Notifications
You must be signed in to change notification settings - Fork 738
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
Remove remaining aconst_init, withfield, vnew refs #19812
Conversation
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 took a quick look at the compiler changes. Thank you for making those changes, @theresa-m!
I had a draft pull request #18790 that had changes for allowing value type instances to be created either with new
or with aconst_init
and withfield
, under the assumption that there might be a period of time where we would need to support both possibilities. Most of the changes there are irrelevant if we're dropping those two bytecode instructions in one step. However, I the think the change to TR_J9ByteCodeIlGenerator::genNew
that calls setIdentityless
and the change to TR_EscapeAnalysis::isImmutableObject
will still be needed. May I ask you to pick up those two changes?
I'll also have to revise OMR pull request eclipse-omr/omr#7239 for the change to VPHandlers.cpp
.
Yes, that's what I looking for. Thanks for taking care of that! (Please squash that pair of commits - we don't need to preserve |
Thanks @hzongaro I squashed the commits. |
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.
Thank you very much for the update @theresa-m! The JIT change looks good to me. I just have one minor 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.
May I ask you revise the commit message for commit e3a18a4 to remove the following paragraph, which no longer applies?
A new
J9::ObjectModel::areValueTypeInstancesCreatedWithBCNew
method is
used to enable creation of value type instances with the new bytecode.
Signed-off-by: Theresa Mammarella <Theresa.T.Mammarella@ibm.com>
This change sets up changes to the JIT compiler that are needed to permit value objects to be created with the new bytecode. Previously they could only be created with the aconst_init and withfield bytecode instructions. The new bytecode will be translated to the TR::New opcode in IL, but existing optimizations that create value type instances will continue to use the TR::newvalue opcode, so optimizations need to be prepared for both possibilities for now. Signed-off-by: Theresa Mammarella <Theresa.T.Mammarella@ibm.com>
Hey I tried removing these again and it looks like it compiles. Maybe I got confused with another spot :/ . They are removed now. |
I removed that paragraph. Is the part about using TR::newvalue still accurate? |
Yes - some optimizations still create value type instances with |
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.
Compiler changes look good. Thanks!
Jenkins test sanity,extended zlinuxval jdknext |
Jenkins test sanity,extended amac jdk21 |
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.
LGTM.
Part 1: #19771
Fixes: #18316