<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <big>Hi Derek,</big><br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 2016-02-22 19:39, Derek White wrote:<br>
    </div>
    <blockquote cite="mid:56CB55CA.9030801@oracle.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <big>Very simple fix for a bug on Solaris and small performance
        issue everywhere else.<br>
        <br>
        <b>Bug</b>: <a moz-do-not-send="true" class="issue-link"
          data-issue-key="JDK-8134992"
          href="https://bugs.openjdk.java.net/browse/JDK-8134992"
          id="key-val" rel="4842191"> JDK-8134992</a>
        vm/gc/compact/Compact_InternedStrings_Strings failed due to a
        malloc() failure<br>
        <b>Webrev</b>: <a moz-do-not-send="true"
          class="moz-txt-link-freetext"
          href="http://cr.openjdk.java.net/%7Edrwhite/8134992/webrev.01">http://cr.openjdk.java.net/~drwhite/8134992/webrev.01</a><br>
      </big></blockquote>
    <br>
    <big>Good catch!<br>
      <br>
      The change looks good to me.<br>
      <br>
      /Mikael</big><br>
    <br>
    <blockquote cite="mid:56CB55CA.9030801@oracle.com" type="cite"><big>
        <b>Tests</b>: jprt, partial Aurora perf.<br>
        <br>
        <b>Background</b>:<br>
        Many of the vm.gc.compact tests create large strings and/or char
        arrays that don't get allocated in the young gen.
        RuntimeStub::_new_array_Java() and 
        RuntimeStub::_new_array_nozero_Java() have to call
        CollectedHeap::new_store_pre_barrier() when deferred store
        barriers are turned on. Unless the object is in the young gen,
        new_store_pre_barrier() marks every card for the entire new
        object as dirty. If the object is very large, this can result in
        so many enqueued dirty cards that it runs out of memory (due to
        the malloc constraints in Solaris).<br>
        <br>
        But primitive arrays don't have any references that need need a
        store barrier, so the whole issue can be avoided in this case.
        Doing so reduces gc's malloc space usage by up to 30% in these
        compact tests.<br>
        <br>
        Note that these tests are essentially String.intern
        micro-benchmarks, so I haven't seen a performance improvement in
        more general code.<br>
        <br>
        Thanks!<br>
         - Derek White</big>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <br>
      <br>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
      <table frame="VOID" cols="6" rules="NONE" border="0"
        cellspacing="0">
        <colgroup><col width="333"><col width="99"><col width="99"><col
            width="99"><col width="99"><col width="99"></colgroup> <tbody>
          <tr>
            <td align="LEFT" height="18" width="333"><br>
            </td>
            <td align="LEFT" width="99"><br>
            </td>
            <td align="CENTER" width="99"><b>clean:</b></td>
            <td sdval="8134992" sdnum="1033;" align="CENTER" width="99"><b>8134992</b></td>
            <td align="LEFT" width="99"><br>
            </td>
            <td align="LEFT" width="99"><br>
            </td>
          </tr>
          <tr>
            <td align="CENTER" height="18"><b>KB</b></td>
            <td align="CENTER"><b><br>
              </b></td>
            <td align="CENTER"><b>reserved</b></td>
            <td align="CENTER"><b>reserved</b></td>
            <td align="CENTER"><b>diff</b></td>
            <td align="CENTER"><b>%</b></td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_InternedStrings</td>
            <td align="LEFT">malloc</td>
            <td sdval="63743" sdnum="1033;" align="RIGHT">63743</td>
            <td sdval="48669" sdnum="1033;" align="RIGHT">48669</td>
            <td sdval="-15074" sdnum="1033;0;#,##0" align="RIGHT">-15,074</td>
            <td sdval="0.23648086848752" sdnum="1033;0;0%" align="RIGHT">24%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_InternedStrings1</td>
            <td align="LEFT">malloc</td>
            <td sdval="41738" sdnum="1033;" align="RIGHT">41738</td>
            <td sdval="39328" sdnum="1033;" align="RIGHT">39328</td>
            <td sdval="-2410" sdnum="1033;0;#,##0" align="RIGHT">-2,410</td>
            <td sdval="0.0577411471560688" sdnum="1033;0;0%"
              align="RIGHT">6%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays</td>
            <td align="LEFT">malloc</td>
            <td sdval="50943" sdnum="1033;" align="RIGHT">50943</td>
            <td sdval="50940" sdnum="1033;" align="RIGHT">50940</td>
            <td sdval="-3" sdnum="1033;0;#,##0" align="RIGHT">-3</td>
            <td sdval="0.0000588893469171126" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_Strings</td>
            <td align="LEFT">malloc</td>
            <td sdval="66503" sdnum="1033;" align="RIGHT">66503</td>
            <td sdval="50989" sdnum="1033;" align="RIGHT">50989</td>
            <td sdval="-15514" sdnum="1033;0;#,##0" align="RIGHT">-15,514</td>
            <td sdval="0.233282709050719" sdnum="1033;0;0%"
              align="RIGHT">23%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18"><b>Compact_Strings</b></td>
            <td align="LEFT">malloc</td>
            <td sdval="62757" sdnum="1033;" align="RIGHT"><b>62757</b></td>
            <td sdval="50941" sdnum="1033;" align="RIGHT">50941</td>
            <td sdval="-11816" sdnum="1033;0;#,##0" align="RIGHT">-11,816</td>
            <td sdval="0.188281785298851" sdnum="1033;0;0%"
              align="RIGHT">19%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18"><i>Compact_Strings_InternedStrings</i></td>
            <td align="LEFT">malloc</td>
            <td sdval="68024" sdnum="1033;" align="RIGHT">68024</td>
            <td sdval="50944" sdnum="1033;" align="RIGHT">50944</td>
            <td sdval="-17080" sdnum="1033;0;#,##0" align="RIGHT">-17,080</td>
            <td sdval="0.251087851346584" sdnum="1033;0;0%"
              align="RIGHT">25%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_NonbranchyTree5M</td>
            <td align="LEFT">malloc</td>
            <td sdval="51020" sdnum="1033;" align="RIGHT">51020</td>
            <td sdval="51038" sdnum="1033;" align="RIGHT">51038</td>
            <td sdval="18" sdnum="1033;0;#,##0" align="RIGHT">18</td>
            <td sdnum="1033;0;0%" align="LEFT"><br>
            </td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_InternedStrings</td>
            <td align="LEFT">malloc</td>
            <td sdval="62828" sdnum="1033;" align="RIGHT">62828</td>
            <td sdval="50938" sdnum="1033;" align="RIGHT">50938</td>
            <td sdval="-11890" sdnum="1033;0;#,##0" align="RIGHT">-11,890</td>
            <td sdval="0.189246832622398" sdnum="1033;0;0%"
              align="RIGHT">19%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_NonbranchyTree</td>
            <td align="LEFT">malloc</td>
            <td sdval="51024" sdnum="1033;" align="RIGHT">51024</td>
            <td sdval="51016" sdnum="1033;" align="RIGHT">51016</td>
            <td sdval="-8" sdnum="1033;0;#,##0" align="RIGHT">-8</td>
            <td sdval="0.000156788962057064" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50673" sdnum="1033;" align="RIGHT">50673</td>
            <td sdval="50682" sdnum="1033;" align="RIGHT">50682</td>
            <td sdval="9" sdnum="1033;0;#,##0" align="RIGHT">9</td>
            <td sdval="-0.000177609377775223" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_Arrays</td>
            <td align="LEFT">malloc</td>
            <td sdval="50949" sdnum="1033;" align="RIGHT">50949</td>
            <td sdval="50943" sdnum="1033;" align="RIGHT">50943</td>
            <td sdval="-6" sdnum="1033;0;#,##0" align="RIGHT">-6</td>
            <td sdval="0.000117764823647226" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_NonbranchyTree1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50704" sdnum="1033;" align="RIGHT">50704</td>
            <td sdval="50718" sdnum="1033;" align="RIGHT">50718</td>
            <td sdval="14" sdnum="1033;0;#,##0" align="RIGHT">14</td>
            <td sdval="-0.000276112338277068" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_NonbranchyTree_TwoFields</td>
            <td align="LEFT">malloc</td>
            <td sdval="51042" sdnum="1033;" align="RIGHT">51042</td>
            <td sdval="51015" sdnum="1033;" align="RIGHT">51015</td>
            <td sdval="-27" sdnum="1033;0;#,##0" align="RIGHT">-27</td>
            <td sdval="0.000528976137298742" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Strings1</td>
            <td align="LEFT">malloc</td>
            <td sdval="52072" sdnum="1033;" align="RIGHT">52072</td>
            <td sdval="50681" sdnum="1033;" align="RIGHT">50681</td>
            <td sdval="-1391" sdnum="1033;0;#,##0" align="RIGHT">-1,391</td>
            <td sdval="0.0267130127515748" sdnum="1033;0;0%"
              align="RIGHT">3%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays_ArrayOf1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50692" sdnum="1033;" align="RIGHT">50692</td>
            <td sdval="50689" sdnum="1033;" align="RIGHT">50689</td>
            <td sdval="-3" sdnum="1033;0;#,##0" align="RIGHT">-3</td>
            <td sdval="0.0000591809358478912" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_Strings1</td>
            <td align="LEFT">malloc</td>
            <td sdval="52003" sdnum="1033;" align="RIGHT">52003</td>
            <td sdval="50709" sdnum="1033;" align="RIGHT">50709</td>
            <td sdval="-1294" sdnum="1033;0;#,##0" align="RIGHT">-1,294</td>
            <td sdval="0.0248831798165491" sdnum="1033;0;0%"
              align="RIGHT">2%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Strings_ArrayOf1</td>
            <td align="LEFT">malloc</td>
            <td sdval="52081" sdnum="1033;" align="RIGHT">52081</td>
            <td sdval="47632" sdnum="1033;" align="RIGHT">47632</td>
            <td sdval="-4449" sdnum="1033;0;#,##0" align="RIGHT">-4,449</td>
            <td sdval="0.0854246270232907" sdnum="1033;0;0%"
              align="RIGHT">9%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_InternedStrings_NonbranchyTree</td>
            <td align="LEFT">malloc</td>
            <td sdval="64031" sdnum="1033;" align="RIGHT">64031</td>
            <td sdval="50980" sdnum="1033;" align="RIGHT">50980</td>
            <td sdval="-13051" sdnum="1033;0;#,##0" align="RIGHT">-13,051</td>
            <td sdval="0.203823148162609" sdnum="1033;0;0%"
              align="RIGHT">20%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_InternedStrings1</td>
            <td align="LEFT">malloc</td>
            <td sdval="43035" sdnum="1033;" align="RIGHT">43035</td>
            <td sdval="40631" sdnum="1033;" align="RIGHT">40631</td>
            <td sdval="-2404" sdnum="1033;0;#,##0" align="RIGHT">-2,404</td>
            <td sdval="0.0558615080748228" sdnum="1033;0;0%"
              align="RIGHT">6%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_TwoFields_InternedStrings</td>
            <td align="LEFT">malloc</td>
            <td sdval="50953" sdnum="1033;" align="RIGHT">50953</td>
            <td sdval="50938" sdnum="1033;" align="RIGHT">50938</td>
            <td sdval="-15" sdnum="1033;0;#,##0" align="RIGHT">-15</td>
            <td sdval="0.000294388946676327" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_NonbranchyTree_TwoFields1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50708" sdnum="1033;" align="RIGHT">50708</td>
            <td sdval="50699" sdnum="1033;" align="RIGHT">50699</td>
            <td sdval="-9" sdnum="1033;0;#,##0" align="RIGHT">-9</td>
            <td sdval="0.000177486787094727" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_NonbranchyTree_ArrayOf</td>
            <td align="LEFT">malloc</td>
            <td sdval="51013" sdnum="1033;" align="RIGHT">51013</td>
            <td sdval="51008" sdnum="1033;" align="RIGHT">51008</td>
            <td sdval="-5" sdnum="1033;0;#,##0" align="RIGHT">-5</td>
            <td sdval="0.0000980142316664434" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_Arrays5M</td>
            <td align="LEFT">malloc</td>
            <td sdval="50949" sdnum="1033;" align="RIGHT">50949</td>
            <td sdval="50955" sdnum="1033;" align="RIGHT">50955</td>
            <td sdval="6" sdnum="1033;0;#,##0" align="RIGHT">6</td>
            <td sdval="-0.000117764823647226" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays_TwoFields</td>
            <td align="LEFT">malloc</td>
            <td sdval="50941" sdnum="1033;" align="RIGHT">50941</td>
            <td sdval="50955" sdnum="1033;" align="RIGHT">50955</td>
            <td sdval="14" sdnum="1033;0;#,##0" align="RIGHT">14</td>
            <td sdval="-0.000274827741897576" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays_ArrayOf</td>
            <td align="LEFT">malloc</td>
            <td sdval="50945" sdnum="1033;" align="RIGHT">50945</td>
            <td sdval="50949" sdnum="1033;" align="RIGHT">50949</td>
            <td sdval="4" sdnum="1033;0;#,##0" align="RIGHT">4</td>
            <td sdval="-0.0000785160467171586" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_NonbranchyTree1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50709" sdnum="1033;" align="RIGHT">50709</td>
            <td sdval="50738" sdnum="1033;" align="RIGHT">50738</td>
            <td sdval="29" sdnum="1033;0;#,##0" align="RIGHT">29</td>
            <td sdval="-0.000571890591413826" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Arrays_TwoFields1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50694" sdnum="1033;" align="RIGHT">50694</td>
            <td sdval="50710" sdnum="1033;" align="RIGHT">50710</td>
            <td sdval="16" sdnum="1033;0;#,##0" align="RIGHT">16</td>
            <td sdval="-0.000315619205428552" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Humongous_NonbranchyTree</td>
            <td align="LEFT">malloc</td>
            <td sdval="51018" sdnum="1033;" align="RIGHT">51018</td>
            <td sdval="51041" sdnum="1033;" align="RIGHT">51041</td>
            <td sdval="23" sdnum="1033;0;#,##0" align="RIGHT">23</td>
            <td sdval="-0.000450821278764391" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="19">Compact_NonbranchyTree_ArrayOf1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50728" sdnum="1033;" align="RIGHT">50728</td>
            <td sdval="50711" sdnum="1033;" align="RIGHT">50711</td>
            <td sdval="-17" sdnum="1033;0;#,##0" align="RIGHT">-17</td>
            <td sdval="0.000335120643431663" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Humongous_Arrays1</td>
            <td align="LEFT">malloc</td>
            <td sdval="50694" sdnum="1033;" align="RIGHT">50694</td>
            <td sdval="50699" sdnum="1033;" align="RIGHT">50699</td>
            <td sdval="5" sdnum="1033;0;#,##0" align="RIGHT">5</td>
            <td sdval="-0.000098631001696381" sdnum="1033;0;0%"
              align="RIGHT">0%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_InternedStrings_Strings</td>
            <td align="LEFT">malloc</td>
            <td sdval="63836" sdnum="1033;" align="RIGHT">63836</td>
            <td sdval="50865" sdnum="1033;" align="RIGHT">50865</td>
            <td sdval="-12971" sdnum="1033;0;#,##0" align="RIGHT">-12,971</td>
            <td sdval="0.203192555924557" sdnum="1033;0;0%"
              align="RIGHT">20%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Strings_TwoFields</td>
            <td align="LEFT">malloc</td>
            <td sdval="72703" sdnum="1033;" align="RIGHT">72703</td>
            <td sdval="50932" sdnum="1033;" align="RIGHT">50932</td>
            <td sdval="-21771" sdnum="1033;0;#,##0" align="RIGHT">-21,771</td>
            <td sdval="0.299451191835275" sdnum="1033;0;0%"
              align="RIGHT">30%</td>
          </tr>
          <tr>
            <td align="LEFT" height="18">Compact_Strings_ArrayOf</td>
            <td align="LEFT">malloc</td>
            <td sdval="66452" sdnum="1033;" align="RIGHT">66452</td>
            <td sdval="50932" sdnum="1033;" align="RIGHT">50932</td>
            <td sdval="-15520" sdnum="1033;0;#,##0" align="RIGHT">-15,520</td>
            <td sdval="0.233552037560946" sdnum="1033;0;0%"
              align="RIGHT">23%</td>
          </tr>
          <tr>
            <td align="RIGHT" height="18"><b>AVG DIFF (KB)</b></td>
            <td align="LEFT"><br>
            </td>
            <td align="LEFT"><br>
            </td>
            <td align="LEFT"><br>
            </td>
            <td sdval="-4442.12121212121" sdnum="1033;0;#,##0"
              align="RIGHT"><b>-4,442</b></td>
            <td sdval="0.0715152272975245" sdnum="1033;0;0.00%"
              align="RIGHT"><b>7.15%</b></td>
          </tr>
        </tbody>
      </table>
      <title></title>
      <meta name="GENERATOR" content="OpenOffice 4.1.1 (Unix)">
      <style>
                <!-- 
                BODY,DIV,TABLE,THEAD,TBODY,TFOOT,TR,TH,TD,P { font-family:"Arial"; font-size:x-small }
                 -->
        </style><br>
    </blockquote>
    <br>
  </body>
</html>