<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    could I get reviews for this small patch?<br>
    <br>
    Bug: <br>
    <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8011646">https://bugs.openjdk.java.net/browse/JDK-8011646</a><br>
    <br>
    Problem:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    LibraryCallKit::inline_native_hashcode() uses a control input to the
    load node 'n' that loads the header.<br>
    'n' is connected to a castPP node, which maintains the dependency
    between the null check of 'n' and 'n'.<br>
    A later compiler phase removes this castPP. The dependency between
    the null check and 'n' is lost if <br>
    the 'n' has a control input (see MemNode::Ideal_common_DU_postCCP()
    ). The reason for the <br>
    lost dependency is that loop predication erroneously sets the
    control edge of the load to a predicate <br>
    that is hoisted out of the loop. <br>
    If, however, the load has no control edge,
    MemNode::Ideal_common_DU_postCCP() sets the control edge<br>
    correctly. This<br>
    <br>
    The bug description contains a Java program that reproduces this
    behavior. Also, the bug description contains <br>
    a graph that can be viewed with the IGV. For example, the LoadL node
    (830) in Phase "After Parsing" has a <br>
    control edge that is connected to node 780. At the phase, the graph
    is still correct. In phase "InterGVN 2" <br>
    the control edge is connected to a node outside the loop. As a
    result, the dependency between the null <br>
    check and the load is lost.<br>
    <br>
    Solution:<br>
    Do not add a control input to the load. As a result, the control to
    the load is set correctly when the castPP node<br>
    is removed.<br>
    <br>
    Webrev:<br>
    <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~anoll/8011646/webrev.00/">http://cr.openjdk.java.net/~anoll/8011646/webrev.00/</a><br>
    <br>
    Testing:<br>
    Failing test case, regression test, jprt<br>
    <br>
    <br>
    <br>
    Many thanks to Roland and Vladimir who helped me a lot with this
    bug.<br>
    <br>
    Best,<br>
    Albert<br>
  </body>
</html>