RFR(M): 8130847: Cloned object's fields observed as null after C2 escape analysis
roland.westrelin at oracle.com
Tue Jul 28 14:05:40 UTC 2015
When an allocation which is the destination of an ArrayCopyNode is eliminated, field’s values recorded at a safepoint (to reallocate the object) do not take the ArrayCopyNode into account at all and the effect or the ArrayCopyNode is lost on a deoptimization. This fix records values from the source of the ArrayCopyNode, emitting new loads if necessary.
I also use the opportunity to pin the loads generated in LoadNode::can_see_arraycopy_value() because they depend on all checks that validate the array copy and not only on the check that immediately dominates.
More information about the hotspot-compiler-dev