<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 11/09/2015 11:21 PM, Coleen
      Phillimore wrote:<br>
    </div>
    <blockquote cite="mid:56411C5D.8020907@oracle.com" type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      We have three things with unfortunately similar names:<br>
      <br>
      1. Handle  including instanceHandle, arrayHandle, objArrayHandle
      and typeArrayHandle.   These hold oops.  They don't have anything
      but a trivial constructor and since the only field in these
      handles is the oopDesc pointer, there is no penalty for passing
      them by value.   By convention in the JVM sources, they are passed
      by value:  ie:   void foo(Handle h).<br>
      <br>
      2. metadata Handles including methodHandle and
      constantPoolHandle.   These hold metadata.  Their purpose is to
      keep the metadata from being deallocated due to disuse after
      redefinition.  These handles have copy constructors and
      destructors and are have to call these to pass by value.   These
      values shouldn't be written either.   So you should pass these as
      <b>const</b> references.  ie   void foo(const methodHandle&
      m);<br>
      <br>
      3. instanceKlassHandle and KlassHandle.  These are vestigial but
      were left in the code because they might have been needed for
      enhanced class redefinition.  They have no semantics so can be
      passed however you want.<br>
      <br>
      In my opinion, none of these things should be passed as <b>non-const</b>
      references since they should never be output parameters.<br>
      <br>
      So part of this change is correct to remove the non-const
      references but the Handles should be passed by value and the
      methodHandles and constantPoolHandles should be passed as const
      references.<br>
    </blockquote>
    <br>
    Thanks for the detailed explanation.<br>
    I updated the webrev, the jvmci code should now conform to those
    rules.<br>
    <br>
    This is also including the changes by Chris. Thanks for noticing
    these. That's what I get from doing this in a hurry.<br>
    <br>
    New webrev:<br>
    <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~rschatz/JDK-8142329/webrev.02/">http://cr.openjdk.java.net/~rschatz/JDK-8142329/webrev.02/</a><br>
    <br>
    Thanks,<br>
    Roland<br>
    <br>
  </body>
</html>