RFR: JDK-8240224 Allow building hotspot without the serial gc

Kim Barrett kim.barrett at oracle.com
Mon Mar 9 20:37:27 UTC 2020


> On Mar 9, 2020, at 4:30 AM, Magnus Ihse Bursie <magnus at ihse.net> wrote:
> 
> When reworking the JVM feature handling, I wanted to try to compile Hotspot with various features enabled/disabled. I quickly found out that it's not really possible to build hotspot without the serial gc. While this is not a terribly important use case, I think it's good to be able to select serial freely, just as with the other collectors.
> 
> With this patch it is possible to build a truly minimal JVM using 'configure --with-jvm-variants=custom --with-jvm-features=g1gc'.
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8240224
> WebRev: http://cr.openjdk.java.net/~ihse/JDK-8240224-building-without-serial-gc/webrev.01
> 
> /Magnus

I'm inclined to agree with David and Aleksey that this isn't really a
worthwhile exercise. Especially not if it involves making some
otherwise questionable or controversial changes.

In addition to the issues mentioned by David and Aleksey:

------------------------------------------------------------------------------
src/hotspot/share/gc/shared/gcConfig.cpp

I would instead suggest there should not be a default at all instead
of adding these cases, and the user must explicitly select the GC to
be used. Since we're talking about an atypical custom build anyway,
the user presumably knows what they are doing. And yeah, that makes
the buildjdk stuff elsewhere in this patch harder.

Really, I think this ought to just be left alone, along with most of
the other build-specific changes.

[This also responds to / agrees with Aleksey's comment about this part.]

------------------------------------------------------------------------------
src/hotspot/share/gc/shared/genCollectedHeap.cpp
 197 #if INCLUDE_SERIALGC
 198   MarkSweep::initialize();
 199 #endif

This whole file, and several associated files, are *only* used by
SerialGC now that CMS has been removed: JDK-8234502.

------------------------------------------------------------------------------
make/hotspot/lib/JvmFeatures.gmk 
  58 ifeq ($(JVM_VARIANT), custom)
  59   JVM_CFLAGS_FEATURES += -DVMTYPE=\"Custom\"
  60 endif

This change looks unrelated to whether serialgc is present or absent.
If so, it doesn't belong in this changeset at all.

------------------------------------------------------------------------------
make/hotspot/lib/JvmFeatures.gmk 
[removed]
 154   # If serial is disabled, we cannot use serial as OldGC in parallel
 155   JVM_EXCLUDE_FILES += psMarkSweep.cpp psMarkSweepDecorator.cpp

This was missed by JDK-8235860, which removed those files.  Good find.

------------------------------------------------------------------------------
test/hotspot/gtest/gc/shared/test_collectorPolicy.cpp

As originally written, this test was *only* testing SerialGC. It's not
obvious that it is actually GC-agnostic and can use the default GC if
that isn't SerialGC.  Certainly some of the naming suggests otherwise.
Was this tested with all the other configurations?

------------------------------------------------------------------------------




More information about the build-dev mailing list