Check normalizedNaN flag on (d/f)bits2(l/i) nodes #18949
Merged
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In DynamicLiteralPool optimization, we add
aload
node denoting the address of literal base as a child of certain nodes when certain constant normalization is needed. For example, when OpenJ9 recognizes and inlinesfloatToIntBits
ordoubleToLongBits
, it uses the fbits2i and dbits2l nodes respectively. Java specification requires those method to return normalize/canonical NaN value if the floating point operand is NaN. Dynamic Literal Pool optimization would attach an aload node denoting address of literal pool base to such nodes. In case when we are inliningfloatToRawIntBits
/doubleToRawLongBits
, we are not required to return the normalize for of NaN for all NaN operands and simply return the raw bits representing floating point value. In such case, DynamicLiteralPool optimization do not need to attach extra child to node for literal base. This commit checks if normalization is required or not for such operation before attaching extra node for literal base.Fixes: #18874