<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">I'm working on a new webrev, so please
      hold off on reviewing.<br>
      <br>
      Some offline comments from Kim suggest trying another approach.
      Any other approach :-) He rightly pointed out the poor match
      between the new code and <span class="new"><span class="new">ConcurrentMarkSweepThread
          is pretty ugly. <br>
        </span></span><br>
      <span class="new"><span class="new"><span class="new"><span
              class="new">Two other options I'm looking at are either
              having </span></span><span class="new"><span class="new">ConcurrentMarkSweepThread
              not subclass from </span></span><span class="new"></span><span
            class="new"><span class="new">ConcurrentGCThread, or (more
              likely) refactor </span></span><span class="new"><span
              class="new">ConcurrentMarkSweepThread to use the common
              termination protocol instead of doing it's own thing. </span></span>The
          approach of adding an intermediate class that handles the
          common code being factored out was rejected in review comments
          for "8138920". </span></span><span class="new"><span
          class="new"><br>
          <br>
           - Derek</span></span><br>
      <br>
      On 2/26/16 11:56 AM, Derek White wrote:<br>
    </div>
    <blockquote cite="mid:56D083A7.4090000@oracle.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <span class="new"><b>Background</b>:<br>
        ConcurrentGCThread provides incomplete support for an
        initialization and termination protocol for GC threads, so
        missing parts are duplicated in almost all subclasses.<br>
        <br>
        <b>Fix</b>:<br>
        Move duplicated </span><span class="new">run(), and stop()
        methods up from subclasses </span><span class="new">
        <meta http-equiv="content-type" content="text/html;
          charset=utf-8">
        ConcurrentG1RefineThread, </span><span class="new">
        <meta http-equiv="content-type" content="text/html;
          charset=utf-8">
        ConcurrentMarkThread, G1StringDedupThread, and
        G1YoungRemSetSamplingThread to </span><span class="new"><span
          class="new">ConcurrentGCThread, as well as declare virtual
          methods </span></span><span class="new"><span class="new">run_service()

          and stop_service.<br>
          <br>
          Note that ConcurrentMarkSweepThread is the odd-ball subclass.
          It implements it's own termination protocol, it provides it's
          own run() and stop() methods, and does not use </span></span><span
        class="new"><span class="new">run_service() and stop_service().</span></span><br>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <span class="new"></span><br>
      <b>Bug</b>: <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="https://bugs.openjdk.java.net/browse/JDK-8140257">https://bugs.openjdk.java.net/browse/JDK-8140257</a><br>
      <b>Webrev</b>: <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="http://cr.openjdk.java.net/%7Edrwhite/8140257/webrev.01/">http://cr.openjdk.java.net/~drwhite/8140257/webrev.01/</a><br>
      <br>
      <b>Tests</b>: jprt, Aurora "nightly" run (I think this is OK)<br>
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://aurora.ru.oracle.com/faces/Batch.xhtml?batchName=1325690.VMSQE.adhoc.JPRT">http://aurora.ru.oracle.com/faces/Batch.xhtml?batchName=1325690.VMSQE.adhoc.JPRT</a>
    </blockquote>
    <br>
  </body>
</html>