<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 8/14/13 4:04 PM, Bengt Rutisson
wrote:<br>
</div>
<blockquote cite="mid:520B8E64.4090704@oracle.com" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<br>
Hi all,<br>
<br>
Erik discovered a bug with the change for JDK-8023013 that I just
pushed. With my change we will do some unnecessary clearing of the
card table.<br>
<br>
Here's a webrev to fix that:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ebrutisso/8023021/webrev.00/">http://cr.openjdk.java.net/~brutisso/8023021/webrev.00/</a><br>
</blockquote>
<br>
Looks good to me.<br>
<br>
StefanK<br>
<blockquote cite="mid:520B8E64.4090704@oracle.com" type="cite"> <br>
Thanks Erik for finding this!<br>
<br>
From the bug report:<br>
<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
The fix for JDK-8023013 "Use specific generations rather than
generation iteration" introduced unnecessary clearing of the card
table. <br>
<br>
This loop (which existed both in CardTableRS::clear_into_younger()
and CardTableRS::invalidate_or_clear()): <br>
<br>
Generation* g = gen; <br>
for(Generation* prev_gen = gch->prev_gen(g); prev_gen !=
NULL; <br>
g = prev_gen, prev_gen = gch->prev_gen(g)) { <br>
… <br>
} <br>
<br>
was translated in to one call for the old generation and one for
the young generation. But this is wrong. The loop is actually not
a loop when we only have two generations. These methods are only
called with gen being the old generation, so the translation
should be to only do one call to the old generation. No work
should be done for the young generation. <br>
<br>
<br>
Thanks,<br>
Bengt<br>
</blockquote>
<br>
</body>
</html>