8047328: Improve memory usage for cards in SparsePRTEntry
Summary: Use uint16_t for cards in a SparsePRTEntry, and use an additional integer to record the current position on where to add the next card.
Reviewed-by: mgerdin, ehelin
Contributed-by: Andreas Sjoberg <andreas.sjoberg@oracle.com>, Thomas Schatzl <thomas.schatzl@oracle.com>
#
# Copyright (c) 2013, 2016, 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.
#
# Profile-based Test Group Definitions
#
# These groups define the tests that cover the different possible runtimes:
# - compact1, compact2, compact3, full JRE, JDK
#
# In addition they support testing of the minimal VM on compact1 and compact2.
# Essentially this defines groups based around the specified API's and VM
# services available in the runtime.
#
# The groups are defined hierarchically in two forms:
# - The need_xxx groups list all the tests that have a dependency on
# a specific profile. This is either because it tests a feature in
# that profile, or the test infrastructure uses a feature in that
# profile.
# - The primary groups are defined in terms of the other primary groups
# combined with the needs_xxx groups (including and excluding them as
# appropriate). For example the jre can run all tests from compact3, plus
# those from needs_jre, but excluding those from need_jdk.
#
# The bottom group defines all the actual tests to be considered, simply
# by listing the top-level test directories.
#
# To use a group simply list it on the jtreg command line eg:
# jtreg :jdk
# runs all tests. While
# jtreg :compact2
# runs those tests that only require compact1 and compact2 API's.
#
hotspot_all = \
/
hotspot_compiler = \
compiler
hotspot_gc = \
gc
hotspot_runtime = \
runtime
hotspot_serviceability = \
serviceability
hotspot_misc = \
/ \
-:hotspot_compiler \
-:hotspot_gc \
-:hotspot_runtime \
-:hotspot_serviceability
# Full JDK can run all tests
#
jdk = \
:jre \
:needs_jdk
# Tests that require a full JDK to execute. Either they test a feature
# only in the JDK or they use tools that are only in the JDK. The latter
# can be resolved in some cases by using tools from the compile-jdk.
#
needs_jdk = \
gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java \
gc/metaspace/TestMetaspacePerfCounters.java \
gc/metaspace/TestPerfCountersAndMemoryPools.java \
runtime/6819213/TestBootNativeLibraryPath.java \
runtime/7158988/FieldMonitor.java \
runtime/Metaspace/FragmentMetaspace.java \
runtime/NMT/BaselineWithParameter.java \
runtime/NMT/JcmdBaselineDetail.java \
runtime/NMT/JcmdDetailDiff.java \
runtime/NMT/JcmdScaleDetail.java \
runtime/NMT/JcmdScale.java \
runtime/NMT/JcmdSummaryDiff.java \
runtime/NMT/JcmdWithNMTDisabled.java \
runtime/NMT/MallocRoundingReportTest.java \
runtime/NMT/MallocSiteHashOverflow.java \
runtime/NMT/MallocStressTest.java \
runtime/NMT/MallocTestType.java \
runtime/NMT/MallocTrackingVerify.java \
runtime/NMT/ReleaseCommittedMemory.java \
runtime/NMT/ReleaseNoCommit.java \
runtime/NMT/ShutdownTwice.java \
runtime/NMT/SummaryAfterShutdown.java \
runtime/NMT/SummarySanityCheck.java \
runtime/NMT/ThreadedMallocTestType.java \
runtime/NMT/ThreadedVirtualAllocTestType.java \
runtime/NMT/VirtualAllocCommitUncommitRecommit.java \
runtime/NMT/VirtualAllocTestType.java \
runtime/RedefineObject/TestRedefineObject.java \
runtime/Thread/TestThreadDumpMonitorContention.java \
runtime/Thread/ThreadPriorities.java \
runtime/XCheckJniJsig/XCheckJSig.java \
serviceability/attach/AttachWithStalePidFile.java \
serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java \
serviceability/dcmd/vm/DynLibsTest.java \
serviceability/tmtools
# JRE adds further tests to compact3
#
jre = \
:compact3 \
:needs_jre \
-:needs_jdk
# Tests that require the full JRE
#
needs_jre = \
compiler/c2/6852078/Test6852078.java \
compiler/c2/7047069/Test7047069.java \
runtime/6294277/SourceDebugExtension.java \
runtime/ClassFile/JsrRewriting.java \
runtime/ClassFile/OomWhileParsingRepeatedJsr.java \
runtime/SharedArchiveFile/LimitSharedSizes.java \
runtime/SharedArchiveFile/SpaceUtilizationCheck.java
# Compact 3 adds further tests to compact2
#
compact3 = \
:compact2 \
:needs_compact3 \
-:needs_jre \
-:needs_jdk
# Tests that require compact3 API's
#
needs_compact3 = \
gc/TestFullGCCount.java \
gc/arguments/TestG1HeapRegionSize.java \
gc/arguments/TestDynMinHeapFreeRatio.java \
gc/arguments/TestDynMaxHeapFreeRatio.java \
gc/cms/TestMBeanCMS.java \
gc/g1/TestHumongousAllocInitialMark.java \
gc/g1/TestShrinkAuxiliaryData00.java \
gc/g1/TestShrinkAuxiliaryData05.java \
gc/g1/TestShrinkAuxiliaryData10.java \
gc/g1/TestShrinkAuxiliaryData15.java \
gc/g1/TestShrinkAuxiliaryData20.java \
gc/g1/TestShrinkAuxiliaryData25.java \
gc/g1/TestShrinkAuxiliaryData30.java \
gc/metaspace/TestMetaspaceMemoryPool.java \
gc/survivorAlignment \
runtime/InternalApi/ThreadCpuTimesDeadlock.java \
runtime/NMT/JcmdSummaryDiff.java \
runtime/RedefineTests/RedefineAnnotations.java
serviceability/sa/jmap-hashcode/Test8028623.java \
serviceability/threads/TestFalseDeadLock.java \
compiler/codecache/jmx \
compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java \
compiler/rangechecks/TestRangeCheckSmearing.java \
compiler/whitebox/DeoptimizeMultipleOSRTest.java \
serviceability/dcmd \
testlibrary_tests/whitebox/vm_flags
# Compact 2 adds full VM tests
compact2 = \
:compact2_minimal \
:compact1 \
:needs_full_vm_compact2 \
-:needs_compact3 \
-:needs_jre \
-:needs_jdk
# Tests that require compact2 API's and a full VM
#
needs_full_vm_compact2 =
# Compact 1 adds full VM tests
#
compact1 = \
:compact1_minimal \
:needs_full_vm_compact1 \
-:needs_compact2 \
-:needs_full_vm_compact2 \
-:needs_compact3 \
-:needs_jre \
-:needs_jdk
# Tests that require compact1 API's and a full VM
#
needs_full_vm_compact1 = \
runtime/NMT \
gc/g1/TestRegionAlignment.java \
gc/g1/TestShrinkToOneRegion.java \
gc/metaspace/G1AddMetaspaceDependency.java \
gc/startup_warnings/TestCMS.java \
gc/startup_warnings/TestDefNewCMS.java \
gc/startup_warnings/TestParallelGC.java \
gc/startup_warnings/TestParallelScavengeSerialOld.java \
gc/startup_warnings/TestParNewCMS.java \
gc/startup_warnings/TestParNewSerialOld.java \
runtime/SharedArchiveFile/SharedArchiveFile.java
# Minimal VM on Compact 2 adds in some compact2 tests
#
compact2_minimal = \
:compact1_minimal \
:needs_compact2 \
-:needs_full_vm_compact2 \
-:needs_compact3 \
-:needs_jre \
-:needs_jdk
# Tests that require compact2 API's
#
needs_compact2 = \
compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java
# All tests that run on the most minimal configuration: Minimal VM on Compact 1
compact1_minimal = \
serviceability/ \
compiler/ \
sanity/ \
runtime/ \
gc/ \
-:needs_full_vm_compact1 \
-:needs_full_vm_compact2 \
-:needs_compact2 \
-:needs_compact3 \
-:needs_jre \
-:needs_jdk
# All tests that explicitly set the G1 GC
#
needs_g1gc = \
compiler/regalloc/C1ObjectSpillInLogicOp.java \
gc/TestHumongousReferenceObject.java \
gc/TestSmallHeap.java \
gc/TestSystemGC.java \
gc/arguments/TestAlignmentToUseLargePages.java \
gc/arguments/TestG1ConcRefinementThreads.java \
gc/arguments/TestG1HeapRegionSize.java \
gc/arguments/TestG1HeapSizeFlags.java \
gc/arguments/TestG1PercentageOptions.java \
gc/arguments/TestMaxHeapSizeTools.java \
gc/arguments/TestMaxNewSize.java \
gc/arguments/TestParallelGCThreads.java \
gc/arguments/TestUseCompressedOopsErgo.java \
gc/class_unloading/TestG1ClassUnloadingHWM.java \
gc/ergonomics/TestDynamicNumberOfGCThreads.java \
gc/g1/ \
gc/logging/TestGCId.java \
gc/metaspace/G1AddMetaspaceDependency.java \
gc/metaspace/TestMetaspacePerfCounters.java \
gc/startup_warnings/TestG1.java \
gc/whitebox/TestConcMarkCycleWB.java
hotspot_native_sanity = \
native_sanity
hotspot_fast_compiler_1 = \
compiler/arraycopy/ \
compiler/c1/ \
compiler/c2/ \
-compiler/c2/5091921/Test6850611.java \
-compiler/c2/5091921/Test6890943.java \
-compiler/c2/5091921/Test6905845.java \
-compiler/c2/6340864 \
-compiler/c2/6589834 \
-compiler/c2/6603011 \
-compiler/c2/6912517 \
-compiler/c2/6792161 \
-compiler/c2/7070134 \
-compiler/c2/8004867
hotspot_fast_compiler_2 = \
compiler/classUnloading/ \
compiler/codecache/ \
compiler/codegen/ \
compiler/cpuflags/ \
compiler/dependencies/ \
compiler/eliminateAutobox/ \
compiler/escapeAnalysis/ \
compiler/exceptions/ \
compiler/floatingpoint/ \
compiler/gcbarriers/ \
compiler/inlining/ \
compiler/integerArithmetic/ \
compiler/interpreter/ \
compiler/jvmci/ \
-compiler/codegen/7184394 \
-compiler/codecache/stress \
-compiler/gcbarriers/PreserveFPRegistersTest.java
hotspot_fast_compiler_3 = \
compiler/intrinsics/ \
compiler/jsr292/ \
compiler/loopopts/ \
compiler/macronodes/ \
compiler/memoryinitialization/ \
compiler/osr/ \
compiler/regalloc/ \
compiler/runtime/ \
compiler/startup/ \
compiler/types/ \
compiler/uncommontrap/ \
compiler/unsafe/ \
-compiler/intrinsics/adler32 \
-compiler/intrinsics/bmi \
-compiler/intrinsics/mathexact \
-compiler/intrinsics/multiplytolen \
-compiler/intrinsics/sha \
-compiler/loopopts/7052494 \
-compiler/runtime/6826736
hotspot_fast_compiler_closed = \
sanity/ExecuteInternalVMTests.java
hotspot_fast_gc_1 = \
gc/g1/
hotspot_fast_gc_2 = \
sanity/ExecuteInternalVMTests.java \
gc/ \
-gc/g1/ \
-gc/stress \
-gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java \
-gc/cms/TestMBeanCMS.java \
-gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java
hotspot_fast_gc_closed = \
sanity/ExecuteInternalVMTests.java
hotspot_fast_gc_gcold = \
gc/stress/TestGCOld.java
hotspot_fast_runtime = \
runtime/ \
-runtime/ErrorHandling/ErrorHandler.java \
-runtime/RedefineObject/TestRedefineObject.java \
-runtime/MirrorFrame/Test8003720.java \
-runtime/Metaspace/FragmentMetaspace.java \
-runtime/Metaspace/FragmentMetaspaceSimple.java \
-runtime/Thread/TestThreadDumpMonitorContention.java \
-runtime/SharedArchiveFile/SharedBaseAddress.java \
-runtime/memory/ReserveMemory.java \
-runtime/memory/RunUnitTestsConcurrently.java \
-runtime/Unsafe/RangeCheck.java \
-runtime/SelectionResolution/AbstractMethodErrorTest.java \
-runtime/SelectionResolution/IllegalAccessErrorTest.java \
-runtime/SelectionResolution/InvokeInterfaceICCE.java \
-runtime/SelectionResolution/InvokeInterfaceSuccessTest.java \
-runtime/SelectionResolution/InvokeSpecialICCE.java \
-runtime/SelectionResolution/InvokeSpecialSuccessTest.java \
-runtime/SelectionResolution/InvokeStaticICCE.java \
-runtime/SelectionResolution/InvokeVirtualICCE.java \
-runtime/SelectionResolution/InvokeVirtualSuccessTest.java \
-runtime/SharedArchiveFile/CdsSameObjectAlignment.java \
-runtime/SharedArchiveFile/DefaultUseWithClient.java \
-runtime/Thread/CancellableThreadTest.java \
-runtime/7158988/FieldMonitor.java \
-runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java \
sanity/ \
testlibrary_tests/TestMutuallyExclusivePlatformPredicates.java
hotspot_fast_serviceability = \
sanity/ExecuteInternalVMTests.java \
serviceability/dcmd/compiler \
serviceability/logging
hotspot_jprt = \
:hotspot_fast_compiler_1 \
:hotspot_fast_compiler_2 \
:hotspot_fast_compiler_3 \
:hotspot_fast_compiler_closed \
:hotspot_fast_gc_1 \
:hotspot_fast_gc_2 \
:hotspot_fast_gc_closed \
:hotspot_fast_gc_gcold \
:hotspot_fast_runtime \
:hotspot_fast_serviceability
#All tests that depends on nashorn extension.
#
needs_nashorn = \
compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java
#All tests that do not depends on nashorn extension
#
not_needs_nashorn = \
:jdk \
-:needs_nashorn
hotspot_tmtools = \
serviceability/tmtools