eclipse-openj9 / openj9-omr

Eclipse OpenJ9's clone of the Eclipse OMR (https://github.com/eclipse/omr) project. PRs should be opened against the upstream OMR project whenever possible.
Other
38 stars 135 forks source link

(0.44) Evaluate constant byteLenNode of arrayCopyChild #200

Closed r30shah closed 8 months ago

r30shah commented 8 months ago

In case of constant length array copy code, a length of bytes to be copied would be loaded into register in case we need to perform a test to check for destructive region copies and perform destructive array copy. We need to make sure that byteLength node is evaluated before the internal control flow starts. We found an issue where downstream consumer of primitive arraycopy sequnece generator needed byteLenReg and as the constant value was loaded only in case we fail absolute test for forward copy check, we ended up in scenario where it reads a value from array using length which consists of garbage. This commit fixes the issue and in case, we do not know the direction for array copy, it evaluates bytelength node before internal control flow starts.

Port of https://github.com/eclipse/omr/pull/7275 for 0.44