RFR: 8182036: Load from initializing arraycopy uses wrong memory state
Roland Westrelin
rwestrel at redhat.com
Thu Sep 16 14:59:13 UTC 2021
> The change in memnode.cpp of the original patch modifies the condition of the assertion.
> For jdk10+, the assertion is located in a loop and the loop condition looks like [1].
> For jdk8u, this loop is not there and the assertion is simply in an if statement like [2].
> Also the condition for the loop and if statement is rather different:
> For jdk8u, we have this condition for the if statement: mem->in(MemNode::Address)->eqv_uncast(address).
> In this case, 'mem' is the StoreL node from the ClearArrayNode, as explained in [3]. And 'address' corresponds to the StoreI node.
> Since those two store nodes access different memory, the condition will be false and the assertion for jdk8u will not hit in this case.
> That's why I excluded the change for jdk8u. I should have mentioned this in my original email.
Thanks for the details. That sounds reasonable to me.
Roland.
More information about the jdk8u-dev
mailing list