--- /dev/null 2019-11-19 22:05:02.069813242 -0800 +++ new/src/hotspot/share/gc/shared/gc_globals.cpp 2020-04-05 21:35:57.788448768 -0700 @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. 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. + * + */ + +#include "precompiled.hpp" +#include "gc/shared/jvmFlagConstraintsGC.hpp" +#include "gc/shared/referenceProcessor.hpp" + +// -- Define all JVM flags that have been declared in share/gc/shared/gc_globals.hpp + +#include "gc_globals.hpp" +#include "runtime/flags/jvmFlag.inline.hpp" +DEFN_PRODUCT_FLAG(UseSerialGC); +DEFN_PRODUCT_FLAG(UseG1GC); +DEFN_PRODUCT_FLAG(UseParallelGC); +DEFN_PRODUCT_FLAG(UseEpsilonGC); +DEFN_PRODUCT_FLAG(UseZGC); +DEFN_PRODUCT_FLAG(UseShenandoahGC); +DEFN_PRODUCT_FLAG(ParallelGCThreads); DEFN_PRODUCT_CONSTRAINT(ParallelGCThreads); +DEFN_PRODUCT_FLAG(UseSemaphoreGCThreadsSynchronization); +DEFN_PRODUCT_FLAG(UseDynamicNumberOfGCThreads); +DEFN_PRODUCT_FLAG(InjectGCWorkerCreationFailure); +DEFN_PRODUCT_FLAG(HeapSizePerGCThread); DEFN_PRODUCT_CUSTOM_RANGE(HeapSizePerGCThread); +DEFN_PRODUCT_FLAG(ConcGCThreads); DEFN_PRODUCT_CONSTRAINT(ConcGCThreads); +DEFN_PRODUCT_FLAG(AlwaysTenure); +DEFN_PRODUCT_FLAG(NeverTenure); +DEFN_PRODUCT_FLAG(ScavengeBeforeFullGC); +DEFN_PRODUCT_FLAG(ExplicitGCInvokesConcurrent); +DEFN_PRODUCT_FLAG(GCLockerEdenExpansionPercent); DEFN_PRODUCT_RANGE(GCLockerEdenExpansionPercent); +DEFN_PRODUCT_FLAG(GCLockerRetryAllocationCount); DEFN_PRODUCT_RANGE(GCLockerRetryAllocationCount); +DEFN_PRODUCT_FLAG(ParallelGCBufferWastePct); DEFN_PRODUCT_RANGE(ParallelGCBufferWastePct); +DEFN_PRODUCT_FLAG(TargetPLABWastePct); DEFN_PRODUCT_RANGE(TargetPLABWastePct); +DEFN_PRODUCT_FLAG(PLABWeight); DEFN_PRODUCT_RANGE(PLABWeight); +DEFN_PRODUCT_FLAG(ResizePLAB); +DEFN_PRODUCT_FLAG(ParGCArrayScanChunk); DEFN_PRODUCT_RANGE(ParGCArrayScanChunk); +DEFN_PRODUCT_FLAG(AlwaysPreTouch); +DEFN_PRODUCT_FLAG(PreTouchParallelChunkSize); DEFN_PRODUCT_RANGE(PreTouchParallelChunkSize); +DEFN_PRODUCT_FLAG(MarkStackSizeMax); DEFN_PRODUCT_RANGE(MarkStackSizeMax); +DEFN_PRODUCT_FLAG(MarkStackSize); DEFN_PRODUCT_RANGE(MarkStackSize); DEFN_PRODUCT_CONSTRAINT(MarkStackSize); +DEFN_PRODUCT_FLAG(RefDiscoveryPolicy); + // TODO: to avoid circular dependency, the min/max cannot be declared in header file + inline FLAG_TYPE_RefDiscoveryPolicy FLAG_MIN_RefDiscoveryPolicy() { return ReferenceProcessor::DiscoveryPolicyMin; } + inline FLAG_TYPE_RefDiscoveryPolicy FLAG_MAX_RefDiscoveryPolicy() { return ReferenceProcessor::DiscoveryPolicyMax; } + DEFN_PRODUCT_RANGE(RefDiscoveryPolicy); +DEFN_PRODUCT_FLAG(ParallelRefProcEnabled); +DEFN_PRODUCT_FLAG(ParallelRefProcBalancingEnabled); +DEFN_PRODUCT_FLAG(ReferencesPerThread); +DEFN_PRODUCT_FLAG(InitiatingHeapOccupancyPercent); DEFN_PRODUCT_RANGE(InitiatingHeapOccupancyPercent); +DEFN_NOTPROD_FLAG(ScavengeALot); +DEFN_DEVELOP_FLAG(FullGCALot); +DEFN_NOTPROD_FLAG(GCALotAtAllSafepoints); +DEFN_NOTPROD_FLAG(PromotionFailureALot); +DEFN_DEVELOP_FLAG(PromotionFailureALotCount); +DEFN_DEVELOP_FLAG(PromotionFailureALotInterval); +DEFN_PRODUCT_FLAG(WorkStealingSleepMillis); +DEFN_PRODUCT_FLAG(WorkStealingYieldsBeforeSleep); +DEFN_PRODUCT_FLAG(WorkStealingHardSpins); +DEFN_PRODUCT_FLAG(WorkStealingSpinToYieldRatio); +DEFN_DEVELOP_FLAG(ObjArrayMarkingStride); +DEFN_DEVELOP_FLAG(MetadataAllocationFailALot); +DEFN_DEVELOP_FLAG(MetadataAllocationFailALotInterval); +DEFN_PRODUCT_FLAG(ExecutingUnitTests); +DEFN_PRODUCT_FLAG_PD(UseTLAB); +DEFN_PRODUCT_FLAG_PD(ResizeTLAB); +DEFN_PRODUCT_FLAG(ZeroTLAB); +DEFN_PRODUCT_FLAG(TLABStats); +DEFN_PRODUCT_FLAG_PD(NeverActAsServerClassMachine); +DEFN_PRODUCT_FLAG(AlwaysActAsServerClassMachine); +DEFN_PRODUCT_FLAG_PD(MaxRAM); DEFN_PRODUCT_RANGE(MaxRAM); +DEFN_PRODUCT_FLAG(AggressiveHeap); +DEFN_PRODUCT_FLAG(ErgoHeapSizeLimit); DEFN_PRODUCT_RANGE(ErgoHeapSizeLimit); +DEFN_PRODUCT_FLAG(MaxRAMFraction); DEFN_PRODUCT_RANGE(MaxRAMFraction); +DEFN_PRODUCT_FLAG(MinRAMFraction); DEFN_PRODUCT_RANGE(MinRAMFraction); +DEFN_PRODUCT_FLAG(InitialRAMFraction); DEFN_PRODUCT_RANGE(InitialRAMFraction); +DEFN_PRODUCT_FLAG(MaxRAMPercentage); DEFN_PRODUCT_RANGE(MaxRAMPercentage); +DEFN_PRODUCT_FLAG(MinRAMPercentage); DEFN_PRODUCT_RANGE(MinRAMPercentage); +DEFN_PRODUCT_FLAG(InitialRAMPercentage); DEFN_PRODUCT_RANGE(InitialRAMPercentage); +DEFN_PRODUCT_FLAG(ActiveProcessorCount); +DEFN_DEVELOP_FLAG(MaxVirtMemFraction); +DEFN_PRODUCT_FLAG(UseAdaptiveSizePolicy); +DEFN_PRODUCT_FLAG(UsePSAdaptiveSurvivorSizePolicy); +DEFN_PRODUCT_FLAG(UseAdaptiveGenerationSizePolicyAtMinorCollection); +DEFN_PRODUCT_FLAG(UseAdaptiveGenerationSizePolicyAtMajorCollection); +DEFN_PRODUCT_FLAG(UseAdaptiveSizePolicyWithSystemGC); +DEFN_PRODUCT_FLAG(UseAdaptiveGCBoundary); +DEFN_DEVELOP_FLAG(PSAdaptiveSizePolicyResizeVirtualSpaceAlot); DEFN_DEVELOP_RANGE(PSAdaptiveSizePolicyResizeVirtualSpaceAlot); +DEFN_PRODUCT_FLAG(AdaptiveSizeThroughPutPolicy); DEFN_PRODUCT_RANGE(AdaptiveSizeThroughPutPolicy); +DEFN_PRODUCT_FLAG(AdaptiveSizePolicyInitializingSteps); DEFN_PRODUCT_RANGE(AdaptiveSizePolicyInitializingSteps); +DEFN_DEVELOP_FLAG(AdaptiveSizePolicyReadyThreshold); +DEFN_PRODUCT_FLAG(AdaptiveSizePolicyOutputInterval); DEFN_PRODUCT_RANGE(AdaptiveSizePolicyOutputInterval); +DEFN_PRODUCT_FLAG(UseAdaptiveSizePolicyFootprintGoal); +DEFN_PRODUCT_FLAG(AdaptiveSizePolicyWeight); DEFN_PRODUCT_RANGE(AdaptiveSizePolicyWeight); +DEFN_PRODUCT_FLAG(AdaptiveTimeWeight); DEFN_PRODUCT_RANGE(AdaptiveTimeWeight); +DEFN_PRODUCT_FLAG(PausePadding); DEFN_PRODUCT_RANGE(PausePadding); +DEFN_PRODUCT_FLAG(PromotedPadding); DEFN_PRODUCT_RANGE(PromotedPadding); +DEFN_PRODUCT_FLAG(SurvivorPadding); DEFN_PRODUCT_RANGE(SurvivorPadding); +DEFN_PRODUCT_FLAG(ThresholdTolerance); DEFN_PRODUCT_RANGE(ThresholdTolerance); +DEFN_PRODUCT_FLAG(AdaptiveSizePolicyCollectionCostMargin); DEFN_PRODUCT_RANGE(AdaptiveSizePolicyCollectionCostMargin); +DEFN_PRODUCT_FLAG(YoungGenerationSizeIncrement); DEFN_PRODUCT_RANGE(YoungGenerationSizeIncrement); +DEFN_PRODUCT_FLAG(YoungGenerationSizeSupplement); DEFN_PRODUCT_RANGE(YoungGenerationSizeSupplement); +DEFN_PRODUCT_FLAG(YoungGenerationSizeSupplementDecay); DEFN_PRODUCT_RANGE(YoungGenerationSizeSupplementDecay); +DEFN_PRODUCT_FLAG(TenuredGenerationSizeIncrement); DEFN_PRODUCT_RANGE(TenuredGenerationSizeIncrement); +DEFN_PRODUCT_FLAG(TenuredGenerationSizeSupplement); DEFN_PRODUCT_RANGE(TenuredGenerationSizeSupplement); +DEFN_PRODUCT_FLAG(TenuredGenerationSizeSupplementDecay); DEFN_PRODUCT_RANGE(TenuredGenerationSizeSupplementDecay); +DEFN_PRODUCT_FLAG(MaxGCPauseMillis); DEFN_PRODUCT_RANGE(MaxGCPauseMillis); DEFN_PRODUCT_CONSTRAINT(MaxGCPauseMillis); +DEFN_PRODUCT_FLAG(GCPauseIntervalMillis); DEFN_PRODUCT_CONSTRAINT(GCPauseIntervalMillis); +DEFN_PRODUCT_FLAG(MaxGCMinorPauseMillis); DEFN_PRODUCT_RANGE(MaxGCMinorPauseMillis); +DEFN_PRODUCT_FLAG(GCTimeRatio); DEFN_PRODUCT_RANGE(GCTimeRatio); +DEFN_PRODUCT_FLAG(AdaptiveSizeDecrementScaleFactor); DEFN_PRODUCT_RANGE(AdaptiveSizeDecrementScaleFactor); +DEFN_PRODUCT_FLAG(UseAdaptiveSizeDecayMajorGCCost); +DEFN_PRODUCT_FLAG(AdaptiveSizeMajorGCDecayTimeScale); DEFN_PRODUCT_RANGE(AdaptiveSizeMajorGCDecayTimeScale); +DEFN_PRODUCT_FLAG(MinSurvivorRatio); DEFN_PRODUCT_RANGE(MinSurvivorRatio); +DEFN_PRODUCT_FLAG(InitialSurvivorRatio); DEFN_PRODUCT_RANGE(InitialSurvivorRatio); +DEFN_PRODUCT_FLAG(BaseFootPrintEstimate); DEFN_PRODUCT_RANGE(BaseFootPrintEstimate); +DEFN_PRODUCT_FLAG(UseGCOverheadLimit); +DEFN_PRODUCT_FLAG(GCTimeLimit); DEFN_PRODUCT_RANGE(GCTimeLimit); +DEFN_PRODUCT_FLAG(GCHeapFreeLimit); DEFN_PRODUCT_RANGE(GCHeapFreeLimit); +DEFN_DEVELOP_FLAG(GCOverheadLimitThreshold); DEFN_DEVELOP_RANGE(GCOverheadLimitThreshold); +DEFN_PRODUCT_FLAG(PrefetchCopyIntervalInBytes); DEFN_PRODUCT_RANGE(PrefetchCopyIntervalInBytes); +DEFN_PRODUCT_FLAG(PrefetchScanIntervalInBytes); DEFN_PRODUCT_RANGE(PrefetchScanIntervalInBytes); +DEFN_PRODUCT_FLAG(PrefetchFieldsAhead); DEFN_PRODUCT_RANGE(PrefetchFieldsAhead); +DEFN_PRODUCT_FLAG(VerifyDuringStartup); +DEFN_PRODUCT_FLAG(VerifyBeforeExit); +DEFN_PRODUCT_FLAG(VerifyBeforeGC); +DEFN_PRODUCT_FLAG(VerifyAfterGC); +DEFN_PRODUCT_FLAG(VerifyDuringGC); +DEFN_PRODUCT_FLAG(VerifyGCType); +DEFN_PRODUCT_FLAG(VerifySubSet); +DEFN_PRODUCT_FLAG(GCParallelVerificationEnabled); +DEFN_PRODUCT_FLAG(DeferInitialCardMark); +DEFN_PRODUCT_FLAG(UseCondCardMark); +DEFN_PRODUCT_FLAG(VerifyRememberedSets); +DEFN_PRODUCT_FLAG(VerifyObjectStartArray); +DEFN_PRODUCT_FLAG(DisableExplicitGC); +DEFN_PRODUCT_FLAG(PrintGC); +DEFN_PRODUCT_FLAG(PrintGCDetails); +DEFN_DEVELOP_FLAG(ConcGCYieldTimeout); DEFN_DEVELOP_RANGE(ConcGCYieldTimeout); +DEFN_NOTPROD_FLAG(ScavengeALotInterval); +DEFN_NOTPROD_FLAG(FullGCALotInterval); +DEFN_NOTPROD_FLAG(FullGCALotStart); +DEFN_NOTPROD_FLAG(FullGCALotDummies); +DEFN_PRODUCT_FLAG(MinHeapSize); DEFN_PRODUCT_CONSTRAINT(MinHeapSize); +DEFN_PRODUCT_FLAG(InitialHeapSize); DEFN_PRODUCT_CONSTRAINT(InitialHeapSize); +DEFN_PRODUCT_FLAG(MaxHeapSize); DEFN_PRODUCT_CONSTRAINT(MaxHeapSize); +DEFN_PRODUCT_FLAG(SoftMaxHeapSize); DEFN_PRODUCT_CONSTRAINT(SoftMaxHeapSize); +DEFN_PRODUCT_FLAG(OldSize); DEFN_PRODUCT_RANGE(OldSize); +DEFN_PRODUCT_FLAG(NewSize); DEFN_PRODUCT_CONSTRAINT(NewSize); +DEFN_PRODUCT_FLAG(MaxNewSize); DEFN_PRODUCT_RANGE(MaxNewSize); +DEFN_PRODUCT_FLAG_PD(HeapBaseMinAddress); DEFN_PRODUCT_CONSTRAINT(HeapBaseMinAddress); +DEFN_PRODUCT_FLAG(PretenureSizeThreshold); DEFN_PRODUCT_RANGE(PretenureSizeThreshold); +DEFN_PRODUCT_FLAG(MinTLABSize); DEFN_PRODUCT_RANGE(MinTLABSize); DEFN_PRODUCT_CONSTRAINT(MinTLABSize); +DEFN_PRODUCT_FLAG(TLABSize); DEFN_PRODUCT_CONSTRAINT(TLABSize); +DEFN_PRODUCT_FLAG(YoungPLABSize); DEFN_PRODUCT_CONSTRAINT(YoungPLABSize); +DEFN_PRODUCT_FLAG(OldPLABSize); DEFN_PRODUCT_CONSTRAINT(OldPLABSize); +DEFN_PRODUCT_FLAG(TLABAllocationWeight); DEFN_PRODUCT_RANGE(TLABAllocationWeight); +DEFN_PRODUCT_FLAG(TLABWasteTargetPercent); DEFN_PRODUCT_RANGE(TLABWasteTargetPercent); +DEFN_PRODUCT_FLAG(TLABRefillWasteFraction); DEFN_PRODUCT_RANGE(TLABRefillWasteFraction); +DEFN_PRODUCT_FLAG(TLABWasteIncrement); DEFN_PRODUCT_RANGE(TLABWasteIncrement); DEFN_PRODUCT_CONSTRAINT(TLABWasteIncrement); +DEFN_PRODUCT_FLAG(SurvivorRatio); DEFN_PRODUCT_RANGE(SurvivorRatio); DEFN_PRODUCT_CONSTRAINT(SurvivorRatio); +DEFN_PRODUCT_FLAG(NewRatio); DEFN_PRODUCT_RANGE(NewRatio); +DEFN_PRODUCT_FLAG_PD(NewSizeThreadIncrease); DEFN_PRODUCT_RANGE(NewSizeThreadIncrease); +DEFN_PRODUCT_FLAG(QueuedAllocationWarningCount); DEFN_PRODUCT_RANGE(QueuedAllocationWarningCount); +DEFN_PRODUCT_FLAG(VerifyGCStartAt); DEFN_PRODUCT_RANGE(VerifyGCStartAt); +DEFN_PRODUCT_FLAG(VerifyGCLevel); DEFN_PRODUCT_RANGE(VerifyGCLevel); +DEFN_PRODUCT_FLAG(MaxTenuringThreshold); + // TODO: to avoid circular dependency, the min/max cannot be declared in header file + inline FLAG_TYPE_MaxTenuringThreshold FLAG_MIN_MaxTenuringThreshold() { return 0; } + inline FLAG_TYPE_MaxTenuringThreshold FLAG_MAX_MaxTenuringThreshold() { return markWord::max_age + 1; } + DEFN_PRODUCT_RANGE(MaxTenuringThreshold); DEFN_PRODUCT_CONSTRAINT(MaxTenuringThreshold); +DEFN_PRODUCT_FLAG(InitialTenuringThreshold); + // TODO: to avoid circular dependency, the min/max cannot be declared in header file + inline FLAG_TYPE_InitialTenuringThreshold FLAG_MIN_InitialTenuringThreshold() { return 0; } + inline FLAG_TYPE_InitialTenuringThreshold FLAG_MAX_InitialTenuringThreshold() { return markWord::max_age + 1; } + DEFN_PRODUCT_RANGE(InitialTenuringThreshold); DEFN_PRODUCT_CONSTRAINT(InitialTenuringThreshold); +DEFN_PRODUCT_FLAG(TargetSurvivorRatio); DEFN_PRODUCT_RANGE(TargetSurvivorRatio); +DEFN_PRODUCT_FLAG(MarkSweepDeadRatio); DEFN_PRODUCT_RANGE(MarkSweepDeadRatio); +DEFN_PRODUCT_FLAG(MarkSweepAlwaysCompactCount); DEFN_PRODUCT_RANGE(MarkSweepAlwaysCompactCount); +DEFN_DEVELOP_FLAG(GCExpandToAllocateDelayMillis); +DEFN_PRODUCT_FLAG(GCDrainStackTargetSize); DEFN_PRODUCT_RANGE(GCDrainStackTargetSize);