<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>