<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi,<br>
    <div class="moz-forward-container"> <br>
      Please review the following patch for <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="https://bugs.openjdk.java.net/browse/JDK-8175917">https://bugs.openjdk.java.net/browse/JDK-8175917</a>:<br>
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
        href="http://cr.openjdk.java.net/%7Enever/8175917/webrev.001/">http://cr.openjdk.java.net/~never/8175917/webrev.001/</a><br>
      <br>
      Bug description:<br>
      When Truffle uses JMVCI and Graal for compiling a guest language
      (e.g. JavaScript), Graal heavily uses partial escape analysis. In
      such cases, the JVMCI method "installCode" uses lots of local JNI
      references when generating the corresponding debug information so
      that the thread's top-level JNI handle buffer will have a large
      size. This unnecessarily increases the footprint and significantly
      decreases the performance (as long as <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="https://bugs.openjdk.java.net/browse/JDK-8175318">https://bugs.openjdk.java.net/browse/JDK-8175318</a>
      is not fixed).<br>
      <br>
      Fix:<br>
      Around the JVMCI method "installCode", we do something similar to
      JNI's PushLocalFrame/PopLocalFrame. So, the large JNI handle
      buffer is released when the method exits and the thread's
      top-level JNI handle buffer is not getting enlarged.<br>
      <br>
      Tests:<br>
      The changes were tested locally by executing JVMCI bootstrapping
      and parts of Graal / Truffle.<br>
      <br>
      Thanks,<br>
      Christian<br class="Apple-interchange-newline">
    </div>
  </body>
</html>