Fix issues with non-SVM aconst_init AOT compilation - #15460
Conversation
|
@jdmpapin May I ask you to review this change? Thank you! |
|
@hzongaro fyi |
|
@jdmpapin Just following up. Could you help review this change? Thanks! |
jdmpapin
left a comment
There was a problem hiding this comment.
Changes look reasonable at a high level but there are a few problems. Also, it might be good to mention somewhere in the commit message that aconst_init of a value type with a Q-typed field will now cause ilgen to fail in non-SVM AOT compilations
a546c66 to
a59bddb
Compare
|
@hzongaro, do you have any further feedback? |
ILGen: - Pass `returnClassForAOT` as true in getClassFromConstantPool which is required to retrieve class in non-SVM AOT compilation - Pass `cpIndex` in findOrCreateClassSymbol which is required for `TR_ClassAddress` relocation record - When generating IL for `aconst_init`, if the class has a field which is also value type, the non-SVM AOT compilation is aborted in ILGen because the `cpIndex` for the field is unknown and it is required to materialize the class in AOT load - Update `genWithField` and `genFlattenableWithField` to use `int32_t` instead of `uint16_t` for their cpIndex arguments X86: - Evaluate the class into a register for loadaddr under new - Use ASSERT_FATAL if the classReg is NULL in non-SVM AOT Fixes: eclipse-openj9#15423, eclipse-openj9#15424 Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
a59bddb to
223f29e
Compare
hzongaro
left a comment
There was a problem hiding this comment.
Looks good. Thanks, Annabelle!
|
Jenkins test sanity xlinuxval,xlinuxvalst,plinuxval,plinuxvalst,zlinuxval,zlinuxvalst,alinuxval,alinuxvalst jdknext |
|
Jenkins test sanity all jdk17 |
|
AIX build failure doesn't look related to this change. There is a crash in openjdknext_j9_sanity.functional_s390x_linux_vt_standard.. I'm still looking |
|
The AIX build failure is #8625 - retrying Jenkins test sanity aix jdk17 |
|
This PR doesn't contain any code that could affect |
|
OK, I can confirm that the crash has been observed elsewhere as described in the previous comment, so it's unrelated to this PR |
|
All other tests have passed |
ILGen:
returnClassForAOTas ingetClassFromConstantPoolwhich is required to retrieve class in non-SVM AOT compilationfindOrCreateClassSymbolwhich is required forTR_ClassAddressrelocation recordaconst_init, if the class has a field which is also value type, the non-SVM AOT compilation is aborted in ILGen because thecpIndexfor the field is unknown and it is required to materialize the class in AOT loadgenWithFieldmethods andgenFlattenableWithFieldto useint32_tinstead ofuint16_tfor their cpIndex argumentsX86:
Fixes: #15423, #15424
Signed-off-by: Annabelle Huo Annabelle.Huo@ibm.com