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