<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Tao,<br>
    <br>
    Looks good.  Thanks for the changes.<br>
    <br>
    Jon<br>
    <br>
    <div class="moz-cite-prefix">On 11/14/2013 4:04 PM, Tao Mao wrote:<br>
    </div>
    <blockquote cite="mid:52856529.60407@oracle.com" type="cite">
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      Hi all,<br>
      <br>
      The webrev is updated.<br>
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
        href="http://cr.openjdk.java.net/%7Etamao/6521376/webrev.05/">http://cr.openjdk.java.net/~tamao/6521376/webrev.05/</a><br>
      <br>
      The suggestions for print formatting and assertions are taken.
      Good points! Thanks, Jon.<span class="moz-smiley-s1"><span> :-) </span></span><br>
      <br>
      Note the behaviors of -XX:+PrintTenuringDistribution<br>
      <br>
      (1) Parallel GC<br>
      <br>
      Before:<br>
      java -XX:+PrintTenuringDistribution TestFullGC<br>
      <br>
      Desired survivor size 11010048 bytes, new threshold 7 (max 15)<br>
      <br>
      After:<br>
      java -XX:+PrintTenuringDistribution TestFullGC<br>
      <br>
      Desired survivor size 524288 bytes, new threshold 7 (max threshold
      15)<br>
      <br>
      (2) Other collectors<br>
      <br>
      Before:<br>
      java -XX:+UseSerialGC -XX:+PrintTenuringDistribution TestFullGC<br>
      <br>
      Desired survivor size 65536 bytes, new threshold 1 (max 15)<br>
      - age   1:     131064 bytes,     131064 total<br>
      <br>
      After:<br>
      java -XX:+UseSerialGC -XX:+PrintTenuringDistribution TestFullGC<br>
      <br>
      Desired survivor size 65536 bytes, new threshold 1 (max threshold
      15)<br>
      - age   1:     131072 bytes,     131072 total<br>
      <br>
      <br>
      <br>
      On 11/14/13 8:32 AM, Jon Masamitsu wrote:
      <blockquote cite="mid:5284FB1A.6090608@oracle.com" type="cite">
        <meta content="text/html; charset=UTF-8"
          http-equiv="Content-Type">
        Tao,<br>
        <br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Etamao/6521376/webrev.04/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp.udiff.html">http://cr.openjdk.java.net/~tamao/6521376/webrev.04/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp.udiff.html</a><br>
        <br>
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <pre><span class="new">+         gclog_or_tty->print_cr("Desired survivor size " SIZE_FORMAT " bytes, new threshold %u (max threshold %u)",</span></pre>
        <br>
        What do you think of using UINTX_FORMAT instead of %u?  Just a
        little bit future proof?<br>
        <br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Etamao/6521376/webrev.04/src/share/vm/gc_implementation/shared/ageTable.cpp.udiff.html">http://cr.openjdk.java.net/~tamao/6521376/webrev.04/src/share/vm/gc_implementation/shared/ageTable.cpp.udiff.html</a><br>
        <br>
        Consider an assertion to check that MaxTenuringThreshold has one
        of the two expected values.<br>
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <pre><span class="new">+  uint result;</span>
<span class="new">+</span>
<span class="new">+  if (AlwaysTenure || NeverTenure) {</span>
<span class="new">+    result = MaxTenuringThreshold;</span>

assert(MaxTenuringThreshold == 0 || MaxTenuringThreshold == <meta http-equiv="content-type" content="text/html; charset=UTF-8"><span class="removed">markOopDesc::max_age + 1,
  errmsg("</span>MaxTenuringThreshold should be either 0 or " UINTX_FORMAT " and is " UINTX_FORMAT,
         MaxTenuringThreshold); 

<span class="new">+  } else {</span></pre>
        <br>
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <pre><span class="new">+      gclog_or_tty->print_cr("Desired survivor size " SIZE_FORMAT " bytes, new threshold %u (max threshold %u)",

Use UINTX_FORMAT?

That's all.  Rest looks good.

Jon
</span></pre>
        <br>
        <div class="moz-cite-prefix">On 11/13/13 4:36 PM, Tao Mao wrote:<br>
        </div>
        <blockquote cite="mid:52841B22.1080300@oracle.com" type="cite">Hi

          all, <br>
          <br>
          New webrev uploaded. <br>
          <a moz-do-not-send="true" class="moz-txt-link-freetext"
            href="http://cr.openjdk.java.net/%7Etamao/6521376/webrev.04/">http://cr.openjdk.java.net/~tamao/6521376/webrev.04/</a>
          <br>
          <br>
          Please see inline, Thomas. <br>
          <br>
          Thanks. <br>
          Tao <br>
          <br>
          On 11/12/13 2:42 AM, Thomas Schatzl wrote: <br>
          <blockquote type="cite">Hi, <br>
            <br>
               sorry for the late response... <br>
            <br>
            On Wed, 2013-11-06 at 16:43 -0800, Tao Mao wrote: <br>
            <blockquote type="cite">Hi all, <br>
              <br>
              A new webrev is updated <br>
              <a moz-do-not-send="true" class="moz-txt-link-freetext"
                href="http://cr.openjdk.java.net/%7Etamao/6521376/webrev.03/">http://cr.openjdk.java.net/~tamao/6521376/webrev.03/</a>
              <br>
              <br>
              It includes a thorough test, which is one good way to
              examine the <br>
              changeset. <br>
            </blockquote>
            Agree :) <br>
            <blockquote type="cite">Changeset: <br>
              <br>
              One point I want to discuss here is the validity of
              setting <br>
              -XX:MaxTenuringThreshold=16. The reason why I'd consider
              it valid is: <br>
              when NeverTenure is set, MaxTenuringThreshold is set to 16
              while <br>
              setting MaxTenuringThreshold=15 doesn't make sense here.
              Thus, <br>
              MaxTenuringThreshold=16 needs to be considered a valid
              setting. <br>
            </blockquote>
            I think I am fine with this. <br>
            <br>
            As for the test in TestObjectTenuringFlags: I think it would
            be more <br>
            clear if every test were a single method call instead of the
            <br>
            <br>
            vmOpts.clear(); <br>
            collections.addAll( ...test settings... ); <br>
            shouldFail = ... <br>
            expectedFlags = ... <br>
            runTest(...) <br>
            <br>
            e.g. as <br>
            <br>
            runTest(new String[] { test settings }, true /* should_fail
            */, new <br>
            ExpectedTenuringFlags( ... )); <br>
          </blockquote>
          Done. <br>
          <blockquote type="cite"> <br>
            I do not really like the use of the "vmOpts" global both in
            the main() <br>
            method and the ""runTenurinigFlagsConsistencyTest()". I do
            not think <br>
            there is need to save memory here, and that would save the
            test to reset <br>
            the "vmOpts" variable all the time. <br>
          </blockquote>
          Done. <br>
          <blockquote type="cite">I do not think the test needs to
            basically rethrow the RuntimeException <br>
            from checkTenurinigFlagsConsistency in
            checkTenurinigFlagsConsistency. <br>
            The test could just let it fall through (without try-catch).
            <br>
          </blockquote>
          Done. <br>
          <blockquote type="cite"> <br>
            Also checkTenurinigFlagsConsistency could fail fast on any
            incorrect <br>
            consistency check, with an explicit message for every type
            of failure <br>
            (e.g. "expected AlwaysTenure to be<alwaysTenure
            value>, is<actual <br>
            value>  instead"), instead of accumulating the error
            using the&& <br>
            operator. <br>
          </blockquote>
          Done. <br>
          <blockquote type="cite"> <br>
            The stack trace in the error will give you the failing test
            quickly, but <br>
            it's not bad to show the VM parameters that lead to the
            error. <br>
          </blockquote>
          Chose not to do so. The stack trace should be enough to track
          down. <br>
          <blockquote type="cite"> <br>
            There is also a typo in the
            "runTenurinigFlagsConsistencyTest" test <br>
            name, an additional "i". The same typo in <br>
            "checkTenurinigFlagsConsistency". <br>
          </blockquote>
          Done. <br>
          <blockquote type="cite"> <br>
            Otherwise looks good. <br>
            <br>
            Thanks, <br>
            Thomas <br>
            <br>
            <br>
          </blockquote>
        </blockquote>
        <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>