# HG changeset patch # User shade # Date 1554973512 -7200 # Thu Apr 11 11:05:12 2019 +0200 # Node ID f02fe8fbee3b65e90a8b973ddc6cb159b1015098 # Parent 9d0ae9508d5337b0dc7cc4684be42888c4023755 Graal support for Epsilon GC diff -r 9d0ae9508d53 -r f02fe8fbee3b src/hotspot/share/jvmci/jvmci_globals.cpp --- a/src/hotspot/share/jvmci/jvmci_globals.cpp Wed Apr 10 20:03:07 2019 +0200 +++ b/src/hotspot/share/jvmci/jvmci_globals.cpp Thu Apr 11 11:05:12 2019 +0200 @@ -117,7 +117,7 @@ void JVMCIGlobals::check_jvmci_supported_gc() { if (EnableJVMCI) { // Check if selected GC is supported by JVMCI and Java compiler - if (!(UseSerialGC || UseParallelGC || UseParallelOldGC || UseG1GC)) { + if (!(UseSerialGC || UseParallelGC || UseParallelOldGC || UseG1GC || UseEpsilonGC)) { vm_exit_during_initialization("JVMCI Compiler does not support selected GC", GCConfig::hs_err_name()); FLAG_SET_DEFAULT(EnableJVMCI, false); FLAG_SET_DEFAULT(UseJVMCICompiler, false); diff -r 9d0ae9508d53 -r f02fe8fbee3b src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java --- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java Wed Apr 10 20:03:07 2019 +0200 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java Thu Apr 11 11:05:12 2019 +0200 @@ -157,6 +157,7 @@ } public final boolean useG1GC = getFlag("UseG1GC", Boolean.class); + public final boolean useEpsilonGC = getFlag("UseEpsilonGC", Boolean.class); public final boolean useCMSGC = getFlag("UseConcMarkSweepGC", Boolean.class); public final int allocatePrefetchStyle = getFlag("AllocatePrefetchStyle", Integer.class); diff -r 9d0ae9508d53 -r f02fe8fbee3b src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java --- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java Wed Apr 10 20:03:07 2019 +0200 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java Thu Apr 11 11:05:12 2019 +0200 @@ -227,9 +227,9 @@ Parallel(true, "UseParallelGC", "UseParallelOldGC", "UseParNewGC"), CMS(true, "UseConcMarkSweepGC"), G1(true, "UseG1GC"), + Epsilon(true, "UseEpsilonGC"), // Unsupported GCs - Epsilon(false, "UseEpsilonGC"), Z(false, "UseZGC"); HotSpotGC(boolean supported, String... flags) { diff -r 9d0ae9508d53 -r f02fe8fbee3b src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/gc/epsilon/EpsilonBarrierSet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/gc/epsilon/EpsilonBarrierSet.java Thu Apr 11 11:05:12 2019 +0200 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2019, Red Hat Inc. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +package org.graalvm.compiler.hotspot.gc.epsilon; + +import org.graalvm.compiler.hotspot.gc.shared.BarrierSet; +import org.graalvm.compiler.nodes.StructuredGraph; +import org.graalvm.compiler.nodes.extended.ArrayRangeWrite; +import org.graalvm.compiler.nodes.java.AbstractCompareAndSwapNode; +import org.graalvm.compiler.nodes.java.LoweredAtomicReadAndWriteNode; +import org.graalvm.compiler.nodes.memory.ReadNode; +import org.graalvm.compiler.nodes.memory.WriteNode; + +public class EpsilonBarrierSet extends BarrierSet { + + @Override + public void addReadNodeBarriers(ReadNode node, StructuredGraph graph) { + // Do nothing + } + + @Override + public void addWriteNodeBarriers(WriteNode node, StructuredGraph graph) { + // Do nothing + } + + @Override + public void addAtomicReadWriteNodeBarriers(LoweredAtomicReadAndWriteNode node, StructuredGraph graph) { + // Do nothing + } + + @Override + public void addCASBarriers(AbstractCompareAndSwapNode node, StructuredGraph graph) { + // Do nothing + } + + @Override + public void addArrayRangeBarriers(ArrayRangeWrite write, StructuredGraph graph) { + // Do nothing + } + +} diff -r 9d0ae9508d53 -r f02fe8fbee3b src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java --- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java Wed Apr 10 20:03:07 2019 +0200 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java Thu Apr 11 11:05:12 2019 +0200 @@ -28,6 +28,7 @@ import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig; import org.graalvm.compiler.hotspot.gc.g1.G1BarrierSet; +import org.graalvm.compiler.hotspot.gc.epsilon.EpsilonBarrierSet; import org.graalvm.compiler.hotspot.gc.shared.BarrierSet; import org.graalvm.compiler.hotspot.gc.shared.CardTableBarrierSet; import org.graalvm.compiler.nodes.StructuredGraph; @@ -78,6 +79,8 @@ private BarrierSet createBarrierSet(GraalHotSpotVMConfig config) { if (config.useG1GC) { return createG1BarrierSet(); + } else if (config.useEpsilonGC) { + return createEpsilonBarrierSet(); } else { return createCardTableBarrierSet(); } @@ -90,4 +93,8 @@ protected BarrierSet createG1BarrierSet() { return new G1BarrierSet(); } + + protected BarrierSet createEpsilonBarrierSet() { + return new EpsilonBarrierSet(); + } }