why does AOTLib::verify_config check for UseConcMarkSweepGC?

Christian Thalinger cthalinger at twitter.com
Tue Jun 20 21:06:24 UTC 2017

> On Jun 19, 2017, at 9:32 AM, Christian Thalinger <cthalinger at twitter.com> wrote:
>> On Jun 16, 2017, at 9:15 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>> What do you mean CMS does not affect code generation?
>> http://hg.openjdk.java.net/jdk9/dev/hotspot/file/232d93f11c49/src/share/vm/opto/graphKit.cpp#l3861 <http://hg.openjdk.java.net/jdk9/dev/hotspot/file/232d93f11c49/src/share/vm/opto/graphKit.cpp#l3861>
> I was talking about Graal code generation.  Vladimir, Igor and I were talking about this offline a bit and it seems there was not particular reason.  Let me double-check this with an experiment… 

Yeah, works perfectly fine:

$ java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:+UseConcMarkSweepGC -XX:+BootstrapJVMCI -XX:-TieredCompilation -Xlog:gc -version
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[0.049s][info][gc] Using Concurrent Mark Sweep
Bootstrapping JVMCI[2.158s][info][gc] GC(0) Pause Initial Mark 62M->62M(247M) 38.276ms
[2.158s][info][gc] GC(0) Concurrent Mark
[2.159s][info][gc] GC(0) Concurrent Mark 0.233ms
[2.159s][info][gc] GC(0) Concurrent Preclean
[2.160s][info][gc] GC(0) Concurrent Preclean 1.001ms
[2.160s][info][gc] GC(0) Concurrent Abortable Preclean
[2.189s][info][gc] GC(1) Pause Young (Allocation Failure) 68M->5M(247M) 5.912ms
.[2.392s][info][gc] GC(0) Concurrent Abortable Preclean 231.754ms
[2.416s][info][gc] GC(0) Pause Remark 72M->72M(247M) 24.786ms
[2.417s][info][gc] GC(0) Concurrent Sweep
[2.417s][info][gc] GC(0) Concurrent Sweep 0.023ms
[2.417s][info][gc] GC(0) Concurrent Reset
[2.452s][info][gc] GC(2) Pause Young (Allocation Failure) 74M->10M(247M) 24.979ms
[2.474s][info][gc] GC(0) Concurrent Reset 57.349ms
.[2.598s][info][gc] GC(3) Pause Young (Allocation Failure) 79M->9M(247M) 2.158ms
[2.736s][info][gc] GC(4) Pause Young (Allocation Failure) 77M->10M(247M) 3.090ms
[2.843s][info][gc] GC(5) Pause Young (Allocation Failure) 79M->13M(247M) 3.639ms
[2.959s][info][gc] GC(6) Pause Young (Allocation Failure) 81M->13M(247M) 4.449ms
[3.079s][info][gc] GC(7) Pause Young (Allocation Failure) 81M->16M(247M) 4.774ms
.[3.181s][info][gc] GC(8) Pause Young (Allocation Failure) 84M->19M(247M) 7.464ms
[3.283s][info][gc] GC(9) Pause Young (Allocation Failure) 88M->20M(247M) 4.406ms
[3.380s][info][gc] GC(10) Pause Young (Allocation Failure) 88M->21M(247M) 6.255ms
[3.471s][info][gc] GC(11) Pause Young (Allocation Failure) 90M->23M(247M) 3.892ms
. in 3317 ms (compiled 408 methods)
openjdk version "10-internal"
OpenJDK Runtime Environment (build 10-internal+0-adhoc.cthalinger.hs)
OpenJDK 64-Bit Server VM (build 10-internal+0-adhoc.cthalinger.hs, mixed mode, aot)

I will file a ticket to remove the code.

>> Vladimir
>> On 6/16/17 8:09 AM, Christian Thalinger wrote:
>>> Could someone remind me, why are we checking for UseConcMarkSweepGC?
>>> // Check flags
>>>   verify_flag(_config->_useCompressedOops, UseCompressedOops, "UseCompressedOops");
>>>   verify_flag(_config->_useCompressedClassPointers, UseCompressedClassPointers, "UseCompressedClassPointers");
>>>   verify_flag(_config->_useG1GC, UseG1GC, "UseG1GC");
>>>   verify_flag(_config->_useCMSGC, UseConcMarkSweepGC, "UseConcMarkSweepGC");
>>> useCMSGC does not affect code generation:
>>> ~/jdk9/hotspot$ ack useCMSGC
>>> src/jdk.aot/share/classes/jdk.tools.jaotc.binformat/src/jdk/tools/jaotc/binformat/BinaryContainer.java
>>> 303:                                   graalHotSpotVMConfig.useCMSGC,
>>> src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java
>>> 213:    public final boolean useCMSGC= getFlag("UseConcMarkSweepGC", Boolean.class);
>>> src/share/vm/aot/aotCodeHeap.cpp
>>> 155:  verify_flag(_config->_useCMSGC, UseConcMarkSweepGC, "UseConcMarkSweepGC");
>>> src/share/vm/aot/aotCodeHeap.hpp
>>> 105:  bool _useCMSGC;
>>> Is there some object-layout thing I am forgetting?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20170620/e6b1b558/attachment.html>

More information about the hotspot-compiler-dev mailing list