<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    Hi John,<br>
    <br>
    First a high level question: I think your changes are correct, but
    this got a bit more complex than I thought it would be when I
    suggested it in the review of 7112743. Is the extra complexity worth
    the benefits of only having to do the iterations once instead of
    twice? I don't have a clear answer to this myself, I just wanted to
    bring the question up. Clearly it is more efficient, but it is 3x as
    much code to do the same thing.<br>
    <br>
    One detail for my understanding: why do we need separate time stamps
    for each worker? Do all worker not participate in RSet scanning
    before they go on to do
    <title>Snippet</title>
    complete_marking_in_collection_set() ?<br>
    <br>
    Bengt<br>
    <br>
    <br>
    On 2011-12-09 20:18, John Cuthbertson wrote:
    <blockquote cite="mid:4EE25EFE.9090902@oracle.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      Hi Everyone,<br>
      <br>
      Can I have a couple of volunteers to review the changes for this
      CR? The webrev can be found at: <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="http://cr.openjdk.java.net/%7Ejohnc/7119908/webrev.0/">http://cr.openjdk.java.net/~johnc/7119908/webrev.0/</a><br>
      <br>
      Summary:<br>
      As part of the code review comments for 7112743 (G1: Reduce
      overhead of marking closure during evacuation pauses) it was
      suggested that instead of recalculating the starting heap region
      for each worker thread, we reuse the values calculated during RSet
      scanning. These changes address that review comment. In these
      changes I maintain a cache that is used and updated by
      G1CollectedHeap::start_cset_region_for_worker(). The first time
      this routine is called by a worker thread during an evacuation
      pause (currently during RSet scanning) the cached value for the
      worker gets set; when the routine is called subsequently the
      region that was cached for the worker is returned. I employ a
      simple stamp mechanism based upon the number of GCs that ensures
      the validity of the regions in the cache and makes clearing the
      cache unnecessary.<br>
      <br>
      Testing:<br>
      GC Test suite with a small marking threshold (10%) with and
      without verification; the configuration of SPECjbb used to test
      7117423; Kitchensink.<br>
      <br>
      Thanks,<br>
      <br>
      JohnC<br>
      <br>
    </blockquote>
    <br>
  </body>
</html>