<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Thanks <big>Mikael!<br>
        <br>
      </big>On 2/23/16 4:15 AM, Mikael Gerdin wrote:<br>
    </div>
    <blockquote cite="mid:56CC234D.5000302@oracle.com" type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      <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>
    </blockquote>
    <br>
  </body>
</html>