<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>On 2018-11-26 23:47, Erik Joelsson wrote:<br>
    </p>
    <blockquote
      cite="mid:38e57ae2-dce8-6d79-b172-302899312ff9@oracle.com"
      type="cite">Build changes look ok to me.
      <br>
    </blockquote>
    I agree, but I'd like to point out a (possible) style improvement.
    In hotspot.m4, <br>
    <pre style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(238, 238, 238); text-decoration: none;"><span class="new" style="color: blue; font-weight: normal;"> if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" || test "x$OPENJDK_TARGET_CPU" == "xx86"; then</span></pre>
    can be more succinctly expressed as<br>
    <pre style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(238, 238, 238); text-decoration: none;"><span class="new" style="color: blue; font-weight: normal;"> if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then</span></pre>
    <br>
    But it's a matter of preference, if you do not want to change.
    Otherwise it looks good!<br>
    <br>
    /Magnus<br>
    <blockquote
      cite="mid:38e57ae2-dce8-6d79-b172-302899312ff9@oracle.com"
      type="cite">
      <br>
      /Erik
      <br>
      <br>
      On 2018-11-26 13:39, Roman Kennke wrote:
      <br>
      <blockquote type="cite">Hi,
        <br>
        <br>
        This is the first round of changes for including Shenandoah GC
        into
        <br>
        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
        <br>
        changes and
        <br>
        'shenandoah' code changes (actually, mostly additions). The
        intend is to
        <br>
        eventually
        <br>
        push them as single 'combined' changeset, once reviewed.
        <br>
        <br>
        JEP:
        <br>
           <a class="moz-txt-link-freetext" href="https://openjdk.java.net/jeps/189">https://openjdk.java.net/jeps/189</a>
        <br>
        Bug entry:
        <br>
        <br>
          <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8214259">https://bugs.openjdk.java.net/browse/JDK-8214259</a>
        <br>
        <br>
        Webrevs:
        <br>
           <a class="moz-txt-link-freetext" 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
        <br>
        shenandoah-complete
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-complete/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-complete/></a>
        <br>
        directory,
        <br>
        it contains the full combined webrev. Alternatively, there is
        the file
        <br>
        shenandoah-master.patch
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-master.patch"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-master.patch></a>,
        <br>
        which is what I intend to commit (and which should be equivalent
        to the
        <br>
        'shenandoah-complete' webrev).
        <br>
        <br>
        Sections to review (at this point) are the following:
        <br>
          *) shenandoah-gc
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-gc/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-gc/></a>
        <br>
             - Actual Shenandoah implementation, almost completely
        residing in
        <br>
        gc/shenandoah
        <br>
        <br>
          *) shared-gc
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-gc/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/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
        <br>
        fail (next to CMS and G1)
        <br>
             - taskqueue.hpp has some small adjustments to enable
        subclassing
        <br>
        <br>
          *) shared-serviceability
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-serviceability/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-serviceability/></a>
        <br>
             - The usual code to support another GC
        <br>
        <br>
          *) shared-runtime
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-runtime/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-runtime/></a>
        <br>
             - A number of friends declarations to allow Shenandoah
        iterators to
        <br>
        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
        <br>
        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
        <br>
        Shenandoah's logging
        <br>
             - The usual macros in macro.hpp
        <br>
        <br>
          *) shared-build
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-build/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-build/></a>
        <br>
             - Add shenandoah feature, enabled by default, as agreed
        with
        <br>
        Vladimir K. beforehand
        <br>
             - Some flags for shenandoah-enabled compilation to get
        <br>
        SUPPORT_BARRIER_ON_PRIMITIVES
        <br>
               and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
        <br>
        Shenandoah's barriers
        <br>
             - --param inline-unit-growth=1000 settings for 2 shenandoah
        source
        <br>
        files, which is
        <br>
               useful to get the whole marking loop inlined (observed
        significant
        <br>
        regression if we
        <br>
               don't)
        <br>
        <br>
          *) shared-tests
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shared-tests/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/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
        <br>
        run with it
        <br>
        <br>
          *) shenandoah-tests
        <br>
<a class="moz-txt-link-rfc2396E" href="http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-tests/"><http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/shenandoah-tests/></a>
        <br>
             - Shenandoah specific tests, most reside in gc/shenandoah
        subdirectory
        <br>
             - A couple of tests configurations have been added, e.g.
        <br>
        TestGCBasherWithShenandoah.java
        <br>
        <br>
        I intentionally left out shared-compiler for now, because we
        have some
        <br>
        work left to do
        <br>
        there, but if you click around you'll find the patch anyway, in
        case you
        <br>
        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
        <br>
        <br>
        <br>
        I'd like to thank my collegues at Red Hat: Christine Flood, she
        deserves
        <br>
        the credit for being the original inventor of Shenandoah,
        Aleksey
        <br>
        Shiplëv, Roland Westrelin & Zhengyu Gu for their countless
        <br>
        contributions, everybody else in Red Hat's OpenJDK team for
        testing,
        <br>
        advice and support, my collegues in Oracle's GC, runtime and
        compiler
        <br>
        teams for tirelessly helping with and reviewing all the GC
        interface and
        <br>
        related changes, and of course the many early adopters for
        reporting
        <br>
        bugs and success stories and feature requests: we wouldn't be
        here
        <br>
        without any of you!
        <br>
        <br>
        Best regards,
        <br>
        Roman
        <br>
        <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>