<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hi,<br>
      <br>
      This is the first round of changes for including Shenandoah GC
      into mainline. <br>
      I divided the review into parts that roughly correspond to the
      mailing lists<br>
      that would normally review it, and I divided it into 'shared' code
      changes and<br>
      'shenandoah' code changes (actually, mostly additions). The intend
      is to eventually<br>
      push them as single 'combined' changeset, once reviewed.<br>
      <br>
      JEP: <br>
        <a moz-do-not-send="true"
        href="https://openjdk.java.net/jeps/189">https://openjdk.java.net/jeps/189</a><br>
      Bug entry:</p>
    <p> <a moz-do-not-send="true"
        href="https://bugs.openjdk.java.net/browse/JDK-8214259">https://bugs.openjdk.java.net/browse/JDK-8214259</a><br>
    </p>
    <p>Webrevs:<br>
        <a moz-do-not-send="true"
        href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/">http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/</a><br>
      <br>
      For those who want to see the full change, have a look at the <a
        moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-complete/">shenandoah-complete</a>
      directory,<br>
      it contains the full combined webrev. Alternatively, there is the
      file <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-master.patch">shenandoah-master.patch</a>,<br>
      which is what I intend to commit (and which should be equivalent
      to the 'shenandoah-complete' webrev).<br>
      <br>
      Sections to review (at this point) are the following:<br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-gc/">shenandoah-gc</a><br>
          - Actual Shenandoah implementation, almost completely residing
      in gc/shenandoah<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-gc/">shared-gc</a><br>
          - This is mostly boilerplate that is common to any GC<br>
          - referenceProcessor.cpp has a little change to make one
      assert not fail (next to CMS and G1)<br>
          - taskqueue.hpp has some small adjustments to enable
      subclassing<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-serviceability/">shared-serviceability</a><br>
          - The usual code to support another GC<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-runtime/">shared-runtime</a><br>
          - A number of friends declarations to allow Shenandoah
      iterators to hook up with,<br>
            e.g. ClassLoaderData, CodeCache, etc<br>
          - Warning and disabling JFR LeakProfiler<br>
          - fieldDescriptor.hpp added is_stable() accessor, for use in
      Shenandoah C2 optimizations<br>
          - Locks initialization in mutexLocker.cpp as usual<br>
          - VM operations defines for Shenandoah's VM ops<br>
          - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
      Shenandoah's logging<br>
          - The usual macros in macro.hpp<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-build/">shared-build</a><br>
          - Add shenandoah feature, enabled by default, as agreed with
      Vladimir K. beforehand<br>
          - Some flags for shenandoah-enabled compilation to get
      SUPPORT_BARRIER_ON_PRIMITIVES<br>
            and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
      Shenandoah's barriers<br>
          - --param inline-unit-growth=1000 settings for 2 shenandoah
      source files, which is<br>
            useful to get the whole marking loop inlined (observed
      significant regression if we<br>
            don't)<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-tests/">shared-tests</a><br>
          - Test infrastructure to support Shenandoah<br>
          - Shenandoah test groups<br>
          - Exclude Shenandoah in various tests that can be run with
      selected GC<br>
          - Enable/add configure for Shenandoah for tests that make
      sense to run with it<br>
      <br>
       *) <a moz-do-not-send="true"
href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-tests/">shenandoah-tests</a><br>
          - Shenandoah specific tests, most reside in gc/shenandoah
      subdirectory<br>
          - A couple of tests configurations have been added, e.g.
      TestGCBasherWithShenandoah.java<br>
      <br>
      I intentionally left out shared-compiler for now, because we have
      some work left to do<br>
      there, but if you click around you'll find the patch anyway, in
      case you want to take<br>
      a peek at it.<br>
      <br>
      We have regular builds on:<br>
        - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}<br>
        - {Windows} x {x86_64}, <br>
        - {MacOS X} x {x86_64}<br>
      <br>
      This also routinely passes:<br>
        - the new Shenandoah tests<br>
        - jcstress with/without aggressive Shenandoah verification<br>
        - specjvm2008 with/without aggressive Shenandoah verification</p>
    <p><br>
      I'd like to thank my collegues at Red Hat: Christine Flood, she
      deserves the credit for being the original inventor of Shenandoah,
      Aleksey Shiplëv, Roland Westrelin & Zhengyu Gu for their
      countless contributions, everybody else in Red Hat's OpenJDK team
      for testing, advice and support, my collegues in Oracle's GC,
      runtime and compiler teams for tirelessly helping with and
      reviewing all the GC interface and related changes, and of course
      the many early adopters for reporting bugs and success stories and
      feature requests: we wouldn't be here without any of you!<br>
      <br>
      Best regards,<br>
      Roman<br>
      <br>
    </p>
  </body>
</html>