RFR(S): 8055153: nsk/stress/jck60/jck60014 crashes on sparc
vladimir.kozlov at oracle.com
Tue Aug 19 16:56:23 UTC 2014
It is good.
On 8/19/14 8:41 AM, Roland Westrelin wrote:
> During macro expansion the control of LoadRange nodes is not set (same problem exists for LoadKlass nodes) allowing LoadRange nodes to float above a null check. The code in arraycopy macro expansion used to be executed at parse time where it was ok to not set the LoadRange control because the dependency on the null check is expressed there through a CastPP. Because macro expansion happens after CCP, CastPP nodes no longer exist in the IR when the LoadRange nodes are created, now. To fix this, I created the LoadRange (and LoadKlass) nodes when the ArrayCopyNode is created, during parsing. This way, there’s no need to set the control for the nodes (CCP will do it) and the compiler has a chance to use a previous LoadRange (or LoadKlass) and optimize it out. I found a problem in PhaseMacroExpand::copy_call_debug_info() when testing this change, where the JVMState can be shared between macro nodes and we can end up adjusting it several times.
More information about the hotspot-compiler-dev