openj9
openj9 copied to clipboard
JIT must narrow byte/short/char before storing
Issue: #16498
Will this change also impact Unsafe putObject* ? I'll next be looking at the interpreter to see if they need changing.
This only affects putstatic/putfield
Then you'll need to do something similar for the Unsafe intrinsics (the VM already did this right for a long time, with the boolean special case added recently).
I've also modified the pre-OpenJdK MethodHandle implementation in the VM (#18929). I suspect the JIT will need no work here because the old implementation boiled down to bytecodes, so hopefully this case will be fixed by the existing work.
Then you'll need to do something similar for the Unsafe intrinsics (the VM already did this right for a long time, with the boolean special case added recently).
@BradleyWood , you mentioned offline that the handling of Unsafe
is already as expected for JIT-compiled code. Can you confirm that?
See the force-push
@BradleyWood Looks like the latest force-push 0426748 might be based off an older version of this branch. The following code is removed in 0426748 which I think should be included to address Henry's previous comments
Sorry, thanks for catching that
Fixed. @hzongaro @a7ehuo
Jenkins test sanity all jdk8,jdk11,jdk17,jdk21
zLinux JDK 17 and aarch64 JDK 21 test failures appears to be known issue #18527 (or a variant).
aarch64 JDK 17 and AIX JDK 21 build failures appear to be infrastructure-related. Rerunning those two.
Jenkins test sanity aix jdk21
Jenkins test sanity alinux64 jdk17
Testing was successful, aside from the known failures noted above. Merging.
@BradleyWood, may I ask you to open a pull request to get this change delivered to the 0.44 release branch?
AFIAK, my changes have not been backported to 0.44 (unless the split was after my commits).
https://github.com/eclipse-openj9/openj9/pull/18929 is included in 0.44, the split was done after it was merged.