8202339: [TESTBUG] Consolidate the tests in runtime/SharedArchiveFile and runtime/appcds
authorcoleenp
Mon, 29 Jul 2019 10:34:20 -0400
changeset 57567 b000362a89a0
parent 57566 ad84ae073248
child 57568 460ac76019f4
8202339: [TESTBUG] Consolidate the tests in runtime/SharedArchiveFile and runtime/appcds Summary: add top level cds directory and adjust test groups Reviewed-by: mseledtsov, ccheung
test/hotspot/jtreg/TEST.groups
test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java
test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CdsSameObjectAlignment.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CheckDefaultArchiveFile.java
test/hotspot/jtreg/runtime/SharedArchiveFile/CheckSharingWithDefaultArchive.java
test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSharedDictionary.java
test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSymbolAndStringTable.java
test/hotspot/jtreg/runtime/SharedArchiveFile/LoadClass.java
test/hotspot/jtreg/runtime/SharedArchiveFile/MaxMetaspaceSize.java
test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java
test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedBaseAddress.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStrings.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsDedup.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsRunAuto.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsWb.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java
test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java
test/hotspot/jtreg/runtime/SharedArchiveFile/javax/annotation/processing/FilerException.jasm
test/hotspot/jtreg/runtime/SharedArchiveFile/javax/sound/sampled/MyClass.jasm
test/hotspot/jtreg/runtime/SharedArchiveFile/nonjdk/myPackage/MyClass.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClassesForSubgraphs.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Implementor.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Interface.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SubClass.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SuperClazz.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TestEntry.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformRelatedClasses.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg1/SuperClazz.java
test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg2/SubClass.java
test/hotspot/jtreg/runtime/appcds/AppCDSOptions.java
test/hotspot/jtreg/runtime/appcds/AppendClasspath.java
test/hotspot/jtreg/runtime/appcds/BootClassPathMismatch.java
test/hotspot/jtreg/runtime/appcds/CDSandJFR.java
test/hotspot/jtreg/runtime/appcds/CaseSensitiveClassPath.java
test/hotspot/jtreg/runtime/appcds/ClassLoaderTest.java
test/hotspot/jtreg/runtime/appcds/ClassPathAttr.java
test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java
test/hotspot/jtreg/runtime/appcds/CommandLineFlagComboNegative.java
test/hotspot/jtreg/runtime/appcds/CompilerUtils.java
test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java
test/hotspot/jtreg/runtime/appcds/DumpClassList.java
test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_1.txt
test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_2.txt
test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_3.txt
test/hotspot/jtreg/runtime/appcds/ExtraSymbols.java
test/hotspot/jtreg/runtime/appcds/ExtraSymbols.symbols.txt
test/hotspot/jtreg/runtime/appcds/FieldAnnotationsTest.java
test/hotspot/jtreg/runtime/appcds/FreeUnusedMetadata.java
test/hotspot/jtreg/runtime/appcds/GraalWithLimitedMetaspace.java
test/hotspot/jtreg/runtime/appcds/HelloExtTest.java
test/hotspot/jtreg/runtime/appcds/HelloTest.java
test/hotspot/jtreg/runtime/appcds/IgnoreEmptyClassPaths.java
test/hotspot/jtreg/runtime/appcds/JarBuilder.java
test/hotspot/jtreg/runtime/appcds/JvmtiAddPath.java
test/hotspot/jtreg/runtime/appcds/LongClassListPath.java
test/hotspot/jtreg/runtime/appcds/LotsOfClasses.java
test/hotspot/jtreg/runtime/appcds/MissingSuperTest.java
test/hotspot/jtreg/runtime/appcds/MoveJDKTest.java
test/hotspot/jtreg/runtime/appcds/MultiProcessSharing.java
test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java
test/hotspot/jtreg/runtime/appcds/OldClassTest.java
test/hotspot/jtreg/runtime/appcds/PackageSealing.java
test/hotspot/jtreg/runtime/appcds/ParallelLoad2.java
test/hotspot/jtreg/runtime/appcds/ParallelLoadTest.java
test/hotspot/jtreg/runtime/appcds/PrintSharedArchiveAndExit.java
test/hotspot/jtreg/runtime/appcds/ProhibitedPackage.java
test/hotspot/jtreg/runtime/appcds/ProtectionDomain.java
test/hotspot/jtreg/runtime/appcds/RelativePath.java
test/hotspot/jtreg/runtime/appcds/RewriteBytecodesTest.java
test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
test/hotspot/jtreg/runtime/appcds/SharedBaseAddress.java
test/hotspot/jtreg/runtime/appcds/SharedPackages.java
test/hotspot/jtreg/runtime/appcds/SignedJar.java
test/hotspot/jtreg/runtime/appcds/SpecifySysLoaderProp.java
test/hotspot/jtreg/runtime/appcds/TestCommon.java
test/hotspot/jtreg/runtime/appcds/TestWithProfiler.java
test/hotspot/jtreg/runtime/appcds/TraceLongClasspath.java
test/hotspot/jtreg/runtime/appcds/UnusedCPDuringDump.java
test/hotspot/jtreg/runtime/appcds/UseAppCDS_Test.java
test/hotspot/jtreg/runtime/appcds/VerifierTest.java
test/hotspot/jtreg/runtime/appcds/VerifierTest_0.java
test/hotspot/jtreg/runtime/appcds/VerifierTest_1A.java
test/hotspot/jtreg/runtime/appcds/VerifierTest_1B.java
test/hotspot/jtreg/runtime/appcds/VerifierTest_2.java
test/hotspot/jtreg/runtime/appcds/WideIloadTest.java
test/hotspot/jtreg/runtime/appcds/WrongClasspath.java
test/hotspot/jtreg/runtime/appcds/XShareAutoWithChangedJar.java
test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedIntegerCacheTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleComboTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleCompareTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckArchivedModuleApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedMirrorApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedMirrorTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferences.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferencesApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/CheckIntegerCacheApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/DifferentHeapSizes.java
test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.config.txt
test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.java
test/hotspot/jtreg/runtime/appcds/cacheObject/GCStress.config.txt
test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/InstrumentationAgent.mf
test/hotspot/jtreg/runtime/appcds/cacheObject/MirrorWithReferenceFieldsApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/MirrorWithReferenceFieldsTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/MyException.java
test/hotspot/jtreg/runtime/appcds/cacheObject/MyOuter.java
test/hotspot/jtreg/runtime/appcds/cacheObject/OpenArchiveRegion.java
test/hotspot/jtreg/runtime/appcds/cacheObject/PrimitiveTypesApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/PrimitiveTypesTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/PrintSystemModulesApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassApp.java
test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java
test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/jdk/test/Test.java
test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/module-info.java
test/hotspot/jtreg/runtime/appcds/cdsutils/DynamicDumpHelper.java
test/hotspot/jtreg/runtime/appcds/condy/CondyHello.jasm
test/hotspot/jtreg/runtime/appcds/condy/CondyHelloApp.java
test/hotspot/jtreg/runtime/appcds/condy/CondyHelloTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatA.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatB.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatBase.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatC.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatD.java
test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatE.java
test/hotspot/jtreg/runtime/appcds/customLoader/CustomLoaderApp.java
test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom.java
test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom_JFR.java
test/hotspot/jtreg/runtime/appcds/customLoader/LoaderSegregationTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestBase.java
test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestMultiFP.java
test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestSingleFP.java
test/hotspot/jtreg/runtime/appcds/customLoader/ProhibitedPackageNamesTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/ProtectionDomain.java
test/hotspot/jtreg/runtime/appcds/customLoader/SameNameInTwoLoadersTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/UnintendedLoadersTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/UnloadUnregisteredLoaderTest.java
test/hotspot/jtreg/runtime/appcds/customLoader/UnsupportedPlatforms.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomInterface2_ia.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomInterface2_ib.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee2.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee3.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee3Child.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/Hello.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/HelloUnload.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/InProhibitedPkg.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/LoaderAPI.mf
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/LoaderSegregation.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/OnlyBuiltin.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/OnlyUnregistered.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/ProtDomain.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/SameNameUnrelatedLoaders.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/SimpleHello.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/UnintendedLoaders.java
test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/UnloadUnregisteredLoader.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/AppendClasspath.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/ArchiveConsistency.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/ArrayKlasses.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/ClassResolutionFailure.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicArchiveTestBase.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicFlag.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicLotsOfClasses.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/ExcludedClasses.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamic.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamicCustom.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamicCustomUnload.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/JITInteraction.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/MainModuleOnly.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/MethodSorting.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/MissingArchive.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/NoClassToArchive.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/RelativePath.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/SharedArchiveFileOption.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/UnsupportedBaseArchive.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/UnusedCPDuringDump.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/WrongTopClasspath.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/ArrayKlassesApp.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/ExcludedClassesApp.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/LoadClasses.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/MethodSortingApp.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/MissingDependent.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/StrConcatApp.java
test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/TestJIT.java
test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDump.java
test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDumpTransformer.java
test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java
test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTestHelper.java
test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDump.java
test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDumpTransformer.java
test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDump.java
test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDumpWb.java
test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDump.java
test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDumpTransformer.java
test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/appcds/jigsaw/CheckUnsupportedDumpingOptions.java
test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/AppClassInCP.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/CustomPackage.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/MismatchedPatchModule.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchDir.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchJavaBase.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchMain.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/Simple.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java
test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/TwoJars.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/Main.jasm
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/MyMain.jasm
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/jdk/test/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext/MyClass.java
test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext1/MyClass.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddOpens.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ExportModule.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/JvmtiAddPath.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/MainModuleOnly.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.greetings/com/greetings/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.greetings/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.hello/com/hello/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.hello/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.nomodule/com/nomodule/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.norequires/com/norequires/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.norequires/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.simple/com/simple/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.simple/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/org.astro/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/org.astro/org/astro/World.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/java.net.http/java/net/http/HttpTimeoutException.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/java.net.http/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/jdk.compiler/com/sun/tools/javac/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/jdk.compiler/module-info.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/test/jdk/test/Main.java
test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/test/module-info.java
test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHook.java
test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHookTest.java
test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationAgent.mf
test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationApp.java
test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationClassFileTransformer.java
test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationRegisterClassFileTransformer.java
test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java
test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/DumpingWithJavaAgent.java
test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/DumpingWithJvmtiAgent.java
test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/SimpleAgent.java
test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/SimpleAgent.mf
test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/libAddToSystemCLSearchOnLoad.c
test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelClassesTransform.java
test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java
test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java
test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformRelatedClassesAppCDS.java
test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java
test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasic.java
test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasicTest.java
test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_Shared.java
test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_SharedHelper.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/ExtraSharedInput.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloString.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloStringGC.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloStringPlus.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/InternStringTest.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/LockStringTest.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/LockStringValueTest.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsHumongous.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsUtils.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWb.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/CorruptDataLine.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidDataType.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidHeader.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidString.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidStringFormat.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidSymbol.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidSymbolFormat.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidVersion.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/LengthOverflow.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/OverflowPrefix.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/TruncatedString.txt
test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/UnrecognizedPrefix.txt
test/hotspot/jtreg/runtime/appcds/test-classes/ArrayListTest.java
test/hotspot/jtreg/runtime/appcds/test-classes/BootClassPathAppendHelper.java
test/hotspot/jtreg/runtime/appcds/test-classes/C1.java
test/hotspot/jtreg/runtime/appcds/test-classes/C2.java
test/hotspot/jtreg/runtime/appcds/test-classes/Child.java
test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr1.java
test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr2.java
test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr3.java
test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr4.java
test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr5.java
test/hotspot/jtreg/runtime/appcds/test-classes/DummyClassHelper.java
test/hotspot/jtreg/runtime/appcds/test-classes/EmptyClassHelper.java
test/hotspot/jtreg/runtime/appcds/test-classes/FieldAnnotationsApp.java
test/hotspot/jtreg/runtime/appcds/test-classes/ForNameTest.java
test/hotspot/jtreg/runtime/appcds/test-classes/GenericTestApp.java
test/hotspot/jtreg/runtime/appcds/test-classes/GetFlightRecorder.java
test/hotspot/jtreg/runtime/appcds/test-classes/Greet.java
test/hotspot/jtreg/runtime/appcds/test-classes/Hello.java
test/hotspot/jtreg/runtime/appcds/test-classes/HelloExt.java
test/hotspot/jtreg/runtime/appcds/test-classes/HelloExtApp.java
test/hotspot/jtreg/runtime/appcds/test-classes/HelloExtExt.java
test/hotspot/jtreg/runtime/appcds/test-classes/HelloMore.java
test/hotspot/jtreg/runtime/appcds/test-classes/HelloWB.java
test/hotspot/jtreg/runtime/appcds/test-classes/Hi.java
test/hotspot/jtreg/runtime/appcds/test-classes/Iloadw.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/IloadwMain.java
test/hotspot/jtreg/runtime/appcds/test-classes/JimageClassPackage.java
test/hotspot/jtreg/runtime/appcds/test-classes/JimageClassProtDomain.java
test/hotspot/jtreg/runtime/appcds/test-classes/JvmtiApp.java
test/hotspot/jtreg/runtime/appcds/test-classes/MethodNoReturn.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/MissingSuper.java
test/hotspot/jtreg/runtime/appcds/test-classes/MultiProcClass.java
test/hotspot/jtreg/runtime/appcds/test-classes/MyAnnotation.java
test/hotspot/jtreg/runtime/appcds/test-classes/MyThread.java
test/hotspot/jtreg/runtime/appcds/test-classes/PackageSealingTest.java
test/hotspot/jtreg/runtime/appcds/test-classes/PackageTest.java
test/hotspot/jtreg/runtime/appcds/test-classes/ParallelClasses.java
test/hotspot/jtreg/runtime/appcds/test-classes/ParallelLoad.java
test/hotspot/jtreg/runtime/appcds/test-classes/Prohibited.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/ProhibitedHelper.java
test/hotspot/jtreg/runtime/appcds/test-classes/ProtDomain.java
test/hotspot/jtreg/runtime/appcds/test-classes/ProtDomainB.java
test/hotspot/jtreg/runtime/appcds/test-classes/ReportMyLoader.java
test/hotspot/jtreg/runtime/appcds/test-classes/RewriteBytecodes.java
test/hotspot/jtreg/runtime/appcds/test-classes/Super.java
test/hotspot/jtreg/runtime/appcds/test-classes/TestClassLoader.java
test/hotspot/jtreg/runtime/appcds/test-classes/TestWithProfilerHelper.java
test/hotspot/jtreg/runtime/appcds/test-classes/TrySwitchMyLoader.java
test/hotspot/jtreg/runtime/appcds/test-classes/Util.java
test/hotspot/jtreg/runtime/appcds/test-classes/VerifierTest0.java
test/hotspot/jtreg/runtime/appcds/test-classes/com/sun/tools/javac/Main.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr1.mf
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr1_long.mf
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr2.mf
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr3.mf
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr4.mf
test/hotspot/jtreg/runtime/appcds/test-classes/cpattr5_extra_long.mf
test/hotspot/jtreg/runtime/appcds/test-classes/java/net/HttpCookie.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/javax/transaction/InvalidTransactionException.jasm
test/hotspot/jtreg/runtime/appcds/test-classes/package_seal.mf
test/hotspot/jtreg/runtime/cds/ArchiveDoesNotExist.java
test/hotspot/jtreg/runtime/cds/BootAppendTests.java
test/hotspot/jtreg/runtime/cds/CdsDifferentCompactStrings.java
test/hotspot/jtreg/runtime/cds/CdsDifferentObjectAlignment.java
test/hotspot/jtreg/runtime/cds/CdsSameObjectAlignment.java
test/hotspot/jtreg/runtime/cds/CheckDefaultArchiveFile.java
test/hotspot/jtreg/runtime/cds/CheckSharingWithDefaultArchive.java
test/hotspot/jtreg/runtime/cds/DumpSharedDictionary.java
test/hotspot/jtreg/runtime/cds/DumpSymbolAndStringTable.java
test/hotspot/jtreg/runtime/cds/LoadClass.java
test/hotspot/jtreg/runtime/cds/MaxMetaspaceSize.java
test/hotspot/jtreg/runtime/cds/NonBootLoaderClasses.java
test/hotspot/jtreg/runtime/cds/PrintSharedArchiveAndExit.java
test/hotspot/jtreg/runtime/cds/SharedArchiveFile.java
test/hotspot/jtreg/runtime/cds/SharedBaseAddress.java
test/hotspot/jtreg/runtime/cds/SharedStrings.java
test/hotspot/jtreg/runtime/cds/SharedStringsDedup.java
test/hotspot/jtreg/runtime/cds/SharedStringsRunAuto.java
test/hotspot/jtreg/runtime/cds/SharedStringsWb.java
test/hotspot/jtreg/runtime/cds/SharedSymbolTableBucketSize.java
test/hotspot/jtreg/runtime/cds/SpaceUtilizationCheck.java
test/hotspot/jtreg/runtime/cds/TestInterpreterMethodEntries.java
test/hotspot/jtreg/runtime/cds/appcds/AppCDSOptions.java
test/hotspot/jtreg/runtime/cds/appcds/AppendClasspath.java
test/hotspot/jtreg/runtime/cds/appcds/BootClassPathMismatch.java
test/hotspot/jtreg/runtime/cds/appcds/CDSandJFR.java
test/hotspot/jtreg/runtime/cds/appcds/CaseSensitiveClassPath.java
test/hotspot/jtreg/runtime/cds/appcds/ClassLoaderTest.java
test/hotspot/jtreg/runtime/cds/appcds/ClassPathAttr.java
test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagCombo.java
test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagComboNegative.java
test/hotspot/jtreg/runtime/cds/appcds/CompilerUtils.java
test/hotspot/jtreg/runtime/cds/appcds/DirClasspathTest.java
test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java
test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_1.txt
test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_2.txt
test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_3.txt
test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.java
test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.symbols.txt
test/hotspot/jtreg/runtime/cds/appcds/FieldAnnotationsTest.java
test/hotspot/jtreg/runtime/cds/appcds/FreeUnusedMetadata.java
test/hotspot/jtreg/runtime/cds/appcds/GraalWithLimitedMetaspace.java
test/hotspot/jtreg/runtime/cds/appcds/HelloExtTest.java
test/hotspot/jtreg/runtime/cds/appcds/HelloTest.java
test/hotspot/jtreg/runtime/cds/appcds/IgnoreEmptyClassPaths.java
test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java
test/hotspot/jtreg/runtime/cds/appcds/JvmtiAddPath.java
test/hotspot/jtreg/runtime/cds/appcds/LongClassListPath.java
test/hotspot/jtreg/runtime/cds/appcds/LotsOfClasses.java
test/hotspot/jtreg/runtime/cds/appcds/MissingSuperTest.java
test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java
test/hotspot/jtreg/runtime/cds/appcds/MultiProcessSharing.java
test/hotspot/jtreg/runtime/cds/appcds/MultiReleaseJars.java
test/hotspot/jtreg/runtime/cds/appcds/OldClassTest.java
test/hotspot/jtreg/runtime/cds/appcds/PackageSealing.java
test/hotspot/jtreg/runtime/cds/appcds/ParallelLoad2.java
test/hotspot/jtreg/runtime/cds/appcds/ParallelLoadTest.java
test/hotspot/jtreg/runtime/cds/appcds/PrintSharedArchiveAndExit.java
test/hotspot/jtreg/runtime/cds/appcds/ProhibitedPackage.java
test/hotspot/jtreg/runtime/cds/appcds/ProtectionDomain.java
test/hotspot/jtreg/runtime/cds/appcds/RelativePath.java
test/hotspot/jtreg/runtime/cds/appcds/RewriteBytecodesTest.java
test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java
test/hotspot/jtreg/runtime/cds/appcds/SharedBaseAddress.java
test/hotspot/jtreg/runtime/cds/appcds/SharedPackages.java
test/hotspot/jtreg/runtime/cds/appcds/SignedJar.java
test/hotspot/jtreg/runtime/cds/appcds/SpecifySysLoaderProp.java
test/hotspot/jtreg/runtime/cds/appcds/TestCommon.java
test/hotspot/jtreg/runtime/cds/appcds/TestWithProfiler.java
test/hotspot/jtreg/runtime/cds/appcds/TraceLongClasspath.java
test/hotspot/jtreg/runtime/cds/appcds/UnusedCPDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/UseAppCDS_Test.java
test/hotspot/jtreg/runtime/cds/appcds/VerifierTest.java
test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_0.java
test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1A.java
test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1B.java
test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_2.java
test/hotspot/jtreg/runtime/cds/appcds/WideIloadTest.java
test/hotspot/jtreg/runtime/cds/appcds/WrongClasspath.java
test/hotspot/jtreg/runtime/cds/appcds/XShareAutoWithChangedJar.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedIntegerCacheTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleComboTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleCompareTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckArchivedModuleApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedMirrorApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedMirrorTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedResolvedReferences.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedResolvedReferencesApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckIntegerCacheApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DifferentHeapSizes.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DumpTimeVerifyFailure.config.txt
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DumpTimeVerifyFailure.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStress.config.txt
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/InstrumentationAgent.mf
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MirrorWithReferenceFieldsApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MirrorWithReferenceFieldsTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MyException.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MyOuter.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/OpenArchiveRegion.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrimitiveTypesApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrimitiveTypesTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrintSystemModulesApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassApp.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassTest.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/src/test/jdk/test/Test.java
test/hotspot/jtreg/runtime/cds/appcds/cacheObject/src/test/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/cdsutils/DynamicDumpHelper.java
test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHello.jasm
test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHelloApp.java
test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHelloTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatA.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatB.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatBase.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatC.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatD.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatE.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomLoaderApp.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/HelloCustom.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/HelloCustom_JFR.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/LoaderSegregationTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestBase.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestMultiFP.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestSingleFP.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProhibitedPackageNamesTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProtectionDomain.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/SameNameInTwoLoadersTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnintendedLoadersTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnloadUnregisteredLoaderTest.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnsupportedPlatforms.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomInterface2_ia.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomInterface2_ib.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee2.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee3.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee3Child.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/Hello.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/HelloUnload.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/InProhibitedPkg.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/LoaderAPI.mf
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/LoaderSegregation.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/OnlyBuiltin.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/OnlyUnregistered.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/ProtDomain.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/SameNameUnrelatedLoaders.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/SimpleHello.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/UnintendedLoaders.java
test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/UnloadUnregisteredLoader.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/AppendClasspath.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArrayKlasses.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ClassResolutionFailure.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveTestBase.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicFlag.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicLotsOfClasses.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ExcludedClasses.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamic.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamicCustom.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamicCustomUnload.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/JITInteraction.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MainModuleOnly.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MethodSorting.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MissingArchive.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/NoClassToArchive.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/RelativePath.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/SharedArchiveFileOption.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnsupportedBaseArchive.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnusedCPDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/WrongTopClasspath.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/ArrayKlassesApp.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/ExcludedClassesApp.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/LoadClasses.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/MethodSortingApp.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/MissingDependent.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/StrConcatApp.java
test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/TestJIT.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDumpTransformer.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/cds/appcds/javaldr/ArrayTest.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/ArrayTestHelper.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDumpTransformer.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDumpWb.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDump.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDumpTransformer.java
test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDumpTransformer.mf
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/CheckUnsupportedDumpingOptions.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/JigsawOptionsCombo.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/AppClassInCP.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/CustomPackage.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/MismatchedPatchModule.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchDir.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchJavaBase.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchMain.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/Simple.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/TwoJars.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/BootAppendTests.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/ClassPathTests.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/Main.jasm
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/MyMain.jasm
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/jdk/test/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext/MyClass.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext1/MyClass.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddModules.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddOpens.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddReads.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ExportModule.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/JvmtiAddPath.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.greetings/com/greetings/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.greetings/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.hello/com/hello/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.hello/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.nomodule/com/nomodule/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.norequires/com/norequires/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.norequires/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.simple/com/simple/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.simple/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/org.astro/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/org.astro/org/astro/World.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/OverrideTests.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/java.net.http/java/net/http/HttpTimeoutException.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/java.net.http/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/jdk.compiler/com/sun/tools/javac/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/jdk.compiler/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/test/jdk/test/Main.java
test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/test/module-info.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/ClassFileLoadHook.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/ClassFileLoadHookTest.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationAgent.mf
test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationApp.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationClassFileTransformer.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationRegisterClassFileTransformer.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationTest.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/DumpingWithJavaAgent.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/DumpingWithJvmtiAgent.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/SimpleAgent.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/SimpleAgent.mf
test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/libAddToSystemCLSearchOnLoad.c
test/hotspot/jtreg/runtime/cds/appcds/jvmti/parallelLoad/ParallelClassesTransform.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformRelatedClassesAppCDS.java
test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java
test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineBasic.java
test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineBasicTest.java
test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineRunningMethods_Shared.java
test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineRunningMethods_SharedHelper.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExtraSharedInput.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloString.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringGC.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringPlus.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/IncompatibleOptions.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternStringTest.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InvalidFileFormat.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringTest.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringValueTest.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasic.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasic.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsHumongous.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsStress.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsUtils.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWb.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/CorruptDataLine.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidDataType.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidHeader.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidString.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidStringFormat.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidSymbol.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidSymbolFormat.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidVersion.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/LengthOverflow.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/OverflowPrefix.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/TruncatedString.txt
test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/UnrecognizedPrefix.txt
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ArrayListTest.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/BootClassPathAppendHelper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/C1.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/C2.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Child.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr1.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr2.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr3.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr4.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr5.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/DummyClassHelper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/EmptyClassHelper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/FieldAnnotationsApp.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ForNameTest.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/GenericTestApp.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/GetFlightRecorder.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Greet.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Hello.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExt.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExtApp.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExtExt.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloMore.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloWB.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Hi.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Iloadw.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/IloadwMain.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/JimageClassPackage.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/JimageClassProtDomain.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/JvmtiApp.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/MethodNoReturn.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/MissingSuper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/MultiProcClass.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/MyAnnotation.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/MyThread.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/PackageSealingTest.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/PackageTest.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ParallelClasses.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ParallelLoad.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Prohibited.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProhibitedHelper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProtDomain.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProtDomainB.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/ReportMyLoader.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/RewriteBytecodes.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Super.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestClassLoader.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestWithProfilerHelper.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/TrySwitchMyLoader.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/Util.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/VerifierTest0.java
test/hotspot/jtreg/runtime/cds/appcds/test-classes/com/sun/tools/javac/Main.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr1.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr1_long.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr2.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr3.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr4.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr5_extra_long.mf
test/hotspot/jtreg/runtime/cds/appcds/test-classes/java/net/HttpCookie.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/javax/transaction/InvalidTransactionException.jasm
test/hotspot/jtreg/runtime/cds/appcds/test-classes/package_seal.mf
test/hotspot/jtreg/runtime/cds/javax/annotation/processing/FilerException.jasm
test/hotspot/jtreg/runtime/cds/javax/sound/sampled/MyClass.jasm
test/hotspot/jtreg/runtime/cds/nonjdk/myPackage/MyClass.java
test/hotspot/jtreg/runtime/cds/serviceability/ReplaceCriticalClasses.java
test/hotspot/jtreg/runtime/cds/serviceability/ReplaceCriticalClassesForSubgraphs.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/Implementor.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/Interface.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/SubClass.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/SuperClazz.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TestEntry.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformRelatedClasses.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformTestCommon.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/myPkg1/SuperClazz.java
test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/myPkg2/SubClass.java
--- a/test/hotspot/jtreg/TEST.groups	Mon Jul 29 09:57:37 2019 -0400
+++ b/test/hotspot/jtreg/TEST.groups	Mon Jul 29 10:34:20 2019 -0400
@@ -296,8 +296,8 @@
  -runtime/SelectionResolution/InvokeStaticICCE.java \
  -runtime/SelectionResolution/InvokeVirtualICCE.java \
  -runtime/SelectionResolution/InvokeVirtualSuccessTest.java \
- -runtime/SharedArchiveFile/CdsSameObjectAlignment.java \
- -runtime/SharedArchiveFile/SharedBaseAddress.java \
+ -runtime/cds/CdsSameObjectAlignment.java \
+ -runtime/cds/SharedBaseAddress.java \
  -runtime/Thread/CancellableThreadTest.java \
  -runtime/Thread/TestThreadDumpMonitorContention.java \
  -runtime/Unsafe/RangeCheck.java \
@@ -307,40 +307,36 @@
  -runtime/signal
 
 hotspot_cds = \
-  runtime/SharedArchiveFile/ \
+  runtime/cds/ \
   runtime/CompressedOops/
 
-# AppCDS
-# If modifying AppCDS it is also recommended to run the open hotspot_cds group
-hotspot_appcds = \
-  runtime/appcds/
 
 hotspot_appcds_dynamic = \
-  runtime/appcds/ \
- -runtime/appcds/cacheObject \
- -runtime/appcds/customLoader \
- -runtime/appcds/dynamicArchive \
- -runtime/appcds/javaldr/ArrayTest.java \
- -runtime/appcds/javaldr/GCSharedStringsDuringDump.java \
- -runtime/appcds/javaldr/HumongousDuringDump.java \
- -runtime/appcds/sharedStrings \
- -runtime/appcds/DumpClassList.java \
- -runtime/appcds/ExtraSymbols.java \
- -runtime/appcds/LongClassListPath.java \
- -runtime/appcds/LotsOfClasses.java \
- -runtime/appcds/RelativePath.java \
- -runtime/appcds/SharedArchiveConsistency.java \
- -runtime/appcds/UnusedCPDuringDump.java \
- -runtime/appcds/VerifierTest_1B.java
+  runtime/cds/appcds/ \
+ -runtime/cds/appcds/cacheObject \
+ -runtime/cds/appcds/customLoader \
+ -runtime/cds/appcds/dynamicArchive \
+ -runtime/cds/appcds/javaldr/ArrayTest.java \
+ -runtime/cds/appcds/javaldr/GCSharedStringsDuringDump.java \
+ -runtime/cds/appcds/javaldr/HumongousDuringDump.java \
+ -runtime/cds/appcds/sharedStrings \
+ -runtime/cds/appcds/DumpClassList.java \
+ -runtime/cds/appcds/ExtraSymbols.java \
+ -runtime/cds/appcds/LongClassListPath.java \
+ -runtime/cds/appcds/LotsOfClasses.java \
+ -runtime/cds/appcds/RelativePath.java \
+ -runtime/cds/appcds/SharedArchiveConsistency.java \
+ -runtime/cds/appcds/UnusedCPDuringDump.java \
+ -runtime/cds/appcds/VerifierTest_1B.java
 
 # A subset of AppCDS tests to be run in tier1
 tier1_runtime_appcds = \
-  runtime/appcds/HelloTest.java \
-  runtime/appcds/sharedStrings/SharedStringsBasic.java \
-  runtime/appcds/ClassLoaderTest.java
+  runtime/cds/appcds/HelloTest.java \
+  runtime/cds/appcds/sharedStrings/SharedStringsBasic.java \
+  runtime/cds/appcds/ClassLoaderTest.java
 
 tier1_runtime_appcds_exclude = \
-  runtime/appcds/ \
+  runtime/cds/appcds/ \
   -:tier1_runtime_appcds
 
 # This group should be executed with "jtreg -Dtest.cds.run.with.jfr=true ..."
@@ -350,13 +346,13 @@
 # The excluded tests disallow the jdk.jfr module, which is required to
 # run with JFR.
 hotspot_appcds_with_jfr = \
-  runtime/appcds/ \
- -runtime/appcds/cacheObject/ArchivedModuleCompareTest.java \
- -runtime/appcds/jigsaw/classpathtests/BootAppendTests.java \
- -runtime/appcds/jigsaw/classpathtests/ClassPathTests.java \
- -runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java \
- -runtime/appcds/jigsaw/JigsawOptionsCombo.java \
- -runtime/appcds/jigsaw/modulepath/MainModuleOnly.java
+  runtime/cds/appcds/ \
+ -runtime/cds/appcds/cacheObject/ArchivedModuleCompareTest.java \
+ -runtime/cds/appcds/jigsaw/classpathtests/BootAppendTests.java \
+ -runtime/cds/appcds/jigsaw/classpathtests/ClassPathTests.java \
+ -runtime/cds/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java \
+ -runtime/cds/appcds/jigsaw/JigsawOptionsCombo.java \
+ -runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java
 
 tier1_serviceability = \
   serviceability/dcmd/compiler \
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- */
-
-/**
- * @test ArchiveDoesNotExist
- * @summary Test how VM handles "file does not exist" situation while
- *          attempting to use CDS archive. JVM should exit gracefully
- *          when sharing mode is ON, and continue w/o sharing if sharing
- *          mode is AUTO.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver ArchiveDoesNotExist
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-
-public class ArchiveDoesNotExist {
-    public static void main(String[] args) throws Exception {
-        String fileName = "ArchiveDoesNotExist.jsa";
-
-        File cdsFile = new File(fileName);
-        if (cdsFile.exists())
-            throw new RuntimeException("Test error: cds file already exists");
-
-        CDSOptions opts = (new CDSOptions()).setArchiveName(fileName);
-
-        // -Xshare=on
-        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
-        CDSTestUtils.checkMappingFailure(out);
-        out.shouldContain("Specified shared archive not found")
-            .shouldHaveExitValue(1);
-
-        // -Xshare=auto
-        opts.setXShareMode("auto");
-        out = CDSTestUtils.runWithArchive(opts);
-        CDSTestUtils.checkMappingFailure(out);
-        out.shouldMatch("(java|openjdk) version")
-            .shouldNotContain("sharing")
-            .shouldHaveExitValue(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-/**
- * @test
- * @requires vm.cds & !vm.graal.enabled
- * @summary Testing -Xbootclasspath/a support for CDS
- * @requires vm.cds
- * @library /test/lib
- * @modules java.compiler
- *          java.base/jdk.internal.misc
- *          java.management
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile javax/sound/sampled/MyClass.jasm
- * @compile javax/annotation/processing/FilerException.jasm
- * @compile nonjdk/myPackage/MyClass.java
- * @build LoadClass
- * @run main/othervm BootAppendTests
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class BootAppendTests {
-    private static final String APP_CLASS = "LoadClass";
-    private static final String BOOT_APPEND_MODULE_CLASS = "javax/sound/sampled/MyClass";
-    private static final String BOOT_APPEND_DUPLICATE_MODULE_CLASS =
-        "javax/annotation/processing/FilerException";
-    private static final String BOOT_APPEND_CLASS = "nonjdk/myPackage/MyClass";
-    private static final String BOOT_APPEND_MODULE_CLASS_NAME =
-        BOOT_APPEND_MODULE_CLASS.replace('/', '.');
-    private static final String BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME =
-        BOOT_APPEND_DUPLICATE_MODULE_CLASS.replace('/', '.');
-    private static final String BOOT_APPEND_CLASS_NAME =
-        BOOT_APPEND_CLASS.replace('/', '.');
-    private static final String[] ARCHIVE_CLASSES =
-        {BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS, BOOT_APPEND_CLASS};
-
-    private static final String modes[] = {"on", "off"};
-
-    private static String appJar;
-    private static String bootAppendJar;
-
-    public static void main(String... args) throws Exception {
-        dumpArchive();
-
-        logTestCase("1");
-        testBootAppendModuleClass();
-
-        logTestCase("2");
-        testBootAppendDuplicateModuleClass();
-
-        logTestCase("3");
-        testBootAppendExcludedModuleClass();
-
-        logTestCase("4");
-        testBootAppendDuplicateExcludedModuleClass();
-
-        logTestCase("5");
-        testBootAppendClass();
-
-        logTestCase("6");
-        testBootAppendExtraDir();
-    }
-
-    private static void logTestCase(String msg) {
-        System.out.println();
-        System.out.printf("TESTCASE: %s", msg);
-        System.out.println();
-    }
-
-    static void dumpArchive() throws Exception {
-        // create the classlist
-        File classlist = CDSTestUtils.makeClassList(ARCHIVE_CLASSES);
-
-        // build jar files
-        appJar = ClassFileInstaller.writeJar("app.jar", APP_CLASS);
-        bootAppendJar = ClassFileInstaller.writeJar("bootAppend.jar",
-            BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS, BOOT_APPEND_CLASS);
-
-
-        OutputAnalyzer out = CDSTestUtils.createArchiveAndCheck(
-                                 "-Xbootclasspath/a:" + bootAppendJar,
-                                 "-cp", appJar,
-                                 "-XX:SharedClassListFile=" + classlist.getPath());
-        // Make sure all the classes were successfully archived.
-        for (String archiveClass : ARCHIVE_CLASSES) {
-            String msg = "Preload Warning: Cannot find " + archiveClass;
-            if (archiveClass.equals(BOOT_APPEND_MODULE_CLASS)) {
-                // We shouldn't archive a class in the appended boot class path that
-                // are the java.desktop module. Such a class cannot be loaded
-                // at runtime anyway.
-                out.shouldContain(msg);
-            } else {
-                out.shouldNotContain(msg);
-            }
-        }
-    }
-
-    // Test #1: If a class on -Xbootclasspath/a is from a package defined in
-    //          bootmodules, the class is not loaded at runtime.
-    //          Verify the behavior is the same when the class is archived
-    //          with CDS enabled at runtime.
-    //
-    //          The javax.sound.sampled package is defined in the java.desktop module.
-    //          The archived javax.sound.sampled.MyClass from the -Xbootclasspath/a
-    //          should not be loaded at runtime.
-    public static void testBootAppendModuleClass() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar, "-showversion")
-                .addSuffix(APP_CLASS, BOOT_APPEND_MODULE_CLASS_NAME);
-
-            OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
-            CDSTestUtils.checkExec(out, opts, "java.lang.ClassNotFoundException: javax.sound.sampled.MyClass");
-        }
-    }
-
-    // Test #2: If a class on -Xbootclasspath/a has the same fully qualified
-    //          name as a class defined in boot modules, the class is not loaded
-    //          from -Xbootclasspath/a. Verify the behavior is the same at runtime
-    //          when CDS is enabled.
-    //
-    //          The javax/annotation/processing/FilerException is a platform module
-    //          class. The class on the -Xbootclasspath/a path that has the same
-    //          fully-qualified name should not be loaded at runtime when CDS is enabled.
-    //          The one from the platform modules should be loaded instead.
-    public static void testBootAppendDuplicateModuleClass() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-showversion",
-                           "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
-                .addSuffix("-Xlog:class+load=info",
-                           APP_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME);
-
-            String MATCH_PATTERN = ".class.load. javax.annotation.processing.FilerException source:.*bootAppend.jar*";
-            CDSTestUtils.run(opts)
-                .assertNormalExit(out -> {
-                    out.shouldNotMatch(MATCH_PATTERN);
-                });
-        }
-    }
-
-    // Test #3: If a class on -Xbootclasspath/a is from a package defined in boot modules,
-    //          the class can be loaded from -Xbootclasspath/a when the module is excluded
-    //          using --limit-modules. Verify the behavior is the same at runtime when CDS
-    //          is enabled.
-    //
-    //          The java.desktop module is excluded using --limit-modules at runtime
-    //          CDS will be disabled with the --limit-modules option during runtime.
-    //          javax.sound.sampled.MyClass will be loaded from the jar at runtime.
-    public static void testBootAppendExcludedModuleClass() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
-                           "--limit-modules=java.base", "-cp", appJar)
-                .addSuffix("-Xlog:class+load=info",
-                           APP_CLASS, BOOT_APPEND_MODULE_CLASS_NAME);
-            CDSTestUtils.Result res = CDSTestUtils.run(opts);
-            String MATCH_PATTERN =
-                ".class.load. javax.sound.sampled.MyClass source:.*bootAppend.jar*";
-            if (mode.equals("on")) {
-                res.assertSilentlyDisabledCDS(out -> {
-                    out.shouldHaveExitValue(0)
-                       .shouldMatch(MATCH_PATTERN);
-                    });
-            } else {
-                res.assertNormalExit(out -> {
-                    out.shouldMatch(MATCH_PATTERN);
-                    });
-            }
-        }
-    }
-
-    // Test #4: If a class on -Xbootclasspath/a has the same fully qualified
-    //          name as a class defined in boot modules, the class is loaded
-    //          from -Xbootclasspath/a when the boot module is excluded using
-    //          --limit-modules. Verify the behavior is the same at runtime
-    //          when CDS is enabled.
-    //
-    //          The javax.annotation.processing.FilerException is a platform module class.
-    //          The class on -Xbootclasspath/a that has the same fully-qualified name
-    //          as javax.annotation.processing.FilerException can be loaded at runtime when
-    //          java.compiler is excluded.
-    //          CDS is disabled during runtime if the --limit-modules option is
-    //          specified.
-    public static void testBootAppendDuplicateExcludedModuleClass() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
-                           "--limit-modules=java.base", "-cp", appJar)
-                .addSuffix("-Xlog:class+load=info",
-                           APP_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME);
-
-            CDSTestUtils.Result res = CDSTestUtils.run(opts);
-            String MATCH_PATTERN =
-                ".class.load. javax.annotation.processing.FilerException source:.*bootAppend.jar*";
-            if (mode.equals("on")) {
-                res.assertSilentlyDisabledCDS(out -> {
-                    out.shouldHaveExitValue(0)
-                       .shouldMatch(MATCH_PATTERN);
-                    });
-            } else {
-                res.assertNormalExit(out -> {
-                    out.shouldMatch(MATCH_PATTERN);
-                    });
-            }
-        }
-    }
-
-    // Test #5: If a class on -Xbootclasspath/a is not from named modules,
-    //          the class can be loaded at runtime. Verify the behavior is
-    //          the same at runtime when CDS is enabled.
-    //
-    //          The nonjdk.myPackage is not defined in named modules. The
-    //          nonjdk.myPackage.MyClass will be loaded from the jar in
-    //          -Xbootclasspath/a since CDS will be disabled with the
-    //          --limit-modules option.
-    public static void testBootAppendClass() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
-                           "--limit-modules=java.base", "-cp", appJar)
-                .addSuffix("-Xlog:class+load=info",
-                           APP_CLASS, BOOT_APPEND_CLASS_NAME);
-
-            CDSTestUtils.Result res = CDSTestUtils.run(opts);
-            String MATCH_PATTERN =
-                ".class.load. nonjdk.myPackage.MyClass source:.*bootAppend.jar*";
-            if (mode.equals("on")) {
-                res.assertSilentlyDisabledCDS(out -> {
-                    out.shouldHaveExitValue(0)
-                       .shouldMatch(MATCH_PATTERN);
-                    });
-            } else {
-                res.assertNormalExit(out -> {
-                    out.shouldMatch(MATCH_PATTERN);
-                    });
-            }
-        }
-    }
-
-    // Test #6: This is similar to Test #5. During runtime, an extra dir
-    //          is appended to the bootclasspath. It should not invalidate
-    //          the shared archive. However, CDS will be disabled with the
-    //          --limit-modules in the command line.
-    public static void testBootAppendExtraDir() throws Exception {
-        for (String mode : modes) {
-            CDSOptions opts = (new CDSOptions())
-                .setXShareMode(mode).setUseVersion(false)
-                .addPrefix("-Xbootclasspath/a:" + bootAppendJar + File.pathSeparator + appJar,
-                           "-showversion", "--limit-modules=java.base", "-cp", appJar)
-                .addSuffix("-Xlog:class+load=info",
-                           APP_CLASS, BOOT_APPEND_CLASS_NAME);
-
-            CDSTestUtils.Result res = CDSTestUtils.run(opts);
-            String MATCH_PATTERN =
-                ".class.load. nonjdk.myPackage.MyClass source:.*bootAppend.jar*";
-            if (mode.equals("on")) {
-                res.assertSilentlyDisabledCDS(out -> {
-                    out.shouldHaveExitValue(0)
-                       .shouldMatch(MATCH_PATTERN);
-                    });
-            } else {
-                res.assertNormalExit(out -> {
-                    out.shouldMatch(MATCH_PATTERN);
-                    });
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2013, 2018, 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.
- */
-
-/**
- * @test CdsDifferentCompactStrings
- * @summary CDS (class data sharing) requires the same -XX:[+-]CompactStrings
- *          setting between archive creation time and load time.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CdsDifferentCompactStrings {
-    public static void main(String[] args) throws Exception {
-        createAndLoadSharedArchive("+", "-");
-        createAndLoadSharedArchive("-", "+");
-    }
-
-    private static void createAndLoadSharedArchive(String create, String load)
-        throws Exception
-    {
-        String createCompactStringsArgument = "-XX:" + create + "CompactStrings";
-        String loadCompactStringsArgument   = "-XX:" + load   + "CompactStrings";
-
-        OutputAnalyzer out = CDSTestUtils.createArchive(createCompactStringsArgument);
-        CDSTestUtils.checkDump(out);
-
-        out = CDSTestUtils.runWithArchive(loadCompactStringsArgument);
-        CDSTestUtils.checkMappingFailure(out);
-
-        out.shouldMatch("The shared archive file's CompactStrings " +
-                        "setting .* does not equal the current CompactStrings setting")
-            .shouldHaveExitValue(1);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2013, 2018, 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.
- */
-
-/**
- * @test CdsDifferentObjectAlignment
- * @summary Testing CDS (class data sharing) using varying object alignment.
- *          Using different object alignment for each dump/load pair.
- *          This is a negative test; using  object alignment for loading that
- *          is different from object alignment for creating a CDS file
- *          should fail when loading.
- * @requires vm.cds
- * @requires vm.bits == 64
- * @library /test/lib
- * @bug 8025642
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver CdsDifferentObjectAlignment
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Platform;
-
-public class CdsDifferentObjectAlignment {
-
-    public static void main(String[] args) throws Exception {
-        createAndLoadSharedArchive(16, 64);
-        createAndLoadSharedArchive(64, 32);
-    }
-
-    // Parameters are object alignment expressed in bytes
-    private static void
-    createAndLoadSharedArchive(int createAlignment, int loadAlignment)
-    throws Exception {
-        String createAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
-            createAlignment;
-        String loadAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
-            loadAlignment;
-        String expectedErrorMsg =
-            String.format(
-            "The shared archive file's ObjectAlignmentInBytes of %d " +
-            "does not equal the current ObjectAlignmentInBytes of %d",
-            createAlignment,
-            loadAlignment);
-
-        CDSTestUtils.createArchiveAndCheck(createAlignmentArgument);
-
-        OutputAnalyzer out = CDSTestUtils.runWithArchive(loadAlignmentArgument);
-        CDSTestUtils.checkExecExpectError(out, 1, expectedErrorMsg);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsSameObjectAlignment.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2013, 2018, 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.
- */
-
-/**
- * @test CdsSameObjectAlignment
- * @summary Testing CDS (class data sharing) using varying object alignment.
- *          Using same object alignment for each dump/load pair
- * @requires vm.cds
- * @requires vm.bits == 64
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver CdsSameObjectAlignment
- */
-
-import jdk.test.lib.Platform;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CdsSameObjectAlignment {
-    public static void main(String[] args) throws Exception {
-        dumpAndLoadSharedArchive(8);
-        dumpAndLoadSharedArchive(16);
-        dumpAndLoadSharedArchive(32);
-        dumpAndLoadSharedArchive(64);
-    }
-
-    private static void
-    dumpAndLoadSharedArchive(int objectAlignmentInBytes) throws Exception {
-        String objectAlignmentArg = "-XX:ObjectAlignmentInBytes="
-            + objectAlignmentInBytes;
-        System.out.println("dumpAndLoadSharedArchive(): objectAlignmentInBytes = "
-            + objectAlignmentInBytes);
-
-        CDSTestUtils.createArchiveAndCheck(objectAlignmentArg);
-        CDSTestUtils.runWithArchiveAndCheck(objectAlignmentArg);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CheckDefaultArchiveFile.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- */
-
-/**
- * @test Default CDS archive file
- * @summary JDK platforms/binaries do not support default CDS archive should
- *          not contain classes.jsa in the default location.
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI CheckDefaultArchiveFile
- */
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.Platform;
-import jdk.test.lib.cds.CDSTestUtils;
-import jtreg.SkippedException;
-import sun.hotspot.WhiteBox;
-
-public class CheckDefaultArchiveFile {
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        String osArch = Platform.getOsArch();
-        String vmName = System.getProperty("java.vm.name");
-        String vmString = vmName + "(" + osArch + ")";
-        String jsaString = wb.getDefaultArchivePath();
-        System.out.println("classes.jsa location:" + jsaString);
-        if (jsaString == null) {
-            if (Platform.isDefaultCDSArchiveSupported()) {
-                throw new RuntimeException("default CDS archive supported, but classes.jsa path null");
-            }
-        } else {
-            Path jsa = Paths.get(jsaString);
-            if (Platform.isDefaultCDSArchiveSupported()) {
-                if (Files.exists(jsa)) {
-                    System.out.println("Passed. " + vmString +
-                                       ": has default classes.jsa file");
-                } else {
-                    throw new RuntimeException(vmString + "has no " + jsaString);
-                }
-            } else {
-                throw new SkippedException("Default CDS archive is not supported");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CheckSharingWithDefaultArchive.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-/**
- * @test Default CDS archive
- * @summary Sharing should be enabled by default on supported platform/binaries.
- *          No -Xshare:dump is needed. No -Xshare:auto or -Xshare:on in needed.
- *          Verify a set of well-known shared classes.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI CheckSharingWithDefaultArchive -showversion
- */
-import jdk.test.lib.Platform;
-import jtreg.SkippedException;
-import sun.hotspot.WhiteBox;
-
-public class CheckSharingWithDefaultArchive {
-    public static void main(String[] args) throws Exception {
-        if (!Platform.isDefaultCDSArchiveSupported()) {
-            throw new SkippedException("Supported platform");
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        String classes[] = {"java.lang.Object",
-                            "java.lang.String",
-                            "java.lang.Class"};
-        // If maping fails, sharing is disabled
-        if (wb.isSharingEnabled()) {
-            for (int i = 0; i < classes.length; i++) {
-                Class c = Class.forName(classes[i]);
-                if (wb.isSharedClass(c)) {
-                    System.out.println(classes[i] + " is shared.");
-                } else {
-                    throw new RuntimeException(classes[i] + " is not shared");
-                }
-            }
-        } else {
-           throw new SkippedException("Sharing is not enabled.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSharedDictionary.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- */
-
-/*
- * @test
- * @bug 8130072
- * @summary Check that Shared Dictionary is printed out with jcmd
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * @run driver DumpSharedDictionary
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.JDKToolFinder;
-
-public class DumpSharedDictionary {
-
-    public static void main(String[] args) throws Exception {
-        if (args.length == 0) {
-            // Start this process
-            ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-                "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
-                "-Xshare:dump");
-
-            OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
-            out.shouldHaveExitValue(0);
-
-            String testjdkPath = System.getProperty("test.jdk");
-
-            pb = ProcessTools.createJavaProcessBuilder(
-                    "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
-                    "-Dtest.jdk=" + testjdkPath,
-                    "-Xshare:on", "DumpSharedDictionary", "test");
-
-            out = CDSTestUtils.executeAndLog(pb, "exec");
-            if (!CDSTestUtils.isUnableToMap(out)) {
-                out.shouldHaveExitValue(0);
-            }
-        } else {
-            // Grab my own PID
-            String pid = Long.toString(ProcessTools.getProcessId());
-
-            ProcessBuilder pb = new ProcessBuilder();
-            pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
-            OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
-            try {
-                output.shouldContain("Shared Dictionary statistics:");
-                output.shouldContain("Number of buckets");
-                output.shouldContain("Number of entries");
-                output.shouldContain("Maximum bucket size");
-            } catch (RuntimeException e) {
-                output.shouldContain("Unknown diagnostic command");
-            }
-
-            pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary", "-verbose"});
-            output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary-verbose");
-            try {
-                output.shouldContain("Shared Dictionary");
-                output.shouldContain("Dictionary for loader data: 0x");
-                output.shouldContain("^java.lang.String");
-            } catch (RuntimeException e) {
-                output.shouldContain("Unknown diagnostic command");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSymbolAndStringTable.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- */
-
-/*
- * @test
- * @bug 8059510
- * @summary Test jcmd VM.symboltable, VM.stringtable and VM.systemdictionary options
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run main/othervm -XX:+UnlockDiagnosticVMOptions DumpSymbolAndStringTable
- */
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.JDKToolFinder;
-
-public class DumpSymbolAndStringTable {
-    public static void main(String[] args) throws Exception {
-        // Grab my own PID
-        String pid = Long.toString(ProcessTools.getProcessId());
-
-        ProcessBuilder pb = new ProcessBuilder();
-        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.symboltable", "-verbose"});
-        OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-symboltable");
-        try {
-            output.shouldContain("24 2: DumpSymbolAndStringTable\n");
-        } catch (RuntimeException e) {
-            output.shouldContain("Unknown diagnostic command");
-        }
-
-        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.stringtable", "-verbose"});
-        output = CDSTestUtils.executeAndLog(pb, "jcmd-stringtable");
-        try {
-            output.shouldContain("16: java.lang.String\n");
-        } catch (RuntimeException e) {
-            output.shouldContain("Unknown diagnostic command");
-        }
-
-        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
-        output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
-        try {
-            output.shouldContain("System Dictionary for 'app' class loader statistics:");
-            output.shouldContain("Number of buckets");
-            output.shouldContain("Number of entries");
-            output.shouldContain("Maximum bucket size");
-        } catch (RuntimeException e) {
-            output.shouldContain("Unknown diagnostic command");
-        }
-
-        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary", "-verbose"});
-        output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
-        try {
-            output.shouldContain("Dictionary for loader data: 0x");
-            output.shouldContain("^java.lang.String");
-        } catch (RuntimeException e) {
-            output.shouldContain("Unknown diagnostic command");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/LoadClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-/*
- * @summary Load the class specifiecd by the argument
- *   Input: className
- */
-public class LoadClass {
-    public static void main(String args[]) {
-        Class c = null;
-        try {
-            c = Class.forName(args[0]);
-        } catch (ClassNotFoundException e) {
-            System.out.println(e);
-        }
-        if (c != null) {
-            System.out.println(c + " loaded.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/MaxMetaspaceSize.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- */
-
-/**
- * @test
- * @requires vm.cds
- * @bug 8067187 8200078
- * @summary Testing CDS dumping with the -XX:MaxMetaspaceSize=<size> option
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- */
-
-import java.util.ArrayList;
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.Platform;
-
-public class MaxMetaspaceSize {
-  public static void main(String[] args) throws Exception {
-    ArrayList<String> processArgs = new ArrayList<>();
-    processArgs.add("-Xshare:dump");
-
-    if (Platform.is64bit()) {
-      processArgs.add("-XX:MaxMetaspaceSize=3m");
-      processArgs.add("-XX:CompressedClassSpaceSize=1m");
-      processArgs.add("-XX:InitialBootClassLoaderMetaspaceSize=1m");
-    } else {
-      processArgs.add("-XX:MaxMetaspaceSize=1m");
-    }
-
-    String msg = "Failed allocating metaspace object";
-    ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(processArgs.toArray(new String[0]));
-    CDSTestUtils.executeAndLog(pb, "dump").shouldContain(msg).shouldHaveExitValue(1);
-  }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2017, 2019, 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.
- */
-
-/*
- * @test NonBootLoaderClasses
- * @summary Test to ensure platform and app classes are archived when specified in classlist
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver NonBootLoaderClasses
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class NonBootLoaderClasses {
-    public static void main(String[] args) throws Exception {
-        final String PLATFORM_CLASS = "jdk/dynalink/DynamicLinker";
-        final String APP_CLASS = "com/sun/tools/javac/Main";
-        String[] classes = {PLATFORM_CLASS, APP_CLASS};
-        String classList =
-            CDSTestUtils.makeClassList(classes).getPath();
-        String archiveName = "NonBootLoaderClasses.jsa";
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-XX:ExtraSharedClassListFile=" + classList, "-Djava.class.path=")
-            .setArchiveName(archiveName);
-        CDSTestUtils.createArchiveAndCheck(opts);
-
-        // Print the shared dictionary and inspect the output
-        opts = (new CDSOptions())
-            .setUseVersion(false)
-            .addSuffix("-Djava.class.path=",
-                "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
-                "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary");
-        CDSTestUtils.run(opts)
-            .assertNormalExit(output -> {
-                output.shouldContain("archive is valid");
-                output.shouldContain(PLATFORM_CLASS.replace('/', '.'));
-                output.shouldContain(APP_CLASS.replace('/', '.'));
-            });
-   }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- */
-
-/**
- * @test
- * @bug 8066670
- * @summary Testing -XX:+PrintSharedArchiveAndExit option
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class PrintSharedArchiveAndExit {
-    public static void main(String[] args) throws Exception {
-        String archiveName = "PrintSharedArchiveAndExit.jsa";
-        CDSOptions opts = (new CDSOptions()).setArchiveName(archiveName);
-        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
-        CDSTestUtils.checkDump(out);
-
-        // (1) With a valid archive
-        opts = (new CDSOptions())
-            .setUseVersion(false)
-            .addSuffix( "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
-                "-XX:+PrintSharedArchiveAndExit", "-version");
-        CDSTestUtils.run(opts)
-            .assertNormalExit(output -> {
-                output.shouldContain("archive is valid");
-                output.shouldNotContain("java version"); // Should not print JVM version
-            });
-
-        opts = (new CDSOptions())
-            .setUseVersion(false)
-            .addSuffix( "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
-                "-XX:+PrintSharedArchiveAndExit");
-        CDSTestUtils.run(opts)
-            .assertNormalExit(output -> {
-                output.shouldContain("archive is valid");
-                output.shouldNotContain("Usage:"); // Should not print JVM help message
-            });
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2013, 2018, 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.
- */
-
-/**
- * @test
- * @bug 8014138
- * @summary Testing new -XX:SharedArchiveFile=<file-name> option
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-
-
-// NOTE: This test serves as a sanity test and also as an example for simple
-// use of SharedArchiveFile argument. For this reason it DOES NOT use the utility
-// methods to form command line to create/use shared archive.
-public class SharedArchiveFile {
-    public static void main(String[] args) throws Exception {
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
-                                "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
-                                "-Xshare:dump");
-        OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
-        CDSTestUtils.checkDump(out);
-
-        // -XX:+DumpSharedSpaces should behave the same as -Xshare:dump
-        pb = ProcessTools.createJavaProcessBuilder(true,
-                                "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
-                                "-XX:+DumpSharedSpaces");
-        out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
-        CDSTestUtils.checkDump(out);
-
-        pb = ProcessTools.createJavaProcessBuilder(true,
-                              "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
-                              "-Xshare:on", "-version");
-        out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
-        CDSTestUtils.checkExec(out);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedBaseAddress.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- */
-
-/**
- * @test SharedBaseAddress
- * @summary Test variety of values for SharedBaseAddress, making sure
- *          VM handles normal values as well as edge values w/o a crash.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver SharedBaseAddress
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SharedBaseAddress {
-
-    // shared base address test table
-    private static final String[] testTable = {
-        "1g", "8g", "64g","512g", "4t",
-        "32t", "128t", "0",
-        "1", "64k", "64M"
-    };
-
-    public static void main(String[] args) throws Exception {
-
-        for (String testEntry : testTable) {
-            String filename = "SharedBaseAddress" + testEntry + ".jsa";
-            System.out.println("sharedBaseAddress = " + testEntry);
-            CDSOptions opts = (new CDSOptions())
-                .setArchiveName(filename)
-                .addPrefix("-XX:SharedBaseAddress=" + testEntry);
-
-            CDSTestUtils.createArchiveAndCheck(opts);
-            CDSTestUtils.runWithArchiveAndCheck(opts);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStrings.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- */
-
-/**
- * @test
- * @summary Check to make sure that shared strings in the bootstrap CDS archive
- *          are actually shared
- * @requires vm.cds.archived.java.heap
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @build SharedStringsWb sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
- * @run driver SharedStrings
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SharedStrings {
-    public static void main(String[] args) throws Exception {
-        // Note: This is a basic sanity test for Shared Strings feature.
-        // This also serves as a reference on how to use this feature,
-        // hence the command lines are spelled out instead of using the
-        // test utils methods.
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-XX:SharedArchiveFile=./SharedStrings.jsa",
-            "-Xlog:cds,cds+hashtables",
-            // Needed for bootclasspath match, for CDS to work with WhiteBox API
-            "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"),
-            "-Xshare:dump");
-
-        OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
-        CDSTestUtils.checkDump(out, "Shared string table stats");
-
-
-        pb = ProcessTools.createJavaProcessBuilder(
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:SharedArchiveFile=./SharedStrings.jsa",
-                // needed for access to white box test API
-                "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"),
-                "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-                "-Xshare:on", "-showversion", "SharedStringsWb");
-
-        out = CDSTestUtils.executeAndLog(pb, "exec");
-        CDSTestUtils.checkExec(out);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsDedup.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-/**
- * @test SharedStringsDedup
- * @summary Test -Xshare:auto with shared strings and -XX:+UseStringDeduplication
- * @requires vm.cds.archived.java.heap
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver SharedStringsDedup
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-
-// The main purpose is to test the interaction between shared strings
-// and -XX:+UseStringDeduplication. We run in -Xshare:auto mode so
-// we don't need to worry about CDS archive mapping failure (which
-// doesn't happen often so it won't impact coverage).
-public class SharedStringsDedup {
-    public static void main(String[] args) throws Exception {
-        OutputAnalyzer out =
-            CDSTestUtils.createArchive();
-        CDSTestUtils.checkDump(out, "Shared string table stats");
-        CDSTestUtils.runWithArchiveAndCheck("-XX:+UseStringDeduplication");
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsRunAuto.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- */
-
-/**
- * @test SharedStringsAuto
- * @summary Test -Xshare:auto with shared strings.
- * @requires vm.cds.archived.java.heap
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver SharedStringsRunAuto
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-
-public class SharedStringsRunAuto {
-    public static void main(String[] args) throws Exception {
-        OutputAnalyzer out =
-            CDSTestUtils.createArchive();
-        CDSTestUtils.checkDump(out, "Shared string table stats");
-        CDSTestUtils.runWithArchiveAndCheck();
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsWb.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2013, 2015, 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.
- */
-
-import sun.hotspot.WhiteBox;
-
-// This class is used by the test SharedStrings.java
-// It should be launched in CDS mode
-public class SharedStringsWb {
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (wb.areSharedStringsIgnored()) {
-            System.out.println("Shared strings are ignored, assuming PASS");
-            return;
-        }
-
-        // The string below is known to be added to CDS archive
-        String s = "<init>";
-        String internedS = s.intern();
-
-        // Check that it's a valid string
-        if (s.getClass() != String.class || !(s instanceof String)) {
-            throw new RuntimeException("Shared string is not a valid String: FAIL");
-        }
-
-        if (wb.isShared(internedS)) {
-            System.out.println("Found shared string, result: PASS");
-        } else {
-            throw new RuntimeException("String is not shared, result: FAIL");
-        }
-    }
-}
-
-
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- */
-
-/**
- * @test
- * @bug 8059510
- * @summary Test SharedSymbolTableBucketSize option
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SharedSymbolTableBucketSize {
-    public static void main(String[] args) throws Exception {
-        int bucket_size = 8;
-
-        OutputAnalyzer output =
-            CDSTestUtils.createArchive("-XX:SharedSymbolTableBucketSize="
-                                       + Integer.valueOf(bucket_size));
-        CDSTestUtils.checkDump(output);
-        CDSTestUtils.checkMappingFailure(output);
-
-        String s = output.firstMatch("Average bucket size     : .*");
-        Float f = Float.parseFloat(s.substring(25));
-        int size = Math.round(f);
-        if (size != bucket_size) {
-            throw new Exception("FAILED: incorrect bucket size " + size +
-                                ", expect " + bucket_size);
-        }
-
-        // Invalid SharedSymbolTableBucketSize input
-        String input[] = {"-XX:SharedSymbolTableBucketSize=-1",
-                          "-XX:SharedSymbolTableBucketSize=2.5"};
-        for (int i = 0; i < input.length; i++) {
-            CDSTestUtils.createArchive(input[i])
-                .shouldContain("Improperly specified VM option")
-                .shouldHaveExitValue(1);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- */
-
-/**
- * @test SpaceUtilizationCheck
- * @summary Check if the space utilization for shared spaces is adequate
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- *                              sun.hotspot.WhiteBox$WhiteBoxPermission
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SpaceUtilizationCheck
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.lang.Integer;
-
-public class SpaceUtilizationCheck {
-    // [1] Each region must have strictly less than
-    //     WhiteBox.metaspaceReserveAlignment() bytes of unused space.
-    // [2] There must be no gap between two consecutive regions.
-
-    public static void main(String[] args) throws Exception {
-        // (1) Default VM arguments
-        test();
-
-        // (2) Use the now deprecated VM arguments. They should have no effect.
-        test("-XX:SharedReadWriteSize=128M",
-             "-XX:SharedReadOnlySize=128M",
-             "-XX:SharedMiscDataSize=128M",
-             "-XX:SharedMiscCodeSize=128M");
-    }
-
-    static void test(String... extra_options) throws Exception {
-        OutputAnalyzer output = CDSTestUtils.createArchive(extra_options);
-        CDSTestUtils.checkDump(output);
-        Pattern pattern = Pattern.compile("^(..) *space: *([0-9]+).* out of *([0-9]+) bytes .* at 0x([0-9a0-f]+)");
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        long reserve_alignment = wb.metaspaceReserveAlignment();
-        System.out.println("Metaspace::reserve_alignment() = " + reserve_alignment);
-
-        long last_region = -1;
-        Hashtable<String,String> checked = new Hashtable<>();
-        for (String line : output.getStdout().split("\n")) {
-            if (line.contains(" space:") && !line.contains("st space:")) {
-                Matcher matcher = pattern.matcher(line);
-                if (matcher.find()) {
-                    String name = matcher.group(1);
-                    if (name.equals("s0") || name.equals("s1")) {
-                      // String regions are listed at the end and they may not be fully occupied.
-                      break;
-                    } else {
-                      System.out.println("Checking " + name + " in : " + line);
-                      checked.put(name, name);
-                    }
-                    long used = Long.parseLong(matcher.group(2));
-                    long capacity = Long.parseLong(matcher.group(3));
-                    long address = Long.parseLong(matcher.group(4), 16);
-                    long unused = capacity - used;
-                    if (unused < 0) {
-                        throw new RuntimeException("Unused space (" + unused + ") less than 0");
-                    }
-                    if (unused > reserve_alignment) {
-                        // [1] Check for unused space
-                        throw new RuntimeException("Unused space (" + unused + ") must be smaller than Metaspace::reserve_alignment() (" +
-                                                   reserve_alignment + ")");
-                    }
-                    if (last_region >= 0 && address != last_region) {
-                        // [2] Check for no-gap
-                        throw new RuntimeException("Region 0x" + address + " should have started at 0x" + Long.toString(last_region, 16));
-                    }
-                    last_region = address + capacity;
-                }
-            }
-        }
-        if (checked.size() != 4) {
-          throw new RuntimeException("Must have 4 consecutive, fully utilized regions");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- */
-
-/**
- * @test InterpreterMethodEntries
- * @bug 8169711
- * @summary Test interpreter method entries for intrinsics with CDS (class data sharing)
- *          and the intrinsic flag enabled during dump and disabled during use of the archive.
- * @requires vm.cds
- * @comment the test disables intrinsics, so it can't be run w/ AOT'ed java module
- * @requires !vm.aot.enabled
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver TestInterpreterMethodEntries true false
- */
-
-/**
- * @test InterpreterMethodEntries
- * @bug 8169711
- * @summary Test interpreter method entries for intrinsics with CDS (class data sharing)
- *          and the intrinsic flag disabled during dump and enabled during use of the archive.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @run driver TestInterpreterMethodEntries false true
- */
-
-import java.lang.Math;
-import java.util.zip.CRC32;
-import java.util.zip.CRC32C;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class TestInterpreterMethodEntries {
-
-    public static void main(String[] args) throws Exception {
-        if (args.length > 1) {
-          boolean dump = Boolean.parseBoolean(args[0]);
-          boolean use  = Boolean.parseBoolean(args[1]);
-
-          // Dump and use shared archive with different flag combinations
-          dumpAndUseSharedArchive(dump ? "+" : "-", use ? "+" : "-");
-        } else {
-          // Call intrinsified java.lang.Math::fma()
-          Math.fma(1.0, 2.0, 3.0);
-
-          byte[] buffer = new byte[256];
-          // Call intrinsified java.util.zip.CRC32::update()
-          CRC32 crc32 = new CRC32();
-          crc32.update(buffer, 0, 256);
-
-          // Call intrinsified java.util.zip.CRC32C::updateBytes(..)
-          CRC32C crc32c = new CRC32C();
-          crc32c.update(buffer, 0, 256);
-        }
-    }
-
-    private static void dumpAndUseSharedArchive(String dump, String use) throws Exception {
-        String unlock     = "-XX:+UnlockDiagnosticVMOptions";
-
-        String dumpFMA    = "-XX:" + dump + "UseFMA";
-        String dumpCRC32  = "-XX:" + dump + "UseCRC32Intrinsics";
-        String dumpCRC32C = "-XX:" + dump + "UseCRC32CIntrinsics";
-        String useFMA     = "-XX:" + use  + "UseFMA";
-        String useCRC32   = "-XX:" + use  + "UseCRC32Intrinsics";
-        String useCRC32C  = "-XX:" + use  + "UseCRC32CIntrinsics";
-
-        CDSTestUtils.createArchiveAndCheck(unlock, dumpFMA, dumpCRC32, dumpCRC32C);
-
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix(unlock, useFMA, useCRC32, useCRC32C, "-showversion")
-            .addSuffix("TestInterpreterMethodEntries", "run")
-            .setUseVersion(false);
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/javax/annotation/processing/FilerException.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-package javax/annotation/processing;
-
-public class FilerException
-    version 51:0
-{
-
-public Method "<init>":"()V"
-    stack 1 locals 1
-{
-    aload_0;
-    invokespecial   Method java/lang/Object."<init>":"()V";
-    return;
-}
-
-
-public Method toString:"()Ljava/lang/String;"
-    stack 1 locals 1
-{
-    ldc String "hi";
-    areturn; 
-}
-
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/javax/sound/sampled/MyClass.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-package javax/sound/sampled;
-
-public class MyClass
-    version 51:0
-{
-
-public Method "<init>":"()V"
-    stack 1 locals 1
-{
-    aload_0;
-    invokespecial   Method java/lang/Object."<init>":"()V";
-    return;
-}
-
-
-public Method toString:"()Ljava/lang/String;"
-    stack 1 locals 1
-{
-    ldc String "hi";
-    areturn; 
-}
-
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/nonjdk/myPackage/MyClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-package nonjdk.myPackage;
-
-public class MyClass {
-    public String toString() {
-        return "hi";
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests how CDS works when critical library classes are replaced with JVMTI ClassFileLoadHook
- * @library /test/lib
- * @requires vm.cds
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
- * @run main/othervm/native ReplaceCriticalClasses
- */
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class ReplaceCriticalClasses {
-    public static void main(String args[]) throws Throwable {
-        ReplaceCriticalClasses rcc = new ReplaceCriticalClasses();
-        rcc.process(args);
-    }
-
-    public void process(String args[]) throws Throwable {
-        if (args.length == 0) {
-            // Dump the shared archive in case it was not generated during the JDK build.
-            // Put the archive at separate file to avoid clashes with concurrent tests.
-            CDSOptions opts = new CDSOptions()
-                .setXShareMode("dump")
-                .setArchiveName(ReplaceCriticalClasses.class.getName() + ".jsa")
-                .setUseVersion(false)
-                .addSuffix("-showversion");
-            CDSTestUtils.run(opts).assertNormalExit("");
-
-            launchChildProcesses(getTests());
-        } else if (args.length == 3 && args[0].equals("child")) {
-            Class klass = Class.forName(args[2].replace("/", "."));
-            if (args[1].equals("-shared")) {
-                testInChild(true, klass);
-            } else if (args[1].equals("-notshared")) {
-                testInChild(false, klass);
-            } else {
-                throw new RuntimeException("Unknown child exec option " + args[1]);
-            }
-            return;
-        } else {
-            throw new RuntimeException("Usage: @run main/othervm/native ReplaceCriticalClasses");
-        }
-    }
-
-    public String[] getTests() {
-        String tests[] = {
-            // CDS should be disabled -- these critical classes will be replaced
-            // because JvmtiExport::early_class_hook_env() is true.
-            "-early -notshared java/lang/Object",
-            "-early -notshared java/lang/String",
-            "-early -notshared java/lang/Cloneable",
-            "-early -notshared java/io/Serializable",
-
-            // CDS should not be disabled -- these critical classes cannot be replaced because
-            // JvmtiExport::early_class_hook_env() is false.
-            "java/lang/Object",
-            "java/lang/String",
-            "java/lang/Cloneable",
-            "java/io/Serializable",
-
-            /* Try to replace classes that are used by the archived subgraph graphs.
-               The following test cases are in ReplaceCriticalClassesForSubgraphs.java.
-            "-early -notshared -subgraph java/lang/module/ResolvedModule jdk.internal.module.ArchivedModuleGraph",
-            "-early -notshared -subgraph java/lang/Long java.lang.Long$LongCache",
-            "-subgraph java/lang/Long java.lang.Long$LongCache",
-            */
-
-            // Replace classes that are loaded after JVMTI_PHASE_PRIMORDIAL. It's OK to replace
-            // such
-            // classes even when CDS is enabled. Nothing bad should happen.
-            "-notshared java/util/Locale",
-            "-notshared sun/util/locale/BaseLocale",
-            "-notshared java/lang/Readable",
-        };
-        return tests;
-    }
-
-    static void launchChildProcesses(String tests[]) throws Throwable {
-        int n = 0;
-        for (String s : tests) {
-            System.out.println("Test case[" + (n++) + "] = \"" + s + "\"");
-            String args[] = s.split("\\s+"); // split by space character
-            launchChild(args);
-        }
-    }
-
-    static void launchChild(String args[]) throws Throwable {
-        if (args.length < 1) {
-            throw new RuntimeException("Invalid test case. Should be <-early> <-subgraph> <-notshared> klassName subgraphKlass");
-        }
-        String klassName = null;
-        String subgraphKlass = null;
-        String early = "";
-        boolean subgraph = false;
-        String shared = "-shared";
-
-        for (int i=0; i<args.length-1; i++) {
-            String opt = args[i];
-            if (opt.equals("-early")) {
-                early = "-early,";
-            } else if (opt.equals("-subgraph")) {
-                subgraph = true;
-            } else if (opt.equals("-notshared")) {
-                shared = opt;
-            } else {
-              if (!subgraph) {
-                throw new RuntimeException("Unknown option: " + opt);
-              }
-            }
-        }
-        if (subgraph) {
-          klassName = args[args.length-2];
-          subgraphKlass = args[args.length-1];
-        } else {
-          klassName = args[args.length-1];
-        }
-        Class.forName(klassName.replace("/", ".")); // make sure it's a valid class
-        final String subgraphInit = "initialize_from_archived_subgraph " + subgraphKlass;
-
-        // We will pass an option like "-agentlib:SimpleClassFileLoadHook=java/util/Locale,XXX,XXX".
-        // The SimpleClassFileLoadHook agent would attempt to hook the java/util/Locale class
-        // but leave the class file bytes unchanged (it replaces all bytes "XXX" with "XXX", i.e.,
-        // a no-op). JVMTI doesn't check the class file bytes returned by the agent, so as long
-        // as the agent returns a buffer, it will not load the class from CDS, and will instead
-        // load the class by parsing the buffer.
-        //
-        // Note that for safety we don't change the contents of the class file bytes. If in the
-        // future JVMTI starts checking the contents of the class file bytes, this test would need
-        // to be updated. (You'd see the test case with java/util/Locale staring to fail).
-        String agent = "-agentlib:SimpleClassFileLoadHook=" + early + klassName + ",XXX,XXX";
-
-        CDSOptions opts = (new CDSOptions())
-            .setXShareMode("auto")
-            .setArchiveName(ReplaceCriticalClasses.class.getName() + ".jsa")
-            .setUseVersion(false)
-            .addSuffix("-showversion",
-                       "-Xlog:cds",
-                       "-XX:+UnlockDiagnosticVMOptions",
-                       agent,
-                       "-XX:+WhiteBoxAPI",
-                       "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"));
-
-        if (subgraph) {
-            opts.addSuffix("-Xlog:cds,cds+heap");
-        }
-
-        opts.addSuffix("ReplaceCriticalClasses",
-                       "child",
-                       shared,
-                       klassName);
-
-        final boolean expectDisable = !early.equals("");
-        final boolean checkSubgraph = subgraph;
-        final boolean expectShared = shared.equals("-shared");
-        CDSTestUtils.run(opts).assertNormalExit(out -> {
-                if (expectDisable) {
-                    out.shouldContain("UseSharedSpaces: CDS is disabled because early JVMTI ClassFileLoadHook is in use.");
-                    System.out.println("CDS disabled as expected");
-                }
-                if (checkSubgraph) {
-                    if (expectShared) {
-                        if (!out.getOutput().contains("UseSharedSpaces: Unable to map at required address in java heap")) {
-                            out.shouldContain(subgraphInit);
-                        }
-                    } else {
-                      out.shouldNotContain(subgraphInit);
-                    }
-                }
-            });
-    }
-
-    static void testInChild(boolean shouldBeShared, Class klass) {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (shouldBeShared && !wb.isSharedClass(klass)) {
-            throw new RuntimeException(klass + " should be shared but but actually is not.");
-        }
-        if (!shouldBeShared && wb.isSharedClass(klass)) {
-            throw new RuntimeException(klass + " should not be shared but actually is.");
-        }
-        System.out.println("wb.isSharedClass(klass): " + wb.isSharedClass(klass) + " == " + shouldBeShared);
-
-        String strings[] = {
-            // interned strings from j.l.Object
-            "@",
-            "nanosecond timeout value out of range",
-            "timeoutMillis value is negative",
-
-            // interned strings from j.l.Integer
-            "0",
-            "0X",
-            "0x",
-            "int"
-        };
-
-        // Make sure the interned string table is same
-        for (String s : strings) {
-            String i = s.intern();
-            if (s != i) {
-                throw new RuntimeException("Interned string mismatch: \"" + s + "\" @ " + System.identityHashCode(s) +
-                                           " vs \"" + i + "\" @ " + System.identityHashCode(i));
-            }
-        }
-        // We have tried to use ClassFileLoadHook to replace critical library classes (which may
-        // may not have succeeded, depending on whether the agent has requested
-        // can_generate_all_class_hook_events/can_generate_early_class_hook_events capabilities).
-        //
-        // In any case, the JVM should have started properly (perhaps with CDS disabled) and
-        // the above operations should succeed.
-        System.out.println("If I can come to here without crashing, things should be OK");
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClassesForSubgraphs.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests how CDS works when critical library classes are replaced with JVMTI ClassFileLoadHook
- * @library /test/lib
- * @requires vm.cds.archived.java.heap
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
- * @run main/othervm/native ReplaceCriticalClassesForSubgraphs
- */
-
-public class ReplaceCriticalClassesForSubgraphs extends ReplaceCriticalClasses {
-    public static void main(String args[]) throws Throwable {
-        ReplaceCriticalClassesForSubgraphs rcc = new ReplaceCriticalClassesForSubgraphs();
-        rcc.process(args);
-    }
-
-    public String[] getTests() {
-        String tests[] = {
-            // Try to replace classes that are used by the archived subgraph graphs.
-            "-early -notshared -subgraph java/lang/module/ResolvedModule jdk.internal.module.ArchivedModuleGraph",
-            "-early -notshared -subgraph java/lang/Long java.lang.Long$LongCache",
-            "-subgraph java/lang/Long java.lang.Long$LongCache",
-        };
-        return tests;
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Implementor.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-public class Implementor implements Interface {
-    public static void main(String[] args) {
-        System.out.println("Implementor: entering main()");
-        test();
-    }
-
-    public static void test() {
-        // from interface
-        (new Implementor()).printString();
-        // from implementor
-        System.out.println(TransformUtil.ChildCheckPattern +
-                           TransformUtil.BeforePattern);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Interface.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-public interface Interface {
-    public static final String stringToBeTransformed =
-        TransformUtil.ParentCheckPattern + TransformUtil.BeforePattern;
-
-    default void printString() {
-        System.out.println(stringToBeTransformed);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SubClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-public class SubClass extends SuperClazz {
-    public static void main(String[] args) {
-        System.out.println("SubClass: entering main()");
-        test();
-    }
-
-    public static void test() {
-        // The line below will be used to check for successful class transformation
-        System.out.println(TransformUtil.ChildCheckPattern +
-                           TransformUtil.BeforePattern);
-        (new SubClass()).callParent();
-    }
-
-    private void callParent() {
-        super.testParent();
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SuperClazz.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-
-public class SuperClazz {
-    public static void testParent() {
-        System.out.println("SuperClazz: entering testParent()");
-
-        // The line below will be used to check for successful class transformation
-        System.out.println(TransformUtil.ParentCheckPattern + TransformUtil.BeforePattern);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TestEntry.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-
-// Test Entry - a single entry in a test table
-// that defines a test case
-// See TransformRelatedClasses.java for more details
-public class TestEntry {
-    int testCaseId;
-    boolean transformParent;
-    boolean transformChild;
-    boolean isParentExpectedShared;
-    boolean isChildExpectedShared;
-
-    public TestEntry(int testCaseId,
-                     boolean transformParent, boolean transformChild,
-                     boolean isParentExpectedShared, boolean isChildExpectedShared) {
-        this.testCaseId = testCaseId;
-        this.transformParent = transformParent;
-        this.transformChild = transformChild;
-        this.isParentExpectedShared = isParentExpectedShared;
-        this.isChildExpectedShared = isChildExpectedShared;
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-/**
- * @test
- * @summary Exercise initial transformation (ClassFileLoadHook)
- *  with CDS with Interface/Implementor pair
- * @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- *          java.instrument
- * @build TransformUtil TransformerAgent Interface Implementor
- * @run main/othervm TransformRelatedClasses Interface Implementor
- */
-
-// Clarification on @requires declarations:
-// CDS is not supported w/o the use of Compressed OOPs
-// JVMTI's ClassFileLoadHook is not supported under minimal VM
-
-// This test class uses TransformRelatedClasses to do its work.
-// The goal of this test is to exercise transformation of related interface
-// and its implementor in combination with CDS.
-// The transformation is done via ClassFileLoadHook mechanism.
-// Both superclass and subclass reside in the shared archive.
-// The test consists of 4 test cases where transformation is applied
-// to an interface and an implementor in a combinatorial manner.
-// Please see TransformRelatedClasses.java for details.
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformRelatedClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- */
-
-
-// This is the main test class for testing transformation of related classes
-// in combination with CDS, to ensure these features work well together.
-// The relationships that can be tested using this test class are:
-// superclass/subclass, and interface/implementor relationships.
-//
-// The test uses combinatorial approach.
-// For details on test table and test cases see main() method in this class.
-//
-// This test consists of multiple classes for better flexibility and reuse,
-// and also relies on certain common utility code.
-// Here are the details on the structure of the test
-//
-// Structure of the test:
-// TransformRelatedClasses -- common main test driver
-//     The TransformRelatedClasses is invoked from test driver classes:
-//     TransformInterfaceAndImplementor, TransformSuperAndSubClasses
-//     It is responsible for preparing test artifacts (test jar, agent jar
-//     and the shared archive), running test cases and checking the results.
-// The following test classes below are launched in a sub-process with use
-// of shared archive:
-//     SuperClazz, SubClass -- super/sub class pair under test
-//     Interface, Implementor -- classes under test
-// This test will transform these classes, based on the test case data,
-// by changing a predefined unique string in each class.
-// For more details, see the test classes' code and comments.
-//
-// Other related classes:
-//     TestEntry - a class representing a single test case, as test entry in the table
-//     TransformTestCommon - common methods for transformation test cases
-//
-// Other utility/helper classes and files used in this test:
-//     TransformerAgent - an agent that is used when JVM-under-test is executed
-//         to transform specific strings inside specified classes
-//     TransformerAgent.mf - accompanies transformer agent
-
-import java.io.File;
-import java.util.ArrayList;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-
-public class TransformRelatedClasses {
-    static final String archiveName = "./TransformRelatedClasses.jsa";
-    static String agentClasses[] = {
-        "TransformerAgent",
-        "TransformerAgent$SimpleTransformer",
-        "TransformUtil"
-    };
-
-    String parent;
-    String child;
-    String[] testClasses = new String[2];
-    String[] testNames = new String[2];
-    String testJar;
-    String agentJar;
-
-
-    private static void log(String msg) {
-        System.out.println("TransformRelatedClasses: " + msg);
-    }
-
-
-    // This class is intended to test 2 parent-child relationships:
-    // 1. Base Class (parent) and Derived Class (child)
-    // 2. Interface (parent) and Implementor (child)
-    //    Parameters to main(): parent, child
-    public static void main(String args[]) throws Exception {
-        TransformRelatedClasses test = new TransformRelatedClasses(args[0], args[1]);
-        test.prepare();
-
-        // Test Table
-        // TestEntry:  (testCaseId, transformParent, tranformChild,
-        //             isParentExpectedShared, isChildExpectedShared)
-        ArrayList<TestEntry> testTable = new ArrayList<>();
-
-        // base case - no tranformation - all expected to be shared
-        testTable.add(new TestEntry(0, false, false, true, true));
-
-        // transform parent only - both parent and child should not be shared
-        testTable.add(new TestEntry(1, true, false, false, false));
-
-        // transform parent and child - both parent and child should not be shared
-        testTable.add(new TestEntry(2, true, true, false, false));
-
-        // transform child only - parent should still be shared, but not child
-        testTable.add(new TestEntry(3, false, true, true, false));
-
-        // run the tests
-        for (TestEntry entry : testTable) {
-            test.runTest(entry);
-        }
-    }
-
-
-    public TransformRelatedClasses(String parent, String child) {
-        log("Constructor: parent = " + parent + ", child = " + child);
-        this.parent = parent;
-        this.child = child;
-        testClasses[0] = parent;
-        testClasses[1] = child;
-        testNames[0] = parent.replace('.', '/');
-        testNames[1] = child.replace('.', '/');
-    }
-
-
-    // same test jar and archive can be used for all test cases
-    private void prepare() throws Exception {
-        // create agent jar
-        // Agent is the same for all test cases
-        String pathToManifest = "../../../../testlibrary/jvmti/TransformerAgent.mf";
-        agentJar = ClassFileInstaller.writeJar("TransformerAgent.jar",
-                       ClassFileInstaller.Manifest.fromSourceFile(pathToManifest),
-                                           agentClasses);
-
-        // create a test jar
-        testJar =
-            ClassFileInstaller.writeJar(parent + "-" + child + ".jar",
-                                           testClasses);
-
-        // create an archive
-        String classList =
-            CDSTestUtils.makeClassList("transform-" + parent, testNames).getPath();
-
-        CDSTestUtils.createArchiveAndCheck("-Xbootclasspath/a:" + testJar,
-            "-XX:ExtraSharedClassListFile=" + classList);
-    }
-
-
-    private void runTest(TestEntry entry) throws Exception {
-        log("runTest(): testCaseId = " + entry.testCaseId);
-
-        // execute with archive
-        String agentParam = "-javaagent:" + agentJar + "=" +
-            TransformTestCommon.getAgentParams(entry, parent, child);
-
-        CDSOptions opts = new CDSOptions()
-            .addPrefix("-Xbootclasspath/a:" + testJar, "-Xlog:class+load=info")
-            .setUseVersion(false)
-            .addSuffix( "-showversion",agentParam, child);
-
-        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
-        TransformTestCommon.checkResults(entry, out, parent, child);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-
-/**
- * @test
- * @summary Exercise initial transformation (ClassFileLoadHook)
- *  with CDS with SubClass and SuperClass
- * @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- *          java.instrument
- * @build TransformUtil TransformerAgent SubClass SuperClazz
- * @run main/othervm TransformRelatedClasses SuperClazz SubClass
-*/
-
-// Clarification on @requires declarations:
-// CDS is not supported w/o the use of Compressed OOPs
-// JVMTI's ClassFileLoadHook is not supported under minimal VM
-
-// This test class uses TransformRelatedClasses to do its work.
-// The goal of this test is to exercise transformation of related superclass
-// and subclass in combination with CDS.
-// The transformation is done via ClassFileLoadHook mechanism.
-// Both superclass and subclass reside in the shared archive.
-// The test consists of 4 test cases where transformation is applied
-// to a parent and child in combinatorial manner.
-// Please see TransformRelatedClasses.java for details.
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-
-/**
- * @test
- * @summary Exercise initial transformation (ClassFileLoadHook)
- *  with CDS with SubClass and SuperClass, each lives in own separate package
- * @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- *          java.instrument
- * @build TransformUtil TransformerAgent SubClass SuperClazz
- * @compile myPkg2/SubClass.java myPkg1/SuperClazz.java
- * @run main/othervm TransformRelatedClasses myPkg1.SuperClazz myPkg2.SubClass
-*/
-
-// Clarification on @requires declarations:
-// CDS is not supported w/o the use of Compressed OOPs
-// JVMTI's ClassFileLoadHook is not supported under minimal VM
-
-// This test class uses TransformRelatedClasses to do its work.
-// The goal of this test is to exercise transformation of related superclass
-// and subclass in combination with CDS; each class lives in its own package.
-// The transformation is done via ClassFileLoadHook mechanism.
-// Both superclass and subclass reside in the shared archive.
-// The test consists of 4 test cases where transformation is applied
-// to a parent and child in combinatorial manner.
-// Please see TransformRelatedClasses.java for details.
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-// This class contains methods common to all transformation test cases
-public class TransformTestCommon {
-
-    // get parameters to an agent depending on the test case
-    // these parameters will instruct the agent which classes should be
-    // transformed
-    public static String getAgentParams(TestEntry entry,
-                                        String parent, String child) {
-
-        if (entry.transformParent && entry.transformChild)
-            return parent + "," + child;
-        if (entry.transformParent)
-            return parent;
-        if (entry.transformChild)
-            return child;
-
-        return "";
-    }
-
-
-    private static void checkTransformationResults(TestEntry entry,
-                                                   OutputAnalyzer out)
-        throws Exception {
-
-        if (entry.transformParent)
-            out.shouldContain(TransformUtil.ParentCheckPattern +
-                              TransformUtil.AfterPattern);
-
-        if (entry.transformChild)
-            out.shouldContain(TransformUtil.ChildCheckPattern +
-                              TransformUtil.AfterPattern);
-    }
-
-
-    private static void checkSharingByClass(TestEntry entry, OutputAnalyzer out,
-                                            String parent, String child)
-        throws Exception {
-
-        String parentSharedMatch = " " + parent + " source: shared objects file";
-        String childSharedMatch =  " " + child +  " source: shared objects file";
-
-        if (entry.isParentExpectedShared)
-            out.shouldContain(parentSharedMatch);
-        else
-            out.shouldNotContain(parentSharedMatch);
-
-        if (entry.isChildExpectedShared)
-            out.shouldContain(childSharedMatch);
-        else
-            out.shouldNotContain(childSharedMatch);
-    }
-
-
-    // Both parent and child classes should be passed to ClassFileTransformer.transform()
-    // exactly once.
-    private static void checkTransformationCounts(TestEntry entry, OutputAnalyzer out,
-                                                  String parent, String child)
-        throws Exception {
-
-        String patternBase = "TransformerAgent: SimpleTransformer called for: ";
-
-        out.shouldContain(patternBase + child + "@1");
-        out.shouldContain(patternBase + parent + "@1");
-
-        out.shouldNotContain(patternBase + child + "@2");
-        out.shouldNotContain(patternBase + parent + "@2");
-    }
-
-
-    public static void checkResults(TestEntry entry, OutputAnalyzer out,
-                                    String parent, String child)
-        throws Exception {
-
-        // If we were not able to map an archive,
-        // then do not perform other checks, since
-        // there was no sharing at all
-        CDSTestUtils.checkMappingFailure(out);
-
-        String childVmName = child.replace('.', '/');
-        String parentVmName = parent.replace('.', '/');
-
-        CDSTestUtils.checkExec(out);
-        checkTransformationCounts(entry, out, parentVmName, childVmName);
-        checkTransformationResults(entry, out);
-        checkSharingByClass(entry, out, parent, child);
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg1/SuperClazz.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-package myPkg1;
-
-public class SuperClazz {
-    public static void testParent() {
-        System.out.println("SuperClazz: entering testParent()");
-
-        // The line below will be used to check for successful class transformation
-        System.out.println("parent-transform-check: this-should-be-transformed");
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg2/SubClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 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.
- */
-
-package myPkg2;
-
-import myPkg1.SuperClazz;
-
-public class SubClass extends SuperClazz {
-    public static void main(String[] args) {
-        System.out.println("SubClass: entering main()");
-        test();
-    }
-
-    public static void test() {
-        // The line below will be used to check for successful class transformation
-        System.out.println("child-transform-check: this-should-be-transformed");
-        (new SubClass()).callParent();
-
-        // Get the system packages, which should contain myPkg1 and myPkag2
-        Package[] pkgs = Package.getPackages();
-        for (int i = 0; i < pkgs.length; i++) {
-            if (pkgs[i].getName().equals("myPkg1")) {
-                for (int j = 0; j < pkgs.length; j++) {
-                    if (pkgs[j].getName().equals("myPkg2")) {
-                        return; // found myPkg1 & myPkg1
-                    }
-                }
-            }
-        }
-        throw new RuntimeException("Missing system package");
-    }
-
-    private void callParent() {
-        super.testParent();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/AppCDSOptions.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-import jdk.test.lib.cds.CDSOptions;
-
-// This class represents options used for
-// during creation of the archive and/or running JVM with archive
-
-public class AppCDSOptions extends CDSOptions {
-    public String appJar;
-    public String appJarDir;
-
-    public AppCDSOptions setAppJar(String appJar) {
-        this.appJar = appJar;
-        return this;
-    }
-
-    public AppCDSOptions setAppJarDir(String appJarDir) {
-        this.appJarDir = appJarDir;
-        return this;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/AppendClasspath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary At run time, it is OK to append new elements to the classpath that was used at dump time.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/HelloMore.java
- * @run driver AppendClasspath
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class AppendClasspath {
-
-  public static void main(String[] args) throws Exception {
-    String appJar = JarBuilder.getOrCreateHelloJar();
-    String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
-
-    // Dump an archive with a specified JAR file in -classpath
-    TestCommon.testDump(appJar, TestCommon.list("Hello"));
-
-    // PASS: 1) runtime with classpath containing the one used in dump time
-    TestCommon.run(
-        "-cp", appJar + File.pathSeparator + appJar2,
-        "HelloMore")
-      .assertNormalExit();
-
-    // PASS: 2) runtime has an non-existing jar in the -cp
-    String classDir = System.getProperty("test.classes");
-    String newFile = "non-exist.jar";
-    String nonExistPath = classDir + File.separator + newFile;
-    String classPath = appJar + File.pathSeparator + nonExistPath;
-    File nonExistJar = new File(classDir, newFile);
-    if (nonExistJar.exists()) {
-        nonExistJar.delete();
-    }
-    TestCommon.run(
-        "-cp", classPath,
-        "-Xlog:class+path=trace",
-        "Hello")
-      .assertNormalExit();
-
-    final String errorMessage1 = "Unable to use shared archive";
-    final String errorMessage2 = "shared class paths mismatch";
-    // FAIL: 1) runtime with classpath different from the one used in dump time
-    // (runtime has an extra jar file prepended to the class path)
-    TestCommon.run(
-        "-Xlog:cds",
-        "-cp", appJar2 + File.pathSeparator + appJar,
-        "HelloMore")
-        .assertAbnormalExit(errorMessage1, errorMessage2);
-
-    // FAIL: 2) runtime with classpath part of the one used in dump time
-    TestCommon.testDump(appJar + File.pathSeparator + appJar2,
-                                      TestCommon.list("Hello"));
-    TestCommon.run(
-        "-Xlog:cds",
-        "-cp", appJar2,
-        "Hello")
-        .assertAbnormalExit(errorMessage1, errorMessage2);
-
-    // FAIL: 3) runtime with same set of jar files in the classpath but
-    // with different order
-    TestCommon.run(
-        "-Xlog:cds",
-        "-cp", appJar2 + File.pathSeparator + appJar,
-        "HelloMore")
-        .assertAbnormalExit(errorMessage1, errorMessage2);
-
-    // FAIL: 4) non-existing jar during dump time but jar exists during runtime
-    TestCommon.testDump(classPath, TestCommon.list("Hello"));
-
-    Files.copy(Paths.get(classDir, "hello.jar"),
-        Paths.get(classDir, newFile),
-        StandardCopyOption.REPLACE_EXISTING);
-
-    TestCommon.run(
-        "-cp", classPath,
-        "-Xlog:class+path=trace",
-        "Hello")
-        .assertAbnormalExit(errorMessage1, errorMessage2);
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/BootClassPathMismatch.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary bootclasspath mismatch test.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver BootClassPathMismatch
- */
-
-import jdk.test.lib.Platform;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.StandardCopyOption;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.FileTime;
-
-
-public class BootClassPathMismatch {
-    private static final String mismatchMessage = "shared class paths mismatch";
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.getOrCreateHelloJar();
-        copyHelloToNewDir();
-
-        BootClassPathMismatch test = new BootClassPathMismatch();
-        test.testBootClassPathMismatch();
-        test.testBootClassPathMismatchWithAppClass();
-        test.testBootClassPathMismatchWithBadPath();
-        if (!TestCommon.isDynamicArchive()) {
-            // this test is not applicable to dynamic archive since
-            // there is no class to be archived in the top archive
-            test.testBootClassPathMatchWithAppend();
-        }
-        test.testBootClassPathMatch();
-    }
-
-    /* Archive contains boot classes only, with Hello class on -Xbootclasspath/a path.
-     *
-     * Error should be detected if:
-     * dump time: -Xbootclasspath/a:${testdir}/hello.jar
-     * run-time : -Xbootclasspath/a:${testdir}/newdir/hello.jar
-     *
-     * or
-     * dump time: -Xbootclasspath/a:${testdir}/newdir/hello.jar
-     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
-     */
-    public void testBootClassPathMismatch() throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String appClasses[] = {"Hello"};
-        String testDir = TestCommon.getTestDir("newdir");
-        String otherJar = testDir + File.separator + "hello.jar";
-
-        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar);
-        TestCommon.run(
-                "-Xlog:cds",
-                "-cp", appJar, "-Xbootclasspath/a:" + otherJar, "Hello")
-            .assertAbnormalExit(mismatchMessage);
-
-        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + otherJar);
-        TestCommon.run(
-                "-Xlog:cds",
-                "-cp", appJar, "-Xbootclasspath/a:" + appJar, "Hello")
-            .assertAbnormalExit(mismatchMessage);
-    }
-
-    /* Archive contains boot classes only.
-     *
-     * Error should be detected if:
-     * dump time: -Xbootclasspath/a:${testdir}/newdir/hello.jar
-     * run-time : -Xbootclasspath/a:${testdir}/newdir/hello.jar1
-     */
-    public void testBootClassPathMismatchWithBadPath() throws Exception {
-        String appClasses[] = {"Hello"};
-        String testDir = TestCommon.getTestDir("newdir");
-        String appJar = testDir + File.separator + "hello.jar";
-        String otherJar = testDir + File.separator + "hello.jar1";
-
-        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar);
-        TestCommon.run(
-                "-Xlog:cds",
-                "-cp", appJar, "-Xbootclasspath/a:" + otherJar, "Hello")
-            .assertAbnormalExit(mismatchMessage);
-    }
-
-    /* Archive contains boot classes only, with Hello loaded from -Xbootclasspath/a at dump time.
-     *
-     * No error if:
-     * dump time: -Xbootclasspath/a:${testdir}/hello.jar
-     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
-     */
-    public void testBootClassPathMatch() throws Exception {
-        String appJar = TestCommon.getTestJar("hello.jar");
-        String appClasses[] = {"Hello"};
-        TestCommon.dump(
-            appJar, appClasses, "-Xbootclasspath/a:" + appJar);
-        TestCommon.run(
-                "-cp", appJar, "-verbose:class",
-                "-Xbootclasspath/a:" + appJar, "Hello")
-            .assertNormalExit("[class,load] Hello source: shared objects file");
-
-        // test relative path to appJar
-        String newJar = TestCommon.composeRelPath(appJar);
-        TestCommon.run(
-                "-cp", newJar, "-verbose:class",
-                "-Xbootclasspath/a:" + newJar, "Hello")
-            .assertNormalExit("[class,load] Hello source: shared objects file");
-
-        int idx = appJar.lastIndexOf(File.separator);
-        String jarName = appJar.substring(idx + 1);
-        String jarDir = appJar.substring(0, idx);
-        // relative path starting with "."
-        TestCommon.runWithRelativePath(
-            jarDir,
-            "-Xshare:on",
-            "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
-            "-cp", "." + File.separator + jarName,
-            "-Xbootclasspath/a:" + "." + File.separator + jarName,
-            "-Xlog:class+load=trace,class+path=info",
-            "Hello")
-            .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-                });
-
-        // relative path starting with ".."
-        idx = jarDir.lastIndexOf(File.separator);
-        String jarSubDir = jarDir.substring(idx + 1);
-        TestCommon.runWithRelativePath(
-            jarDir,
-            "-Xshare:on",
-            "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
-            "-cp", ".." + File.separator + jarSubDir + File.separator + jarName,
-            "-Xbootclasspath/a:" + ".." + File.separator + jarSubDir + File.separator + jarName,
-            "-Xlog:class+load=trace,class+path=info",
-            "Hello")
-            .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-                });
-
-        // test sym link to appJar
-        if (!Platform.isWindows()) {
-            File linkedJar = TestCommon.createSymLink(appJar);
-            TestCommon.run(
-                    "-cp", linkedJar.getPath(), "-verbose:class",
-                    "-Xbootclasspath/a:" + linkedJar.getPath(), "Hello")
-                .assertNormalExit("[class,load] Hello source: shared objects file");
-        }
-    }
-
-    /* Archive contains boot classes only, runtime add -Xbootclasspath/a path.
-     *
-     * No error:
-     * dump time: No -Xbootclasspath/a
-     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
-     */
-    public void testBootClassPathMatchWithAppend() throws Exception {
-      CDSOptions opts = new CDSOptions().setUseVersion(false);
-      OutputAnalyzer out = CDSTestUtils.createArchive(opts);
-      CDSTestUtils.checkDump(out);
-
-      String appJar = JarBuilder.getOrCreateHelloJar();
-      opts.addPrefix("-Xbootclasspath/a:" + appJar, "-showversion").addSuffix("Hello");
-      CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-    /* Archive contains app classes, with Hello on -cp path at dump time.
-     *
-     * Error should be detected if:
-     * dump time: <no bootclasspath specified>
-     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
-     */
-    public void testBootClassPathMismatchWithAppClass() throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String appClasses[] = {"Hello"};
-        TestCommon.dump(appJar, appClasses);
-        TestCommon.run(
-                "-Xlog:cds",
-                "-cp", appJar, "-Xbootclasspath/a:" + appJar, "Hello")
-            .assertAbnormalExit(mismatchMessage);
-
-        // test relative path to appJar
-        String newJar = TestCommon.composeRelPath(appJar);
-        TestCommon.run(
-                "-cp", newJar, "-Xbootclasspath/a:" + newJar, "Hello")
-            .assertAbnormalExit(mismatchMessage);
-    }
-
-    private static void copyHelloToNewDir() throws Exception {
-        String classDir = System.getProperty("test.classes");
-        String dstDir = classDir + File.separator + "newdir";
-        try {
-            Files.createDirectory(Paths.get(dstDir));
-        } catch (FileAlreadyExistsException e) { }
-
-        // copy as hello.jar
-        Path dstPath = Paths.get(dstDir, "hello.jar");
-        Files.copy(Paths.get(classDir, "hello.jar"),
-            dstPath,
-            StandardCopyOption.REPLACE_EXISTING);
-
-        File helloJar = dstPath.toFile();
-        long modTime = helloJar.lastModified();
-
-        // copy as hello.jar1
-        Path dstPath2 = Paths.get(dstDir, "hello.jar1");
-        Files.copy(Paths.get(classDir, "hello.jar"),
-            dstPath2,
-            StandardCopyOption.REPLACE_EXISTING);
-
-        // On Windows, we rely on the file size, creation time, and
-        // modification time in order to differentiate between 2 files.
-        // Setting a different modification time on hello.jar1 so that this test
-        // runs more reliably on Windows.
-        modTime += 10000;
-        Files.setAttribute(dstPath2, "lastModifiedTime", FileTime.fromMillis(modTime));
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/CDSandJFR.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/**
- * @test
- * @summary Make sure CDS and JFR work together.
- * @requires vm.hasJFR & vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes test-classes
- * @modules jdk.jfr
- * @build Hello GetFlightRecorder
- * @run driver ClassFileInstaller -jar CDSandJFR.jar Hello GetFlightRecorder GetFlightRecorder$TestEvent GetFlightRecorder$SimpleEvent
- * @run main/othervm/timeout=500 CDSandJFR
- */
-
-import jdk.test.lib.BuildHelper;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CDSandJFR {
-    static String[] classes = {
-        "jdk/jfr/Event",
-        "jdk/jfr/events/FileReadEvent",
-        "jdk/jfr/events/FileWriteEvent",
-        "jdk/jfr/events/SocketReadEvent",
-        "jdk/jfr/events/SocketWriteEvent",
-        "jdk/jfr/events/ExceptionThrownEvent",
-        "jdk/jfr/events/ExceptionStatisticsEvent",
-        "jdk/jfr/events/ErrorThrownEvent",
-        "jdk/jfr/events/ActiveSettingEvent",
-        "jdk/jfr/events/ActiveRecordingEvent",
-        "Hello",
-        "GetFlightRecorder",
-        "GetFlightRecorder$TestEvent",
-    };
-
-    public static void main(String[] args) throws Exception {
-        test(classes);
-    }
-
-    static void test(String[] classes) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("CDSandJFR.jar");
-        OutputAnalyzer output;
-        output = TestCommon.testDump(appJar, TestCommon.list(classes));
-        TestCommon.checkDump(output, "Skipping jdk/jfr/Event: JFR event class");
-
-        output = TestCommon.exec(appJar,
-                                 "-XX:StartFlightRecording=dumponexit=true",
-                                 "Hello");
-        TestCommon.checkExec(output, "Hello World");
-
-        TestCommon.checkExec(TestCommon.exec(appJar,
-                                             "-XX:FlightRecorderOptions=retransform=true",
-                                             "GetFlightRecorder"));
-        TestCommon.checkExec(TestCommon.exec(appJar,
-                                             "-XX:FlightRecorderOptions=retransform=false",
-                                             "GetFlightRecorder"));
-
-        // Test dumping with flight recorder enabled.
-        output = TestCommon.testDump(appJar, TestCommon.list(classes),
-                                     "-XX:StartFlightRecording=dumponexit=true");
-        TestCommon.checkDump(output, "warning: JFR will be disabled during CDS dumping");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/CaseSensitiveClassPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-
-/*
- * @test
- * @summary Test case sensitive aspect of comparing class paths
- *     between dump time and archive use time
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @requires os.family != "mac"
- * @compile test-classes/Hello.java
- * @run driver CaseSensitiveClassPath
- */
-
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-
-// Excluded from running on MAC: a more comprehensive case sensitivity detection
-// and fix mechanism is needed, which is planned to be implemented in the future.
-public class CaseSensitiveClassPath {
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String appJarUpper = appJar.replace("hello", "Hello");
-
-        OutputAnalyzer out = TestCommon.dump(appJar, TestCommon.list("Hello"));
-        TestCommon.checkDump(out);
-
-        Path jarPath = Paths.get(appJar);
-        Path jarPathUpper = null;
-
-        boolean fileExists = false;
-        try {
-            jarPathUpper = Files.createFile(Paths.get(appJarUpper));
-        } catch (FileAlreadyExistsException faee) {
-            fileExists = true;
-        }
-
-        if (!fileExists) {
-            try {
-                Files.copy(jarPath, jarPathUpper, StandardCopyOption.REPLACE_EXISTING);
-            } catch (Exception e) {
-                throw new java.lang.RuntimeException(
-                    "Failed copying file from " + appJar + " to " + appJarUpper + ".", e);
-            }
-        } else {
-            jarPathUpper = Paths.get(appJarUpper);
-        }
-        boolean isSameFile = Files.isSameFile(jarPath, jarPathUpper);
-
-        TestCommon.run("-Xlog:class+path=info,cds", "-cp", appJarUpper, "Hello")
-            .ifNoMappingFailure(output -> {
-                    if (isSameFile) {
-                        output.shouldContain("Hello World");
-                    } else {
-                        output.shouldContain("shared class paths mismatch");
-                        output.shouldHaveExitValue(1);
-                    }
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ClassLoaderTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Initiating and defining classloader test.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/HelloWB.java
- * @compile test-classes/ForNameTest.java
- * @compile test-classes/BootClassPathAppendHelper.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver ClassLoaderTest
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ClassLoaderTest {
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build(true, "ClassLoaderTest-WhiteBox", "sun/hotspot/WhiteBox");
-        JarBuilder.getOrCreateHelloJar();
-        JarBuilder.build("ClassLoaderTest-HelloWB", "HelloWB");
-        JarBuilder.build("ClassLoaderTest-ForName", "ForNameTest");
-        ClassLoaderTest test = new ClassLoaderTest();
-        test.testBootLoader();
-        test.testDefiningLoader();
-    }
-
-    public void testBootLoader() throws Exception {
-        String appJar = TestCommon.getTestJar("ClassLoaderTest-HelloWB.jar");
-        String appClasses[] = {"HelloWB"};
-        String whiteBoxJar = TestCommon.getTestJar("ClassLoaderTest-WhiteBox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + appJar +
-            File.pathSeparator + whiteBoxJar;
-
-        TestCommon.dump(appJar, appClasses, bootClassPath);
-
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, bootClassPath, "HelloWB")
-          .assertNormalExit(output -> output.shouldContain("HelloWB.class.getClassLoader() = null"));
-    }
-
-    public void testDefiningLoader() throws Exception {
-        // The boot loader should be used to load the class when it's
-        // on the bootclasspath, regardless who is the initiating classloader.
-        // In this test case, the AppClassLoader is the initiating classloader.
-        String helloJar = TestCommon.getTestJar("hello.jar");
-        String appJar = helloJar + System.getProperty("path.separator") +
-                        TestCommon.getTestJar("ClassLoaderTest-ForName.jar");
-        String whiteBoxJar = TestCommon.getTestJar("ClassLoaderTest-WhiteBox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + helloJar +
-            File.pathSeparator + whiteBoxJar;
-
-        // Archive the "Hello" class from the appended bootclasspath
-        TestCommon.dump(helloJar, TestCommon.list("Hello"), bootClassPath);
-
-        TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, bootClassPath, "-Xlog:class+path=trace", "ForNameTest")
-          .assertNormalExit();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ClassPathAttr.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Class-Path: attribute in MANIFEST file
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @run driver ClassPathAttr
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.StandardCopyOption;
-import java.nio.file.Paths;
-
-
-public class ClassPathAttr {
-
-  public static void main(String[] args) throws Exception {
-    buildCpAttr("cpattr1", "cpattr1.mf", "CpAttr1", "CpAttr1");
-    buildCpAttr("cpattr1_long", "cpattr1_long.mf", "CpAttr1", "CpAttr1");
-    buildCpAttr("cpattr2", "cpattr2.mf", "CpAttr2", "CpAttr2");
-    buildCpAttr("cpattr3", "cpattr3.mf", "CpAttr3", "CpAttr2", "CpAttr3");
-    buildCpAttr("cpattr4", "cpattr4.mf", "CpAttr4",
-        "CpAttr2", "CpAttr3", "CpAttr4", "CpAttr5");
-    buildCpAttr("cpattr5_123456789_223456789_323456789_423456789_523456789_623456789", "cpattr5_extra_long.mf", "CpAttr5", "CpAttr5");
-
-    for (int i=1; i<=2; i++) {
-      String jar1 = TestCommon.getTestJar("cpattr1.jar");
-      String jar4 = TestCommon.getTestJar("cpattr4.jar");
-      if (i == 2) {
-        // Test case #2 -- same as #1, except we use cpattr1_long.jar, which has a super-long
-        // Class-Path: attribute.
-        jar1 = TestCommon.getTestJar("cpattr1_long.jar");
-      }
-      String cp = jar1 + File.pathSeparator + jar4;
-
-      TestCommon.testDump(cp, TestCommon.list("CpAttr1",
-                                                          "CpAttr2",
-                                                          "CpAttr3",
-                                                          "CpAttr4",
-                                                          "CpAttr5"));
-
-      TestCommon.run(
-          "-cp", cp,
-          "CpAttr1")
-        .assertNormalExit();
-
-      // Logging test for class+path.
-      TestCommon.run(
-          "-Xlog:class+path",
-          "-cp", cp,
-          "CpAttr1")
-        .assertNormalExit(output -> {
-            output.shouldMatch("checking shared classpath entry: .*cpattr2.jar");
-            output.shouldMatch("checking shared classpath entry: .*cpattr3.jar");
-          });
-
-      //  Make sure aliased TraceClassPaths still works
-      TestCommon.run(
-          "-XX:+TraceClassPaths",
-          "-cp", cp,
-          "CpAttr1")
-        .assertNormalExit(output -> {
-            output.shouldMatch("checking shared classpath entry: .*cpattr2.jar");
-            output.shouldMatch("checking shared classpath entry: .*cpattr3.jar");
-          });
-    }
-  }
-
-  private static void buildCpAttr(String jarName, String manifest, String enclosingClassName, String ...testClassNames) throws Exception {
-    String jarClassesDir = System.getProperty("test.classes") + File.separator + jarName + "_classes";
-    try { Files.createDirectory(Paths.get(jarClassesDir)); } catch (FileAlreadyExistsException e) { }
-
-    JarBuilder.compile(jarClassesDir, System.getProperty("test.src") + File.separator +
-        "test-classes" + File.separator + enclosingClassName + ".java");
-    JarBuilder.buildWithManifest(jarName, manifest, jarClassesDir, testClassNames);
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test CommandLineFlagCombo
- * @requires vm.cds.archived.java.heap
- * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
- * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
- * vm options.
- * @requires (vm.gc=="null")
- * @summary Test command line flag combinations that
- *          could likely affect the behaviour of AppCDS
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
- * @compile test-classes/Hello.java
- * @run main/othervm/timeout=240 -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. CommandLineFlagCombo
- */
-
-import jdk.test.lib.BuildHelper;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-import sun.hotspot.code.Compiler;
-
-public class CommandLineFlagCombo {
-
-    // shared base address test table
-    private static final String[] testTable = {
-        "-XX:+UseG1GC", "-XX:+UseSerialGC", "-XX:+UseParallelGC", "-XX:+UseConcMarkSweepGC",
-        "-XX:+FlightRecorder",
-        "-XX:+UseLargePages", // may only take effect on machines with large-pages
-        "-XX:+UseCompressedClassPointers",
-        "-XX:+UseCompressedOops",
-        "-XX:ObjectAlignmentInBytes=16",
-        "-XX:ObjectAlignmentInBytes=32",
-        "-XX:ObjectAlignmentInBytes=64"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String classList[] = {"Hello"};
-
-        for (String testEntry : testTable) {
-            System.out.println("CommandLineFlagCombo = " + testEntry);
-
-            if (skipTestCase(testEntry))
-                continue;
-
-            OutputAnalyzer dumpOutput = TestCommon.dump(appJar, classList, testEntry);
-            if (!TestCommon.isDynamicArchive()) {
-                TestCommon.checkDump(dumpOutput, "Loading classes to share");
-            } else {
-                if (testEntry.contains("ObjectAlignmentInBytes")) {
-                   dumpOutput.shouldHaveExitValue(1)
-                             .shouldMatch("The shared archive file's ObjectAlignmentInBytes of .* does not equal the current ObjectAlignmentInBytes of");
-                } else {
-                   TestCommon.checkDump(dumpOutput, "Loading classes to share");
-                }
-            }
-
-            if ((TestCommon.isDynamicArchive() && !testEntry.contains("ObjectAlignmentInBytes")) ||
-                !TestCommon.isDynamicArchive()) {
-                OutputAnalyzer execOutput = TestCommon.exec(appJar, testEntry, "Hello");
-                TestCommon.checkExec(execOutput, "Hello World");
-            }
-        }
-
-        for (int i=0; i<2; i++) {
-            String g1Flag, serialFlag;
-
-            // Interned strings are supported only with G1GC. However, we should not crash if:
-            // 0: archive has shared strings, but run time doesn't support shared strings
-            // 1: archive has no shared strings, but run time supports shared strings
-
-            String dump_g1Flag     = "-XX:" + (i == 0 ? "+" : "-") + "UseG1GC";
-            String run_g1Flag      = "-XX:" + (i != 0 ? "+" : "-") + "UseG1GC";
-            String dump_serialFlag = "-XX:" + (i != 0 ? "+" : "-") + "UseSerialGC";
-            String run_serialFlag  = "-XX:" + (i == 0 ? "+" : "-") + "UseSerialGC";
-
-            OutputAnalyzer dumpOutput = TestCommon.dump(
-               appJar, classList, dump_g1Flag, dump_serialFlag);
-
-            TestCommon.checkDump(dumpOutput, "Loading classes to share");
-
-            OutputAnalyzer execOutput = TestCommon.exec(appJar, run_g1Flag, run_serialFlag, "Hello");
-            TestCommon.checkExec(execOutput, "Hello World");
-        }
-    }
-
-    private static boolean skipTestCase(String testEntry) throws Exception {
-        if (Platform.is32bit())
-        {
-            if (testEntry.equals("-XX:+UseCompressedOops") ||
-                testEntry.equals("-XX:+UseCompressedClassPointers") ||
-                testEntry.contains("ObjectAlignmentInBytes") )
-            {
-                System.out.println("Test case not applicable on 32-bit platforms");
-                return true;
-            }
-        }
-
-        if (Compiler.isGraalEnabled() && testEntry.equals("-XX:+UseConcMarkSweepGC"))
-        {
-            System.out.println("Graal does not support CMS");
-            return true;
-        }
-
-        return false;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/CommandLineFlagComboNegative.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test CommandLineFlagComboNegative
- * @summary Test command line flag combinations that differ between
- *          the dump and execute steps, in such way that they cause errors
- *          E.g. use compressed oops for creating and archive, but then
- *               execute w/o compressed oops
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver CommandLineFlagComboNegative
- */
-
-import java.util.ArrayList;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CommandLineFlagComboNegative {
-
-    private class TestVector {
-        public String testOptionForDumpStep;
-        public String testOptionForExecuteStep;
-        public String expectedErrorMsg;
-        public int expectedErrorCode;
-
-        public TestVector(String testOptionForDumpStep, String testOptionForExecuteStep,
-                          String expectedErrorMsg, int expectedErrorCode) {
-            this.testOptionForDumpStep=testOptionForDumpStep;
-            this.testOptionForExecuteStep=testOptionForExecuteStep;
-            this.expectedErrorMsg=expectedErrorMsg;
-            this.expectedErrorCode=expectedErrorCode;
-        }
-    }
-
-    private ArrayList<TestVector> testTable = new ArrayList<TestVector>();
-
-    private void initTestTable() {
-        // These options are not applicable on 32-bit platforms
-        if (Platform.is64bit()) {
-            testTable.add( new TestVector("-XX:ObjectAlignmentInBytes=8", "-XX:ObjectAlignmentInBytes=16",
-                "An error has occurred while processing the shared archive file", 1) );
-            if (!TestCommon.isDynamicArchive()) {
-                testTable.add( new TestVector("-XX:ObjectAlignmentInBytes=64", "-XX:ObjectAlignmentInBytes=32",
-                    "An error has occurred while processing the shared archive file", 1) );
-            }
-            testTable.add( new TestVector("-XX:+UseCompressedOops", "-XX:-UseCompressedOops",
-                "Class data sharing is inconsistent with other specified options", 1) );
-            testTable.add( new TestVector("-XX:+UseCompressedClassPointers", "-XX:-UseCompressedClassPointers",
-                "Class data sharing is inconsistent with other specified options", 1) );
-        }
-    }
-
-    private void runTests() throws Exception
-    {
-        for (TestVector testEntry : testTable) {
-            System.out.println("CommandLineFlagComboNegative: dump = " + testEntry.testOptionForDumpStep);
-            System.out.println("CommandLineFlagComboNegative: execute = " + testEntry.testOptionForExecuteStep);
-
-            String appJar = JarBuilder.getOrCreateHelloJar();
-            OutputAnalyzer dumpOutput = TestCommon.dump(
-               appJar, new String[] {"Hello"}, testEntry.testOptionForDumpStep);
-
-            TestCommon.checkDump(dumpOutput, "Loading classes to share");
-
-            OutputAnalyzer execOutput = TestCommon.exec(appJar, testEntry.testOptionForExecuteStep, "Hello");
-            execOutput.shouldContain(testEntry.expectedErrorMsg);
-            execOutput.shouldHaveExitValue(testEntry.expectedErrorCode);
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        CommandLineFlagComboNegative thisClass = new CommandLineFlagComboNegative();
-        thisClass.initTestTable();
-        thisClass.runTests();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/CompilerUtils.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import javax.tools.JavaCompiler;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import javax.tools.ToolProvider;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * This class consists exclusively of static utility methods for invoking the
- * java compiler.
- *
- * This class will eventually move to jdk.testlibrary.
- */
-
-public final class CompilerUtils {
-    private CompilerUtils() { }
-
-    /**
-     * Compile all the java sources in {@code <source>/**} to
-     * {@code <destination>/**}. The destination directory will be created if
-     * it doesn't exist.
-     *
-     * All warnings/errors emitted by the compiler are output to System.out/err.
-     *
-     * @return true if the compilation is successful
-     *
-     * @throws IOException if there is an I/O error scanning the source tree or
-     *                     creating the destination directory
-     */
-    public static boolean compile(Path source, Path destination, String ... options)
-        throws IOException
-    {
-        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
-        StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
-
-        List<Path> sources
-            = Files.find(source, Integer.MAX_VALUE,
-                (file, attrs) -> (file.toString().endsWith(".java")))
-                .collect(Collectors.toList());
-
-        Files.createDirectories(destination);
-        jfm.setLocationFromPaths(StandardLocation.CLASS_OUTPUT,
-                                 Arrays.asList(destination));
-
-        List<String> opts = Arrays.asList(options);
-        JavaCompiler.CompilationTask task
-            = compiler.getTask(null, jfm, null, opts, null,
-                jfm.getJavaFileObjectsFromPaths(sources));
-
-        return task.call();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2017, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Handling of directories in -cp is based on the classlist
- * @requires vm.cds
- * @library /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/Super.java
- * @run driver DirClasspathTest
- */
-
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-
-public class DirClasspathTest {
-    private static final int MAX_PATH = 260;
-
-    // We add helloJar into the classpath to be compatible with TestCommon.DYNAMIC_DUMP
-    static OutputAnalyzer doDump(String path, String classList[],
-                                        String... suffix) throws Exception {
-        String helloJar = JarBuilder.getOrCreateHelloJar();
-        return TestCommon.dump(helloJar + File.pathSeparator + path, classList, suffix);
-    }
-
-    public static void main(String[] args) throws Exception {
-        File dir = new File(System.getProperty("user.dir"));
-        File emptydir = new File(dir, "emptydir");
-        emptydir.mkdir();
-
-
-        /////////////////////////////////////////////////////////////////
-        // The classlist only contains boot class in following test cases
-        /////////////////////////////////////////////////////////////////
-        String bootClassList[] = {"java/lang/Object"};
-
-        // Empty dir in -cp: should be OK
-        OutputAnalyzer output;
-        output = doDump(emptydir.getPath(), bootClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        // Long path to empty dir in -cp: should be OK
-        Path classDir = Paths.get(System.getProperty("test.classes"));
-        Path destDir = classDir;
-        int subDirLen = MAX_PATH - classDir.toString().length() - 2;
-        if (subDirLen > 0) {
-            char[] chars = new char[subDirLen];
-            Arrays.fill(chars, 'x');
-            String subPath = new String(chars);
-            destDir = Paths.get(System.getProperty("test.classes"), subPath);
-        }
-        File longDir = destDir.toFile();
-        longDir.mkdir();
-        File subDir = new File(longDir, "subdir");
-        subDir.mkdir();
-        output = doDump(subDir.getPath(), bootClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        // Non-empty dir in -cp: should be OK
-        // <dir> is not empty because it has at least one subdirectory, i.e., <emptydir>
-        output = doDump(dir.getPath(), bootClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        // Long path to non-empty dir in -cp: should be OK
-        // <dir> is not empty because it has at least one subdirectory, i.e., <emptydir>
-        output = doDump(longDir.getPath(), bootClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        /////////////////////////////////////////////////////////////////
-        // The classlist contains non-boot class in following test cases
-        /////////////////////////////////////////////////////////////////
-        String appClassList[] = {"java/lang/Object", "com/sun/tools/javac/Main"};
-
-        // Non-empty dir in -cp: should be OK (as long as no classes were loaded from there)
-        output = doDump(dir.getPath(), appClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        // Long path to non-empty dir in -cp: should be OK (as long as no classes were loaded from there)
-        output = doDump(longDir.getPath(), appClassList, "-Xlog:class+path=info");
-        TestCommon.checkDump(output);
-
-        /////////////////////////////////////////////////////////////////
-        // Loading an app class from a directory
-        /////////////////////////////////////////////////////////////////
-        String appClassList2[] = {"Super", "java/lang/Object", "com/sun/tools/javac/Main"};
-        // Non-empty dir in -cp: should report error if a class is loaded from it
-        output = doDump(classDir.toString(), appClassList2, "-Xlog:class+path=info,class+load=trace");
-        output.shouldNotHaveExitValue(0);
-        output.shouldContain("Cannot have non-empty directory in paths");
-
-        // Long path to non-empty dir in -cp: should report error if a class is loaded from it
-        File srcClass = new File(classDir.toFile(), "Super.class");
-        File destClass = new File(longDir, "Super.class");
-        Files.copy(srcClass.toPath(), destClass.toPath());
-        output = doDump(longDir.getPath(), appClassList2, "-Xlog:class+path=info");
-        output.shouldNotHaveExitValue(0);
-        output.shouldContain("Cannot have non-empty directory in paths");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/DumpClassList.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary DumpLoadedClassList should exclude generated classes, classes in bootclasspath/a and
- *          --patch-module.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/ArrayListTest.java
- * @run driver DumpClassList
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class DumpClassList {
-    public static void main(String[] args) throws Exception {
-        // build The app
-        String[] appClass = new String[] {"ArrayListTest"};
-        String classList = "app.list";
-
-        JarBuilder.build("app", appClass[0]);
-        String appJar = TestCommon.getTestJar("app.jar");
-
-        // build patch-module
-        String source = "package java.lang; "                       +
-                        "public class NewClass { "                  +
-                        "    static { "                             +
-                        "        System.out.println(\"NewClass\"); "+
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("java/lang/NewClass",
-             InMemoryJavaCompiler.compile("java.lang.NewClass", source, "--patch-module=java.base"),
-             System.getProperty("test.classes"));
-
-        String patchJar = JarBuilder.build("javabase", "java/lang/NewClass");
-
-        // build bootclasspath/a
-        String source2 = "package boot.append; "                 +
-                        "public class Foo { "                    +
-                        "    static { "                          +
-                        "        System.out.println(\"Foo\"); "  +
-                        "    } "                                 +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("boot/append/Foo",
-             InMemoryJavaCompiler.compile("boot.append.Foo", source2),
-             System.getProperty("test.classes"));
-
-        String appendJar = JarBuilder.build("bootappend", "boot/append/Foo");
-
-        // dump class list
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-            true,
-            "-XX:DumpLoadedClassList=" + classList,
-            "--patch-module=java.base=" + patchJar,
-            "-Xbootclasspath/a:" + appendJar,
-            "-cp",
-            appJar,
-            appClass[0]);
-        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dumpClassList");
-        TestCommon.checkExecReturn(output, 0, true,
-                                   "hello world",
-                                   "skip writing class java/lang/NewClass") // skip classes outside of jrt image
-            .shouldNotContain("skip writing class boot/append/Foo");        // but classes on -Xbootclasspath/a should not be skipped
-
-        output = TestCommon.createArchive(appJar, appClass,
-                                          "-Xbootclasspath/a:" + appendJar,
-                                          "-Xlog:class+load",
-                                          "-XX:SharedClassListFile=" + classList);
-        TestCommon.checkDump(output)
-            .shouldNotContain("Preload Warning: Cannot find java/lang/invoke/LambdaForm")
-            .shouldNotContain("Preload Warning: Cannot find boot/append/Foo")
-            .shouldContain("[info][class,load] boot.append.Foo");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_1.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-VERSION: 1.0
-@SECTION: Symbol
-0 -1:
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-11 -1 linkMethod
-18 -1: type can't be null
-20 -1: isAlphaNumericString
-43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
-1 -1: \t
-15 -1: IntCumulateTask
-1 -1: \n
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_2.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-@SECTION: Symbol
-20 -1: isAlphaNumericString
-43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
-15 -1: IntCumulateTask
-1 -1: \n
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.invalid_3.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-VERSION: 1.0
-@SECTION: Symbol
-11 -1: linkMethod
-18 -1: isAlphaNumericString
-33 -1: java/util/Locale$LocaleNameGetter
-23 -1: sun/invoke/util/Wrapper
-12 -1: reduceToLong
-11 -1: setReadOnly
-8 -1: endsWith
-55 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;TT;)V
-20 -1: createAnnotationData
-6 -1: OfLong
-17 -1: getClassSignature
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Adding extra symbols into CDS archive using -XX:SharedArchiveConfigFile
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver ExtraSymbols
- */
-
-import java.io.*;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ExtraSymbols {
-    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-
-        // 1. Dump without extra symbols.
-        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"),
-                                                CDS_LOGGING);
-        checkOutput(output);
-        int numEntries1 = numOfEntries(output);
-
-        // 2. Dump an archive with extra symbols. All symbols in
-        // ExtraSymbols.symbols.txt are valid. Dumping should succeed.
-        output = TestCommon.dump(appJar, TestCommon.list("Hello"), CDS_LOGGING,
-            "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("ExtraSymbols.symbols.txt"));
-        checkOutput(output);
-        int numEntries2 = numOfEntries(output);
-        if (numEntries2 <= numEntries1) {
-            throw new RuntimeException("No extra symbols added to archive");
-        }
-        output = TestCommon.exec(appJar, "Hello");
-        TestCommon.checkExec(output);
-
-        // 3. Dump with invalid symbol files. Dumping should fail.
-        String invalid_symbol_files[] = {"ExtraSymbols.invalid_1.txt",
-                                         "ExtraSymbols.invalid_2.txt",
-                                         "ExtraSymbols.invalid_3.txt"};
-        String err_msgs[] = {"Corrupted at line",
-                             "wrong version of hashtable dump file",
-                             "Corrupted at line"};
-        for (int i = 0; i < invalid_symbol_files.length; i++) {
-            output = TestCommon.dump(appJar, TestCommon.list("Hello"),
-                                     "-XX:SharedArchiveConfigFile=" +
-                                     TestCommon.getSourceFile(invalid_symbol_files[i]));
-            output.shouldContain("Error occurred during initialization of VM");
-            output.shouldContain(err_msgs[i]);
-        }
-    }
-
-    static int numOfEntries(OutputAnalyzer output) {
-        String s = output.firstMatch("Number of entries       : .*");
-        String subs[] = s.split("[:]");
-        int numEntries = Integer.parseInt(subs[1].trim());
-        return numEntries;
-    }
-
-    static void checkOutput(OutputAnalyzer output) throws Exception {
-        output.shouldContain("Loading classes to share");
-        output.shouldContain("Shared symbol table stats -------- base:");
-        output.shouldHaveExitValue(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.symbols.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10826 +0,0 @@
-VERSION: 1.0
-@SECTION: Symbol
-69 -1: ------------------------------------------------------------123456789
-68 -1: # The values in this file are only used for testing the operation of
-63 -1: # adding extra symbols into the CDS archive. None of the values
-70 -1: # are interpreted in any way. So even if they contain names of classes
-70 -1: # that have been renamed or removed, or string literals that have been
-66 -1: # changed or remove from Java source code, it would not affect the
-26 -1: # correctness of the test.
-0 -1: 
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-11 -1: linkMethod 
-18 -1: type can't be null
-20 -1: isAlphaNumericString
-43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
-72 -1: (Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
-1 -1: \t
-15 -1: IntCumulateTask
-1 -1: \n
-33 -1: java/util/Locale$LocaleNameGetter
-23 -1: sun/invoke/util/Wrapper
-57 -1: (Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V
-12 -1: reduceToLong
-11 -1: setReadOnly
-34 -1: (Ljava/lang/reflect/Executable;)[B
-54 -1: ([Ljava/net/URL;Ljava/security/AccessControlContext;)V
-15 -1: LegacyMergeSort
-8 -1: endsWith
-55 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;TT;)V
-20 -1: createAnnotationData
-6 -1: OfLong
-90 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;)Ljava/util/Map<TK;TV;>;
-1 -1:  
-17 -1: getClassSignature
-1 -1: "
-1 -1: #
-1 -1: (
-21 -1: MethodHandleImpl.java
-10 -1: getUTF8At0
-1 -1: )
-1 -1: *
-1 -1: +
-1 -1: ,
-1 -1: -
-1 -1: .
-18 -1: unsignedEntryNames
-1 -1: /
-1 -1: 0
-19 -1: java/io/InputStream
-38 -1: java/util/concurrent/ThreadLocalRandom
-1 -1: :
-1 -1: ;
-1 -1: <
-13 -1: getAndAddLong
-1 -1: =
-1 -1: >
-1 -1: ?
-20 -1: getMethodAtIfLoaded0
-1 -1: @
-1 -1: A
-7 -1: isAlive
-1 -1: B
-10 -1: checkIndex
-1 -1: C
-1 -1: D
-1 -1: E
-1 -1: F
-1 -1: I
-30 -1: sun/misc/JavaUtilZipFileAccess
-11 -1: classloader
-1 -1: J
-1 -1: L
-14 -1: packageEnabled
-8 -1: ([BIII)V
-24 -1: Ljava/io/BufferedWriter;
-1 -1: S
-32 -1: (Ljava/util/function/Consumer;)V
-11 -1: refKindName
-1 -1: U
-1 -1: V
-3 1: yyy
-18 -1: JavaNetAccess.java
-1 -1: Z
-7 -1: members
-1 -1: [
-1 -1: ]
-13 -1: ShortLanguage
-1 -1: _
-9 -1: invoke__L
-28 -1: (D)Ljava/lang/StringBuilder;
-15 -1: isInvokeSpecial
-1 -1: c
-17 -1: subListRangeCheck
-1 -1: e
-29 -1: Ljava/security/AllPermission;
-27 -1: (C)Ljava/lang/StringBuffer;
-28 -1: ([Ljava/lang/Comparable;II)V
-50 -1: (Ljava/util/zip/ZipFile;Ljava/util/zip/Inflater;)V
-9 -1: invoke__V
-1 -1: m
-101 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)Lsun/nio/cs/StreamEncoder;
-13 -1: MAX_SURROGATE
-18 -1: Ljava/lang/String;
-21 -1: ensureProtectedAccess
-18 -1: getIfModifiedSince
-1 -1: r
-9 -1: setExtra0
-1 -1: s
-47 -1: Ljava/lang/Enum<Lsun/launcher/LauncherHelper;>;
-1 -1: x
-1 -1: {
-7 -1: getLast
-1 -1: |
-1 -1: }
-1 -1: ~
-71 -1: (Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-34 -1: (Ljava/nio/charset/Charset;[BII)[C
-10 -1: DST_NSHIFT
-25 -1: ForEachTransformedKeyTask
-26 -1: Ljava/nio/charset/Charset;
-56 -1: (Ljava/lang/reflect/Method;)Lsun/reflect/MethodAccessor;
-22 -1: StackTraceElement.java
-24 -1: sun.zip.zipFile.openTime
-27 -1: JNI_COPY_TO_ARRAY_THRESHOLD
-26 -1: java/lang/ClassValue$Entry
-19 -1: [Ljava/lang/Thread;
-56 -1: (Ljava/lang/ClassLoader$NativeLibrary;)Ljava/lang/Class;
-7 -1: message
-18 -1: parameterToArgSlot
-20 -1: [[Ljava/lang/String;
-11 -1: bumpVersion
-26 -1: Ljava/lang/reflect/Method;
-9 -1: getMethod
-6 -1: (I)TE;
-49 -1: (Ljava/lang/String;)Ljava/lang/invoke/MemberName;
-33 -1: sun/misc/URLClassPath$JarLoader$1
-57 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)V
-33 -1: sun/misc/URLClassPath$JarLoader$2
-33 -1: sun/misc/URLClassPath$JarLoader$3
-87 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-19 -1: FileDescriptor.java
-12 -1: forEachValue
-36 -1: (Ljava/util/List;)[Ljava/lang/Class;
-53 -1: (Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
-8 -1: hasArray
-4 -1: ROWS
-10 -1: linkMethod
-9 -1: remaining
-23 -1: ARRAY_FLOAT_BASE_OFFSET
-35 -1: java/lang/reflect/ReflectPermission
-24 -1: ()Ljava/net/InetAddress;
-7 -1: ngroups
-81 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Class<*>;>;
-10 -1: putTreeVal
-4 -1: list
-5 -1: trace
-7 -1: blocker
-21 -1: reset() not supported
-8 -1: JAPANESE
-11 -1: PRIVATE_USE
-53 -1: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
-32 -1: Invalid JavaFX launch parameters
-15 -1: SECONDS_PER_DAY
-11 -1: UTF_16.java
-24 -1: sun/nio/cs/UTF_8$Encoder
-102 -1: (Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)V
-20 -1: (Lsun/misc/Signal;)V
-22 -1: MagicAccessorImpl.java
-84 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class;
-14 -1: altMetafactory
-13 -1: queryOverflow
-30 -1:  exists, but is not accessible
-3 -1: edt
-14 -1: MAX_ARRAY_SIZE
-20 -1: aliases_UTF_16LE_BOM
-34 -1: Ljava/lang/reflect/Constructor<*>;
-20 -1: (S)Ljava/lang/Short;
-6 -1: STRICT
-19 -1: internalCallerClass
-27 -1: java/nio/DirectLongBufferRU
-13 -1: TIMED_WAITING
-15 -1: toGenericString
-6 -1: client
-10 -1: attachImpl
-22 -1: ReflectionFactory.java
-8 -1: jsse.jar
-37 -1: (IZ)Ljava/lang/AbstractStringBuilder;
-41 -1: java/util/LinkedHashMap$LinkedKeyIterator
-15 -1: computeIfAbsent
-10 -1: GET_TARGET
-53 -1: <E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;)[TE;
-35 -1: java/util/Collections$SingletonList
-7 -1: addYear
-35 -1: Ljava/lang/Class<Ljava/lang/Byte;>;
-65 -1: (Ljava/util/LinkedHashMap$Entry;Ljava/util/LinkedHashMap$Entry;)V
-14 -1: image/x-bitmap
-10 -1: (IIII[JI)V
-50 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/net/URL;)V
-13 -1: getLineNumber
-20 -1: toUpperCaseCharArray
-62 -1: (Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;
-11 -1: rotateRight
-10 -1: checkPtype
-85 -1: (JLjava/util/function/ToLongFunction<-TK;>;JLjava/util/function/LongBinaryOperator;)J
-81 -1: (Ljava/lang/Class;Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
-15 -1: Illegal style: 
-28 -1: (Ljava/lang/StringBuilder;)V
-41 -1: 1.8.0-internal-iklam_2013_11_27_21_25-b00
-25 -1: Invalid authority field: 
-55 -1: (Ljava/lang/CharSequence;)Ljava/util/function/Supplier;
-12 -1: staticOffset
-32 -1: java/util/HashMap$KeySpliterator
-13 -1: javaNioAccess
-24 -1: (Ljava/util/SortedSet;)V
-17 -1: thenComparingLong
-2 -1: \n\n
-22 -1: registerFieldsToFilter
-34 -1: java/lang/invoke/LambdaMetafactory
-225 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
-26 -1: [[Ljava/lang/CharSequence;
-32 -1: java/util/Collections$CheckedMap
-147 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSequentialList<TE;>;Ljava/util/List<TE;>;Ljava/util/Deque<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
-204 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
-27 -1: sun/nio/cs/UTF_16BE$Decoder
-12 -1: getZoneInfo0
-77 -1: (Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-9 -1: Traverser
-35 -1: Ljava/lang/ref/ReferenceQueue<TT;>;
-27 -1: lambda$comparing$ea9a8b3a$1
-7 -1: ([CI)[C
-6 -1: getenv
-9 -1: newMethod
-52 -1: <T:Ljava/lang/Object;>Ljava/lang/reflect/Executable;
-164 -1: (Ljava/security/ProtectionDomain;Ljava/security/DomainCombiner;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)V
-40 -1: (Ljava/lang/String;)Ljava/util/TimeZone;
-11 -1: countTokens
-202 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;Ljava/util/Map$Entry<TK;TV;>;>;Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;Ljava/io/Serializable;
-78 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Collection<TT;>;
-34 -1: (Ljava/lang/reflect/Constructor;)I
-15 -1: comparingDouble
-24 -1: ()Ljava/util/Collection;
-14 -1: invokeFinalize
-14 -1: encodeISOArray
-77 -1: (Ljava/lang/ref/Reference;Ljava/lang/ref/Reference;)Ljava/lang/ref/Reference;
-11 -1: bad index: 
-34 -1: (Ljava/lang/reflect/Constructor;)V
-68 -1: (Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
-53 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
-27 -1: ([CII)Ljava/nio/CharBuffer;
-6 -1: setOut
-41 -1: (ILjava/lang/Object;Ljava/lang/Object;I)V
-12 -1: MIN_EXPONENT
-30 -1: PrivilegedExceptionAction.java
-18 -1: key cannot be null
-6 -1: CENHDR
-73 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
-23 -1: java/lang/reflect/Array
-8 -1: AF_LIMIT
-2 -1: \r\n
-11 -1: getFileName
-10 -1: parseShort
-22 -1: java/lang/LinkageError
-15 -1: FT_LAST_WRAPPER
-32 -1: java/util/ArrayDeque$DeqIterator
-24 -1: pc-multilingual-850+euro
-3 -1: zfc
-14 -1: incrementExact
-38 -1: (IIII)Lsun/util/calendar/CalendarDate;
-8 -1: (II[BI)V
-8 -1: isLocked
-13 -1: ZoneInfo.java
-36 -1: (Lsun/util/calendar/CalendarDate;J)V
-35 -1: java/lang/invoke/MethodHandleImpl$1
-31 -1: (Ljava/util/Comparator<-TE;>;)V
-19 -1: CharsetEncoder.java
-52 -1: <T:Ljava/lang/Object;>()Ljava/util/Enumeration<TT;>;
-44 -1: (Ljava/io/InputStream;)Ljava/io/InputStream;
-7 -1:  field 
-5 -1: abort
-25 -1: java/lang/SecurityManager
-66 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask
-1316 -1: \xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe6\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe6\x80\x80\xe4\x80\x8c\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xe2\xa0\x80\x18\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\x18\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xee\xa0\x80\x15\xee\xa0\x80\x16\xe6\xa0\x80\x18\xe2\x80\x80\x19\xe3\xa0\x80\x18\xe2\x80\x80\x14\xe3\xa0\x80\x18\xe3\xa0\x80\x18\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe3\xa0\x80\x18\xe6\xa0\x80\x18\xee\xa0\x80\x19\xe6\xa0\x80\x19\xee\xa0\x80\x19\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xee\xa0\x80\x15\xe6\xa0\x80\x18\xee\xa0\x80\x16\xe6\xa0\x80\x1b\xe6\xa0\x80\xe5\x80\x97\xe6\xa0\x80\x1b\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xee\xa0\x80\x15\xe6\xa0\x80\x19\xee\xa0\x80\x16\xe6\xa0\x80\x19\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\x80\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe3\xa0\x80\x0c\xe6\xa0\x80\x18\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe6\xa0\x80\x1c\xe6\xa0\x80\x18\xe6\xa0\x80\x1b\xe6\xa0\x80\x1c\xc0\x80\xe7\x80\x85\xee\xa0\x80\x1d\xe6\xa0\x80\x19\xe4\xa0\x80\xe1\x80\x90\xe6\xa0\x80\x1c\xe6\xa0\x80\x1b\xe2\xa0\x80\x1c\xe2\xa0\x80\x19\xe1\xa0\x80\xd8\x8b\xe1\xa0\x80\xd8\x8b\xe6\xa0\x80\x1b\xdf\xbd\xe7\x80\x82\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xe6\xa0\x80\x1b\xe1\xa0\x80\xd4\x8b\xc0\x80\xe7\x80\x85\xee\xa0\x80\x1e\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\x18\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xe6\xa0\x80\x19\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xdf\xbd\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xe6\xa0\x80\x19\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xd8\x9d\xe7\x80\x82
-6 -1: (J[I)I
-162 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;Ljava/util/Locale$FilteringMode;)Ljava/util/List<Ljava/util/Locale;>;
-21 -1: getQualifiedFieldName
-46 -1: Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;
-47 -1: (Ljava/util/Collection;Ljava/util/Collection;)Z
-10 -1: getRuntime
-30 -1: threadLocalRandomSecondarySeed
-18 -1: (Ljava/io/File;I)J
-10 -1: methodName
-34 -1: sun/reflect/generics/tree/TypeTree
-35 -1: (Ljava/io/File;)[Ljava/lang/String;
-31 -1: java/util/Collections$EmptyList
-15 -1: LF_INVINTERFACE
-9 -1: notifyAll
-18 -1: (Ljava/io/File;I)V
-94 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class<*>;
-45 -1: (Ljava/lang/String;)Ljava/net/ContentHandler;
-3 -1: enc
-3 -1: end
-18 -1: (Ljava/io/File;I)Z
-47 -1: (Ljava/lang/Object;Ljava/lang/reflect/Method;)V
-76 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
-19 -1: getURLStreamHandler
-46 -1: (Ljava/lang/ClassLoader;Ljava/lang/Class<*>;)V
-17 -1: COMPILE_THRESHOLD
-15 -1: charset is null
-7 -1: ibm-912
-10 -1: basicTypes
-7 -1: ibm-914
-78 -1: (Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z
-7 -1: ibm-915
-12 -1: JarFileEntry
-12 -1: setThreshold
-22 -1: (ILjava/lang/Object;)V
-55 -1: <T::Lsun/reflect/generics/tree/Tree;>Ljava/lang/Object;
-16 -1: Unknown signal: 
-3 -1: zip
-13 -1: CR_UNMAPPABLE
-19 -1: getClassAtIfLoaded0
-21 -1: WindowsClientCounters
-29 -1: Ljava/lang/invoke/MethodType;
-91 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableList<TE;>;Ljava/util/RandomAccess;
-23 -1: StackOverflowError.java
-13 -1: Launcher.java
-9 -1: Signature
-7 -1: ibm-920
-153 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;ILjava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
-13 -1: setExtensions
-26 -1: [Ljava/lang/ref/Reference;
-7 -1: ibm-923
-12 -1: BMH.reinvoke
-34 -1: java/lang/IllegalArgumentException
-53 -1: (Ljava/lang/String;)Ljava/lang/NumberFormatException;
-5 -1: .dirs
-13 -1: finishToArray
-22 -1: (ZI)Ljava/lang/String;
-84 -1: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
-15 -1: charsetProvider
-24 -1: ()Ljava/lang/Class<TT;>;
-10 -1: wordsInUse
-26 -1: (Ljava/io/ExpiringCache;)I
-53 -1: ()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>;
-25 -1: com/sun/management/GcInfo
-26 -1: getCompatibilityExtensions
-69 -1: (Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
-15 -1: getConstantPool
-24 -1: [[Ljava/lang/Comparable;
-26 -1: (Ljava/io/ExpiringCache;)V
-8 -1: getTable
-53 -1: sun/reflect/generics/repository/ConstructorRepository
-5 -1: range
-36 -1: (Ljava/lang/String;)Ljava/lang/Byte;
-72 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-60 -1: <T:Ljava/lang/Object;>([TT;TT;Ljava/util/Comparator<-TT;>;)I
-20 -1: (Ljava/nio/Bits$1;)V
-30 -1: ()Ljava/util/Spliterator<TK;>;
-6 -1: ([BB)I
-53 -1: (Ljava/lang/ref/Finalizer;Lsun/misc/JavaLangAccess;)V
-11 -1: memberTypes
-45 -1: (ILjava/lang/String;)Ljava/lang/StringBuffer;
-12 -1: OTHER_SYMBOL
-65 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-43 -1: (Ljava/util/Set;)[Ljava/lang/reflect/Field;
-30 -1: (Ljava/lang/ref/Reference$1;)V
-18 -1: GREGORIAN_INSTANCE
-31 -1: Ljava/lang/FunctionalInterface;
-57 -1: (Ljava/lang/Error;Ljava/lang/Exception;)Ljava/lang/Error;
-54 -1: ([Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
-14 -1: not an array: 
-6 -1: ([BB)V
-9 -1: ISO8859_1
-8 -1: addTrans
-27 -1: getFunctionalInterfaceClass
-29 -1: lambda$comparingInt$7b0bb60$1
-8 -1: TreeNode
-138 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Dictionary<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
-3 -1: era
-22 -1: fakeMethodHandleInvoke
-9 -1: addToList
-39 -1: (Ljava/lang/Class;[Ljava/lang/String;)V
-17 -1: launchApplication
-21 -1: randomNumberGenerator
-51 -1: Ljava/lang/ThreadLocal<Ljava/lang/ThreadLocal<*>;>;
-35 -1: java/io/ObjectOutputStream$PutField
-42 -1: (ILjava/util/function/IntBinaryOperator;)I
-3 -1: err
-13 -1: cachedDecoder
-32 -1: sun/util/calendar/ZoneInfoFile$1
-23 -1: doIntersectionPrivilege
-19 -1: cspc850multilingual
-56 -1: Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;
-11 -1: loader_data
-27 -1: (Ljava/util/jar/Manifest;)V
-5 -1: files
-90 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lsun/util/calendar/CalendarSystem;>;
-36 -1: [[Ljava/lang/invoke/LambdaForm$Name;
-5 -1: lines
-55 -1: (Lsun/misc/URLClassPath$JarLoader;)Lsun/misc/MetaIndex;
-9 -1: ansi-1251
-15 -1: refKindIsMethod
-29 -1: java/lang/reflect/Constructor
-3 -1: est
-19 -1: Lsun/misc/Launcher;
-109 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;)TT;
-10 -1: getOffsets
-9 -1: removeAll
-23 -1: java/util/regex/Matcher
-8 -1: sumCount
-7 -1: implies
-10 -1: MAIN_CLASS
-75 -1: (Ljava/util/List<Lsun/launcher/LauncherHelper$StdArg;>;)[Ljava/lang/String;
-11 -1: getISO3Code
-4 -1: high
-53 -1: (TK;Ljava/util/function/BiFunction<-TK;-TV;+TV;>;)TV;
-17 -1: setNormalizedDate
-23 -1: AbstractRepository.java
-28 -1: java/util/LinkedList$ListItr
-8 -1: isFrozen
-38 -1: (Ljava/lang/String;Z)Ljava/lang/Class;
-16 -1: ReflectUtil.java
-30 -1: ()Ljava/util/stream/IntStream;
-57 -1: (Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
-11 -1: getResource
-16 -1: ThreadDeath.java
-24 -1: unmodifiableNavigableSet
-59 -1: (Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
-24 -1: java.security.auth.debug
-58 -1: (Ljava/io/FileInputStream;)Ljava/nio/channels/FileChannel;
-25 -1: ()Ljava/util/Enumeration;
-11 -1: getInstance
-6 -1: MONDAY
-15 -1: jdkMinorVersion
-16 -1: newThreadWithAcc
-6 -1: CENHOW
-32 -1:     Max. Heap Size (Estimated): 
-61 -1: (Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/LambdaForm;
-11 -1: windows-932
-7 -1: Index: 
-11 -1: composeList
-6 -1: utf-16
-6 -1: ibm437
-10 -1: getJarFile
-8 -1: , rem = 
-13 -1: multiNewArray
-14 -1: getDefaultPort
-39 -1: Ljava/security/cert/CertificateFactory;
-10 -1: L_RESERVED
-19 -1: getMethodAtIfLoaded
-8 -1: needCast
-8 -1: IS_FIELD
-15 -1: ClassValue.java
-31 -1: ()Ljava/util/function/Supplier;
-125 -1: (Ljava/lang/Class<*>;)Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
-34 -1: lambda$comparingByValue$827a17d5$1
-4 -1: NONE
-21 -1: java/nio/DoubleBuffer
-33 -1: ()Lsun/reflect/LangReflectAccess;
-26 -1: invalid compression method
-6 -1: (TK;)Z
-16 -1: FT_UNCHECKED_REF
-14 -1: getGenericType
-17 -1: pathSeparatorChar
-8 -1: writeUTF
-8 -1: NO_PROXY
-188 -1: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V
-13 -1: finalRefCount
-12 -1: NF_checkCast
-6 -1: utf-32
-26 -1: (Ljava/util/ArrayDeque;I)Z
-19 -1: prefetchWriteStatic
-14 -1: computeInvoker
-5 -1:  cap=
-19 -1: generateCertificate
-15 -1: methodModifiers
-3 -1: exc
-27 -1: ()Lsun/misc/JavaLangAccess;
-5 -1: State
-14 -1: NullComparator
-10 -1: getClassAt
-15 -1: printProperties
-110 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor;
-40 -1: (Ljava/util/List<*>;Ljava/util/Random;)V
-63 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Method;>;
-28 -1: (I)Ljava/lang/StringBuilder;
-48 -1: ([DIILjava/util/function/DoubleBinaryOperator;)V
-3 -1: exp
-11 -1: interpret_L
-17 -1: Serializable.java
-8 -1: FJDouble
-12 -1: HashMap.java
-9 -1: sys_paths
-17 -1: getMainAttributes
-14 -1: asDoubleBuffer
-10 -1: buildNames
-26 -1: TOPLEVEL_WINDOW_PERMISSION
-4 -1: Type
-31 -1: (Ljava/util/Collection<+TE;>;)V
-64 -1: (Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>;
-100 -1: <E:Ljava/lang/Object;>(Ljava/util/Collection<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Collection<TE;>;
-10 -1: checkError
-31 -1: (Ljava/util/Collection<+TE;>;)Z
-31 -1: java/lang/NoSuchMethodException
-6 -1: attach
-87 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-9 -1: writeChar
-44 -1: java/util/ArraysParallelSortHelpers$FJObject
-34 -1: (Ljava/lang/Class;Ljava/io/File;)Z
-21 -1: java/util/zip/ZipFile
-5 -1: dirty
-6 -1: (JIZ)V
-12 -1: leftoverChar
-39 -1:  is being loaded in another classloader
-10 -1: writeBytes
-6 -1: unlink
-41 -1: (TT;Ljava/lang/ref/ReferenceQueue<TT;>;)V
-21 -1: getBootstrapResources
-95 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/io/Serializable;
-10 -1: PathStatus
-25 -1: java/io/InputStreamReader
-15 -1: ISO_8859-9:1989
-37 -1: java/lang/ExceptionInInitializerError
-14 -1: exceptionTypes
-19 -1: BufferedReader.java
-34 -1: Could not create SecurityManager: 
-13 -1: definePackage
-12 -1: getAndAddInt
-50 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
-30 -1: (Ljava/lang/SecurityManager;)V
-12 -1: fxLaunchName
-22 -1: BINARYSEARCH_THRESHOLD
-29 -1: JVMTI_THREAD_STATE_TERMINATED
-9 -1: fullFence
-60 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration<Ljava/net/URL;>;
-29 -1: java/lang/Thread$WeakClassKey
-47 -1: (Ljava/nio/charset/Charset;Ljava/lang/String;)V
-8 -1: (TV;)TV;
-60 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;I)V
-47 -1: java/security/cert/CertificateEncodingException
-12 -1: BA_DIRECTORY
-53 -1: (Ljava/lang/Class;ZLjava/lang/Class;)Ljava/util/List;
-9 -1: checkRead
-6 -1: <init>
-4 -1: args
-17 -1: genericMethodType
-10 -1: writeFloat
-26 -1: Can't handle static method
-49 -1: (Ljava/lang/String;)Ljava/lang/invoke/MethodType;
-22 -1: MapReduceKeysToIntTask
-17 -1: jvm_micro_version
-29 -1: (Ljava/util/Map<+TK;+TV;>;Z)V
-40 -1: ([Ljava/lang/Object;Ljava/lang/Object;)I
-7 -1: vmindex
-22 -1: maybeCompileToBytecode
-89 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;
-11 -1: getLauncher
-17 -1: jvm_major_version
-36 -1: ([IIII)Ljava/util/Spliterator$OfInt;
-40 -1: ([Ljava/lang/Object;Ljava/lang/Object;)V
-33 -1: IllegalMonitorStateException.java
-73 -1: ([ILjava/util/function/IntUnaryOperator;)Ljava/util/function/IntConsumer;
-39 -1: (Ljava/lang/String;)Ljava/lang/Package;
-29 -1: java/lang/CharacterDataLatin1
-52 -1: (Ljava/lang/annotation/Annotation;)Ljava/lang/Class;
-49 -1: (Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;
-53 -1: (Ljava/lang/Object;)Ljava/nio/charset/CharsetDecoder;
-22 -1: Ljava/net/FileNameMap;
-16 -1: isAnonymousClass
-4 -1: item
-7 -1: compute
-12 -1: user.country
-22 -1: malformed context url:
-16 -1: jvm_build_number
-69 -1: (Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-17 -1: getDirectionality
-4 -1: save
-8 -1: UNMARKED
-58 -1: (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)V
-12 -1: searchFields
-9 -1: frequency
-23 -1: getLocalizedInputStream
-2 -1:   
-126 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;ILjava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
-39 -1: (Ljava/lang/String;Z)Ljava/lang/String;
-7 -1: setZone
-2 -1:  "
-9 -1: checkRef(
-11 -1: loadFromXML
-49 -1: (Ljava/util/jar/JarFile;Ljava/util/Enumeration;)V
-68 -1: (IILsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
-2 -1:  (
-54 -1: (Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
-6 -1: rewind
-13 -1: getAndSetLong
-30 -1: java/lang/invoke/MethodHandles
-11 -1: ListPattern
-97 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/RandomAccess;Ljava/io/Serializable;
-25 -1: (Ljava/io/InputStream;I)V
-9 -1: setMethod
-10 -1: H_REG_NAME
-39 -1: ([Ljava/lang/Object;)Ljava/lang/Object;
-16 -1: AbstractMap.java
-68 -1: Ljava/util/Hashtable<Ljava/lang/String;Ljava/net/URLStreamHandler;>;
-58 -1: (Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;
-23 -1: getFileSystemAttributes
-12 -1: toSurrogates
-2 -1: !/
-5 -1: empty
-24 -1: isUnicodeIdentifierStart
-35 -1: sun/nio/cs/StandardCharsets$Classes
-27 -1: [Ljava/security/Permission;
-13 -1: getDefinition
-11 -1: permission=
-42 -1: (ILjava/lang/String;)Ljava/nio/ByteBuffer;
-69 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
-3 1: zzz
-17 -1: hasLongPrimitives
-2 -1: !=
-13 -1: getInterfaces
-2 -1: " 
-11 -1: noInflation
-14 -1: aliases_UTF_16
-2 -1: ")
-17 -1: ()Ljava/util/Map;
-55 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
-6 -1: charAt
-12 -1: getStringAt0
-10 -1: superClone
-28 -1: Ljava/util/AbstractSet<TK;>;
-40 -1: java/lang/ref/Reference$ReferenceHandler
-22 -1: NaturalOrderComparator
-9 -1: markValue
-9 -1: getRegion
-26 -1: null permissions parameter
-17 -1: Ljava/util/Stack;
-14 -1: codebase=<URL>
-36 -1: (Ljava/util/List;)Ljava/lang/Object;
-17 -1: setJavaLangAccess
-16 -1: hasQueuedThreads
-5 -1: (CC)I
-8 -1: toString
-5 -1: (CC)J
-11 -1: permissions
-10 -1: getHeaders
-27 -1: java/io/BufferedInputStream
-21 -1: unicodelittleunmarked
-51 -1: (Ljava/net/URLClassLoader;Ljava/util/Enumeration;)V
-14 -1: generateMethod
-11 -1: skipForward
-55 -1: java/util/concurrent/ConcurrentHashMap$ForEachEntryTask
-5 -1: (CC)Z
-15 -1: getURLClassPath
-84 -1: Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet<Ljava/lang/invoke/MethodType;>;
-23 -1: primitiveParameterCount
-8 -1: security
-14 -1: aliases_UTF_32
-22 -1: ()Ljava/util/Set<TK;>;
-9 -1: listFiles
-15 -1: insertElementAt
-42 -1: Ljava/util/Comparator<Ljava/lang/String;>;
-11 -1: getUserInfo
-46 -1: ([JIILjava/util/function/LongBinaryOperator;)V
-23 -1: (Ljava/util/Iterator;)V
-46 -1: ([Ljava/lang/Object;II)Ljava/util/Spliterator;
-67 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Object;)Ljava/lang/Object;
-14 -1: normalizeMonth
-13 -1: getStackTrace
-51 -1: java/lang/invoke/MethodType$ConcurrentWeakInternSet
-8 -1: makeChar
-2 -1: %%
-9 -1: getTarget
-21 -1: packageDefinitionLock
-52 -1: java/util/concurrent/ConcurrentHashMap$ValueIterator
-12 -1: OTHER_NUMBER
-22 -1: java/util/jar/JarEntry
-11 -1: access$1000
-16 -1: NON_SPACING_MARK
-13 -1: last-modified
-68 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>;
-16 -1: Australia/Darwin
-55 -1: (Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V
-29 -1: Ljava/lang/ref/WeakReference;
-19 -1: expungeStaleEntries
-41 -1: Ljava/security/PrivilegedActionException;
-6 -1: update
-23 -1: (Ljava/lang/Object;JB)V
-10 -1: newUpdater
-39 -1: (Ljava/net/URL;)Ljava/util/jar/JarFile;
-25 -1: Ljava/net/ContentHandler;
-21 -1: ARRAY_INT_INDEX_SCALE
-13 -1: hasSurrogates
-27 -1: (Ljava/lang/ThreadGroup;Z)Z
-20 -1: createGCNotification
-21 -1: negative day of week 
-11 -1: getInIfOpen
-22 -1: java/util/RandomAccess
-24 -1:     available locales = 
-21 -1: AccessController.java
-44 -1:  can not access a protected member of class 
-4 -1: LONG
-15 -1: objectOnlyTypes
-75 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V
-14 -1: getFindClasses
-10 -1: storeFence
-16 -1: asNormalOriginal
-45 -1: (Ljava/lang/String;)Ljava/lang/StringBuilder;
-6 -1: millis
-16 -1: America/St_Johns
-38 -1: ()Ljava/lang/IllegalArgumentException;
-37 -1: DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
-15 -1: implReplaceWith
-29 -1: ([C)Ljava/lang/StringBuilder;
-15 -1: Appendable.java
-41 -1: (Ljava/lang/String;)Ljava/io/InputStream;
-26 -1: Illegal Initial Capacity: 
-9 -1: checkBase
-7 -1: setYear
-15 -1: DISPLAY_VARIANT
-7 -1: getType
-31 -1: Ljava/lang/ref/Reference<+TT;>;
-15 -1: isFieldOrMethod
-35 -1: appendToClassPathForInstrumentation
-16 -1: LocaleNameGetter
-7 -1: compact
-55 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
-10 -1: dummyQueue
-3 -1: ROC
-2 -1: ("
-15 -1: checkPermission
-38 -1: java/util/zip/ZipFile$ZipEntryIterator
-8 -1: hexDigit
-8 -1:  pairs: 
-2 -1: ()
-2 -1: )\n
-43 -1: handler for url different from this handler
-15 -1: isAutoDetecting
-37 -1: (Ljava/util/LinkedList$Node<TE;>;)TE;
-11 -1: Unsafe.java
-12 -1: windows-1250
-39 -1: java/util/Collections$CheckedCollection
-12 -1: windows-1251
-15 -1: codePointAtImpl
-12 -1: windows-1252
-12 -1: windows-1253
-12 -1: windows-1254
-58 -1: (Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;
-5 -1: deref
-12 -1: windows-1255
-12 -1: windows-1256
-12 -1: windows-1257
-12 -1: windows-1258
-14 -1: FT_CHECKED_REF
-47 -1: (Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
-37 -1: (J)Lsun/util/calendar/Gregorian$Date;
-19 -1: checkPropertyAccess
-4 -1: file
-17 -1: emptyListIterator
-26 -1: sun/util/calendar/ZoneInfo
-14 -1: file.separator
-4 -1: fill
-62 -1: (Ljava/util/Spliterator$OfLong;Z)Ljava/util/stream/LongStream;
-18 -1: java/util/Iterator
-20 -1: reduceValuesToDouble
-12 -1: LF_CS_LINKER
-26 -1: java/util/Arrays$ArrayList
-45 -1: Ljava/util/concurrent/ConcurrentHashMap$Node;
-6 -1: skipLF
-2 -1: )=
-39 -1: (I[Ljava/lang/invoke/LambdaForm$Name;)I
-90 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;)V
-18 -1: parameterModifiers
-31 -1: (Ljava/util/Collection<+TK;>;)Z
-21 -1: proxy can not be null
-22 -1: java/io/FileDescriptor
-6 -1: Loader
-21 -1: numberOfTrailingZeros
-10 -1: addMapping
-39 -1: (I[Ljava/lang/invoke/LambdaForm$Name;)Z
-30 -1: java/util/Locale$LanguageRange
-20 -1: getReflectionFactory
-16 -1: shouldMeterInput
-56 -1: ([Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
-23 -1: sun/net/ProgressMonitor
-510 -1: \xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\x01\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\x01\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80
-28 -1: java/util/Spliterator$OfLong
-24 -1: SynchronizedNavigableMap
-4 -1: find
-6 -1: unsafe
-31 -1: java/nio/ByteBufferAsIntBufferB
-2 -1: ,\n
-6 -1: [ call
-14 -1: registerFilter
-10 -1: ValuesView
-9 -1: untreeify
-59 -1: ([Ljava/lang/Object;IILjava/util/function/BinaryOperator;)V
-13 -1: getSimpleName
-41 -1: (Ljava/util/Vector;Ljava/util/Vector$1;)V
-31 -1: java/nio/ByteBufferAsIntBufferL
-45 -1: (Ljava/lang/reflect/Field;)Ljava/lang/Object;
-13 -1: getDefaultRef
-18 -1: mapAlternativeName
-30 -1: setDefaultAllowUserInteraction
-13 -1: cannotCastMsg
-4 -1: )=>{
-7 -1: println
-2 -1: , 
-70 -1: (Ljava/nio/Buffer;IILjava/nio/Buffer;II)Ljava/nio/charset/CoderResult;
-32 -1: (ILjava/util/Collection<+TE;>;)Z
-9 -1: interpret
-104 -1: <E:Ljava/lang/Object;>(Ljava/util/NavigableSet<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/NavigableSet<TE;>;
-7 -1: advance
-86 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/reflect/Field;>;
-11 -1: Stack trace
-6 -1: raise0
-68 -1: ()Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
-32 -1: sun/util/calendar/Gregorian$Date
-33 -1: java/lang/ref/ReferenceQueue$Lock
-19 -1: constructorAccessor
-6 -1: IBM367
-18 -1: CharacterData.java
-8 -1: parseURL
-32 -1: java/io/FilePermissionCollection
-7 -1: ([JI)[J
-9 -1: JIS_X0201
-2 -1: -1
-8 -1: encoding
-63 -1: ([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V
-9 -1: localhost
-66 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal$1;)V
-54 -1: (II[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-67 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
-14 -1: containsAllPDs
-23 -1: setAllowUserInteraction
-30 -1: Ljava/security/DomainCombiner;
-26 -1: Ljava/security/Permission;
-30 -1: serializePropertiesToByteArray
-112 -1: (Ljava/util/Iterator<Ljava/nio/charset/Charset;>;Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V
-2 -1: ..
-6 -1: LOCEXT
-2 -1: ./
-26 -1: (Ljava/nio/ByteBuffer;II)V
-18 -1: (Ljava/io/File;J)Z
-45 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;)V
-17 -1: asCollectorChecks
-7 -1: actions
-5 -1: ([I)I
-20 -1: asChange_otherthread
-20 -1: forInputStreamReader
-69 -1: java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
-5 -1: FINAL
-17 -1: staticPermissions
-44 -1: (Ljava/lang/Object;)Ljava/lang/StringBuffer;
-5 -1: ([I)V
-4 -1: swap
-10 -1: readOffset
-2 -1: /*
-112 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
-12 -1: isAsciiDigit
-2 -1: /-
-2 -1: /.
-2 -1: //
-5 -1: zones
-37 -1: (ILjava/lang/Object;)Ljava/util/List;
-17 -1: SHUFFLE_THRESHOLD
-32 -1: java/lang/CharacterDataUndefined
-23 -1: sun.reflect.noInflation
-11 -1: Can not set
-36 -1: (Ljava/util/Properties$LineReader;)V
-9 -1: debugName
-78 -1: (Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-6 -1: (III)J
-58 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/lang/String;
-19 -1: BufferedWriter.java
-148 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor<TT;>;
-6 -1: printf
-7 -1: signers
-2 -1: 0.
-4 -1: Date
-15 -1: findReplacement
-6 -1: (III)V
-32 -1: java/nio/ReadOnlyBufferException
-92 -1: ([Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
-6 -1: (III)Z
-43 -1: (Ljava/lang/ClassValue;Ljava/lang/Object;)V
-32 -1: java/nio/ByteBufferAsLongBufferB
-16 -1: Constructor.java
-10 -1: removeLast
-9 -1: ([CII[B)I
-40 -1: ()Ljava/util/List<Ljava/lang/Class<*>;>;
-2 -1: 1.
-7 -1: VARARGS
-32 -1: java/nio/ByteBufferAsLongBufferL
-18 -1: java/lang/Shutdown
-40 -1:  not supported, using ISO-8859-1 instead
-40 -1: Ljava/util/Collections$EmptyEnumeration;
-146 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/SortedMap<TK;TV;>;
-20 -1: aliases_UTF_32LE_BOM
-23 -1: getEnclosingConstructor
-2 -1: 0X
-11 -1: NO_TIMEZONE
-37 -1: ()Lsun/misc/JavaNioAccess$BufferPool;
-18 -1: printXUsageMessage
-9 -1: isPrivate
-63 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/invoke/MethodHandle;)V
-17 -1: maxSkipBufferSize
-76 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V
-40 -1: (Ljava/lang/String;II)Ljava/lang/String;
-17 -1: selectAlternative
-53 -1: [Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
-87 -1: <S:Ljava/lang/Object;>(Ljava/util/function/Supplier<+TS;>;)Ljava/lang/ThreadLocal<TS;>;
-40 -1: Ljava/util/concurrent/ConcurrentHashMap;
-41 -1: (Ljava/lang/Character;)Ljava/lang/String;
-19 -1: getMemberRefInfoAt0
-14 -1: reduceToDouble
-18 -1: SUPPRESSED_CAPTION
-6 -1: CANADA
-64 -1: (IZ[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/String;
-12 -1: UnicodeBlock
-2 -1: 0x
-44 -1: (Ljava/lang/CharSequence;II)Ljava/io/Writer;
-23 -1: getPermissionCollection
-19 -1: threadLocalHashCode
-9 -1: createMap
-25 -1: checkForSpecialAttributes
-12 -1: Mark invalid
-36 -1: java/lang/CharSequence$1CharIterator
-11 -1:  local time
-16 -1: Enumeration.java
-27 -1: (Ljava/util/zip/ZipEntry;)V
-11 -1: MATH_SYMBOL
-8 -1: filename
-24 -1: (Ljava/util/List<*>;II)V
-9 -1: bindCache
-18 -1: java/io/FileFilter
-12 -1: checkInvoker
-18 -1: OSEnvironment.java
-8 -1: EmptyMap
-11 -1: getIterator
-35 -1: java/util/function/IntUnaryOperator
-35 -1: java/util/WeakHashMap$EntryIterator
-90 -1: <E:Ljava/lang/Object;>(Ljava/util/Queue<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Queue<TE;>;
-8 -1: batchFor
-16 -1: isValidCodePoint
-27 -1: ([Lsun/util/calendar/Era;)V
-16 -1: ThreadGroup.java
-33 2: sun/net/www/protocol/file/Handler
-7 -1: isField
-22 -1: sun/misc/OSEnvironment
-38 -1: Ljava/lang/Class<Ljava/lang/Boolean;>;
-12 -1: ADDRESS_SIZE
-8 -1: forDigit
-49 -1: (Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry;
-13 -1: getCodeSource
-41 -1: ([Ljava/lang/Class<*>;)Ljava/lang/String;
-39 -1: (Ljava/util/function/Predicate<-TE;>;)Z
-13 -1: asFloatBuffer
-34 -1: ()Lsun/reflect/generics/tree/Tree;
-3 -1: ftp
-18 -1: maybeReBoxElements
-82 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)[[Ljava/lang/annotation/Annotation;
-48 -1: ()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;
-27 -1: (Ljava/util/NavigableMap;)V
-18 -1: parameterSlotCount
-20 -1: NF_getCallSiteTarget
-16 -1: aliases_US_ASCII
-13 -1: NF_staticBase
-31 -1: sun/reflect/ConstructorAccessor
-26 -1: guessContentTypeFromStream
-10 -1: Deprecated
-35 -1: System initialization has completed
-11 -1: initialized
-7 -1: compare
-15 -1: maxDirectMemory
-19 -1: setLastModifiedTime
-7 -1: (J[BZ)J
-12 -1: readEpochSec
-66 -1: (Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale;
-69 -1: ()Lsun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache;
-9 -1: Constants
-11 -1: valueOffset
-62 -1: (Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;)V
-33 -1: java/lang/CharacterDataPrivateUse
-21 -1: Exception in thread "
-40 -1: ()Ljava/util/Set<Ljava/lang/Character;>;
-12 -1: Asia/Yerevan
-40 -1: (Ljava/lang/Throwable;)Ljava/lang/Error;
-25 -1: (IS)Ljava/nio/ByteBuffer;
-7 -1: (I[CI)I
-45 -1: java/nio/charset/UnmappableCharacterException
-23 -1: java/util/WeakHashMap$1
-21 -1: setFXLaunchParameters
-1250 -1: ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBLBLMBMBMUBNBRNBOBOLBQBESBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICUCUBCVCPVCWCUWCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGGGGYGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRIMIMNININDIOIOTIQIRQIRIRNISISLITITAJEJEYJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMEMNEMFMAFMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURSSRBRURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSSSSDSTSTPSVSLVSXSXMSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE
-60 -1: Ljava/util/Set<Ljava/lang/Class<+Ljava/lang/ClassLoader;>;>;
-24 -1: ()Ljava/security/Policy;
-7 -1: initted
-44 -1: java/util/Collections$UnmodifiableCollection
-12 -1: Pacific/Apia
-23 -1: checkProxyPackageAccess
-7 -1: (I[CI)V
-64 -1: ([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I
-16 -1: getJavaNioAccess
-7 -1: reverse
-7 -1: nocerts
-16 -1: activeGroupCount
-34 -1: java/util/jar/JarFile$JarFileEntry
-7 -1: loaders
-9 -1: toRadians
-24 -1: java/util/HashMap$KeySet
-37 -1: (Ljava/lang/Class;)Ljava/lang/Object;
-6 -1: getRef
-6 -1: H_DASH
-17 -1: LinkageError.java
-66 -1: (Ljava/lang/invoke/MethodTypeForm;)Ljava/lang/invoke/MethodHandle;
-41 -1: (Ljava/nio/ByteBuffer;)Ljava/util/BitSet;
-10 -1: addMinutes
-58 -1: <T:Ljava/lang/Object;>([TT;II)Ljava/util/Spliterator<TT;>;
-9 -1: parseJars
-13 -1: getUnsignedCS
-28 -1: (Ljava/util/AbstractList;I)V
-22 -1: threadLocalRandomProbe
-19 -1: newDirectByteBuffer
-27 -1: Filter already registered: 
-8 -1: unescape
-31 -1: sun/misc/URLClassPath$JarLoader
-6 -1: TAIWAN
-53 -1: <T:Ljava/lang/Object;>()Ljava/util/ListIterator<TT;>;
-17 -1: REVERSE_THRESHOLD
-31 -1: Java(TM) SE Runtime Environment
-7 -1: SECONDS
-70 -1: (Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-7 -1: BLOCKED
-6 -1: Caches
-63 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V
-2 -1: : 
-210 -1: (Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;I)V
-153 -1: (JLjava/util/function/BiFunction<Ljava/util/Map$Entry<TK;TV;>;Ljava/util/Map$Entry<TK;TV;>;+Ljava/util/Map$Entry<TK;TV;>;>;)Ljava/util/Map$Entry<TK;TV;>;
-22 -1: ()Ljava/lang/Class<*>;
-28 -1: Ljava/lang/OutOfMemoryError;
-19 -1: writeFileDescriptor
-39 -1: Ljava/util/LinkedHashMap$Entry<TK;TV;>;
-26 -1: (ILjava/util/Collection;)Z
-18 -1: getEncodedInternal
-16 -1: ForEachValueTask
-23 -1: (Ljava/util/List<*>;I)V
-19 -1: SharedArchiveLoader
-20 -1: probeBackupLocations
-24 -1: java/lang/StringCoding$1
-28 -1: lookupContentHandlerClassFor
-36 -1: ()Lsun/misc/Launcher$ExtClassLoader;
-27 -1: reflectionFactoryAccessPerm
-14 -1: ACCESSOR_FORMS
-35 -1: ([JII)Ljava/util/stream/LongStream;
-34 -1: ISO-8859-1 charset not available: 
-8 -1: cscesu-8
-2 -1: ;/
-17 -1: typeToPackageName
-34 -1: (Ljava/net/URL;)Ljava/lang/String;
-5 -1: (IZ)V
-25 -1: Prohibited package name: 
-51 -1: (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-108 -1: (JLjava/util/function/ToIntFunction<Ljava/util/Map$Entry<TK;TV;>;>;ILjava/util/function/IntBinaryOperator;)I
-12 -1: soleInstance
-27 -1: (Ljava/io/BufferedReader;)V
-71 -1: (Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
-17 -1: Ljava/lang/Class;
-38 -1: (Ljava/lang/String;)Ljava/lang/Double;
-10 -1: viewAsType
-22 -1: (Ljava/io/DataInput;)I
-22 -1: (Ljava/io/DataInput;)J
-105 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
-16 -1: setJavaNetAccess
-73 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node<TK;TV;>;
-22 -1: (Ljava/io/DataInput;)V
-14 -1: getHostAddress
-37 -1: sun/reflect/annotation/TypeAnnotation
-14 -1: ENCLOSING_MARK
-5 -1: FALSE
-14 -1: preDefineClass
-9 -1: newKeySet
-18 -1: getWaitQueueLength
-32 -1: ()Lsun/misc/URLClassPath$Loader;
-54 -1: (Ljava/nio/CharBuffer;I)Ljava/nio/charset/CoderResult;
-3 -1: SEP
-45 -1: (ITK;TV;Ljava/util/Hashtable$Entry<TK;TV;>;)V
-17 -1: getDeclaredFields
-7 -1: getDate
-10 -1: getClasses
-240 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-12 -1: WeakClassKey
-14 -1: LF_GEN_INVOKER
-25 -1: Ljava/lang/StringBuilder;
-2 -1: > 
-9 -1: getJarMap
-4 -1: asin
-37 -1: (Ljava/net/URLStreamHandlerFactory;)V
-30 -1: not a constructor type or name
-4 -1: main
-22 -1: java/io/FilenameFilter
-22 -1: sun.java.launcher.diag
-30 -1: ()Ljava/util/Spliterator<TE;>;
-57 -1: <T::Ljava/lang/Comparable<-TT;>;>(Ljava/util/List<TT;>;)V
-86 -1: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;)TT;
-18 -1: canBeCalledVirtual
-9 -1: Shift_JIS
-24 -1: ()Ljava/util/ArrayDeque;
-32 -1: (Ljava/lang/Class$MethodArray;)V
-22 -1: java/lang/StringCoding
-33 -1: sun/util/locale/LocaleObjectCache
-20 -1: Sorry, deque too big
-38 -1: java/lang/Throwable$WrappedPrintWriter
-25 -1: (Ljava/io/InputStream;J)J
-44 -1: (Ljava/security/Permission;)Ljava/util/List;
-5 -1: thunk
-5 -1: props
-15 -1: getLastModified
-120 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap<Ljava/lang/String;Ljava/util/LinkedList<Ljava/lang/String;>;>;)V
-146 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/invoke/MethodHandleImpl$1;)V
-27 -1: parseExtensionsDependencies
-10 -1: getRawType
-39 -1: (Ljava/nio/charset/CodingErrorAction;)V
-22 -1: ObjectStreamField.java
-6 -1: handle
-11 -1: hasPrevious
-18 -1: instanceof Float: 
-52 -1: (ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V
-4 -1: make
-13 -1: isIdeographic
-26 -1: java/util/HashMap$EntrySet
-51 -1: (Ljava/util/Hashtable;)[Ljava/util/Hashtable$Entry;
-91 -1: (Ljava/lang/CharSequence;Ljava/lang/Iterable<+Ljava/lang/CharSequence;>;)Ljava/lang/String;
-13 -1: makeAllocator
-10 -1: , headless
-20 -1: expungeStaleElements
-58 -1: sun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget
-41 -1: ([Ljava/lang/Object;Ljava/lang/Class$1;)V
-50 -1: <T:Ljava/lang/Object;>(I)Ljava/util/Iterator<TT;>;
-7 -1: TreeBin
-21 -1: Ljava/io/IOException;
-56 -1: (I[Ljava/lang/Class;)[Ljava/lang/invoke/LambdaForm$Name;
-6 -1: LOCFLG
-6 -1: DIRECT
-3 -1: SIG
-37 -1: java/security/NoSuchProviderException
-39 -1: " with illegal data type conversion to 
-16 -1: getCodeSourceURL
-51 -1: java/util/concurrent/ConcurrentHashMap$EntrySetView
-47 -1: (Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V
-6 -1: delete
-38 -1: sun/reflect/UnsafeFieldAccessorFactory
-11 -1: isDestroyed
-140 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
-9 -1: unaligned
-36 -1: ()Lsun/misc/Launcher$AppClassLoader;
-57 -1: (Ljava/lang/String;Ljava/util/Locale;)[Ljava/lang/String;
-37 -1: sun/reflect/annotation/AnnotationType
-49 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/List<TT;>;
-24 -1: (S)Ljava/nio/ByteBuffer;
-6 -1: ([DD)I
-9 -1: setTarget
-29 -1: (IF)Ljava/lang/StringBuilder;
-12 -1: forBasicType
-10 -1: (IIII[BI)V
-8 -1: ([DIID)I
-9 -1: BASE_YEAR
-19 -1: ()Ljava/lang/Error;
-42 -1: (Ljava/util/Map<TE;Ljava/lang/Boolean;>;)V
-6 -1: ([DD)V
-14 -1: Illegal size: 
-8 -1: ([DIID)V
-7 -1: (II[I)I
-17 -1: java_profile_name
-28 -1: java/util/AbstractCollection
-43 -1: (Ljava/net/URL;)[Ljava/security/CodeSource;
-62 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/net/URLStreamHandler;
-33 -1: [Ljava/util/HashMap$Node<TK;TV;>;
-15 -1: (Native Method)
-11 -1: fileNameMap
-26 -1: ()Ljava/util/ListIterator;
-25 -1: java/util/LinkedList$Node
-18 -1: SELECT_ALTERNATIVE
-35 -1: (Ljava/lang/Object;)Ljava/util/Set;
-19 -1: java/io/IOException
-16 -1: : already loaded
-9 -1: image/gif
-6 -1: (TE;)I
-25 -1: (Ljava/util/Properties;)V
-40 -1: (Ljava/lang/String;)Ljava/nio/file/Path;
-19 -1: checkedNavigableMap
-9 -1: checkInt(
-17 -1: getContentTypeFor
-26 -1: ()Ljava/io/FileDescriptor;
-69 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-6 -1: (TE;)V
-25 -1: WARNING: Default charset 
-14 -1: ZipFile closed
-2 -1: CA
-6 -1: (TE;)Z
-64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask
-15 -1: FileSystem.java
-75 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-10 -1: FileLoader
-44 -1: (Lsun/util/PreHashedMap;)[Ljava/lang/Object;
-19 -1: availableProcessors
-2 -1: CN
-36 -1: ([JII)Ljava/util/Spliterator$OfLong;
-11 -1: access$1100
-18 -1: getFieldAtIfLoaded
-30 -1: PrivilegedActionException.java
-6 -1: EUC-JP
-20 -1: (F)Ljava/lang/Float;
-22 -1: unable to instantiate 
-31 -1: java/lang/reflect/ReflectAccess
-23 -1: (Ljava/lang/Object;JC)V
-3 -1: get
-59 -1: <T:Ljava/lang/Object;>([TT;IILjava/util/Comparator<-TT;>;)V
-2 -1: DE
-13 -1: GMT_ID_LENGTH
-7 -1: execute
-12 -1: MethodHandle
-18 -1: AllPermission.java
-54 -1: (Ljava/util/Locale;)Lsun/util/locale/LocaleExtensions;
-23 -1: MapReduceKeysToLongTask
-12 -1: varargsArray
-23 -1: java/util/jar/JarFile$1
-23 -1: java/util/jar/JarFile$2
-23 -1: java/util/jar/JarFile$3
-12 -1: getAndUpdate
-13 -1: reserveMemory
-17 -1: expungeStaleEntry
-6 -1: EUC-KR
-120 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;Ljava/util/Map$Entry<TK;TV;>;
-69 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
-26 -1: ()Ljava/util/NavigableMap;
-7 -1: L_PCHAR
-23 -1: (Ljava/lang/String$1;)V
-4 -1: KEYS
-37 -1: (Ljava/util/List;Ljava/lang/Object;)I
-31 -1: Ljava/lang/ArithmeticException;
-15 -1: [Ljava/net/URL;
-37 -1: (Ljava/util/List;Ljava/lang/Object;)V
-18 -1: MAX_HIGH_SURROGATE
-6 -1: (JCZ)V
-4 -1: mark
-17 -1: setMethodAccessor
-21 -1: java/io/ExpiringCache
-21 -1: PrivilegedAction.java
-21 -1: MappedByteBuffer.java
-2 -1: FR
-10 -1: copyMemory
-8 -1: L_SERVER
-13 -1: assertionLock
-12 -1: searchValues
-46 -1: (Ljava/util/Collection<*>;Ljava/lang/Object;)I
-21 -1: ProtectionDomainCache
-32 -1: USE_PREDEFINED_INTERPRET_METHODS
-2 -1: GB
-16 -1: getFinalRefCount
-23 -1: Ljava/lang/ClassLoader;
-4 -1: mask
-94 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-4 -1: bind
-41 -1: (Ljava/lang/Class<*>;I)Ljava/lang/Object;
-9 -1: COUNT_GWT
-16 -1: DASH_PUNCTUATION
-24 -1: UNICODE_LOCALE_EXTENSION
-15 -1: checkInvariants
-10 -1: stringSize
-12 -1: deepHashCode
-30 -1: java/security/cert/Certificate
-19 -1: America/Los_Angeles
-19 -1: unmappableForLength
-6 -1: UTF-16
-10 -1: methodType
-21 -1: sun/misc/URLClassPath
-19 -1: META-INF/INDEX.LIST
-10 -1: jniVersion
-6 -1: IBM437
-29 -1: sun/reflect/FieldAccessorImpl
-21 -1: ()Ljava/lang/Package;
-32 -1: java/security/SecurityPermission
-57 -1: (Lsun/util/calendar/Era;)Lsun/util/calendar/CalendarDate;
-34 -1: [Ljava/util/concurrent/locks/Lock;
-11 -1: replacement
-20 -1: ()Ljava/lang/String;
-6 -1: resize
-12 -1: UTF_32BE_BOM
-26 -1: (Ljava/util/jar/JarFile;)V
-24 -1: DEFAULT_INITIAL_CAPACITY
-87 -1: (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-74 -1: (Ljava/util/jar/JarFile;)Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
-18 -1: parameterSlotDepth
-26 -1: (Ljava/util/jar/JarFile;)Z
-18 -1: makePlatformString
-24 -1: doPrivilegedWithCombiner
-48 -1: (Ljava/lang/String;)Lsun/util/calendar/ZoneInfo;
-27 -1: ()Ljava/lang/ref/Reference;
-40 -1: java/util/ArrayList$ArrayListSpliterator
-67 -1: ([Ljava/lang/Object;IILjava/util/Comparator;[Ljava/lang/Object;II)V
-2 -1: ID
-19 -1: stringPropertyNames
-28 -1: (Ljava/util/Collections$1;)V
-12 -1: STATE_YELLOW
-12 -1: isNormalized
-10 -1: fromIndex(
-16 -1: getFloatVolatile
-37 -1: Lsun/util/calendar/BaseCalendar$Date;
-10 -1: properties
-17 -1: peakFinalRefCount
-102 -1: (Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-68 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
-2 -1: IT
-9 -1: ([BI[BI)V
-51 -1: scl           permissions SecureClassLoader assigns
-36 -1: (Ljava/util/Set;Ljava/lang/Object;)V
-11 -1: ([SII[SII)V
-21 -1: sun.io.useCanonCaches
-18 -1: Illegal capacity: 
-22 -1: (Ljava/lang/Integer;)I
-83 -1: ([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set<[Ljava/lang/Object;>;)V
-65 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;II)V
-17 -1: java/util/Objects
-48 -1: (ILjava/util/List;)Ljava/lang/invoke/LambdaForm;
-31 -1: java/util/Properties$XmlSupport
-10 -1: L_LOWALPHA
-13 -1: long overflow
-25 -1: NullPointerException.java
-32 -1: (I)Ljava/lang/StackTraceElement;
-34 -1: ()[Ljava/lang/reflect/Constructor;
-2 -1: JP
-3 -1: SST
-12 -1: ShortCountry
-48 -1: (Ljava/util/stream/Collector;)Ljava/lang/Object;
-29 -1: Lsun/reflect/CallerSensitive;
-10 -1: addElement
-12 -1: lastReturned
-6 -1: putInt
-34 -1: sun.misc.JarIndex.metaInfFilenames
-13 -1: getBaseLocale
-20 -1: StringTokenizer.java
-8 -1: entrySet
-11 -1: getTypeName
-17 -1: America/Sao_Paulo
-5 -1: \t... 
-35 -1: (Lsun/util/calendar/CalendarDate;)I
-28 -1: java/lang/StackOverflowError
-35 -1: (Lsun/util/calendar/CalendarDate;)J
-10 -1: logicalAnd
-18 -1: csISOLatinCyrillic
-43 -1: (Ljava/lang/String;II)Ljava/nio/CharBuffer;
-73 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Z)Ljava/lang/invoke/MethodType;
-14 -1: aliases_MS1250
-14 -1: aliases_MS1251
-17 -1: getImplMethodKind
-17 -1: getLastAccessTime
-14 -1: aliases_MS1252
-14 -1: aliases_MS1253
-35 -1: (Lsun/util/calendar/CalendarDate;)V
-2 -1: KR
-14 -1: aliases_MS1254
-14 -1: getGenericInfo
-8 -1: utf_32be
-14 -1: aliases_MS1257
-35 -1: (Lsun/util/calendar/CalendarDate;)Z
-13 -1: StringEncoder
-7 -1: LDT2037
-7 -1: generic
-2 -1: L9
-45 -1: ([DLjava/util/function/IntToDoubleFunction;)V
-17 -1: isOtherAlphabetic
-9 -1: implWrite
-24 -1: PC-Multilingual-850+euro
-12 -1: valueMatches
-78 -1: (Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag;
-3 -1: gmt
-19 -1: (Ljava/io/Reader;)V
-25 -1: (JJ)Ljava/nio/ByteBuffer;
-7 -1: val$url
-26 -1: (Ljava/nio/ByteBuffer;IJ)V
-10 -1: isImplicit
-19 -1: getDeclaredClasses0
-4 -1: (I)B
-4 -1: (I)C
-4 -1: (I)D
-9 -1: byteValue
-4 -1: (I)F
-5 -1: ([J)I
-6 -1: isLive
-5 -1: sleep
-4 -1: (I)I
-4 -1: (I)J
-6 -1: outBuf
-77 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Set<TE;>;
-4 -1: (I)S
-5 -1: ([J)V
-4 -1: (I)V
-30 -1: (I[C)Ljava/lang/StringBuilder;
-14 -1: intBitsToFloat
-4 -1: (I)Z
-15 -1: MethodType.java
-14 -1: resolveSibling
-9 -1: Enum.java
-111 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
-14 -1: IS_CONSTRUCTOR
-4 -1: bits
-34 -1: java/security/PermissionCollection
-9 -1: autoFlush
-21 -1: java/util/Collections
-12 -1: bindReceiver
-20 -1: DMH.invokeStaticInit
-11 -1: charsetName
-14 -1: x-utf-32be-bom
-5 -1: cause
-7 -1: handle0
-43 -1: ([I[C[Ljava/lang/invoke/LambdaForm$Name;I)Z
-30 -1: getDefaultAllowUserInteraction
-18 -1: ConcurrentMap.java
-35 -1: (Ljava/lang/String;Z)Ljava/net/URL;
-33 -1: Ljava/nio/charset/CharsetDecoder;
-36 -1: java/lang/invoke/MethodHandleStatics
-34 -1: java/util/concurrent/ConcurrentMap
-16 -1: collectArguments
-22 -1: packageAssertionStatus
-79 -1: (JLjava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)J
-39 -1: Cannot reflectively create enum objects
-62 -1: attempt to add a Permission to a readonly PermissionCollection
-22 -1: FieldAccessorImpl.java
-9 -1: ByteCache
-4 -1: TRUE
-85 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Character;>;
-17 -1: java.library.path
-7 -1: encoder
-21 -1:     default locale = 
-11 -1: secondOfDay
-37 -1: (Lsun/util/calendar/ZoneInfoFile$1;)V
-35 -1: sun/reflect/UnsafeFieldAccessorImpl
-24 -1: (Ljava/lang/Object;JJJ)V
-16 -1: countStackFrames
-24 -1: (Ljava/lang/Object;JJJ)Z
-17 -1: nonfairTryAcquire
-20 -1: ArrayListSpliterator
-5 -1: /DMH=
-68 -1: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
-2 -1: PI
-8 -1: cspcp852
-112 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;)Ljava/util/Locale;
-8 -1: cspcp855
-58 -1: (Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
-33 -1: sun/misc/PerfCounter$CoreCounters
-6 -1: CESU_8
-7 -1: vmslots
-4 -1: Init
-7 -1: handler
-11 -1: getProperty
-10 -1: isVolatile
-8 -1: ([J[IJ)I
-25 -1: ()Ljava/lang/ClassLoader;
-8 -1: asChange
-81 -1: (Ljava/net/URLClassLoader;Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
-12 -1: naturalOrder
-8 -1: getState
-40 -1: (Ljava/lang/Object;I)[Ljava/lang/String;
-36 -1: java/security/AccessControlException
-10 -1: linkBefore
-48 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V
-26 -1: (Ljava/util/WeakHashMap;)V
-23 -1: bad method type alias: 
-7 -1: putChar
-18 -1: basicTypeSignature
-33 -1: sun/misc/InvalidJarIndexException
-13 -1: getPrivateuse
-14 -1: isConstantZero
-24 -1: java/io/FilePermission$1
-9 -1: Long.java
-19 -1: getLocaleExtensions
-10 -1: discovered
-17 -1: Invalid file path
-12 -1: MAX_MH_ARITY
-20 -1: observesDaylightTime
-31 -1: Ljava/lang/invoke/MethodHandle;
-6 -1: , end 
-24 -1: java/io/FileDescriptor$1
-12 -1: loadLibrary.
-11 -1: Method.java
-12 -1: loadLibrary0
-23 -1: java/util/stream/Stream
-37 -1: sun.lang.ClassLoader.allowArraySyntax
-8 -1: appClass
-15 -1: FileReader.java
-5 -1: (IF)I
-29 -1: [Ljava/lang/ClassValue$Entry;
-12 -1: (principals 
-30 -1: jar           jar verification
-22 -1: ARRAY_CHAR_BASE_OFFSET
-18 -1: newDirectoryStream
-4 -1: atan
-5 -1: (IF)V
-24 -1: (Ljava/lang/Character;)I
-2 -1: TH
-10 -1: startsWith
-9 -1: baseCount
-13 -1: canonicalize0
-47 -1: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)V
-22 -1: Ljava/io/OutputStream;
-2 -1: TW
-10 -1: H_RESERVED
-19 -1: URLClassLoader.java
-16 -1: isAccessibleFrom
-59 -1: Ljava/util/Hashtable<Ljava/lang/Object;Ljava/lang/Object;>;
-33 -1: java/lang/invoke/ConstantCallSite
-14 -1: Ljava/net/URL;
-12 -1: deleteOnExit
-20 -1: MAX_SKIP_BUFFER_SIZE
-30 -1: [Ljava/lang/ref/WeakReference;
-15 -1: contentPathProp
-9 -1: initCause
-53 -1: (Ljava/util/Queue;Ljava/lang/Class;)Ljava/util/Queue;
-20 -1: java/util/TimeZone$1
-2 -1: UK
-86 -1: (BLjava/lang/Class;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
-51 -1: (II[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-18 -1: Lsun/misc/Cleaner;
-31 -1: RuntimeInvisibleTypeAnnotations
-2 -1: US
-7 -1: makeInt
-40 -1: sun/reflect/annotation/AnnotationSupport
-28 -1: sun/reflect/misc/ReflectUtil
-8 -1: utf_32le
-40 -1: (Ljava/lang/Object;JLjava/lang/Object;)V
-24 -1: java/nio/file/WatchEvent
-66 -1: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodType;
-91 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
-114 -1: (Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-20 -1: internalWriteEntries
-79 -1: <T:Ljava/lang/Object;>(TT;Ljava/util/function/Supplier<Ljava/lang/String;>;)TT;
-14 -1: bitIndex < 0: 
-88 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
-6 -1: , len 
-28 -1: java/io/BufferedOutputStream
-11 -1: System.java
-11 -1: csISOLatin1
-11 -1: csISOLatin2
-28 -1: Ljava/io/OutputStreamWriter;
-27 -1: IllegalAccessException.java
-11 -1: csISOLatin4
-14 -1: isDaylightTime
-11 -1: csISOLatin5
-21 -1: getYearLengthInMonths
-13 -1: canonicalizes
-93 -1: "'s signer information does not match signer information of other classes in the same package
-32 -1: ()Lsun/management/GcInfoBuilder;
-37 -1: (IILjava/nio/charset/CoderResult$1;)V
-10 -1: stateNames
-46 -1: (Ljava/lang/String;)Ljava/nio/charset/Charset;
-21 -1: acquireMethodAccessor
-2 -1: X-
-32 -1: java/security/ProtectionDomain$1
-5 -1: atan2
-32 -1: java/security/ProtectionDomain$2
-32 -1: java/security/ProtectionDomain$3
-41 -1: malformed input: partial character at end
-18 -1: dropParameterTypes
-44 -1: (Ljava/lang/String;)Ljava/lang/StringBuffer;
-18 -1: CalendarUtils.java
-5 -1: month
-84 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/ClassLoader;>;
-33 -1: sun/misc/JavaNioAccess$BufferPool
-18 -1: SearchMappingsTask
-38 -1: DelegatingConstructorAccessorImpl.java
-80 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Ljava/lang/invoke/MemberName;
-8 -1: instance
-54 -1: Parameter annotations don't match number of parameters
-14 -1: createConstant
-35 -1: java/lang/invoke/MemberName$Factory
-4 -1: scrt
-34 -1: Ljava/lang/InstantiationException;
-20 -1: allowUserInteraction
-15 -1: java/util/Deque
-16 -1: forEachRemaining
-35 -1: (J)Lsun/util/calendar/CalendarDate;
-13 -1: no such field
-25 -1: java/nio/file/FileSystems
-16 -1: expectedModCount
-44 -1: (Ljava/io/File;ILjava/nio/charset/Charset;)V
-12 -1: createString
-15 -1: useDaylightTime
-31 -1: java/util/Properties$LineReader
-111 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Class<*>;I[Ljava/lang/invoke/MemberName;)I
-16 -1: java/util/Locale
-26 -1: URLClassPath.getResource("
-58 -1: (Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V
-10 -1: appendTail
-7 -1: cleaner
-78 -1: (Lsun/nio/cs/FastCharsetProvider;Ljava/lang/String;)Ljava/nio/charset/Charset;
-18 -1: convertOldISOCodes
-4 -1: year
-38 -1: java/lang/ReflectiveOperationException
-28 -1: (Ljava/lang/StringBuffer;B)V
-27 -1: (D)Ljava/lang/StringBuffer;
-17 -1: emptyNavigableSet
-7 -1: indices
-10 -1:  is sealed
-21 -1: SPECIFICATION_VERSION
-3 -1: TE;
-8 -1: addMonth
-24 -1: java/util/HashMap$Values
-17 -1: SEARCH_ALL_SUPERS
-18 -1: uncaught exception
-14 -1: declaredFields
-2 -1: [B
-2 -1: [C
-8 -1: ABSTRACT
-2 -1: [D
-2 -1: [F
-2 -1: [I
-2 -1: [J
-5 -1: false
-36 -1: (Ljava/net/URL;Ljava/lang/String;J)V
-12 -1: equalContext
-11 -1: VOID_RESULT
-2 -1: [S
-24 -1: (JLjava/lang/Object;JJ)V
-36 -1: Ljava/security/PermissionCollection;
-2 -1: [Z
-17 -1: floatToRawIntBits
-2 -1: []
-21 -1: ()[Ljava/lang/Thread;
-20 -1: [Ljava/lang/Integer;
-42 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Z)V
-19 -1: checkPrintJobAccess
-40 -1: (Ljava/lang/Object;)Ljava/lang/Class<*>;
-31 -1: (Lsun/reflect/FieldAccessor;Z)V
-10 -1: reallyPoll
-52 -1: (Ljava/lang/ref/Reference;)Ljava/lang/ref/Reference;
-100 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
-19 -1: CheckedNavigableMap
-48 -1: (Ljava/lang/String;)Ljava/lang/RuntimeException;
-35 -1: java/util/Hashtable$ValueCollection
-89 -1: (JLjava/util/function/ToDoubleFunction<-TK;>;DLjava/util/function/DoubleBinaryOperator;)D
-10 -1: Stack.java
-57 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;I)V
-12 -1: getTimeOfDay
-12 -1: reduceValues
-22 -1: warnUnsupportedCharset
-34 -1: (Ljava/lang/ref/Reference<+TS;>;)Z
-31 -1: EEE, dd MMM yyyy HH:mm:ss 'GMT'
-19 -1: setCachedLambdaForm
-21 -1: (I)Ljava/lang/Object;
-85 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
-36 -1: java/security/AccessControlContext$1
-27 -1: Lsun/net/www/MessageHeader;
-23 -1: ()[Ljava/lang/Class<*>;
-14 -1: refKindIsValid
-41 -1: sun/reflect/NativeConstructorAccessorImpl
-6 -1: binary
-23 -1: ()Ljava/nio/CharBuffer;
-8 -1: getSpace
-45 -1: bootstrap method failed to produce a CallSite
-15 -1: getISO3Language
-17 -1: TRANSITION_NSHIFT
-163 -1: ([Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
-7 -1: os.name
-38 -1: java/util/function/IntToDoubleFunction
-8 -1: checkInt
-21 -1: java/lang/VerifyError
-42 -1: sunpkcs11     SunPKCS11 provider debugging
-19 -1: URI is not absolute
-23 -1: java/io/DataInputStream
-53 -1: (Ljava/lang/Object;)Ljava/nio/charset/CharsetEncoder;
-2 -1: _#
-41 -1: (Ljava/io/FilenameFilter;)[Ljava/io/File;
-26 -1: Ljava/util/jar/Attributes;
-7 -1: collect
-17 -1: Lsun/misc/Unsafe;
-97 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-78 -1: <T:Ljava/lang/Object;>(Ljava/util/Enumeration<TT;>;)Ljava/util/ArrayList<TT;>;
-28 -1: (II)Ljava/lang/StringBuffer;
-54 -1: (Ljava/lang/reflect/Constructor<*>;)Ljava/lang/String;
-28 -1: ()Ljava/util/ResourceBundle;
-48 -1: java/util/ArraysParallelSortHelpers$FJInt$Sorter
-9 -1: no access
-57 -1: <S:Ljava/lang/Object;>Ljava/lang/ref/ReferenceQueue<TS;>;
-7 -1: getPerf
-11 -1: getClassAt0
-11 -1: rtypeOffset
-20 -1: thread can't be null
-12 -1: addArguments
-12 -1: utf_32le_bom
-21 -1: allowThreadSuspension
-25 -1: defaultExpectedLineLength
-11 -1: removeFirst
-13 -1: reduceEntries
-20 -1: Read-ahead limit < 0
-57 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<-TT;>;[TT;)Z
-39 -1: ()Ljava/lang/invoke/MemberName$Factory;
-13 -1: ZipCoder.java
-16 -1: java/lang/Thread
-27 -1: java/lang/NoSuchMethodError
-66 -1: (Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;
-22 -1: java/lang/StringBuffer
-3 -1: TK;
-34 -1: (I)Ljava/lang/invoke/MethodHandle;
-30 -1: (Ljava/lang/reflect/Method;Z)V
-13 -1: file.encoding
-14 -1: removeTreeNode
-27 -1: sun/misc/JavaSecurityAccess
-58 -1: ([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
-19 -1: equalLimitedContext
-22 -1: appendVmSynonymMessage
-10 -1: applyAsInt
-23 -1: privateGetPublicMethods
-11 -1: dumpThreads
-25 -1: RuntimeVisibleAnnotations
-37 -1: (IF)Ljava/lang/AbstractStringBuilder;
-18 -1: getBooleanVolatile
-27 -1: (Ljava/util/zip/ZipFile;J)V
-25 -1: INITIAL_QUOTE_PUNCTUATION
-51 -1: (Ljava/util/Map;)[Ljava/lang/annotation/Annotation;
-54 -1: (ILjava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-20 -1: reflectionDataOffset
-2 1: aa
-51 -1: (Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
-13 -1: transferLinks
-18 -1: java/util/Vector$1
-10 -1: ensureOpen
-22 -1: getDeclaredConstructor
-2 -1: am
-19 -1: NF_allocateInstance
-66 -1: (Ljava/util/Spliterator$OfDouble;Z)Ljava/util/stream/DoubleStream;
-6 -1: ([SS)I
-17 -1: newReflectionData
-19 -1: subclassAuditsQueue
-11 -1: access$1200
-16 -1: ValueSpliterator
-18 -1: preparedLambdaForm
-38 -1: (Ljava/net/URL;)Ljava/net/InetAddress;
-14 -1: getMaxPriority
-32 -1: ()[Ljava/lang/StackTraceElement;
-67 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask
-62 -1: (Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V
-6 -1: EXTHDR
-14 -1: java/util/Date
-2 -1: az
-6 -1: ([SS)V
-15 -1: arrayBaseOffset
-9 -1: isTrusted
-23 -1: (Ljava/lang/Object;JD)V
-2 -1: bb
-10 -1: ([BII[BI)V
-7 -1: toLower
-14 -1: invoke_LLLLL_L
-7 -1: jarfile
-42 -1: (Ljava/lang/String;)Lsun/misc/PerfCounter;
-28 -1: java/lang/ref/Reference$Lock
-16 -1: java/util/BitSet
-22 -1: jarfile parsing error!
-18 -1: jdk_update_version
-14 -1: invoke_LLLLL_V
-20 -1: java/util/LinkedList
-22 -1: erasedInvokerWithDrops
-25 -1: timeout value is negative
-21 -1: getCalendarProperties
-25 -1: not a method descriptor: 
-2 -1: cb
-31 -1: (Lsun/misc/JavaUtilJarAccess;)V
-2 -1: cd
-43 -1: Lsun/util/PreHashedMap<Ljava/lang/String;>;
-12 -1: getEntrySize
-2 -1: ce
-24 -1: guessContentTypeFromName
-2 -1: ch
-14 -1: JulianCalendar
-22 -1: [Ljava/lang/Cloneable;
-122 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Deque<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
-34 -1: Lsun/util/locale/BaseLocale$Cache;
-14 -1: LinkedEntrySet
-72 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/io/Serializable;
-39 -1: ()Ljava/io/ObjectOutputStream$PutField;
-2 -1: cs
-8 -1: indexFor
-25 -1: (Ljava/util/List<+TE;>;)V
-7 -1: subpath
-11 -1: invokeExact
-14 -1: setFileNameMap
-22 -1: LangReflectAccess.java
-8 -1: referent
-34 -1: java/util/MissingResourceException
-77 -1: (Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;
-11 -1: ([FII[FII)V
-17 -1: getParameterCount
-18 -1: isMemberAccessible
-10 -1: getExtDirs
-69 -1: <T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;Ljava/util/List<+TT;>;)V
-9 -1: getNextPC
-13 -1: setProperties
-2 -1: de
-16 -1: generateCertPath
-6 -1: decode
-16 -1: getDefaultParent
-50 -1: (Ljava/net/URL;[Ljava/security/cert/Certificate;)V
-24 -1: Certificate factory for 
-35 -1: ()Ljava/lang/reflect/AnnotatedType;
-2 -1: ee
-12 -1: asLongBuffer
-7 -1: PRIVATE
-16 -1: aliases_UTF_32BE
-2 -1: en
-2 -1: eq
-7 -1: indexOf
-136 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<+Ljava/lang/Throwable;>;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-24 -1: (Ljava/lang/Class<*>;I)V
-72 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/IllegalAccessException;
-35 -1: java/util/jar/JavaUtilJarAccessImpl
-24 -1: (Ljava/lang/Class<*>;I)Z
-2 -1: ex
-24 -1: getProtectionDomainCache
-101 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;JLjava/security/AccessControlContext;)V
-3 -1: hit
-8 -1: UTF_16BE
-2 -1: fd
-16 -1: EmptyEnumeration
-4 -1: attr
-16 -1: fromIndex < -1: 
-7 -1: getIntB
-22 -1: java/io/FilePermission
-2 -1: fr
-2 -1: fs
-7 -1: lazySet
-7 -1: getIntL
-37 -1: configfile    JAAS ConfigFile loading
-24 -1: sun/nio/cs/StreamEncoder
-40 -1: (Ljava/time/ZoneId;)Ljava/util/TimeZone;
-132 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V
-2 -1: gc
-18 -1: Ljava/lang/Thread;
-10 -1: cacheArray
-48 -1: (Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
-61 -1: (Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V
-8 -1: readByte
-7 -1: ([S[S)Z
-24 -1: findBootstrapClassOrNull
-2 -1: hb
-7 -1: REPLACE
-45 -1: ()Ljava/util/Enumeration<Ljava/lang/String;>;
-10 -1: isOverflow
-2 -1: he
-13 -1: getCachedJan1
-12 -1: getClassPath
-8 -1: leapYear
-31 -1: java/lang/invoke/MethodTypeForm
-10 -1: ANNOTATION
-20 -1: getGregorianCalendar
-11 -1: ISO_8859_13
-11 -1: ISO_8859_15
-6 -1: invoke
-2 -1: ht
-7 -1: ListItr
-15 -1: synchronizedMap
-7 -1: cleanup
-94 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lsun/reflect/annotation/AnnotationType;
-3 -1: TT;
-69 -1: (JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/Gregorian$Date;
-81 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/HashMap$TreeNode<TK;TV;>;)Z
-20 -1:     Min. Heap Size: 
-33 -1: (IZ)Ljava/lang/invoke/MethodType;
-2 -1: id
-7 -1: ([DI)[D
-37 -1: (Ljava/lang/reflect/Constructor<*>;)I
-42 -1: <T::Ljava/lang/Comparable<-TT;>;>([TT;II)V
-13 -1: addSuppressed
-28 -1: internalMemberNameEnsureInit
-2 -1: in
-17 -1: getCompressedSize
-34 -1: sun/misc/Launcher$AppClassLoader$1
-88 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class<*>;)Ljava/security/AccessControlContext;
-37 -1: (Ljava/lang/reflect/Constructor<*>;)V
-2 -1: is
-2 -1: it
-6 -1: ENDOFF
-4 -1: void
-2 -1: iw
-14 -1: emptySortedSet
-2 -1: ix
-17 -1: unicode-1-1-utf-8
-64 -1: (Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
-46 -1: (Lsun/misc/URLClassPath$Loader;)Ljava/net/URL;
-2 -1: ja
-13 -1: synchronized 
-76 -1: ([DLjava/util/function/IntToDoubleFunction;)Ljava/util/function/IntConsumer;
-11 -1: wrapperType
-51 -1: <T:Ljava/lang/Object;>()Ljava/util/Comparator<TT;>;
-106 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/Object;
-17 -1: removeAllElements
-2 -1: ji
-24 -1: java/util/Vector$ListItr
-14 -1: getNestedTypes
-6 -1: L_MARK
-27 -1: Source does not fit in dest
-2 -1: l1
-2 -1: jp
-2 -1: l2
-4 -1: (J)B
-57 -1: (Ljava/lang/String;Ljava/util/Locale;I)Ljava/lang/String;
-4 -1: (J)C
-27 -1: ForEachTransformedValueTask
-2 -1: l4
-26 -1: java/util/Hashtable$KeySet
-4 -1: (J)D
-2 -1: l5
-39 -1: java/security/BasicPermissionCollection
-4 -1: (J)F
-2 -1: jv
-29 -1: MapReduceMappingsToDoubleTask
-18 -1: copyFromShortArray
-2 -1: l9
-3 -1: TV;
-4 -1: (J)I
-4 -1: (J)J
-23 -1: Lsun/util/calendar/Era;
-8 -1: x-EUC-TW
-15 -1: checkSetFactory
-7 -1: Special
-4 -1: (J)S
-4 -1: (J)V
-7 -1: invoke_
-25 -1: (IC)Ljava/nio/ByteBuffer;
-68 -1: (JLjava/util/concurrent/TimeUnit;)Ljava/nio/file/attribute/FileTime;
-36 -1: ()Ljava/net/URLStreamHandlerFactory;
-4 -1: (J)Z
-181 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;)Z
-9 -1: getOffset
-46 -1: (ILjava/lang/String;)Ljava/lang/StringBuilder;
-7 -1: element
-15 -1: createByteArray
-17 -1: uncaughtException
-2 -1: ko
-29 -1: java/nio/file/DirectoryStream
-15 -1: getISOCountries
-246 -1: <NoSuchMemberException:Ljava/lang/ReflectiveOperationException;>(BLjava/lang/invoke/MemberName;Ljava/lang/Class<*>;Ljava/lang/Class<TNoSuchMemberException;>;)Ljava/lang/invoke/MemberName;^Ljava/lang/IllegalAccessException;^TNoSuchMemberException;
-7 -1: invoker
-17 -1: langReflectAccess
-10 -1: bindSingle
-23 -1: java/lang/reflect/Proxy
-2 -1: lb
-2 -1: lc
-29 -1: CREATE_CLASSLOADER_PERMISSION
-5 -1: isSet
-18 -1: ([Ljava/io/File;)V
-15 -1: urlNoFragString
-21 -1: DirectByteBuffer.java
-15 -1: java.class.path
-15 -1: createDirectory
-4 -1:  GMT
-37 -1: sun/reflect/annotation/ExceptionProxy
-28 -1: (Ljava/util/Map<+TK;+TV;>;)V
-17 -1: getContentHandler
-26 -1: GenericDeclRepository.java
-56 -1: (Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
-15 -1: getJavaIOAccess
-39 -1: java/util/Collections$EmptyListIterator
-34 -1: java/lang/ConditionalSpecialCasing
-82 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMBean;
-58 -1: (Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
-21 -1: ()Lsun/misc/Launcher;
-2 -1: lt
-92 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-8 -1: disjoint
-62 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V
-24 -1: ([Ljava/lang/Object;)TT;
-4 -1: lmap
-8 -1: SATURDAY
-12 -1: toStringUTF8
-91 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-46 -1: pkcs11        PKCS11 session manager debugging
-27 -1: (Z)Ljava/lang/StringBuffer;
-7 -1: forEach
-17 -1: (Ljava/io/File;)I
-17 -1: (Ljava/io/File;)J
-5 -1: RESET
-6 -1: isFile
-14 -1: Exception.java
-8 -1: isPublic
-27 -1: computeInitialPreparedForms
-50 -1: (BZLjava/lang/Class;)Ljava/lang/invoke/LambdaForm;
-19 -1: getAvailableLocales
-17 -1: (Ljava/io/File;)V
-28 -1: ()Ljava/nio/charset/Charset;
-10 -1: appendNull
-17 -1: (Ljava/io/File;)Z
-23 -1: java/lang/InternalError
-2 -1: ne
-6 -1: radix 
-8 -1: checksum
-66 -1: (Lsun/net/www/MessageHeader;Ljava/lang/String;Ljava/lang/Object;)V
-45 -1: (Ljava/io/FilenameFilter;)[Ljava/lang/String;
-8 -1: checkJar
-28 -1:     default format locale = 
-13 -1: normalizeTime
-26 -1: java/util/AbstractList$Itr
-30 -1: java/util/function/IntFunction
-7 -1: TIS-620
-12 -1: reverseBytes
-2 -1: of
-26 -1: java/lang/ClassFormatError
-109 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-10 -1: delimiters
-20 -1: indexOfSupplementary
-16 -1: aliases_UTF_32LE
-134 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/Map<TK;TV;>;
-17 -1: [Ljava/lang/Long;
-2 -1: or
-12 -1: getClassName
-31 -1: (Ljava/nio/charset/Charset;FF)V
-6 -1: ([FF)I
-39 -1: (Ljava/util/Locale;)[Ljava/lang/String;
-33 -1: java/util/WeakHashMap$KeyIterator
-8 -1: UTF_16LE
-12 -1: isISOControl
-75 -1: (Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
-7 -1: ([I[I)Z
-28 -1: Self-causation not permitted
-6 -1: ([FF)V
-14 -1: defaultCharset
-12 -1: isJavaLetter
-2 -1: pm
-39 -1: cannot reflectively invoke MethodHandle
-20 -1: getSystemClassLoader
-42 -1: ([Ljava/lang/Object;IILjava/lang/Object;)I
-56 -1: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
-42 -1: ([Ljava/lang/Object;IILjava/lang/Object;)V
-12 -1: ZipFile.java
-43 -1: (Ljava/util/zip/ZipFile;)Ljava/lang/String;
-22 -1: Ljava/net/InetAddress;
-15 -1: getCharVolatile
-32 -1: ()[Ljava/lang/reflect/Parameter;
-13 -1: delimsChanged
-13 -1: getFileSystem
-13 -1: METHOD_RETURN
-20 -1: sun/misc/PerfCounter
-61 -1: (Ljava/util/HashMap<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
-8 -1: newIndex
-18 -1: getDisplayLanguage
-36 -1: (C)Ljava/lang/AbstractStringBuilder;
-36 -1: java/lang/StringCoding$StringEncoder
-12 -1: forEachEntry
-23 -1: [Ljava/io/Serializable;
-13 -1: totalCapacity
-26 -1: java/io/FileOutputStream$1
-14 -1: signatureArity
-90 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/cert/Certificate;)V
-17 -1: reflectionFactory
-6 -1: ibm737
-17 -1: fillInStackTrace0
-16 -1: allocateInstance
-52 -1: (Lsun/util/locale/BaseLocale$Key;)Ljava/lang/String;
-9 -1: addExtURL
-16 -1: copyFromIntArray
-65 -1: (Ljava/security/Permission;Z)Ljava/security/PermissionCollection;
-57 -1: java/util/concurrent/ConcurrentHashMap$SearchMappingsTask
-10 -1: toEpochDay
-4 -1: gate
-24 -1: sun/nio/cs/UTF_8$Decoder
-8 -1: entries2
-18 -1: isCharsetSupported
-10 -1: toCustomID
-2 -1: rw
-33 -1: java/nio/ByteBufferAsFloatBufferB
-25 -1: (ID)Ljava/nio/ByteBuffer;
-12 -1: addTimeOfDay
-61 -1: (Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z
-2 -1: sd
-25 -1: (Ljava/net/InetAddress;)V
-33 -1: java/nio/ByteBufferAsFloatBufferL
-2 -1: se
-15 -1: hasQueuedThread
-24 -1: assertMemberIsConsistent
-37 -1: java/util/Collections$UnmodifiableMap
-2 -1: sp
-20 -1: setJavaUtilJarAccess
-96 -1: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
-8 -1: language
-76 -1: <T:Ljava/lang/Object;>(Ljava/util/SortedSet<TT;>;)Ljava/util/SortedSet<TT;>;
-11 -1: findLibrary
-61 -1: (Ljava/lang/Class<*>;)Lsun/reflect/annotation/AnnotationType;
-6 -1: ([BZ)V
-24 -1: DEFAULT_BYTE_BUFFER_SIZE
-25 -1: (Ljava/util/ArrayList;I)V
-2 -1: th
-47 -1: (Ljava/util/Collection;)Ljava/util/Enumeration;
-49 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/net/URL;
-7 -1: ([D[D)Z
-2 -1: to
-22 -1: java/util/Locale$Cache
-8 -1: iterator
-30 -1: (Ljava/lang/StringBuilder;IZ)V
-17 -1: ()Ljava/util/Set;
-2 -1: tr
-27 -1: (Ljava/nio/ByteBuffer;ISZ)V
-6 -1: method
-13 -1: allPermission
-9 -1: ruleArray
-8 -1: UTC_TIME
-10 -1: LF_COUNTER
-26 -1: Lsun/nio/cs/StreamDecoder;
-25 -1: ()Lsun/util/calendar/Era;
-6 -1: LOCHDR
-21 -1: sun/net/www/MimeTable
-12 -1: Cannot cast 
-2 -1: us
-2 -1: ut
-52 -1: Ljava/lang/invoke/MethodHandle$PolymorphicSignature;
-6 -1: encode
-15 -1: CharBuffer.java
-24 -1: (C)Ljava/nio/ByteBuffer;
-56 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
-18 -1: getEnclosingMethod
-56 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z
-6 -1: ibm775
-9 -1: (IIIIII)I
-44 -1: ([JLjava/util/function/IntToLongFunction;I)V
-9 -1: (IIIIII)J
-64 -1: (Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;
-2 -1: x-
-2 -1: vm
-5 -1: clock
-9 -1: (IIIIII)V
-10 -1: XmlSupport
-19 -1: sun/nio/cs/US_ASCII
-10 -1: toRealPath
-5 -1: cp367
-6 -1: ST_END
-58 -1: [Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;
-12 -1: hasSameRules
-108 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
-22 -1: java/lang/Class$Atomic
-4 -1: sync
-6 -1: listen
-12 -1: firstElement
-142 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B[B)Ljava/lang/reflect/Method;
-18 -1: internalProperties
-28 -1: (Ljava/lang/StringBuffer;C)V
-7 -1: factory
-18 -1: ()Ljava/util/List;
-50 -1: (Ljava/util/concurrent/CountedCompleter;[D[DIIII)V
-44 -1: (Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
-83 -1: (JLjava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)D
-12 -1: erasedType: 
-53 -1: (Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V
-20 -1: Cannot find package 
-27 -1: java/util/ArrayList$ListItr
-10 -1: copyMethod
-23 -1: java/lang/ThreadLocal$1
-16 -1: iso_646.irv:1983
-42 -1: (Ljava/lang/Thread;Ljava/lang/Throwable;)V
-19 -1: DEFAULT_LOAD_FACTOR
-40 -1: ([Ljava/lang/Object;)[Ljava/lang/Object;
-10 -1: (JJJ[BII)I
-12 -1: singletonMap
-8 -1: RESERVED
-9 -1: zipAccess
-21 -1: SynchronizedSortedMap
-4 -1: flag
-15 -1: UnmodifiableSet
-18 -1: WrappedPrintWriter
-7 -1: resume0
-2 -1: yi
-10 -1: erasedType
-31 -1: CHECK_AWT_EVENTQUEUE_PERMISSION
-8 -1: <clinit>
-59 -1: (Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
-40 -1: java/lang/management/MemoryManagerMXBean
-33 -1: newGetIntIllegalArgumentException
-16 -1: iso_646.irv:1991
-58 -1: (Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
-2 -1: zc
-26 -1: (Ljava/util/AbstractMap;)V
-6 -1: THROWS
-11 -1: toCharArray
-64 -1: (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
-2 -1: zh
-68 -1: Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;
-25 -1: (Ljava/util/Collection;)V
-20 -1: getJdkSpecialVersion
-17 -1: getTypeParameters
-32 -1: [Ljava/lang/ClassValue$Entry<*>;
-25 -1: (Ljava/util/Collection;)Z
-26 -1: Lsun/nio/ch/Interruptible;
-5 -1: 0.0p0
-5 -1: CACHE
-7 -1: namesOK
-21 -1: Ljava/lang/Exception;
-51 -1: (Ljava/net/URL;Lsun/net/www/protocol/jar/Handler;)V
-19 -1: jdk_special_version
-66 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;)Ljava/util/List<TT;>;
-75 -1: (Ljava/util/Comparator;Ljava/util/function/Function;)Ljava/util/Comparator;
-11 -1: Arrays.java
-19 -1: (Ljava/lang/Byte;)I
-17 -1: java/lang/Class$1
-17 -1: java/lang/Class$2
-17 -1: java/lang/Class$3
-47 -1: java/lang/invoke/MethodHandleImpl$WrappedMember
-17 -1: java/lang/Class$4
-44 -1: (Ljava/lang/Throwable;)Ljava/lang/Throwable;
-9 -1: charCount
-24 -1: ()Ljava/net/FileNameMap;
-44 -1: sun/util/locale/provider/TimeZoneNameUtility
-17 -1: not an array type
-2 -1: {}
-24 -1: (Lsun/misc/Launcher$1;)V
-12 -1: directMemory
-10 -1: parameters
-5 -1: java.
-14 -1: allocateDirect
-51 -1: (Ljava/lang/StringBuffer;)Ljava/lang/StringBuilder;
-23 -1: java/nio/file/Watchable
-37 -1: createDiagnosticFrameworkNotification
-54 -1: (Ljava/lang/Class<*>;Z)Ljava/lang/invoke/MethodHandle;
-35 -1: sun/nio/cs/StandardCharsets$Aliases
-9 -1: retDelims
-11 -1: MAX_ENTRIES
-12 -1: CumulateTask
-64 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask
-3 -1: iae
-12 -1: AF_PUTSTATIC
-21 -1: java/lang/Throwable$1
-45 -1: (Ljava/util/HashMap;)Ljava/util/HashMap$Node;
-77 -1: (JLjava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)I
-5 -1: after
-29 -1: (Ljava/security/CodeSource;)Z
-248 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-6 -1: H_URIC
-7 -1: L_DIGIT
-7 -1: toNanos
-24 -1: (D)Ljava/nio/ByteBuffer;
-25 -1: getDiagnosticCommandMBean
-6 2: [LFoo;
-14 -1: path.separator
-16 -1: toUnsignedString
-40 -1: DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
-87 -1: (Ljava/security/Permission;[Ljava/security/cert/Certificate;)Ljava/security/Permission;
-16 -1: inheritedChannel
-11 -1: audio/basic
-27 -1: sun.classloader.findClasses
-10 -1: queryCount
-20 -1: NF_ensureInitialized
-12 -1: getBufIfOpen
-23 -1: sun/nio/cs/UTF_16LE_BOM
-134 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
-17 -1: getImplMethodName
-14 -1: linkMethod => 
-25 -1: Ljava/lang/invoke/Stable;
-32 -1: Ljava/lang/annotation/Retention;
-7 -1: doInput
-9 -1: -_.!~*'()
-62 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;B)V
-18 -1: separateWithCommas
-43 -1: com/sun/crypto/provider/CipherBlockChaining
-14 -1: createTempFile
-9 -1: implFlush
-20 -1: getOffsetsByStandard
-21 -1: OutOfMemoryError.java
-7 -1: jce.jar
-46 -1: java/util/Collections$UnmodifiableNavigableMap
-30 -1: (Ljava/io/File;)Ljava/io/File;
-15 -1: LinkedList.java
-15 -1: iso_8859-9:1989
-50 -1: sun/reflect/generics/factory/CoreReflectionFactory
-10 -1: : JVM has 
-19 -1: HeapByteBuffer.java
-6 -1: getURL
-37 -1: java/security/cert/CertificateFactory
-23 -1: getAllowUserInteraction
-12 -1: otherParents
-25 -1: ARRAY_BOOLEAN_BASE_OFFSET
-9 -1: L_UPALPHA
-41 -1: ([Ljava/util/Hashtable$Entry<**>;TK;TV;)V
-6 -1: LOCHOW
-11 -1: access$1300
-30 -1: sun/reflect/MethodAccessorImpl
-130 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;)Ljava/util/List<Ljava/util/Locale;>;
-9 -1: MALFORMED
-38 -1: (Ljava/lang/String;I)Ljava/lang/Short;
-26 -1: File format not recognised
-12 -1: setTimeOfDay
-19 -1: java/lang/Exception
-15 -1: getOutputStream
-74 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-41 -1: (Ljava/lang/String;Z)Ljava/util/TimeZone;
-49 -1: Lsun/reflect/generics/repository/ClassRepository;
-8 -1: getCerts
-90 -1: (Ljava/lang/Class<*>;ZLjava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
-5 -1: clone
-32 -1: ()Ljava/lang/ref/Reference$Lock;
-15 -1: caseIgnoreMatch
-23 -1: (Ljava/util/Set<TE;>;)V
-25 -1: enumerateStringProperties
-9 -1: inherited
-4 -1: flip
-8 -1: setMonth
-38 -1: (Ljava/util/function/Consumer<-TV;>;)V
-55 -1: java/util/concurrent/ConcurrentHashMap$ReduceValuesTask
-37 -1: getJavaSecurityProtectionDomainAccess
-67 -1: (Ljava/util/NavigableSet;Ljava/lang/Class;)Ljava/util/NavigableSet;
-10 -1: reduceKeys
-14 -1: MAX_CODE_POINT
-24 -1: getGenericExceptionTypes
-8 -1: fraction
-30 -1: java/lang/InterruptedException
-46 -1: (Ljava/lang/String;II[BI)Ljava/nio/ByteBuffer;
-114 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$TreeNode<TK;TV;>;)V
-66 -1: (Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/InternalError;
-45 -1: (Ljava/lang/Object;)Ljava/lang/StringBuilder;
-8 -1: putLongB
-101 -1: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Lsun/nio/cs/StreamDecoder;
-16 -1: standardProvider
-14 -1: parameterCount
-59 -1: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/List;
-8 -1: putLongL
-12 -1: (TT;TV;TV;)Z
-37 -1: Lsun/reflect/ConstructorAccessorImpl;
-11 -1: ([CII[CII)V
-14 -1: parameterArray
-15 -1: | interpretName
-62 -1: (JLjava/util/function/Function;Ljava/util/function/Consumer;)V
-30 -1: (Z)Lsun/reflect/FieldAccessor;
-19 -1: jvm_special_version
-22 -1: java/util/ArrayDeque$1
-12 -1: initVersions
-22 -1: java/lang/CharSequence
-21 -1: NF_internalMemberName
-5 -1: ()TE;
-97 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;IZ)Ljava/lang/invoke/MethodHandle;
-25 -1: java/nio/MappedByteBuffer
-6 -1: addURL
-17 -1: isConvertibleFrom
-14 -1: extendWithType
-9 -1: interrupt
-11 -1: floorDivide
-16 -1: x-ISO-2022-CN-GB
-12 -1: CheckedQueue
-7 -1: setLong
-64 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V
-108 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;TV;>;)Ljava/util/NavigableMap<TK;TV;>;
-38 -1: java/nio/channels/spi/SelectorProvider
-17 -1: makeGuardWithTest
-20 -1: (Ljava/util/List;Z)V
-8 -1: val$path
-12 -1: Runtime.java
-7 -1: channel
-71 -1: <T:Ljava/lang/Object;>([TT;IILjava/util/function/BinaryOperator<TT;>;)V
-18 -1: initializedHeaders
-32 -1: ()[Lsun/launcher/LauncherHelper;
-13 -1: jvInitialized
-10 -1: getSeconds
-7 -1: Decoder
-20 -1: getYearFromFixedDate
-6 -1: PREFIX
-21 -1: sun.boot.library.path
-11 -1: FIXED_DATES
-33 -1: (JLjava/util/function/Consumer;)V
-27 -1: initializeJavaAssertionMaps
-13 -1: toOctalString
-9 -1: fixResult
-10 -1: typeParams
-94 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
-4 -1: Help
-11 -1: setIfNotSet
-39 -1: java/lang/UnsupportedOperationException
-15 -1: zip file closed
-8 -1: floorDiv
-10 -1: canExecute
-10 -1: encodeLoop
-18 -1: addRequestProperty
-56 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V
-10 -1: superclass
-5 -1: close
-56 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)Z
-6 -1: ignore
-32 -1: ()Ljava/lang/ref/ReferenceQueue;
-19 -1: java/util/Formatter
-27 -1: java/lang/ClassLoaderHelper
-23 -1: (Ljava/lang/Object;JZ)V
-29 -1: java/nio/file/WatchEvent$Kind
-6 -1: CENLEN
-4 -1: SIZE
-68 -1: <T:Ljava/lang/Object;>(Ljava/util/Deque<TT;>;)Ljava/util/Queue<TT;>;
-9 -1: isEscaped
-12 -1: LF_INTERPRET
-22 -1: (I)Ljava/lang/Integer;
-60 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
-49 -1: ([Ljava/lang/Class<*>;Ljava/lang/StringBuilder;)V
-11 -1: getZipEntry
-16 -1: metaInfFilenames
-27 -1: (Ljava/lang/StringBuffer;)V
-57 -1: (Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry<TK;TV;>;
-76 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class<*>;
-8 -1: ([CII)[B
-27 -1: (Ljava/lang/StringBuffer;)Z
-24 -1: getManifestFromReference
-8 -1: ([CII)[C
-10 -1: H_LOWALPHA
-18 -1: FileURLMapper.java
-12 -1: fxLaunchMode
-24 -1: isMethodHandleInvokeName
-17 -1: winTimeToFileTime
-19 -1: checkTopLevelWindow
-26 -1: MapReduceMappingsToIntTask
-13 -1: NORM_PRIORITY
-18 -1: lookupViaProviders
-30 -1: (I)Ljava/util/LinkedList$Node;
-3 -1: UTC
-10 -1: UNMAPPABLE
-68 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;B)V
-9 -1: META-INF/
-13 -1: Iterable.java
-71 -1: ([Ljava/lang/reflect/Field;Ljava/lang/String;)Ljava/lang/reflect/Field;
-9 -1: setOffset
-8 -1: FJObject
-50 -1: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
-23 -1: java/nio/HeapByteBuffer
-23 -1: sun/util/PreHashedMap$1
-23 -1: sun/util/PreHashedMap$2
-34 -1: newGetCharIllegalArgumentException
-40 -1: jca           JCA engine class debugging
-39 -1: (Ljava/lang/Object;I)Ljava/lang/Object;
-42 -1: (Ljava/lang/String;)Ljava/net/InetAddress;
-25 -1: (Ljava/net/FileNameMap;)V
-44 -1: (Ljava/util/SortedMap;)Ljava/util/SortedMap;
-52 -1: (Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;
-27 -1: ()[Ljava/util/HashMap$Node;
-29 -1: java/util/EmptyStackException
-16 -1: not a field type
-14 -1: Ljava/io/File;
-28 -1: ()[Ljava/security/Principal;
-69 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
-5 -1: ()TK;
-10 -1: ISO8859-13
-40 -1: java/lang/invoke/DirectMethodHandle$Lazy
-30 -1: The object is not initialized.
-10 -1: ISO8859-15
-88 -1: <E:Ljava/lang/Object;>(Ljava/util/List<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>;
-25 -1: (ZILjava/lang/String;II)Z
-9 -1: stackSize
-61 -1: (Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
-16 -1: synchronizedList
-90 -1: (Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
-9 -1: nullCheck
-174 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry<TT;>;Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry<TT;>;>;
-14 -1: java/lang/Enum
-3 -1: int
-13 -1: detailMessage
-56 -1: java/util/concurrent/ConcurrentHashMap$SearchEntriesTask
-10 -1: ISO-8859-1
-10 -1: ISO-8859-2
-10 -1: ISO-8859-3
-10 -1: ISO-8859-4
-10 -1: ISO-8859-5
-10 -1: ISO-8859-6
-24 -1: ([Ljava/lang/Object;II)V
-10 -1: ISO-8859-7
-10 -1: ISO-8859-8
-139 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node;
-10 -1: ISO-8859-9
-5 -1: round
-25 -1: DIRECTIONALITY_WHITESPACE
-13 -1: NamedFunction
-10 -1: startAgent
-3 -1: ioe
-7 -1: closing
-24 -1: appendSchemeSpecificPart
-56 -1: sun/reflect/ReflectionFactory$GetReflectionFactoryAction
-83 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/reflect/ReflectionFactory;>;
-17 -1: isCharsetDetected
-11 -1: getJarFiles
-22 -1: getEnclosingMethodInfo
-11 -1: setReadable
-61 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)V
-10 -1: attachment
-34 -1: (Ljava/io/File;)Ljava/lang/String;
-18 -1: ZipFileInputStream
-15 -1: CodeSource.java
-61 -1: (Ljava/util/jar/JarFile;)Ljava/util/List<Ljava/lang/Object;>;
-7 -1: cp00858
-108 -1: ([Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;II)Ljava/lang/invoke/LambdaForm$Name;
-38 -1: ([DII)Ljava/util/Spliterator$OfDouble;
-8 -1: val$name
-11 -1: LF_REINVOKE
-12 -1: validateTime
-17 -1: copyFromCharArray
-32 -1: throwSetIllegalArgumentException
-14 -1: fieldModifiers
-52 -1: (Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
-58 -1: (Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V
-14 -1: generalInvoker
-11 -1: interrupted
-246 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V
-20 -1: java/util/Dictionary
-17 -1: getDoubleVolatile
-41 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;)Z
-8 -1: intValue
-24 -1: (F)Ljava/nio/ByteBuffer;
-5 -1: reset
-54 -1: (ILjava/util/List;)[Ljava/lang/invoke/LambdaForm$Name;
-19 -1: [Ljava/util/Locale;
-43 -1: (Ljava/lang/String;II)Ljava/nio/ByteBuffer;
-38 -1: ()Ljava/io/ObjectInputStream$GetField;
-18 -1: [Locked by thread 
-10 -1: checkedMap
-16 -1: checkedSortedMap
-14 -1: illegal symbol
-16 -1: TITLECASE_LETTER
-4 -1: root
-22 -1: (ZLjava/lang/String;)V
-27 -1: ([JII)Ljava/nio/LongBuffer;
-15 -1: printStackTrace
-30 -1: newConstructorForSerialization
-14 -1: getPermissions
-13 -1: toStringCache
-15 -1: equalParamTypes
-37 -1: throwFinalFieldIllegalAccessException
-35 -1: (Ljava/lang/String;Ljava/io/File;)V
-34 -1: java/nio/charset/CoderResult$Cache
-3 -1: .\n\n
-33 -1: Ljava/nio/charset/CharsetEncoder;
-11 -1: lambdaForms
-65 -1: <T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)TT;
-39 -1: (CLjava/lang/Class;Ljava/lang/Object;)Z
-3 -1: ise
-14 -1: forLanguageTag
-45 -1: ([Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Z
-36 -1: RuntimeInvisibleParameterAnnotations
-12 -1: binarySearch
-24 -1: getAssociatedAnnotations
-10 -1: decoderFor
-6 -1: ibm813
-10 -1: logicalXor
-10 -1: setVarargs
-71 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Void;)V
-4 -1: cast
-6 -1: ibm819
-23 -1: getParentDelegationTime
-8 -1: ([FII)[F
-4 -1: .tmp
-6 -1: (JII)J
-27 -1: ()Ljava/lang/ref/Finalizer;
-9 -1: sunec.jar
-22 -1: java/net/URLConnection
-41 -1: (Ljava/lang/Runnable;Ljava/lang/String;)V
-20 -1: SecurityManager.java
-18 -1: getZipFileOpenTime
-7 -1: country
-13 -1: inflaterCache
-4 -1:     
-17 -1: java/lang/Runtime
-125 -1: (Lsun/management/GcInfoBuilder;JJJ[Ljava/lang/management/MemoryUsage;[Ljava/lang/management/MemoryUsage;[Ljava/lang/Object;)V
-24 -1: java/util/ResourceBundle
-64 -1: Ljava/util/Hashtable<Lsun/misc/Signal;Lsun/misc/SignalHandler;>;
-79 -1: ([Ljava/util/WeakHashMap$Entry<TK;TV;>;[Ljava/util/WeakHashMap$Entry<TK;TV;>;)V
-8 -1: x-ibm737
-39 -1: (Ljava/security/AccessControlContext;)Z
-21 -1: (Ljava/lang/Class;I)V
-4 -1:    -
-15 -1: calculateFields
-22 -1: Ljava/util/Properties;
-8 -1: getArray
-21 -1: (Ljava/lang/Class;I)Z
-41 -1: (Ljava/lang/ThreadGroup;)Ljava/lang/Void;
-17 -1: Ljava/io/Console;
-115 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
-12 -1: nextThreadID
-81 -1: (Ljava/net/URLClassLoader;Ljava/lang/SecurityManager;Ljava/security/Permission;)V
-23 -1: ARRAY_SHORT_BASE_OFFSET
-10 -1: interpret_
-144 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-20 -1: isIPv6LiteralAddress
-13 -1: launcher_name
-36 -1: java/util/function/IntToLongFunction
-38 -1: java/util/WeakHashMap$EntrySpliterator
-8 -1: copyInto
-3 -1: ACT
-11 -1: metafactory
-31 -1: ([BLjava/nio/charset/Charset;)V
-30 -1: java/lang/annotation/Retention
-13 -1: getYearLength
-42 -1: java/util/AbstractMap$SimpleImmutableEntry
-31 -1: ()Ljava/lang/invoke/MemberName;
-21 -1: sun/misc/JavaIOAccess
-16 -1: jdk_build_number
-8 -1: ST_RESET
-96 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
-13 -1: getTypeString
-15 -1: maxCharsPerByte
-8 -1: checkKey
-49 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/UTF_8$1;)V
-80 -1: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
-32 -1: Ljava/security/ProtectionDomain;
-5 -1: ()TT;
-6 -1: insert
-10 -1: intersects
-38 -1: ([Ljava/lang/Class;Ljava/lang/Class;)V
-15 -1: java/lang/Class
-12 -1: getPublicKey
-37 -1: (ID)Ljava/lang/AbstractStringBuilder;
-6 -1: ibm850
-6 -1: locsig
-6 -1: ibm852
-19 -1: changeReferenceKind
-3 -1: AET
-42 -1: (Ljava/util/Collection;Ljava/lang/Class;)V
-6 -1: ibm855
-16 -1: getPolicyNoCheck
-39 -1: ([B)[[Ljava/lang/annotation/Annotation;
-6 -1: ibm857
-10 -1: Error.java
-38 -1: ()Ljava/util/List<Ljava/lang/Object;>;
-14 -1: createInstance
-5 -1: cp437
-28 -1: Lsun/util/locale/BaseLocale;
-17 -1: getStandardOffset
-29 -1: sun/nio/cs/StandardCharsets$1
-36 -1: Ljava/security/ProtectionDomain$Key;
-14 -1: ArrayList.java
-78 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
-38 -1: java/lang/invoke/MethodHandleImpl$Lazy
-42 -1: (Ljava/util/LinkedHashMap$Entry<TK;TV;>;)V
-8 -1: getLongB
-7 -1: vmentry
-21 -1: lookupExtendedCharset
-32 -1: <T:Ljava/lang/Object;>([TT;)[TT;
-53 -1: Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
-6 -1: ibm862
-8 -1: getLongL
-32 -1: (Ljava/lang/invoke/MemberName;)J
-67 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/misc/Perf;>;
-6 -1: region
-6 -1: ibm866
-89 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;I)Lsun/reflect/ConstructorAccessor;
-22 -1: java/util/ListIterator
-9 -1: wednesday
-16 -1: unsuspendThreads
-20 -1: Not a Proxy instance
-45 -1: Ljava/lang/reflect/InvocationTargetException;
-61 -1: (Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
-5 -1: ()TV;
-32 -1: (Ljava/lang/invoke/MemberName;)V
-82 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/cert/Certificate;
-34 -1: java/lang/ClassValue$ClassValueMap
-32 -1: (Ljava/lang/invoke/MemberName;)Z
-15 -1: SPACE_SEPARATOR
-17 -1: caseIgnoreCompare
-58 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandles$Lookup;
-4 -1: Code
-3 -1: AGT
-54 -1: (Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
-6 -1: ibm874
-15 -1: newMemberBuffer
-42 -1: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
-33 -1: Ljava/lang/NumberFormatException;
-10 -1: Field.java
-67 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;)TU;
-4 -1: rows
-12 -1: MIN_PRIORITY
-25 -1: URI has a query component
-41 -1: provider      security provider debugging
-29 -1: sun/nio/cs/ISO_8859_1$Encoder
-26 -1: (Ljava/util/zip/ZipFile;)I
-26 -1: (Ljava/util/zip/ZipFile;)J
-20 -1: Bad digit at end of 
-29 -1: Ljava/lang/RuntimePermission;
-12 -1: initResolved
-9 -1: loadFence
-13 -1: fieldAccessor
-26 -1: (Ljava/util/zip/ZipFile;)V
-36 -1: java/lang/CloneNotSupportedException
-19 -1: getBasicConstraints
-16 -1: putOrderedObject
-26 -1: (Ljava/util/zip/ZipFile;)Z
-6 -1: target
-50 -1: (Ljava/util/concurrent/CountedCompleter;[I[IIIII)V
-16 -1: changeReturnType
-13 -1: CAUSE_CAPTION
-14 -1: checkExactType
-50 -1: sun/util/locale/provider/LocaleServiceProviderPool
-47 -1: java/lang/invoke/DirectMethodHandle$Constructor
-20 -1: CallerSensitive.java
-30 -1: java/security/ProtectionDomain
-26 -1: java.launcher.opt.vmselect
-4 -1: \tat 
-42 -1: java/util/ArraysParallelSortHelpers$FJLong
-39 -1: (Ljava/lang/String;)[Ljava/lang/String;
-19 -1: sun.net.www.content
-34 -1: ([III)Ljava/util/stream/IntStream;
-20 -1: (Ljava/util/Deque;)V
-35 -1: (Ljava/lang/reflect/Constructor;)[B
-16 -1: WeakHashMap.java
-8 -1: ([III)[I
-46 -1: (Ljava/util/Properties;Ljava/io/InputStream;)V
-54 -1: (I)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-65 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;
-27 -1: URI path component is empty
-3 -1: -1-
-32 -1: Ljava/io/InterruptedIOException;
-9 -1: setLocale
-7 -1: [^, ;]*
-6 -1: format
-61 -1: (Ljava/util/function/Supplier;IZ)Ljava/util/stream/IntStream;
-20 -1: getRequestProperties
-16 -1: reallocateMemory
-28 -1: java/lang/IllegalAccessError
-5 -1: query
-83 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;II)Ljava/lang/invoke/MethodHandle;
-7 -1: threadQ
-6 -1: STATIC
-7 -1: enqueue
-21 -1: uninitializedCallSite
-3 -1: -2-
-26 -1: ()Ljava/util/NavigableSet;
-27 -1: getUncaughtExceptionHandler
-42 -1: ([Ljava/net/URL;)Ljava/net/URLClassLoader;
-30 -1: java/lang/UnsatisfiedLinkError
-39 -1: java/util/Collections$ReverseComparator
-7 -1: resolve
-4 -1: poll
-7 -1: (TE;I)V
-21 -1: : Unknown launch mode
-53 -1: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
-36 -1: sun.classloader.parentDelegationTime
-25 -1: java/net/URLStreamHandler
-39 -1: (Ljava/lang/Object;J)Ljava/lang/Object;
-53 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
-51 -1: java/util/ArraysParallelSortHelpers$FJDouble$Sorter
-26 -1: getAnnotatedParameterTypes
-18 -1: codePointCountImpl
-7 -1: threads
-12 -1: offsetBefore
-29 -1: ()Ljava/util/Collection<TV;>;
-58 -1: (Lsun/invoke/util/Wrapper;)Ljava/lang/invoke/MethodHandle;
-17 -1: DMH.invokeSpecial
-3 -1: -3-
-16 -1: decodeBufferLoop
-43 -1: java/util/concurrent/atomic/AtomicReference
-16 -1: reduceKeysToLong
-27 -1: newIllegalArgumentException
-3 -1: ALL
-5 -1: cache
-5 -1: queue
-4 -1: 8bit
-3 -1: -4-
-35 -1: Ljava/util/Set<Ljava/lang/String;>;
-9 -1: MIN_RADIX
-26 -1: ZipFileInflaterInputStream
-13 -1: MANIFEST_NAME
-18 -1: java/util/TimeZone
-175 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/invoke/DirectMethodHandle$1;)V
-16 -1: getContentLength
-11 -1: setDoOutput
-22 -1: (Ljava/io/Closeable;)V
-13 -1: TimeZone.java
-28 -1: sun/misc/ExtensionDependency
-6 -1: bindTo
-3 -1: -5-
-40 -1: ()[Ljava/util/WeakHashMap$Entry<TK;TV;>;
-20 -1: ()Lsun/misc/Cleaner;
-9 -1: compareTo
-68 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask
-11 -1: checkedList
-14 -1: (ITK;TV;ZZ)TV;
-5 -1: greek
-3 -1: jar
-21 -1: (Ljava/lang/String;)B
-21 -1: (Ljava/lang/String;)C
-21 -1: (Ljava/lang/String;)D
-5 -1: (JS)V
-21 -1: (Ljava/lang/String;)F
-13 -1: LETTER_NUMBER
-14 -1: isAlphaNumeric
-21 -1: (Ljava/lang/String;)I
-73 -1: (Ljava/nio/charset/Charset;Ljava/lang/String;Ljava/lang/StringCoding$1;)V
-21 -1: (Ljava/lang/String;)J
-25 -1: makeExactOrGeneralInvoker
-3 -1: -6-
-25 -1: java/nio/StringCharBuffer
-21 -1: Ljava/util/Hashtable;
-8 -1: ENQUEUED
-8 -1: finalize
-22 -1: DirectLongBufferU.java
-21 -1: (Ljava/lang/String;)S
-10 -1: localhost:
-33 -1: isKnownNotToHaveSpecialAttributes
-21 -1: (Ljava/lang/String;)V
-45 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Z)V
-21 -1: (Ljava/lang/String;)Z
-22 -1: (Ljava/util/Vector;I)V
-44 -1: java/nio/charset/UnsupportedCharsetException
-23 -1: java/lang/CharacterName
-7 -1: checkIO
-33 -1: (I)Lsun/misc/URLClassPath$Loader;
-90 -1: (Ljava/lang/Class<*>;Ljava/lang/reflect/Constructor<*>;)Ljava/lang/reflect/Constructor<*>;
-18 -1: getHeaderFieldDate
-9 -1: MIN_VALUE
-95 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;
-44 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration;
-8 -1: NOVEMBER
-4 -1: gcal
-17 -1: getConnectTimeout
-124 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-24 -1: INDEXOFSUBLIST_THRESHOLD
-16 -1: isJulianLeapYear
-21 -1: reduceEntriesToDouble
-15 -1: getPrefixLength
-17 -1:  is not param at 
-14 -1: inDaylightTime
-39 -1: (Ljava/lang/Class;[I)Ljava/lang/Object;
-5 -1: force
-98 -1: (Ljava/lang/Class;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
-40 -1: (Lsun/reflect/ConstructorAccessorImpl;)V
-27 -1: RuntimeInvisibleAnnotations
-17 -1: checkTargetChange
-9 -1: skipBytes
-4 -1: port
-25 -1: sun/nio/cs/UTF_16$Encoder
-28 -1: MIN_SUPPLEMENTARY_CODE_POINT
-4 -1: node
-11 -1: not param: 
-9 -1: debugInit
-6 -1: setURL
-14 -1: getMonthLength
-23 -1: ()Ljava/nio/ByteBuffer;
-17 -1: CALENDAR_JAPANESE
-11 -1: access$1400
-16 -1: ()Ljava/net/URI;
-29 -1: (IZ)Ljava/lang/StringBuilder;
-15 -1: Native Library 
-30 -1: Invalid lambda deserialization
-14 -1: throwException
-18 -1: nothing to verify!
-23 -1: (Ljava/lang/Object;JF)V
-3 -1: ART
-16 -1: isExtClassLoader
-18 -1: Illegal Capacity: 
-26 -1: java/util/zip/ZipException
-4 -1: /../
-34 -1: ([II)Ljava/util/Spliterator$OfInt;
-26 -1: (I)Ljava/util/Enumeration;
-60 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-43 -1: not a field or nested class, no simple type
-12 -1: nextPutIndex
-15 -1: getConstructor0
-3 -1: AST
-11 -1: fromURIPath
-49 -1: (Ljava/util/Collections$UnmodifiableCollection;)V
-8 -1: makeImpl
-51 -1: (Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
-32 -1: (Ljava/util/function/Supplier;)V
-20 -1: namedFunctionInvoker
-37 -1: newGetBooleanIllegalArgumentException
-19 -1: (Ljava/io/File;ZI)V
-8 -1: NULL_KEY
-36 -1: Ljava/lang/reflect/Constructor<TT;>;
-21 -1: (Ljava/lang/Object;)B
-21 -1: (Ljava/lang/Object;)C
-21 -1: (Ljava/lang/Object;)D
-21 -1: (Ljava/lang/Object;)F
-30 -1: ()Lsun/util/locale/BaseLocale;
-21 -1: (Ljava/lang/Object;)I
-21 -1: (Ljava/lang/Object;)J
-10 -1: lineNumber
-95 -1: (JLjava/util/function/ToDoubleBiFunction<-TK;-TV;>;DLjava/util/function/DoubleBinaryOperator;)D
-16 -1: CoderResult.java
-44 -1: (Ljava/util/NavigableSet;Ljava/lang/Class;)V
-21 -1: (Ljava/lang/Object;)S
-13 -1: getNameString
-129 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/invoke/DirectMethodHandle$1;)V
-21 -1: (Ljava/lang/Object;)V
-21 -1: (Ljava/lang/Object;)Z
-81 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/util/LinkedList<Ljava/lang/String;>;>;
-49 -1: java/util/concurrent/locks/ReentrantLock$FairSync
-11 -1: csisolatin0
-11 -1: csisolatin1
-7 -1: isSpace
-10 -1: getDefault
-11 -1: csisolatin2
-16 -1: ()Ljava/net/URL;
-11 -1: csisolatin4
-14 -1: invokeExact_MT
-11 -1: csisolatin5
-28 -1: (Ljava/io/FileInputStream;)V
-11 -1: csisolatin9
-8 -1: isLetter
-15 -1: getConstructors
-21 -1: mainAppContextDefault
-29 -1: ()[Ljava/lang/reflect/Method;
-23 -1: Ljava/util/WeakHashMap;
-12 -1: LF_INVSTATIC
-17 -1: DirectBuffer.java
-10 -1: newEncoder
-10 -1: getVersion
-32 -1: java/lang/IllegalAccessException
-20 -1: java/util/Collection
-61 -1: (Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
-19 -1: $deserializeLambda$
-8 -1: removeIf
-25 -1: sun/reflect/FieldAccessor
-129 -1: <U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
-17 -1: parseAbsoluteSpec
-37 -1: ([Ljava/util/HashMap$Node<TK;TV;>;I)V
-17 -1: java/util/HashSet
-13 -1: spreadInvoker
-20 -1: suppressAccessChecks
-32 -1: Ljava/lang/InterruptedException;
-11 -1: oldMappings
-9 -1: lookupTag
-16 -1: java/lang/System
-5 -1: LFI: 
-6 -1: IBM737
-9 -1: SHORT_IDS
-45 -1: ([IIILjava/util/function/IntBinaryOperator;)V
-20 -1: getMetaInfEntryNames
-10 -1: isReadOnly
-50 -1: <E:Ljava/lang/Object;>()Ljava/util/SortedSet<TE;>;
-12 -1: java.vm.name
-30 -1: java/lang/Class$AnnotationData
-61 -1: (ILjava/lang/invoke/LambdaForm;)Ljava/lang/invoke/LambdaForm;
-7 -1: address
-44 -1: (Ljava/util/function/BiConsumer<-TK;-TV;>;)V
-58 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;I)V
-112 -1: (Ljava/lang/Object;TV;Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;ILjava/util/WeakHashMap$Entry<TK;TV;>;)V
-14 -1: aliases_KOI8_R
-3 -1: AWT
-14 -1: aliases_KOI8_U
-24 -1: ARRAY_DOUBLE_BASE_OFFSET
-23 -1: Ljava/util/jar/JarFile;
-91 -1: (Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)V
-14 -1: mappingAddress
-19 -1: [Ljava/lang/Object;
-17 -1: sun/misc/JarIndex
-9 -1: image/jpg
-49 -1: (Ljava/lang/String;I)Lsun/util/calendar/ZoneInfo;
-37 -1: java/lang/invoke/DirectMethodHandle$1
-34 -1: java/util/Collections$SingletonMap
-89 -1: (JLjava/util/function/ToIntBiFunction<-TK;-TV;>;ILjava/util/function/IntBinaryOperator;)I
-46 -1: (Ljava/util/Comparator;)Ljava/util/Comparator;
-11 -1: isTitleCase
-38 -1: java/lang/IllegalMonitorStateException
-33 -1: java/nio/BufferUnderflowException
-28 -1: java/lang/ClassValue$Version
-11 -1: printLocale
-13 -1: STORE_BARRIER
-42 -1: ([ILjava/util/function/IntUnaryOperator;)V
-26 -1: sun/util/locale/BaseLocale
-29 -1: java/io/ObjectStreamException
-41 -1: sun/reflect/UnsafeStaticFieldAccessorImpl
-60 -1: ([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object;
-30 -1: (Ljava/nio/charset/Charset;)[B
-73 -1: ([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
-3 -1: VST
-80 -1: Java(TM) SE Runtime Environment (build 1.8.0-internal-iklam_2013_11_27_21_25-b00
-85 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V
-20 -1: getStackTraceElement
-36 -1: java/util/LinkedHashMap$LinkedKeySet
-17 -1: getNormalizedYear
-15 -1: maxBytesPerChar
-16 -1: java/util/Random
-34 -1: (I[C)Ljava/lang/invoke/LambdaForm;
-11 -1: nbits < 0: 
-7 -1: H_PCHAR
-29 -1: (Ljava/nio/charset/Charset;)I
-36 -1: (I[I[C)Ljava/lang/invoke/LambdaForm;
-23 -1: java/lang/ClassLoader$1
-23 -1: java/lang/ClassLoader$2
-23 -1: java/lang/ClassLoader$3
-9 -1: sizeTable
-36 -1: (Z)Ljava/lang/AbstractStringBuilder;
-29 -1: (Ljava/nio/charset/Charset;)V
-25 -1: ARRAY_BOOLEAN_INDEX_SCALE
-29 -1: (Ljava/nio/charset/Charset;)Z
-6 -1: keySet
-20 -1: declaredConstructors
-25 -1: oracle/jrockit/jfr/Timing
-12 -1: sizeIsSticky
-6 -1: IBM775
-17 -1: currentTimeMillis
-28 -1: java/nio/DirectDoubleBufferS
-71 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/invoke/MethodType;B)V
-28 -1: java/nio/DirectDoubleBufferU
-19 -1: cachedFixedDateJan1
-15 -1: getClassContext
-65 -1: (Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V
-16 -1: unmodifiableList
-10 -1: getDoubleB
-82 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
-11 -1: getEntryCrc
-10 -1: getDoubleL
-20 -1: (C)Ljava/lang/Class;
-11 -1: Null action
-22 -1: java/io/BufferedWriter
-67 -1: (Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
-22 -1: parseSelectAnnotations
-6 -1: rename
-20 -1: acquireFieldAccessor
-43 -1: (Ljava/util/Vector;[Ljava/lang/Object;III)V
-32 -1: Ljava/lang/NullPointerException;
-29 -1: (Ljava/lang/ThreadLocal<*>;)V
-18 -1: descendingIterator
-37 -1: java/util/Collections$SynchronizedSet
-24 -1: mark/reset not supported
-12 -1: ) > toIndex(
-13 -1: <<ALL FILES>>
-10 -1: fastRemove
-4 -1: load
-31 -1: sun/reflect/ReflectionFactory$1
-39 -1: (Ljava/util/List<*>;)Ljava/lang/Object;
-39 -1: Ljava/util/Map<TE;Ljava/lang/Boolean;>;
-9 -1: offerLast
-31 -1: ()Ljava/lang/invoke/MethodType;
-40 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;
-17 -1: getObjectVolatile
-14 -1: suspendThreads
-55 -1: (Ljava/lang/String;ZLjava/util/Set;)Lsun/misc/Resource;
-75 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+Ljava/lang/Comparable<-TT;>;>;TT;)I
-6 -1: Lookup
-20 -1: java/io/OutputStream
-41 -1: Could not create application class loader
-28 -1: Lsun/misc/JavaUtilJarAccess;
-46 -1: java/util/Collections$SynchronizedNavigableSet
-8 -1: override
-21 -1: threadLocalRandomSeed
-10 -1: TEXT_PLAIN
-22 -1: ([B)Ljava/lang/String;
-29 -1: java/nio/InvalidMarkException
-14 -1: Throwable.java
-27 -1: newWrongMethodTypeException
-6 -1: ptypes
-8 -1: bugLevel
-62 -1: (ILjava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
-37 -1: ()Ljava/util/Locale$LocaleNameGetter;
-14 -1: getEntryMethod
-7 -1: getByte
-12 -1: UTF-32BE-BOM
-4 -1: lock
-34 -1: java/security/AccessControlContext
-79 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MemberName;
-5 -1: DEBUG
-5 -1: unbox
-17 -1: CLASSPATH_OPTOSFT
-4 -1: cbrt
-21 -1: LocalizedObjectGetter
-21 -1: ProtectionDomain.java
-22 -1: ([J)Ljava/util/BitSet;
-17 -1: getUnresolvedName
-34 -1: (Ljava/util/Map;Ljava/util/Map;I)V
-7 -1: cskoi8r
-14 -1: getInterfaces0
-48 -1: (Lsun/net/www/MessageHeader;)[Ljava/lang/String;
-14 -1: getFileNameMap
-16 -1: preserveCombiner
-19 -1: getDefaultUseCaches
-57 -1: (Ljava/lang/Class;[B[Ljava/lang/Object;)Ljava/lang/Class;
-21 -1: (D)Ljava/lang/Double;
-15 -1: iso8859_15_fdis
-23 -1: java/util/regex/Pattern
-6 -1: ibm912
-14 -1: findBuiltinLib
-42 -1: java/lang/annotation/AnnotationFormatError
-6 -1: ibm914
-6 -1: ibm915
-44 -1: java/nio/charset/IllegalCharsetNameException
-22 -1: COMBINING_SPACING_MARK
-20 -1: ()Ljava/lang/Thread;
-8 -1: readLine
-12 -1: (unresolved 
-65 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration<Lsun/misc/Resource;>;
-41 -1: ([Ljava/lang/String;[Ljava/lang/String;)V
-30 -1: java/lang/Class$ReflectionData
-8 -1: requests
-52 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/US_ASCII$1;)V
-12 -1: ACCESS_WRITE
-6 -1: ibm920
-12 -1: CR_ERROR_MIN
-6 -1: jarMap
-6 -1: ibm923
-15 -1: java/lang/Error
-11 -1: VM_SETTINGS
-18 -1: name can't be null
-7 -1: PRESENT
-19 -1: setSecurityManager0
-101 -1: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)Lsun/nio/cs/StreamEncoder;
-25 -1: ()Ljava/util/jar/JarFile;
-26 -1: java/io/ObjectOutputStream
-13 -1: no !/ in spec
-5 -1: (II)C
-12 -1: setPriority0
-30 -1: (Z)[Ljava/lang/reflect/Method;
-28 -1: sun/nio/cs/ThreadLocalCoders
-5 -1: (II)I
-22 -1: java/io/BufferedReader
-26 -1: ()Lsun/misc/JavaNetAccess;
-10 -1: Asia/Dhaka
-14 -1: parallelStream
-5 -1: (II)V
-5 -1: (II)Z
-31 -1: Ljava/lang/reflect/Constructor;
-21 -1: ()Ljava/time/Instant;
-31 -1: (Ljava/lang/String;III[J[I[IZ)V
-8 -1: Volatile
-23 -1: isUnicodeIdentifierPart
-27 -1: longPrimitiveParameterCount
-16 -1: Map is non-empty
-24 -1: getLocalizedOutputStream
-14 -1: java/lang/Byte
-10 -1: staticBase
-11 -1: lastElement
-17 -1: replaceStaleEntry
-17 -1: MAX_LOW_SURROGATE
-28 -1: java.launcher.X.macosx.usage
-20 -1: registerShutdownHook
-16 -1: SECOND_IN_MILLIS
-8 -1: Embedded
-16 -1: BootstrapMethods
-14 -1: numInvocations
-79 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Enumeration<TT;>;
-10 -1: rotateLeft
-46 -1: ([Ljava/lang/Object;)Ljava/util/stream/Stream;
-6 -1: verify
-17 -1: OTHER_PUNCTUATION
-26 -1: acquireConstructorAccessor
-38 -1: (Ljava/lang/String;I)Ljava/lang/Class;
-30 -1: java/net/UnknownContentHandler
-20 -1: PREFIX_LENGTH_OFFSET
-12 -1: nextGetIndex
-14 -1: standardOffset
-10 -1: entryNames
-15 -1: application/xml
-3 -1: BET
-39 -1: ([DIII)Ljava/util/Spliterator$OfDouble;
-83 -1: (JLjava/util/function/BiFunction;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-10 -1: initMethod
-47 -1: (Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-8 -1: isSealed
-12 -1: isAccessible
-11 -1: audio/x-wav
-46 -1: (Ljava/lang/String;)Ljava/util/jar/Attributes;
-24 -1: ()Ljava/io/OutputStream;
-15 -1: FIELD_MODIFIERS
-30 -1: sun/misc/URLClassPath$Loader$1
-20 -1: recursive invocation
-34 -1: (Ljava/lang/String;)Ljava/net/URL;
-12 -1: linkNodeLast
-34 -1: call site initialization exception
-17 -1: casAnnotationType
-8 -1: x-ibm874
-7 -1: isUpper
-58 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesTask
-31 -1: Ill-formed Unicode locale key: 
-12 -1: defineClass0
-12 -1: defineClass1
-12 -1: defineClass2
-59 -1: Can not call newInstance() on the Class for java.lang.Class
-10 -1: codePoints
-3 -1: ...
-14 -1: readAheadLimit
-14 -1: parallelSetAll
-41 -1: ([Ljava/lang/Object;I)[Ljava/lang/Object;
-148 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set<Ljava/lang/Throwable;>;)V
-10 -1: Deque.java
-21 -1: Must be volatile type
-7 -1: setForm
-58 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Byte;>;
-47 -1: (Ljava/lang/String;Ljava/security/CodeSource;)V
-30 -1: java/io/InterruptedIOException
-44 -1: java/util/Collections$SynchronizedCollection
-16 -1: Invalid Jar file
-32 -1: sun/util/calendar/CalendarSystem
-67 -1: (JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
-19 -1: DEFAULT_BUFFER_SIZE
-16 -1: readObjectNoData
-16 -1: setJavaNioAccess
-73 -1: (Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/Object;)Ljava/lang/Object;
-14 -1: copyToIntArray
-10 -1: hasWaiters
-20 -1: (I)Ljava/lang/Class;
-35 -1: all           turn on all debugging
-14 -1: Invalid host: 
-26 -1: Lsun/nio/cs/StreamEncoder;
-43 -1: sun/misc/JavaSecurityProtectionDomainAccess
-11 -1: getNamedCon
-8 -1: H_SERVER
-27 -1: java/util/function/Consumer
-12 -1: isLocalClass
-81 -1: (Ljava/util/LinkedHashMap$Entry<TK;TV;>;Ljava/util/LinkedHashMap$Entry<TK;TV;>;)V
-83 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Boolean;>;
-4 -1: exec
-43 -1: java/lang/reflect/InvocationTargetException
-35 -1: (Ljava/io/File;Ljava/lang/String;)V
-9 -1: modifiers
-35 -1: (Ljava/io/File;Ljava/lang/String;)Z
-9 -1: Byte.java
-12 -1: unknown mode
-18 -1: initializeVerifier
-24 -1: (Ljava/nio/ByteBuffer;)I
-22 -1: ([Ljava/lang/Object;)I
-11 -1: correctType
-6 -1: escape
-52 -1: (Ljava/security/ProtectionDomain;)Ljava/lang/String;
-11 -1: annotations
-121 -1: (Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
-22 -1:  using an instance of 
-14 -1: getSpeciesData
-28 -1: ()Ljava/security/CodeSource;
-12 -1: JZENTRY_NAME
-24 -1: (Ljava/nio/ByteBuffer;)V
-4 -1: ZBSC
-22 -1: ([Ljava/lang/Object;)V
-7 -1: isParam
-165 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-70 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/LambdaForm;
-24 -1: Ljava/io/FilePermission;
-22 -1: ([Ljava/lang/Object;)Z
-11 -1: mergeHeader
-11 -1: applyAsLong
-28 -1: (IJ)Ljava/lang/StringBuffer;
-10 -1: arityCheck
-52 -1: (ILjava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-13 -1: toUpperCaseEx
-9 -1: nextIndex
-11 -1: start > end
-4 -1: long
-6 -1: Static
-27 -1: ()Ljava/lang/reflect/Field;
-10 -1: bufUpdater
-43 -1: averageBytesPerChar exceeds maxBytesPerChar
-105 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V
-23 -1: ARRAY_SHORT_INDEX_SCALE
-15 -1: getHeaderFields
-36 -1: java/util/HashMap$HashMapSpliterator
-10 -1: Guard.java
-29 -1: java/util/RandomAccessSubList
-6 -1: addAll
-7 -1: getTime
-16 -1: invokeHandleForm
-32 -1: sun/util/locale/LocaleExtensions
-16 -1: checkAndLoadMain
-19 -1: INTERFACE_MODIFIERS
-11 -1: resolveName
-20 -1: getContentLengthLong
-53 -1: (ICLjava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-19 -1: name cannot be null
-23 -1: hasReceiverTypeDispatch
-12 -1: getExtension
-49 -1: Ljava/util/Set<Ljava/security/ProtectionDomain;>;
-114 -1: (Ljava/lang/String;[J[I[J[I[Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)Lsun/util/calendar/ZoneInfo;
-24 -1: NativeSignalHandler.java
-58 -1: (Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-10 -1: interface 
-68 -1: (Ljava/lang/String;)Ljava/lang/invoke/BoundMethodHandle$SpeciesData;
-15 -1: addShutdownHook
-32 -1: java/security/AccessController$1
-10 -1: filterTags
-19 -1: [Ljava/lang/Number;
-92 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-43 -1: java/util/LinkedHashMap$LinkedEntryIterator
-5 -1: utf-8
-11 -1: iso-8859-13
-11 -1: iso-8859-15
-58 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/util/jar/JarFile;
-41 -1:               CertPathValidator debugging
-22 -1: ARRAY_LONG_BASE_OFFSET
-57 -1: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-13 -1: queuePrintJob
-14 -1: Watchable.java
-15 -1: jdkMajorVersion
-62 -1: (Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;
-23 -1: twoToTheDoubleScaleDown
-22 -1: registerVMNotification
-30 -1: ()Lsun/misc/JavaUtilJarAccess;
-17 -1: getTargetVolatile
-4 -1: exit
-13 -1: StringDecoder
-12 -1: hasRemaining
-9 -1: bigEndian
-14 -1: checkMulticast
-13 -1: clearProperty
-18 -1: ForEachMappingTask
-15 -1: Collection.java
-55 -1: (Ljava/io/InputStream;)Ljava/security/cert/Certificate;
-5 -1: UTF-8
-11 -1: transitions
-7 -1: wrapAlt
-27 -1: ClassNotFoundException.java
-20 -1: UnresolvedPermission
-14 -1: charsetForName
-9 -1: getParent
-18 -1: [Ljava/lang/Short;
-24 -1: UnmodifiableNavigableMap
-5 -1: xflow
-10 -1: interfaces
-19 -1: doubleToRawLongBits
-73 -1: (Ljava/lang/reflect/Constructor<*>;[Ljava/lang/Object;)Ljava/lang/Object;
-10 -1: getInCheck
-21 -1: (Ljava/lang/Thread;)V
-15 -1: fromIndex < 0: 
-63 -1: (ITK;TV;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
-9 -1: pollFirst
-21 -1: (Ljava/lang/Thread;)Z
-16 -1: checkProxyMethod
-39 -1: generateLambdaFormInterpreterEntryPoint
-15 -1: findLoadedClass
-6 -1: system
-5 -1: ITALY
-45 -1: combiner      SubjectDomainCombiner debugging
-34 -1: NativeConstructorAccessorImpl.java
-22 -1: ([C)Ljava/lang/String;
-39 -1: (Ljava/lang/String;Ljava/lang/Class;Z)V
-18 -1: java/lang/Thread$1
-20 -1: window can't be null
-10 -1: Debug.java
-17 -1: singletonIterator
-53 -1: java/util/concurrent/ConcurrentHashMap$ForEachKeyTask
-20 -1: java/security/Policy
-13 -1: getDescriptor
-32 -1: (I)Ljava/lang/invoke/MethodType;
-15 -1: nativeLibraries
-27 -1: sun/util/locale/LanguageTag
-8 -1: priority
-12 -1: IntegerCache
-14 -1: connectTimeout
-9 -1: namePairs
-17 -1: vmAllowSuspension
-16 -1: METHOD_MODIFIERS
-51 -1: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-20 -1: MIN_TREEIFY_CAPACITY
-13 -1: getEntryBytes
-33 -1: ()Lsun/reflect/ReflectionFactory;
-17 -1: getDisplayCountry
-13 -1: isWrapperType
-5 -1: utf16
-12 -1: parallelSort
-27 -1: (Ljava/nio/ByteBuffer;IIZ)V
-56 -1: (Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;I)Z
-9 -1: isDefined
-20 -1: sun/misc/FloatConsts
-10 -1: putDoubleB
-30 -1: java/lang/NoSuchFieldException
-27 -1: Value out of range. Value:"
-36 -1: sun/reflect/NativeMethodAccessorImpl
-7 -1: decoder
-38 -1: ([Ljava/lang/invoke/MutableCallSite;)V
-10 -1: putDoubleL
-68 -1: (Ljava/lang/reflect/Method;)Lsun/reflect/generics/scope/MethodScope;
-37 -1: java/lang/invoke/MethodHandles$Lookup
-9 -1: Void.java
-28 -1: sun/util/locale/BaseLocale$1
-10 -1: stackTrace
-7 -1: toClass
-11 -1: access$1500
-41 -1: (Ljava/lang/Object;I)Ljava/lang/Class<*>;
-148 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/Object;JLjava/lang/invoke/DirectMethodHandle$1;)V
-22 -1: ARRAY_BYTE_BASE_OFFSET
-13 -1: ZipEntry.java
-56 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/util/List;
-5 -1: utf32
-16 -1: ISO_646.irv:1991
-5 -1: p-126
-20 -1: sun.net.www.protocol
-3 -1: key
-20 -1: IMPLEMENTATION_TITLE
-93 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Lsun/util/locale/LanguageTag;
-66 -1: ([Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)V
-27 -1: java/nio/DirectFloatBufferS
-27 -1: java/nio/DirectFloatBufferU
-15 -1: JZENTRY_COMMENT
-8 -1: casTabAt
-10 -1: getVariant
-24 -1: Ljava/lang/Thread$State;
-35 -1: ()Ljava/lang/AbstractStringBuilder;
-114 -1: (Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
-16 -1: getShortVolatile
-18 -1: SoftReference.java
-3 -1: BST
-12 -1: isCastableTo
-28 -1: sun.zip.disableMemoryMapping
-11 -1: copyOfRange
-17 -1: ()Lsun/misc/Perf;
-59 -1: (Ljava/lang/String;[Ljava/io/File;Ljava/lang/ClassLoader;)V
-27 -1: (Lsun/misc/JavaAWTAccess;)V
-8 -1: DECLARED
-18 -1: loadedLibraryNames
-6 -1: CENNAM
-7 -1: encprop
-5 -1: ABASE
-27 -1: java/util/WeakHashMap$Entry
-13 -1: wrapWithPrims
-5 -1: UTF32
-29 -1: Ljava/net/URISyntaxException;
-6 -1: groups
-65 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<+TT;>;)Ljava/util/Set<TT;>;
-32 -1: lambda$comparingByKey$6d558cbf$1
-15 -1: removeElementAt
-49 -1: [Ljava/util/concurrent/ConcurrentHashMap$Segment;
-32 -1: Sign character in wrong position
-6 -1: IBM819
-39 -1: java/security/cert/CertificateException
-4 -1: join
-30 -1: Ljava/lang/invoke/ForceInline;
-14 -1: expandCapacity
-19 -1: Ljava/lang/Integer;
-11 -1: NUMBER_THAI
-10 -1: getExtURLs
-9 -1: retainAll
-21 -1: (S)Ljava/lang/String;
-8 -1: truncate
-51 -1: java/util/ArraysParallelSortHelpers$FJObject$Sorter
-28 -1: newIndexOutOfBoundsException
-26 -1: JavaUtilJarAccessImpl.java
-22 -1: (II)Ljava/util/BitSet;
-10 -1: getLongAt0
-65 -1: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)TA;
-26 -1: (Ljava/lang/ThreadLocal;)I
-5 -1: (J)[B
-27 -1: Ljava/lang/CharacterData00;
-18 -1: sun/misc/Cleaner$1
-59 -1: (Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-114 -1: (JLjava/util/function/ToDoubleFunction<Ljava/util/Map$Entry<TK;TV;>;>;DLjava/util/function/DoubleBinaryOperator;)D
-28 -1: java/lang/ClassCastException
-26 -1: (Ljava/lang/ThreadLocal;)V
-27 -1: ()[Ljava/lang/reflect/Type;
-13 -1: not invoker: 
-56 -1: (Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;
-6 -1: before
-37 -1: ([DII)Ljava/util/stream/DoubleStream;
-9 -1: logicalOr
-9 -1: IS_METHOD
-12 -1: SPACE_USABLE
-12 -1: lastModified
-10 -1: setSigners
-8 -1: Invokers
-7 -1: nCopies
-12 -1: utf-32le-bom
-7 -1: (IIII)J
-17 -1: jdkSpecialVersion
-26 -1: ()Ljava/lang/StringBuffer;
-17 -1: SearchEntriesTask
-14 -1: java/net/Parts
-20 -1: Ljava/lang/Runnable;
-35 -1: java/util/WeakHashMap$ValueIterator
-19 -1: FinalReference.java
-7 -1: (IIII)V
-23 -1: Ljava/lang/ThreadGroup;
-10 -1: nullsFirst
-8 -1: setCache
-55 -1: (Ljava/util/List;Ljava/lang/Object;Ljava/lang/Object;)Z
-24 -1: java/util/SimpleTimeZone
-6 -1: IBM850
-6 -1: IBM852
-25 -1: sun/net/www/MeteredStream
-4 -1: exts
-6 -1: IBM855
-16 -1: allocateElements
-6 -1: IBM857
-19 -1: setDefaultUseCaches
-6 -1: IBM858
-5 -1: slice
-9 -1: marklimit
-77 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Void;>;
-32 -1: java/util/Collections$CheckedSet
-12 -1: getModifiers
-8 -1: protocol
-10 -1: getInteger
-33 -1: ([J)Ljava/util/stream/LongStream;
-6 -1: IBM862
-8 -1: Map.java
-35 -1: java/lang/Class$EnclosingMethodInfo
-25 -1: (J)Ljava/math/BigInteger;
-31 -1: (Ljava/net/URL;Ljava/io/File;)V
-6 -1: IBM866
-6 -1: unload
-28 -1: sun/invoke/util/VerifyAccess
-105 -1: ()Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
-25 -1: Resetting to invalid mark
-20 -1: java/util/Vector$Itr
-5 -1: SHIFT
-11 -1: NonfairSync
-18 -1: getSecurityManager
-34 -1: ()[Ljava/lang/ClassValue$Entry<*>;
-28 -1: (J)Ljava/lang/StringBuilder;
-28 -1: (Ljava/security/PublicKey;)V
-12 -1: getResources
-6 -1: IBM874
-27 -1:  which Java does not define
-36 -1: (Ljava/lang/invoke/MethodTypeForm;)V
-48 -1: array length is not legal for long[] or double[]
-18 -1: IS_FIELD_OR_METHOD
-7 -1: Aliases
-17 -1: checkedExceptions
-13 -1: getDayOfMonth
-51 -1: (Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
-20 -1: java/io/EOFException
-26 -1: Enclosing method not found
-17 -1: flushLeftoverChar
-122 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor<*>;
-18 -1: buildAnnotatedType
-21 -1: setContextClassLoader
-22 -1: java/io/UnixFileSystem
-20 -1: nonSyncContentEquals
-43 -1: java/util/Collections$SynchronizedSortedMap
-15 -1: Properties.java
-35 -1: com.oracle.usagetracker.config.file
-13 -1: java/util/Map
-18 -1: setEagerValidation
-13 -1: getSetMessage
-6 -1: unlock
-14 -1: refKindIsField
-22 -1: bad field type alias: 
-17 -1: casAnnotationData
-6 -1: AUGUST
-106 -1: (Ljava/util/concurrent/CountedCompleter;[Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/util/Comparator;)V
-11 -1: monitorExit
-17 -1: linkMethodTracing
-69 -1: (Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V
-21 -1: java/lang/ClassLoader
-39 -1:               PKCS11 KeyStore debugging
-10 -1: checkRtype
-25 -1: getLocalGregorianCalendar
-23 -1: GenericDeclaration.java
-12 -1: isViewableAs
-22 -1: static_oop_field_count
-72 -1: (Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-11 -1: languageKey
-6 -1: Class 
-34 -1: java/util/HashMap$ValueSpliterator
-37 -1: (IJ)Ljava/lang/AbstractStringBuilder;
-17 -1: privilegedContext
-36 -1: java/util/LinkedHashMap$LinkedValues
-11 -1: getHostName
-10 -1: beginEntry
-7 -1: isAlpha
-61 -1: (Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/LambdaForm;
-10 -1: expandArgs
-14 -1: Finalizer.java
-14 -1: timeDefinition
-28 -1: ()Ljava/util/jar/Attributes;
-14 -1: ansi_x3.4-1968
-11 -1: setPriority
-23 -1: (C)Ljava/lang/Class<*>;
-26 -1: (Ljava/lang/Object;TV;)TV;
-70 -1: (Ljava/util/function/BiFunction;Ljava/lang/Object;Ljava/lang/Object;)V
-48 -1: ()Lsun/reflect/generics/factory/GenericsFactory;
-25 -1: java/lang/invoke/CallSite
-8 -1: tzdb.dat
-17 -1: containsAllLimits
-17 -1: fileNameMapLoaded
-6 -1: values
-17 -1: setLastAccessTime
-12 -1: expandFromVM
-50 -1: java/lang/invoke/MethodHandle$PolymorphicSignature
-3 -1: .EC
-14 -1: access denied 
-22 -1: java/util/AbstractList
-47 -1: (IILjava/lang/String;)Ljava/lang/StringBuilder;
-52 -1: ()Lsun/reflect/generics/repository/MethodRepository;
-22 -1: (Ljava/lang/String;)[B
-57 -1: (Ljava/lang/Object;)Ljava/lang/invoke/DirectMethodHandle;
-18 -1: compareAndSwapLong
-4 -1:  != 
-6 -1: StdArg
-29 -1: (Ljava/security/Permission;)V
-22 -1: ([D)Ljava/lang/String;
-28 -1: Lsun/reflect/MethodAccessor;
-14 -1: ansi_x3.4-1986
-20 -1: getPeakFinalRefCount
-29 -1: (Ljava/security/Permission;)Z
-5 -1: debug
-38 -1: (Ljava/lang/reflect/Constructor<*>;)[B
-27 -1: java/util/GregorianCalendar
-16 -1: Null replacement
-26 -1: ()Ljava/lang/reflect/Type;
-28 -1: DIRECTIONALITY_LEFT_TO_RIGHT
-102 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale;
-15 -1: isConvertibleTo
-24 -1: ARRAY_DOUBLE_INDEX_SCALE
-16 -1: getComponentType
-29 -1: sun/util/locale/LocaleMatcher
-11 -1: LOCALECACHE
-6 -1: UNWRAP
-16 -1: AbstractSet.java
-3 -1: CAT
-36 -1: java/lang/annotation/RetentionPolicy
-14 -1: getParameters0
-8 -1: .Handler
-33 -1: Ljava/lang/IllegalStateException;
-10 -1: RAW_RETURN
-20 -1: java/lang/ClassValue
-16 -1: getDisplayString
-152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;I)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-67 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/Map<TK;TV;>;
-214 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-33 -1: java/lang/invoke/SerializedLambda
-42 -1: ([Ljava/lang/Object;II)[Ljava/lang/Object;
-22 -1: java/util/zip/ZipUtils
-9 -1: setDaemon
-26 -1: java/net/HttpURLConnection
-6 -1: mkdirs
-20 -1: (Ljava/io/Reader;I)V
-28 -1: (IC)Ljava/lang/StringBuffer;
-45 -1: ([Ljava/lang/Class<*>;I)[Ljava/lang/Class<*>;
-29 -1: java/lang/invoke/MethodHandle
-28 -1: sun/misc/CompoundEnumeration
-6 -1: setVal
-23 -1: INTERNED_ARGUMENT_LIMIT
-4 -1: NULL
-49 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class;)Z
-43 -1: java/util/Collections$UnmodifiableSortedMap
-39 -1: (Ljava/lang/Object;Ljava/lang/Object;)I
-6 -1: ([JJ)I
-19 -1: java/io/PrintWriter
-25 -1: ()Ljava/lang/ThreadGroup;
-5 -1: (IJ)J
-16 -1: onMalformedInput
-15 -1: decrementAndGet
-11 -1: -2147483648
-6 -1: reduce
-12 -1: asCharBuffer
-39 -1: (Ljava/lang/Object;Ljava/lang/Object;)V
-44 -1: (Ljava/util/SortedSet;)Ljava/util/SortedSet;
-9 -1: backtrace
-3 3: Bar
-47 -1: ()Lsun/misc/JavaSecurityProtectionDomainAccess;
-39 -1: (Ljava/lang/Object;Ljava/lang/Object;)Z
-5 -1: (IJ)V
-6 -1: ([JJ)V
-22 -1: ([Ljava/lang/Thread;)I
-5 -1: (IJ)Z
-7 -1: ([BII)I
-79 -1: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
-12 -1: getUnchecked
-10 -1: getBaseURL
-36 -1: (Ljava/lang/Object;)Ljava/util/List;
-53 -1: (Ljava/util/function/Function;)Ljava/util/Comparator;
-10 -1: getComment
-7 -1: ([BII)V
-30 -1: privateGetDeclaredConstructors
-58 -1: (Ljava/lang/String;ZILjava/util/Locale;)Ljava/lang/String;
-18 -1: unknown era name: 
-13 -1: invokeSpecial
-9 -1: checkLink
-16 -1: cspc8codepage437
-6 -1: stream
-18 -1: sun/nio/cs/UTF_8$1
-18 -1: contextClassLoader
-50 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
-30 -1: sun/util/calendar/BaseCalendar
-11 -1: enumeration
-18 -1: key can't be empty
-137 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
-10 -1: getBoolean
-5 -1: eetop
-49 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/String;
-43 -1: sun/reflect/generics/scope/ConstructorScope
-13 -1: CANADA_FRENCH
-39 -1: Ljava/nio/channels/ReadableByteChannel;
-15 -1: java/lang/Float
-29 -1: DIRECTIONALITY_OTHER_NEUTRALS
-52 -1: (ZLjava/nio/charset/Charset;Ljava/io/OutputStream;)V
-8 -1: appendTo
-19 -1: PARAGRAPH_SEPARATOR
-16 -1: (Unknown Source)
-4 -1: tree
-38 -1: (I[C)Ljava/lang/AbstractStringBuilder;
-14 -1: VerifierStream
-48 -1: (Ljava/util/Collection<TE;>;Ljava/lang/Object;)V
-15 -1: releaseInflater
-20 -1: getHeaderNamesInList
-17 -1: getSystemPackages
-8 -1: teardown
-6 -1: (BZI)I
-10 -1: checkWrite
-19 -1: JavaLangAccess.java
-31 -1: Ljava/lang/ClassValue$Identity;
-50 -1: (Ljava/util/concurrent/CountedCompleter;[S[SIIII)V
-24 -1: getDeclaredConstructors0
-3 -1: /..
-3 -1: /./
-16 -1: hashCodeForCache
-18 -1: Property settings:
-26 -1: Illegal initial capacity: 
-10 -1: text/plain
-61 -1: (Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
-24 -1: createMemoryManagerMBean
-10 -1: ,lastRule=
-9 -1: GMT-00:00
-5 -1: mtime
-40 -1: (Ljava/lang/String;I)[Ljava/lang/String;
-11 -1: (TT;TV;)TV;
-154 -1: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B[B)Ljava/lang/reflect/Method;
-41 -1: (Ljava/util/jar/JarFile;)Ljava/util/List;
-43 -1: (JILjava/lang/Object;)Ljava/nio/ByteBuffer;
-19 -1: MethodTypeForm.java
-21 -1: java/util/jar/JarFile
-30 -1: java/lang/Integer$IntegerCache
-22 -1: getDisplayVariantArray
-6 -1: setAll
-13 -1: ClassValueMap
-52 -1: (Ljava/security/PublicKey;Ljava/security/Provider;)V
-51 -1: java/util/concurrent/ConcurrentHashMap$BaseIterator
-59 -1: (Ljava/lang/Runnable;Ljava/security/AccessControlContext;)V
-100 -1: (Ljava/util/concurrent/ConcurrentMap;Ljava/util/function/BiFunction;)Ljava/util/function/BiConsumer;
-8 -1: default 
-13 -1: compareAndSet
-10 -1: iso8859-13
-9 -1: putShortB
-14 -1: skipDelimiters
-28 -1: URI has a fragment component
-10 -1: iso8859-15
-42 -1: (Ljava/net/Proxy;)Ljava/net/URLConnection;
-23 -1: needsPackageAccessCheck
-9 -1: putShortL
-3 -1: //[
-69 -1: (Ljava/security/AccessControlContext;Ljava/security/DomainCombiner;)V
-18 -1: too many arguments
-35 -1: ([III)Ljava/util/Spliterator$OfInt;
-10 -1: CopiesList
-10 -1: iso-8859-1
-9 -1: ([BII[C)I
-10 -1: iso-8859-2
-11 -1: returnCount
-10 -1: iso-8859-4
-10 -1: iso-8859-5
-8 -1: utf_16be
-10 -1: iso-8859-7
-9 -1: isLimited
-9 -1: parseByte
-10 -1: iso-8859-9
-13 -1: , s.length() 
-10 -1: matchCerts
-14 -1: RECURSIVE_CHAR
-11 -1: reduceToInt
-11 -1: displayName
-9 -1: calendars
-64 -1: (Ljava/lang/String;ZLjava/util/jar/JarEntry;)Lsun/misc/Resource;
-11 -1: isProtected
-78 -1: (Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/SortedMap;
-4 -1: trim
-20 -1: java/nio/FloatBuffer
-17 -1: PreHashedMap.java
-74 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Ljava/lang/String;>;
-22 -1: ([S)Ljava/lang/String;
-19 -1: PrintStreamOrWriter
-38 -1: java/util/Collections$EmptyEnumeration
-22 -1: java/util/LinkedList$1
-13 -1: sunpkcs11.jar
-25 -1: java/nio/DirectByteBuffer
-96 -1: (ZLjava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-7 -1: isArray
-43 -1: (Ljava/lang/String;)Ljava/util/Enumeration;
-52 -1: java/lang/invoke/MethodHandleImpl$AsVarargsCollector
-59 -1: (Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class<*>;
-26 -1: setJavaNetHttpCookieAccess
-15 -1: wrongTargetType
-57 -1: java/util/concurrent/ConcurrentHashMap$ForEachMappingTask
-33 -1: [Ljava/lang/reflect/TypeVariable;
-5 -1: load0
-39 -1: (Ljava/lang/String;)Ljava/lang/Boolean;
-21 -1: isHeldByCurrentThread
-14 -1: outOfBoundsMsg
-30 -1: Ljava/lang/ref/Reference$Lock;
-11 -1: ISO-8859-13
-84 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
-11 -1: ISO-8859-15
-40 -1: (Ljava/net/URL;)Ljava/net/URLConnection;
-84 -1: <T:Ljava/lang/Object;:Ljava/lang/Comparable<-TT;>;>(Ljava/util/Collection<+TT;>;)TT;
-38 -1: sun/reflect/generics/scope/MethodScope
-5 -1: mutex
-11 -1: loaderTypes
-8 -1: defaults
-22 -1: getActualTypeArguments
-41 -1: DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
-4 -1: keys
-71 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-94 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;
-113 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
-12 -1: checkConnect
-39 -1: (Ljava/lang/String;Ljava/util/Locale;)V
-26 -1: ([CII[C)Ljava/lang/String;
-12 -1: isDoubleWord
-37 -1: configparser  JAAS ConfigFile parsing
-27 -1: sun/misc/Perf$GetPerfAction
-44 -1: (Ljava/util/Collections$UnmodifiableList;I)V
-4 -1: acos
-26 -1: java/nio/DirectLongBufferS
-7 -1: (ITE;)V
-14 -1: putIntVolatile
-24 -1: setContentHandlerFactory
-26 -1: java/nio/DirectLongBufferU
-10 -1: fieldCount
-11 -1: invokeBasic
-50 -1: (Ljava/util/zip/ZipEntry;)Ljava/util/jar/JarEntry;
-24 -1: java/util/Locale$Builder
-9 -1: setParent
-11 -1: asLifoQueue
-33 -1: lambda$comparingDouble$8dcf42ea$1
-24 -1: (Ljava/lang/Throwable;)I
-35 -1: (Lsun/misc/JavaUtilZipFileAccess;)V
-49 -1: (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;
-10 -1: CLASS_PATH
-6 -1: tclass
-11 -1: getExponent
-23 -1: getAnnotatedReturnType0
-18 -1: checkPackageAccess
-35 -1: Can not instantiate java.lang.Class
-24 -1: (Ljava/lang/Throwable;)V
-195 -1: (Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/BoundMethodHandle$SpeciesData;Ljava/lang/invoke/BoundMethodHandle$SpeciesData;)Ljava/lang/invoke/LambdaForm;
-17 -1: Empty replacement
-3 -1: .SF
-14 -1: ByteOrder.java
-39 -1: ()Lsun/util/calendar/BaseCalendar$Date;
-35 -1: ()[Ljava/security/ProtectionDomain;
-12 -1: setElementAt
-30 -1: (Ljava/security/CodeSource;Z)Z
-45 -1: (Ljava/lang/Class<*>;)Ljava/lang/ClassLoader;
-52 -1: (Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
-13 -1: foldArguments
-23 -1: java/time/LocalDateTime
-30 -1: [Lsun/launcher/LauncherHelper;
-16 -1: 0123456789abcdef
-60 -1: (Ljava/util/Spliterator$OfInt;Z)Ljava/util/stream/IntStream;
-33 -1: (ILjava/lang/String;IIIIIIIIIII)V
-20 -1: DMH.newInvokeSpecial
-28 -1: java/nio/charset/CoderResult
-33 -1: sun/nio/cs/StandardCharsets$Cache
-11 -1: saveConvert
-14 -1: ExtClassLoader
-12 -1: parentOrNull
-20 -1: insertParameterTypes
-32 -1: (II)Ljava/util/stream/IntStream;
-13 -1: setStackTrace
-20 -1:  is not an enum type
-3 -1: CNT
-4 -1: host
-85 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;)Ljava/util/function/IntConsumer;
-11 -1: batchRemove
-8 -1: newField
-16 5: sun/nio/cs/UTF_8
-104 -1: (Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)Ljava/lang/invoke/LambdaForm$Name;
-8 -1: saturday
-35 -1: java/util/ArraysParallelSortHelpers
-15 -1: java/util/Queue
-40 -1: (Ljava/lang/Class<*>;)Ljava/lang/String;
-7 -1: toChars
-5 -1: first
-17 -1: ArrayDecoder.java
-30 -1: ()Lsun/reflect/MethodAccessor;
-26 -1: thread group can't be null
-13 -1: IllegalName: 
-32 -1: java/util/Collections$SetFromMap
-14 -1: line.separator
-17 -1: getDeclaredMethod
-10 -1: getMinutes
-35 -1: (Lsun/util/locale/BaseLocale$Key;)I
-40 -1: ([Ljava/lang/String;)Ljava/lang/Process;
-31 -1: Ljava/util/LinkedHashMap$Entry;
-13 -1: , str.length 
-8 -1: getProbe
-6 -1: ([DI)I
-5 -1: (CI)I
-23 -1: saveAndRemoveProperties
-6 -1: rehash
-3 -1: lcb
-31 -1: Ljava/util/Arrays$NaturalOrder;
-55 -1: (IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-10 -1: loadFactor
-15 -1: putLongVolatile
-34 -1: sun/misc/URLClassPath$FileLoader$1
-12 -1: Europe/Paris
-8 -1: DECEMBER
-86 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/misc/Launcher$AppClassLoader;>;
-22 -1: getImplMethodSignature
-38 -1: Malformed enclosing method information
-8 -1: maskNull
-3 -1: lct
-21 -1: CONSTRUCTOR_MODIFIERS
-36 -1: ()Lsun/misc/JavaNetHttpCookieAccess;
-12 -1: HashIterator
-84 -1: (Ljava/lang/Class;Ljava/lang/Class$AnnotationData;Ljava/lang/Class$AnnotationData;)Z
-33 -1: java/lang/Character$UnicodeScript
-5 -1: toHex
-27 -1: java/security/AllPermission
-17 -1: appendReplacement
-20 -1: SimpleImmutableEntry
-18 -1: getRequestProperty
-12 -1: compareCerts
-44 -1: java/util/ArrayPrefixHelpers$IntCumulateTask
-19 -1: makeSpreadArguments
-222 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-8 -1: addFirst
-6 -1: nextUp
-35 -1: (Ljava/net/ContentHandlerFactory;)V
-40 -1: (Ljava/lang/String;)Ljava/lang/Class<*>;
-23 -1: java/util/LocaleISOData
-14 -1: PREPARED_FORMS
-6 -1: FJByte
-20 -1: getGenericSuperclass
-6 -1: offset
-16 -1: LocaleUtils.java
-12 -1: isUnresolved
-18 -1: aliases_ISO_8859_1
-18 -1: aliases_ISO_8859_2
-15 -1: isSurrogatePair
-18 -1: aliases_ISO_8859_4
-18 -1: aliases_ISO_8859_5
-6 -1: EXTLEN
-18 -1: aliases_ISO_8859_7
-15 -1: Comparator.java
-18 -1: aliases_ISO_8859_9
-15 -1: ISO_8859-2:1987
-22 -1: Ljava/util/List<+TE;>;
-16 -1: Unknown Category
-3 -1: CST
-51 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;
-6 -1: FRIDAY
-40 -1: (Ljava/lang/String;ZZ)Ljava/lang/String;
-13 -1: isInterrupted
-8 -1: utf_16le
-89 -1: (BLjava/lang/Class<*>;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
-22 -1: checkInvocationCounter
-12 -1: EPOCH_OFFSET
-35 -1: (JJILjava/nio/DirectByteBuffer$1;)V
-7 -1: canRead
-9 -1: getLoader
-18 -1: publicConstructors
-23 -1: factory already defined
-33 -1: java/lang/ref/ReferenceQueue$Null
-37 -1: (Ljava/util/List;Ljava/util/Random;)V
-25 -1: setPackageAssertionStatus
-20 -1: MapReduceEntriesTask
-11 -1: OPEN_DELETE
-35 -1: (Ljava/util/Set;Ljava/lang/Class;)V
-9 -1: rootGroup
-10 -1: updateForm
-22 -1: JavaUtilJarAccess.java
-3 -1: CTT
-57 -1: (Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Constructor;
-82 -1: <T:Ljava/lang/Object;>(Ljava/util/NavigableSet<TT;>;)Ljava/util/NavigableSet<TT;>;
-13 -1: getReturnType
-34 -1: java/util/HashMap$EntrySpliterator
-14 -1: TIME_UNDEFINED
-32 -1: com/sun/crypto/provider/AESCrypt
-7 -1: H_DIGIT
-20 -1: clearAssertionStatus
-44 -1: java/lang/invoke/MethodHandleImpl$BindCaller
-8 -1: scloader
-6 -1: IBM923
-5 -1: read0
-5 -1: read1
-4 -1: true
-9 -1: BA_HIDDEN
-16 -1: jvmUpdateVersion
-36 -1: java/lang/StringCoding$StringDecoder
-37 -1: (J)Ljava/nio/file/attribute/FileTime;
-3 -1: lib
-17 -1: getParameterTypes
-15 -1: FinalizerThread
-31 -1: ()Lsun/util/calendar/Gregorian;
-50 -1: (Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;
-13 -1: PROP_SETTINGS
-33 -1: java/util/function/BinaryOperator
-70 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
-25 -1: getDefaultRequestProperty
-27 -1: (Ljava/util/jar/JarEntry;)V
-27 -1: SPLITERATOR_CHARACTERISTICS
-18 -1: FieldAccessor.java
-10 -1: setComment
-62 -1: (Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;
-11 -1: array_klass
-39 -1: ()Ljava/lang/Class$EnclosingMethodInfo;
-67 -1: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;)I
-9 -1: (II[CII)I
-50 -1: (Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V
-20 -1: SPECIFICATION_VENDOR
-72 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/net/URL;)Ljava/util/jar/JarFile;
-87 -1: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;TT;)V
-9 -1: isVarArgs
-10 -1: setBoolean
-12 -1: (TK;TV;TV;)Z
-16 -1: findSharedClass0
-5 -1: csize
-49 -1: Ljava/security/cert/CertificateEncodingException;
-40 -1: java/util/concurrent/locks/ReentrantLock
-86 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;
-5 -1: ready
-38 -1: Ljava/security/AccessControlException;
-28 -1: UnmodifiableRandomAccessList
-69 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/function/BinaryOperator<TT;>;)V
-27 -1: Ljava/lang/invoke/Invokers;
-39 -1: java/util/LinkedList$DescendingIterator
-11 -1: writeFields
-17 -1: classLoaderDepth0
-18 -1: permutedTypesMatch
-52 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;
-12 -1: linkToStatic
-10 -1: CheckedMap
-6 -1: CENOFF
-8 -1: lastRule
-15 -1: java/lang/Short
-39 -1: ()Ljava/lang/Class$ReflectionData<TT;>;
-8 -1: nextDown
-14 -1: image/x-pixmap
-39 -1: (Ljava/lang/Class;[Ljava/lang/Object;)V
-25 -1: defineClassSourceLocation
-23 -1: sun/misc/PostVMInitHook
-15 -1: could not load 
-16 -1: allowArraySyntax
-90 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/io/BufferedInputStream;[B>;
-10 -1: putBoolean
-11 -1:  has params
-14 -1: setMaxPriority
-10 -1: mayContain
-46 -1: java/lang/reflect/MalformedParametersException
-10 -1: baseLocale
-14 -1: isSubwordOrInt
-10 -1: nextDouble
-32 -1: java/lang/Character$UnicodeBlock
-85 -1: (JLjava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)D
-20 -1: numberOfLeadingZeros
-59 -1: (I[Ljava/lang/Class<*>;)[Ljava/lang/invoke/LambdaForm$Name;
-7 -1: setSize
-29 -1: java/io/FileNotFoundException
-9 -1: getString
-24 -1: ([CII)Ljava/lang/String;
-38 -1: (Ljava/lang/String;Ljava/lang/Class;)V
-5 -1: shift
-18 -1: getConstructorSlot
-41 -1: java/lang/ThreadLocal$SuppliedThreadLocal
-16 -1: UNASSIGNED_STACK
-20 -1: Malformed class name
-12 -1: ofEpochMilli
-34 -1: sun/launcher/LauncherHelper$StdArg
-33 -1: java/nio/ByteBufferAsShortBufferB
-7 -1: convert
-21 -1: ()[Ljava/util/Locale;
-15 -1: ISO_8859-5:1988
-35 -1: av[0] not instace of MethodHandle: 
-33 -1: java/nio/ByteBufferAsShortBufferL
-5 -1: hypot
-16 -1: InputStream.java
-13 -1: reinvokerForm
-39 -1: JVMTI_THREAD_STATE_WAITING_INDEFINITELY
-16 -1: sun/misc/Version
-66 -1: <T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)[TT;
-11 -1: codePointAt
-30 -1: ([Ljava/lang/reflect/Method;)V
-9 -1: duplicate
-9 -1: interface
-5 -1: X.509
-24 -1: SynchronizedNavigableSet
-8 -1: us-ascii
-17 -1: getUnresolvedType
-21 -1: PRIVATE_USE_EXTENSION
-4 -1: form
-93 -1: (Ljava/util/ArrayPrefixHelpers$LongCumulateTask;Ljava/util/function/LongBinaryOperator;[JII)V
-27 -1: sealing violation: package 
-34 -1: RuntimeVisibleParameterAnnotations
-17 -1: LF_INVSTATIC_INIT
-14 -1: Gregorian.java
-32 -1: java/util/function/UnaryOperator
-3 -1: log
-3 -1: low
-22 -1: sun/misc/JavaNetAccess
-9 -1: getLength
-21 -1: getRawTypeAnnotations
-36 -1: (Ljava/lang/String;)Ljava/lang/Long;
-9 -1: getNumber
-66 -1: (ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-20 -1: (Ljava/lang/Class;)C
-89 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>;
-6 -1: ENDSIG
-20 -1: (Ljava/lang/Class;)I
-20 -1: (Ljava/lang/Class;)J
-24 -1: [[Ljava/io/Serializable;
-22 -1: serialPersistentFields
-7 -1: console
-142 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-27 -1: (Ljava/nio/ByteBuffer;ICZ)V
-20 -1: (Ljava/lang/Class;)V
-40 -1: java/lang/ArrayIndexOutOfBoundsException
-6 -1: this$0
-51 -1: (Ljava/lang/invoke/MemberName;[Ljava/lang/Object;)V
-18 -1: packageAccessValid
-33 -1: ([Ljava/lang/StackTraceElement;)V
-8 -1: constant
-113 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;IILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class<*>;
-8 -1: isMethod
-20 -1: (Ljava/lang/Class;)Z
-6 -1: ENDSIZ
-8 -1: newEntry
-57 -1: (Ljava/lang/Object;)Ljava/lang/IndexOutOfBoundsException;
-25 -1: (Ljava/util/Comparator;)V
-8 -1: isBridge
-6 -1: ([BI)I
-6 -1: ([BI)J
-16 -1: getReferenceKind
-26 -1: [Ljava/security/Principal;
-71 -1: (Ljava/lang/Class;[Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
-32 -1: ()Ljava/lang/ClassValue$Version;
-16 -1: SearchValuesTask
-17 -1: setCompressedSize
-16 -1: DEFAULT_CAPACITY
-108 -1: <K:Ljava/lang/Object;V::Ljava/lang/Comparable<-TV;>;>()Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
-27 -1: java/util/ComparableTimSort
-41 -1: null StackTraceElement in serial stream. 
-6 -1: ([BI)V
-44 -1: (Ljava/util/jar/JarFile;)Lsun/misc/JarIndex;
-71 -1: (Ljava/util/jar/JarFile;Ljava/util/Enumeration;)Ljava/util/Enumeration;
-52 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Z
-36 -1: [Ljava/lang/reflect/TypeVariable<*>;
-17 -1: OutputStream.java
-8 -1: combiner
-15 -1: decodeArrayLoop
-19 -1: (Ljava/io/Writer;)V
-41 -1: (Ljava/util/List<*>;Ljava/util/List<*>;)I
-35 -1: ()[Ljava/security/cert/Certificate;
-33 -1: ([I)Ljava/util/Spliterator$OfInt;
-9 -1: NF_asType
-17 -1: java/io/Closeable
-11 -1: updateBytes
-12 -1: charsets.jar
-18 -1: getDeclaredFields0
-47 -1: (Ljava/lang/Object;I)Ljava/lang/reflect/Member;
-60 -1: (Ljava/lang/String;ILjava/lang/String;)Ljava/nio/ByteBuffer;
-15 -1: getTotalSeconds
-57 -1: (Ljava/util/Collection<+Ljava/util/Map$Entry<TK;TV;>;>;)Z
-4 -1: JULY
-10 -1: Exceptions
-41 -1: ()Ljava/util/List<Ljava/io/IOException;>;
-14 -1: ParseUtil.java
-13 -1: getJarFileURL
-29 -1: setJavaIOFileDescriptorAccess
-24 -1: ARRAY_OBJECT_BASE_OFFSET
-21 -1: onUnmappableCharacter
-53 -1: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
-24 -1: MethodHandleNatives.java
-40 -1: java/nio/charset/MalformedInputException
-37 -1: [Ljava/lang/reflect/AnnotatedElement;
-15 -1: CLASSPATH_CHARS
-18 -1: [Ljava/lang/Class;
-7 -1: FJFloat
-47 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;I)V
-19 -1: Ljava/lang/Runtime;
-23 -1: java/lang/CharacterData
-42 -1: (Ljava/lang/Void;Ljava/lang/ClassLoader;)V
-76 -1: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)V
-56 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;B)V
-19 -1: java/util/zip/CRC32
-33 -1: <T:Ljava/lang/Object;>([TT;I)[TT;
-22 -1: ([F)Ljava/lang/String;
-5 -1: UTF_8
-20 -1: aliases_UTF_32BE_BOM
-11 -1: Buffer.java
-78 -1: <T:Ljava/lang/Object;>(Ljava/util/Comparator<TT;>;)Ljava/util/Comparator<TT;>;
-44 -1: (Ljava/lang/String;)Ljava/util/zip/ZipEntry;
-9 -1: malformed
-4 -1: JUNE
-51 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarFile$1;)V
-6 -1: locale
-34 -1: (Ljava/util/function/BiFunction;)V
-10 -1: setMinutes
-40 -1: (Ljava/lang/reflect/AccessibleObject;Z)V
-12 -1: maybeCompile
-46 -1: (Ljava/lang/Class;Ljava/lang/reflect/Method;)V
-7 -1: getEras
-55 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/Iterator<*>;)[TT;
-17 -1: toUnsignedString0
-32 -1: (Ljava/lang/invoke/MethodType;)V
-32 -1: (Ljava/lang/invoke/MethodType;)Z
-10 -1: Class.java
-27 -1: ()Ljava/util/Iterator<TK;>;
-29 -1: WINDOWS_EPOCH_IN_MICROSECONDS
-41 -1: (Ljava/io/InputStream;)Ljava/lang/String;
-4 -1: prev
-24 -1: ()Ljava/util/Properties;
-11 -1: awaitBooted
-19 -1: generateConstructor
-22 -1: sun/misc/SharedSecrets
-19 -1: getDateTimeInstance
-43 -1: (IIILsun/util/calendar/BaseCalendar$Date;)J
-5 -1: setID
-11 -1: Locale.java
-12 -1: getRootGroup
-15 -1: setLastModified
-7 -1: trouble
-28 -1: (Z)Ljava/lang/StringBuilder;
-5 -1: setIO
-17 -1: loadClassInternal
-23 -1: java/lang/ref/Finalizer
-8 -1: EmptySet
-16 -1: aliases_UTF_16BE
-50 -1: (Ljava/util/NavigableMap;)Ljava/util/NavigableMap;
-15 -1: unmodifiableMap
-48 -1: (Ljava/lang/Class<*>;)Lsun/reflect/ConstantPool;
-15 -1: arrayContentsEq
-7 -1: EXT_TAG
-31 -1: (Ljava/util/HashMap$TreeNode;)Z
-5 -1: cp737
-22 -1: java/util/zip/Checksum
-5 -1: names
-22 -1: ConcurrentHashMap.java
-7 -1: ([J[J)Z
-7 -1: WAITING
-31 -1: sun.launcher.resources.launcher
-14 -1: getThreadGroup
-8 -1: PutField
-12 -1: hugeCapacity
-9 -1: isPackage
-72 -1: (Ljava/lang/ThreadLocal<*>;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-23 7: sun/nio/ch/DirectBuffer
-13 -1: Checksum.java
-25 -1: (Ljava/nio/ByteBuffer;I)C
-51 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
-25 -1: (Ljava/nio/ByteBuffer;I)D
-7 -1: treeify
-25 -1: (Ljava/nio/ByteBuffer;I)F
-5 -1: setIn
-25 -1: (Ljava/nio/ByteBuffer;I)I
-20 -1: TRACE_METHOD_LINKAGE
-25 -1: (Ljava/nio/ByteBuffer;I)J
-7 -1: putIntB
-22 -1: createGarbageCollector
-50 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)[TT;
-25 -1: (Ljava/nio/ByteBuffer;I)S
-7 -1: putIntL
-19 -1: (B)Ljava/lang/Byte;
-14 -1: Hashtable.java
-29 -1: java/lang/ArrayStoreException
-11 -1: all_allowed
-16 -1: getLastRawOffset
-7 -1: inReady
-36 -1: java/lang/ThreadLocal$ThreadLocalMap
-40 -1: (ILjava/lang/String;Ljava/lang/String;)V
-23 -1: Ljava/lang/ThreadLocal;
-16 -1: classValueOrNull
-62 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/MethodHandle;
-23 -1: preparedFieldLambdaForm
-22 -1: (Z)Ljava/lang/Boolean;
-14 -1: ThreadLocalMap
-27 -1: java/lang/StackTraceElement
-13 -1: getEntryCSize
-19 -1: java.security.debug
-53 -1: (Ljava/util/Collection<*>;Ljava/util/Collection<*>;)Z
-6 -1: LOCLEN
-40 -1: Ljava/lang/Class<Ljava/lang/Character;>;
-6 -1: (JJB)V
-66 -1: Ljava/util/Hashtable<Ljava/lang/String;Ljava/net/ContentHandler;>;
-31 -1: [[Ljava/lang/StackTraceElement;
-9 -1: putStatic
-16 -1: Asia/Ho_Chi_Minh
-15 -1: getDisplayNames
-13 -1: convertToAbbr
-23 -1: Method not implemented.
-15 -1: isCCLOverridden
-14 -1: doubleCapacity
-137 -1: (Ljava/lang/Class<*>;ZLjava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
-219 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-7 -1: native 
-29 -1: (Ljava/lang/reflect/Field;Z)V
-18 -1: Ljava/util/Locale;
-31 -1: Ljava/util/concurrent/TimeUnit;
-16 -1: threadsSuspended
-7 -1: ([III)V
-20 -1: setMaxDelimCodePoint
-18 -1: contentClassPrefix
-13 -1: mappingOffset
-10 -1: toIndex = 
-47 -1: (Ljava/lang/CharSequence;)Ljava/io/PrintStream;
-12 -1: booleanValue
-13 -1: putMapEntries
-17 -1: defaultBundleName
-50 -1: (Ljava/util/concurrent/CountedCompleter;[B[BIIII)V
-10 -1: executable
-20 -1: java/time/ZoneOffset
-28 -1: java/lang/ref/FinalReference
-11 -1: newTreeNode
-7 -1: lookup2
-10 -1: TableStack
-59 -1: Ljava/util/concurrent/ConcurrentHashMap$ValuesView<TK;TV;>;
-11 -1: getAccessor
-9 -1: available
-18 -1: java/io/FileReader
-34 -1: java/security/ProtectionDomain$3$1
-16 -1: integer overflow
-11 -1: internTable
-28 -1: Ljava/util/HashMap$TreeNode;
-19 -1: | invocationCounter
-12 -1: findResource
-9 -1: isLoaded0
-5 -1: cp775
-24 -1: DIRECTIONALITY_UNDEFINED
-9 -1: isInvalid
-7 -1: lookupN
-35 -1: (Lsun/reflect/MethodAccessorImpl;)V
-6 -1: ENDSUB
-4 -1:  to 
-59 -1: ([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;
-10 -1: meta-index
-6 -1: INDENT
-9 -1: WEDNESDAY
-40 -1: ()Ljava/lang/annotation/RetentionPolicy;
-14 -1: getUsableSpace
-7 -1: TUESDAY
-51 -1: (Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
-12 -1: getSubjectDN
-21 -1: Ljava/io/InputStream;
-25 -1: (IC)Ljava/nio/CharBuffer;
-52 -1: (Ljava/nio/CharBuffer;)Ljava/util/function/Supplier;
-17 -1: ()[Ljava/net/URL;
-6 -1: search
-10 -1: Main-Class
-8 -1: ([CIIC)I
-16 -1: Certificate.java
-14 -1: spreadInvokers
-22 -1: sun/nio/cs/ISO_8859_15
-6 -1: accept
-18 -1: ReflectAccess.java
-13 -1: java/nio/Bits
-14 -1: linkToCallSite
-46 -1: Ljava/nio/charset/UnsupportedCharsetException;
-8 -1: ([CIIC)V
-9 -1: (TT;TV;)V
-26 -1: java/lang/OutOfMemoryError
-34 -1: policy        loading and granting
-76 -1: (Ljava/nio/CharBuffer;ILjava/nio/ByteBuffer;I)Ljava/nio/charset/CoderResult;
-13 -1: x-windows-949
-21 -1: Ljava/io/PrintStream;
-9 -1: initNames
-12 -1: testAnyFlags
-65 -1: (Ljava/lang/reflect/Method;)Ljava/lang/invoke/DirectMethodHandle;
-34 -1: (Ljava/util/List;)Ljava/util/List;
-10 -1: CacheEntry
-10 -1: hasAllPerm
-26 -1: java/nio/charset/Charset$1
-26 -1: java/nio/charset/Charset$2
-19 -1: ()Ljava/util/Stack;
-26 -1: java/nio/charset/Charset$3
-62 -1: (Ljava/lang/String;)Lsun/util/calendar/LocalGregorianCalendar;
-23 -1: ARRAY_FLOAT_INDEX_SCALE
-23 -1: (Ljava/lang/Object;IS)V
-13 -1: x-windows-950
-31 -1: Ljava/util/Hashtable$Entry<**>;
-87 -1: Ljava/util/WeakHashMap<Ljava/lang/ClassValue$Identity;Ljava/lang/ClassValue$Entry<*>;>;
-9 -1: permClass
-37 -1: (Ljava/security/ProtectionDomain$3;)V
-99 -1: <S::Lsun/reflect/generics/tree/Signature;>Lsun/reflect/generics/repository/AbstractRepository<TS;>;
-37 -1: ()Ljava/util/function/BinaryOperator;
-64 -1: java/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap
-91 -1: (Ljava/util/ArrayPrefixHelpers$IntCumulateTask;Ljava/util/function/IntBinaryOperator;[III)V
-6 -1: getCrc
-25 -1: ByteArrayInputStream.java
-9 -1: SYNTHETIC
-52 -1: Ljava/lang/ref/PhantomReference<Ljava/lang/Object;>;
-246 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-38 -1: java/lang/Throwable$WrappedPrintStream
-21 -1: Illegal load factor: 
-43 -1: Ljava/util/Deque<Ljava/util/zip/Inflater;>;
-3 -1: map
-6 -1: expand
-6 -1: access
-3 -1: max
-33 -1: impliesCreateAccessControlContext
-3 -1: may
-53 -1: java/util/concurrent/ConcurrentHashMap$ReduceKeysTask
-91 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Lsun/misc/URLClassPath$Loader;>;
-60 -1: attempt to add a Permission to a readonly Permissions object
-21 -1: canonicalizeExtension
-11 -1: copyValueOf
-25 -1: (IJ)Ljava/nio/LongBuffer;
-112 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
-11 -1: DeqIterator
-11 -1: SpeciesData
-8 -1: getCause
-16 -1: aliases_UTF_16LE
-51 -1: (TT;TV;Ljava/util/function/BinaryOperator<TV;>;)TV;
-25 -1: (JF)Ljava/nio/ByteBuffer;
-16 -1: sun/misc/IOUtils
-32 -1: Ljava/util/Locale$FilteringMode;
-6 -1: .class
-13 -1: getPermission
-13 -1: startsWithLOC
-8 -1: Identity
-23 -1: ([BII)Ljava/lang/Class;
-15 -1: putByteVolatile
-36 -1: (Ljava/util/Deque;)Ljava/util/Queue;
-22 -1: (Ljava/lang/Object;S)V
-47 -1: java/util/concurrent/ConcurrentHashMap$BulkTask
-4 -1: n = 
-9 -1: (ITE;)TE;
-5 -1: zeroD
-18 -1: formatUnsignedLong
-29 -1:     default display locale = 
-23 -1: java/io/File$PathStatus
-5 -1: zeroF
-20 -1: Ljava/util/Set<TK;>;
-20 -1: (Ljava/util/List;I)V
-5 -1: zeroI
-5 -1: zeroJ
-7 -1: context
-39 -1: Ljava/nio/channels/WritableByteChannel;
-5 -1: zeroL
-34 -1: Lsun/util/calendar/CalendarSystem;
-24 -1: JVMTI_THREAD_STATE_ALIVE
-18 -1: (Ljava/util/Set;)V
-18 -1: (Ljava/util/Set;)Z
-42 -1: (TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V
-7 -1: entries
-30 -1: (Ljava/util/WeakHashMap;IIII)V
-15 -1: csisolatingreek
-38 -1: ([Ljava/lang/Class;)Ljava/lang/Object;
-12 -1: isMalformed3
-12 -1: isMalformed4
-5 -1: FJInt
-23 -1: java/util/LinkedHashMap
-20 -1: malformedInputAction
-12 -1: Charset.java
-5 -1: LLL_L
-42 -1: (Ljava/util/Collection;)Ljava/lang/Object;
-22 -1: makeMethodHandleInvoke
-3 -1: mdt
-7 -1: unicode
-12 -1: newInstance0
-10 -1: checkCerts
-34 -1: java/util/WeakHashMap$HashIterator
-23 -1: (Ljava/lang/Object;JI)I
-9 -1: hexDigits
-13 -1: javaToDosTime
-24 -1: (I)Ljava/nio/LongBuffer;
-6 -1: A_DATA
-12 -1: deepToString
-23 -1: (Ljava/lang/Object;JI)V
-91 -1: (JLjava/util/function/ToLongBiFunction<-TK;-TV;>;JLjava/util/function/LongBinaryOperator;)J
-23 -1: bad spread array length
-11 -1: readTimeout
-14 -1: toAbsolutePath
-8 -1: isFinite
-19 -1: currentLoadedClass0
-3 -1: \xef\xbf\xbd
-23 -1: (Ljava/nio/file/Path;)I
-8 -1: handlers
-21 -1: (Ljava/util/List;II)V
-89 -1: (Lsun/misc/URLClassPath$Loader;Ljava/lang/String;Ljava/net/URL;Ljava/net/URLConnection;)V
-8 -1: OVERFLOW
-8 -1: newTable
-8 -1: THURSDAY
-6 -1: notify
-12 -1: initialValue
-35 -1: (I)Ljava/util/LinkedList$Node<TE;>;
-18 -1: AsVarargsCollector
-26 -1: (Lsun/misc/JavaIOAccess;)V
-18 -1: ()Ljava/lang/Void;
-23 -1: (Ljava/nio/file/Path;)Z
-16 -1: MINUTE_IN_MILLIS
-67 -1: (Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
-18 -1: Ljava/util/Vector;
-70 -1: (Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;
-40 -1: (Ljava/lang/Object;ILjava/lang/Object;)V
-25 -1: UnresolvedPermission.java
-14 -1: ReduceKeysTask
-21 -1: ()[Ljava/lang/Object;
-129 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable;
-16 -1: ClassLoader.java
-46 -1: Ljava/util/Comparators$NaturalOrderComparator;
-17 -1: compareAndSwapInt
-22 -1: packageDefinitionValid
-41 -1: ([Ljava/lang/Object;[Ljava/lang/Object;)Z
-162 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;Ljava/util/Locale$FilteringMode;)Ljava/util/List<Ljava/lang/String;>;
-16 -1: sun.zip.zipFiles
-17 -1: java_runtime_name
-31 -1: (Ljava/lang/ClassValue$Entry;)V
-31 -1: (Ljava/lang/ClassValue$Entry;)Z
-30 -1: <T:Ljava/lang/Object;>(TT;)TT;
-39 -1: JavaSecurityProtectionDomainAccess.java
-24 -1: (I)Ljava/lang/Throwable;
-7 -1: FJShort
-9 -1: putFloatB
-19 -1: checkedNavigableSet
-25 -1: java/lang/invoke/Invokers
-18 -1: setIfModifiedSince
-14 -1: parameterTypes
-41 -1: (Ljava/lang/Object;Ljava/lang/Runnable;)V
-9 -1: putFloatL
-11 -1: getTypeCode
-5 -1: (ZZ)I
-24 -1: java/lang/ProcessBuilder
-9 -1: UNDERFLOW
-21 -1: VolatileCallSite.java
-24 -1: (C)Ljava/nio/CharBuffer;
-55 -1: java/util/concurrent/ConcurrentHashMap$ForEachValueTask
-26 -1: (Ljava/lang/String;[CII)[B
-18 -1: reduceKeysToDouble
-5 -1: (ZZ)Z
-23 -1: setCallSiteTargetNormal
-3 -1: min
-4 -1: ceil
-62 -1: (Ljava/lang/String;)Ljava/util/LinkedList<Ljava/lang/String;>;
-29 -1: (Ljava/util/AbstractList;II)V
-32 -1: Ljava/lang/Class$AnnotationData;
-21 -1: createFileExclusively
-64 -1: (Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData;
-26 -1: java/lang/Short$ShortCache
-54 -1: (Ljava/net/URL;Ljava/io/File;)Ljava/net/URLConnection;
-29 -1: Lsun/nio/cs/Surrogate$Parser;
-58 -1: (Ljava/lang/Class;)Lsun/reflect/annotation/AnnotationType;
-8 -1: findForm
-53 -1: Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;
-39 -1: (Lsun/misc/Perf;Ljava/nio/ByteBuffer;)V
-16 -1: mergePermissions
-11 -1: totalMemory
-53 -1: java/lang/invoke/DirectMethodHandle$EnsureInitialized
-139 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/concurrent/ConcurrentMap<TK;TV;>;Ljava/io/Serializable;
-29 -1: java/util/HashMap$KeyIterator
-20 -1: STACK_TRACE_SENTINEL
-5 -1: order
-18 -1: java/lang/Runnable
-8 -1: GetField
-13 -1: Empty command
-7 -1: CONTROL
-9 -1: blockedOn
-12 -1: testAllFlags
-11 -1: getInflater
-16 -1: threadTerminated
-44 -1: (Ljava/lang/ThreadGroup;Ljava/lang/String;)V
-20 -1: java.runtime.version
-8 -1: peekLast
-23 -1: java/util/ArrayList$Itr
-21 -1: (Ljava/util/Locale;)V
-13 -1: isOptimizable
-8 -1: FairSync
-7 -1: CHINESE
-15 -1: initHelpMessage
-30 -1: ()Ljava/util/HashMap$TreeNode;
-29 -1: Ljava/lang/SecurityException;
-7 -1: charset
-35 -1: sun/security/util/SecurityConstants
-19 -1: sun.nio.cs.bugLevel
-8 2: Foo.java
-49 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-12 -1: EntrySetView
-37 -1: (Lsun/misc/JavaNetHttpCookieAccess;)V
-35 -1: Ljava/util/Hashtable$Entry<TK;TV;>;
-20 -1: NF_constructorMethod
-8 -1: getMonth
-38 -1: (Ljava/util/Iterator;Ljava/util/Map;)V
-14 -1: getIntVolatile
-6 -1: [name=
-8 -1: oop_size
-20 -1: Can't load library: 
-30 -1: ()Ljava/util/Spliterator<TV;>;
-33 -1: Lsun/reflect/ConstructorAccessor;
-61 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Integer;>;
-15 -1: printVmSettings
-33 -1: stack         include stack trace
-45 -1: ([Ljava/lang/Object;I)Ljava/util/Spliterator;
-37 -1: sun/reflect/generics/scope/ClassScope
-36 -1: java/io/UnsupportedEncodingException
-24 -1: (J)Ljava/nio/LongBuffer;
-11 -1: addressSize
-15 -1: ByteBuffer.java
-62 -1: (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature;
-9 -1: (TT;TT;)I
-25 -1: java/io/DefaultFileSystem
-15 -1: BaseLocale.java
-14 -1: BitSetIterator
-17 -1: AbstractList.java
-57 -1: Ljava/lang/ref/WeakReference<Ljava/lang/ThreadLocal<*>;>;
-178 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-9 -1: arguments
-26 -1: java/util/Locale$LocaleKey
-9 -1: setLength
-29 -1: sun/nio/cs/ISO_8859_1$Decoder
-9 -1: zipfs.jar
-24 -1: Ljava/util/zip/ZipCoder;
-14 -1: , new state = 
-93 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V
-39 -1: java/security/PrivilegedExceptionAction
-9 -1: dnsns.jar
-20 -1: iteratorBinarySearch
-14 -1: initializePath
-22 -1: DefaultFileSystem.java
-17 -1: Ljava/util/Deque;
-8 -1: DEFLATED
-11 -1: Can't load 
-9 -1: ArrayList
-21 -1: negativeZeroFloatBits
-41 -1: (Ljava/lang/String;ILjava/util/Locale;)[C
-14 -1: ANSI_X3.4-1968
-39 -1: sun/reflect/annotation/AnnotationType$1
-3 -1: mod
-62 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/ByteBuffer;>;
-29 -1: interpretWithArgumentsTracing
-6 -1: getDay
-47 -1: sun/reflect/generics/repository/ClassRepository
-19 -1: refKindDoesDispatch
-20 -1: getAnnotationsByType
-14 -1: needsExpansion
-18 -1: lastIndexOfSubList
-26 -1: JavaUtilZipFileAccess.java
-59 -1: (Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
-12 -1: ptypesOffset
-8 -1: hashcode
-18 -1: ([Ljava/net/URL;)V
-8 -1: iso-ir-6
-7 -1: jzentry
-52 -1:               only dump output if specified codebase
-31 -1: lambda$comparingLong$6043328a$1
-5 -1: MARCH
-14 -1: ANSI_X3.4-1986
-14 -1: isMalformed3_2
-7 -1: IS_TYPE
-68 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/charset/Charset;>;
-30 -1: protocol doesn't support input
-17 -1: getExtClassLoader
-14 -1: setProxiedHost
-73 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
-16 -1: traceInterpreter
-17 -1: (Ljava/net/URL;)I
-5 -1: expm1
-18 -1: createInheritedMap
-66 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask
-17 -1: getTimeOfDayValue
-15 -1: zeroLengthArray
-20 -1: invalid permission: 
-6 -1: REPORT
-15 -1: isNumericString
-78 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
-6 -1: (TV;)Z
-25 -1: Lsun/misc/JavaLangAccess;
-29 -1: (I)Ljava/lang/reflect/Method;
-17 -1: (Ljava/net/URL;)V
-34 -1: ()Ljava/lang/Class$ReflectionData;
-50 -1: java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE
-10 -1: copyWith: 
-17 -1: (Ljava/net/URL;)Z
-32 -1: ()Ljava/util/stream/Stream<TE;>;
-22 -1: quickCheckMemberAccess
-29 -1: ()Lsun/net/www/MessageHeader;
-19 -1: getAssignedCombiner
-8 -1: ([JIIJ)I
-17 -1: formatUnsignedInt
-68 -1: <V:Ljava/lang/Object;>Ljava/util/AbstractMap<Ljava/lang/String;TV;>;
-34 -1: java/nio/ByteBufferAsDoubleBufferB
-32 -1: ([I)Ljava/util/stream/IntStream;
-9 -1: init_lock
-18 -1: must be resolved: 
-42 -1: ()Ljava/nio/channels/spi/SelectorProvider;
-8 -1: ([JIIJ)V
-33 -1: IncompatibleClassChangeError.java
-34 -1: java/nio/ByteBufferAsDoubleBufferL
-31 -1: ()Ljava/util/function/Function;
-43 -1: Ljava/lang/Enum<Ljava/io/File$PathStatus;>;
-17 -1: availableCharsets
-49 -1: java/util/ArraysParallelSortHelpers$FJChar$Sorter
-22 -1: permission=<classname>
-22 -1: getAnnotatedSuperclass
-20 -1: isObjectPublicMethod
-15 -1: Attempt to get 
-10 -1: createLong
-14 -1: HASH_INCREMENT
-32 -1: sun/management/ManagementFactory
-13 -1: separatorChar
-15 -1: bad field type 
-8 -1: november
-27 -1: (F)Ljava/lang/StringBuffer;
-3 -1: EAT
-3 -1: mst
-54 -1: (Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
-18 -1: Ljava/lang/Object;
-7 -1: ;:&=+$,
-12 -1: Handler.java
-7 -1: isDirty
-127 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;[Ljava/security/Permission;)TT;
-14 -1: asTypeUncached
-5 -1: split
-200 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;Ljava/lang/reflect/Type;Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;)Ljava/lang/reflect/AnnotatedType;
-47 -1: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-22 -1: sun/invoke/empty/Empty
-66 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Map;
-18 -1: jvm_update_version
-32 -1: (Ljava/util/Map;)Ljava/util/Map;
-14 -1: cacheLoadLimit
-8 -1: javaHome
-52 -1: (Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;
-20 -1: [[Ljava/lang/Object;
-19 -1: isJavaLetterOrDigit
-11 -1: loadLibrary
-32 -1: java/io/StreamCorruptedException
-14 -1: setAccessible0
-27 -1: sun/nio/cs/UTF_16LE$Encoder
-60 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
-8 -1: segments
-10 -1: UTF_8.java
-3 -1: ECT
-5 -1: cp813
-5 -1: cp819
-61 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I
-5 -1: Cache
-4 -1: sinh
-32 -1: java/util/function/ToIntFunction
-10 -1: setFactory
-24 -1: Illegal mappings count: 
-16 -1: fileToEncodedURL
-38 -1: Ljava/lang/annotation/RetentionPolicy;
-27 -1: Ljava/net/SocketPermission;
-46 -1: (Ljava/lang/CharSequence;I)[Ljava/lang/String;
-11 -1: cardinality
-13 -1: getMonthValue
-64 -1: (Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodHandle;
-6 -1: ENDTOT
-12 -1: getBytesUTF8
-9 -1: cacheLoad
-13 -1: packageAccess
-14 -1: sharedToString
-5 -1: merge
-29 -1: parameter type cannot be void
-27 -1: makePreparedFieldLambdaForm
-40 -1: Couldn't find 3-letter country code for 
-166 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V
-19 -1: (Ljava/util/Map;Z)V
-13 -1: setExecutable
-17 -1: objectFieldOffset
-57 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-128 -1: (Ljava/lang/Class<*>;ZLjava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
-61 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask
-6 -1: asType
-25 -1: java/io/ObjectStreamField
-15 -1: jvmMajorVersion
-124 -1: (Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
-23 -1: (Ljava/lang/Class<*>;)C
-6 -1: andNot
-15 -1: getResponseCode
-59 -1: (Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder;
-23 -1: (Ljava/lang/Class<*>;)I
-7 -1: seeAllp
-44 -1: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
-13 -1: loadFromCache
-35 -1: sun/nio/cs/HistoricallyNamedCharset
-38 -1: (Ljava/lang/Class;[Ljava/lang/Class;)V
-19 -1: INVOKER_METHOD_TYPE
-16 -1: putShortVolatile
-12 -1: Asia/Karachi
-8 -1: cyrillic
-12 -1: getISO2Table
-23 -1: (Ljava/lang/Class<*>;)V
-3 -1: 1.4
-15 -1: LongBuffer.java
-6 -1: (IFZ)V
-23 -1: (Ljava/lang/Class<*>;)Z
-10 -1: initOutput
-9 -1: CELLSBUSY
-39 -1: java/security/PrivilegedActionException
-31 -1: sun/util/calendar/CalendarUtils
-202 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;[Ljava/lang/reflect/Type;Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;)[Ljava/lang/reflect/AnnotatedType;
-20 -1: Ljava/lang/Class<*>;
-5 -1: cp850
-25 -1: (JI)Ljava/nio/ByteBuffer;
-5 -1: cp852
-24 -1: Invalid parameter name "
-39 -1: ([CII)Ljava/lang/AbstractStringBuilder;
-5 -1: cp855
-11 -1: Deallocator
-5 -1: cp857
-5 -1: cp858
-7 -1: ([SI)[S
-37 -1: ([C)Ljava/lang/AbstractStringBuilder;
-27 -1: java/lang/SecurityException
-82 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)V
-38 -1: (Ljava/lang/String;)Ljava/lang/String;
-7 -1: connect
-7 -1: isEmpty
-11 -1: replaceNode
-19 -1: SuppliedThreadLocal
-12 -1: asFixedArity
-12 -1: fromIndex = 
-19 -1: createMemoryManager
-9 -1: List.java
-8 -1: FEBRUARY
-21 -1: UnicodeLittleUnmarked
-6 -1: a null
-30 -1: ()Ljava/util/Spliterator<TT;>;
-5 -1: cp862
-17 -1: ZoneInfoFile.java
-5 -1: cp866
-8 -1: BulkTask
-53 -1: java/util/concurrent/locks/AbstractQueuedSynchronizer
-20 -1: FileInputStream.java
-12 -1: java.vm.info
-10 -1: newDecoder
-5 -1: (JB)V
-8 -1: filePath
-17 -1: spreadArrayChecks
-44 -1: ([Ljava/lang/Object;Ljava/util/Comparator;)V
-33 -1: java/util/Collections$AsLIFOQueue
-32 -1: Ljava/util/LinkedList$Node<TE;>;
-5 -1: cp874
-78 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
-39 -1: (JLjava/util/function/Consumer<-TK;>;)V
-15 -1: appendCodePoint
-20 -1: primitiveReturnCount
-54 -1:               only dump output if specified permission
-20 -1: getGenericInterfaces
-41 -1: ([Ljava/lang/reflect/AccessibleObject;Z)V
-17 -1: nUnstartedThreads
-33 -1: (Ljava/lang/invoke/MemberName;Z)V
-24 -1: ARRAY_OBJECT_INDEX_SCALE
-40 -1: (Ljava/lang/String;ILjava/util/Locale;)I
-17 -1: java/io/Flushable
-22 -1: newConstructorAccessor
-26 -1: sun/misc/JavaUtilJarAccess
-6 -1: booted
-10 -1: setDoInput
-36 -1: (Ljava/lang/Class;)[Ljava/lang/Enum;
-19 -1: java/lang/Character
-52 -1: ([Ljava/net/URL;Ljava/net/URLStreamHandlerFactory;)V
-24 -1: (Ljava/nio/LongBuffer;)I
-16 -1: start > length()
-28 -1: (I)Ljava/lang/CharacterData;
-5 -1: val$c
-61 -1: (Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)V
-13 -1: resolveOrNull
-9 -1: L_ESCAPED
-27 -1: MapReduceValuesToDoubleTask
-15 -1: getPreparedForm
-33 -1: (I)[Ljava/util/WeakHashMap$Entry;
-54 -1: ()Ljava/util/stream/Stream<+Ljava/util/zip/ZipEntry;>;
-16 -1: bad method type 
-5 -1: val$s
-17 -1: Null charset name
-36 -1: java/lang/invoke/LambdaForm$Compiled
-24 -1: (Ljava/util/SortedMap;)V
-19 -1: java/time/LocalTime
-29 -1: not invocable, no method type
-21 -1: recalculateWordsInUse
-6 -1: val$id
-39 -1: sun/security/util/ManifestEntryVerifier
-60 -1: ([Ljava/lang/Class<*>;I)Ljava/lang/reflect/Constructor<TT;>;
-45 -1: java/util/ArrayPrefixHelpers$LongCumulateTask
-5 -1: OfInt
-11 -1: environment
-60 -1: ([Ljava/lang/Class<*>;[B)[[Ljava/lang/annotation/Annotation;
-7 -1: (JJJZ)V
-10 -1: BufferPool
-6 -1: isUTF8
-12 -1: threadLocals
-35 -1: (Ljava/lang/String;)[Ljava/net/URL;
-21 -1: Ljava/nio/LongBuffer;
-15 -1: copyConstructor
-25 -1: setCallSiteTargetVolatile
-15 -1: getNumericValue
-26 -1: Ljava/security/CodeSource;
-18 -1: Null output stream
-14 -1: cloneWithIndex
-23 -1: LOCAL_LISTEN_PERMISSION
-6 -1: (TT;)I
-46 -1: (Ljava/security/PublicKey;Ljava/lang/String;)V
-6 -1: setCrc
-26 -1: java/io/FilterOutputStream
-10 -1: access$000
-10 -1: access$001
-10 -1: access$002
-6 -1: (TT;)V
-78 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>([TU;IILjava/lang/Class<+[TT;>;)[TT;
-41 -1: java/util/concurrent/atomic/AtomicInteger
-8 -1: renameTo
-40 -1: (Ljava/lang/Class<*>;)Ljava/lang/Object;
-17 -1: getRawAnnotations
-29 -1: java/lang/VirtualMachineError
-37 -1: java/lang/management/MemoryPoolMXBean
-25 -1: (II)Ljava/util/List<TE;>;
-6 -1: utf_16
-23 -1: (Ljava/lang/String;[B)V
-19 -1: MIN_ARRAY_SORT_GRAN
-25 -1: array length is not legal
-45 -1: java/util/concurrent/locks/ReentrantLock$Sync
-36 -1: Ljava/security/AccessControlContext;
-48 -1: sun/reflect/generics/repository/MethodRepository
-24 -1: MethodHandleStatics.java
-24 -1: addThreadDumpForMonitors
-64 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<TT;>;)Ljava/util/Set<TT;>;
-58 -1: (Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/Object;)Z
-37 -1: (III)Lsun/util/calendar/CalendarDate;
-9 -1: createURI
-15 -1: unreserveMemory
-52 -1: (Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Method;
-66 -1: (Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-51 -1: (Ljava/lang/reflect/Constructor;)Ljava/lang/String;
-23 -1: inheritableThreadLocals
-63 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/reflect/Method;>;
-16 -1: setContentLength
-16 -1: LOWERCASE_LETTER
-4 -1: size
-25 -1: java.launcher.opt.hotspot
-19 -1: buildAnnotatedTypes
-26 -1: JAVAFX_LAUNCHER_CLASS_NAME
-11 -1: getAliasMap
-19 -1: CheckedNavigableSet
-15 -1: getAbsolutePath
-11 -1: doubleValue
-6 -1: utf_32
-22 -1: IMPLEMENTATION_VERSION
-3 -1: ne1
-11 -1: contentType
-8 -1: canWrite
-11 -1: Object.java
-14 -1: America/Denver
-8 -1: fileName
-13 -1: allPermDomain
-27 -1: ()Ljava/util/Iterator<TE;>;
-31 -1: (Lsun/reflect/MethodAccessor;)V
-11 -1: asTypeCache
-13 -1: lineSeparator
-9 -1: JarLoader
-15 -1: replacementNode
-18 -1: getContentEncoding
-12 -1: invoke_LLL_L
-22 -1: ()Ljava/util/TimeZone;
-17 -1: Reference Handler
-33 -1: java/lang/invoke/MethodHandleImpl
-47 -1: ()Ljava/util/concurrent/ConcurrentHashMap$Node;
-12 -1: invoke_LLL_V
-8 -1: form << 
-23 -1: (Ljava/lang/Object;JJ)J
-15 -1: isHighSurrogate
-31 -1: (Ljava/util/Collection<+TV;>;)Z
-36 -1: ([Ljava/util/HashMap$Node<TK;TV;>;)V
-23 -1: (Ljava/lang/Object;JJ)V
-12 -1: utf_32be_bom
-40 -1: sun/util/calendar/LocalGregorianCalendar
-27 -1: [Ljava/security/CodeSigner;
-15 -1: afterNodeAccess
-13 -1: nextThreadNum
-18 -1: INTERNED_ARGUMENTS
-11 -1: getMillisOf
-18 -1: offsetByCodePoints
-11 -1: writeObject
-48 -1: (Ljava/util/Locale$Category;Ljava/util/Locale;)V
-3 -1: nfe
-41 -1: (Ljava/util/Properties;Ljava/io/Reader;)V
-50 -1: (Ljava/util/concurrent/CountedCompleter;[C[CIIII)V
-15 -1: implFlushBuffer
-33 -1: (I)[Ljava/lang/invoke/MemberName;
-12 -1: Unicode.java
-17 -1: DMH.invokeVirtual
-5 -1: setup
-51 -1: (Ljava/util/Collection;[Ljava/lang/reflect/Field;)V
-3 -1: EST
-7 -1: TREEBIN
-7 -1: getFile
-10 -1: isLeapYear
-18 -1: LinkedHashIterator
-14 -1: DISPLAY_SCRIPT
-25 -1: privateGetDeclaredMethods
-68 -1: (Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
-22 -1: ()Ljava/util/Iterator;
-21 -1: sun/management/Sensor
-15 -1: getAvailableIDs
-51 -1: Lsun/util/PreHashedMap<Ljava/nio/charset/Charset;>;
-8 -1: elot_928
-6 -1: LATIN0
-45 -1: ([Ljava/lang/Object;II[Ljava/lang/Object;II)V
-10 -1: [Unlocked]
-15 -1: internArguments
-6 -1: LATIN9
-33 -1: (II)Ljava/lang/invoke/MethodType;
-12 -1: Version.java
-17 -1: setConnectTimeout
-75 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
-13 -1: highSurrogate
-12 -1: Africa/Cairo
-21 -1: synchronizedSortedMap
-21 -1:  in java.library.path
-45 -1: sun/reflect/generics/tree/FormalTypeParameter
-24 -1: UncaughtExceptionHandler
-14 -1: previousOrSame
-24 -1: java/security/Permission
-9 -1: x-ISCII91
-5 -1: L_HEX
-35 -1: java/lang/invoke/DirectMethodHandle
-35 -1: java/util/ArrayDeque$DeqSpliterator
-14 -1: java/util/List
-11 -1: toLowerCase
-24 -1: java/nio/charset/Charset
-10 -1: MIN_NORMAL
-110 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-13 -1: regionMatches
-17 -1: newMethodAccessor
-26 -1: (Ljava/net/InetAddress;B)V
-68 -1: (Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
-22 -1: ()Ljava/io/FileSystem;
-19 -1: primitiveSimpleName
-5 -1: MOVED
-9 -1: STATE_RED
-13 -1: linkToSpecial
-19 -1: AnnotationType.java
-20 -1: (II)Ljava/util/List;
-252 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V
-12 -1: callSiteForm
-22 -1: isSiblingBindingBefore
-62 -1: <T:Ljava/lang/Object;>([TT;IITT;Ljava/util/Comparator<-TT;>;)I
-15 -1: buildEmptyNames
-11 -1: Thread.java
-30 -1: Ljava/lang/ref/Reference<TT;>;
-35 -1: sun/reflect/MethodAccessorGenerator
-152 -1: (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
-5 -1: total
-242 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-27 -1: javax/security/auth/Subject
-43 -1: JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
-17 -1: getSignerCertPath
-15 -1: registerNatives
-21 -1: sun/reflect/FieldInfo
-54 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/ISO_8859_1$1;)V
-17 -1: unwrapWithNoPrims
-17 -1: instanceof Long: 
-20 -1: hasRealParameterData
-23 -1: ()Ljava/time/LocalTime;
-14 -1: getAnnotations
-8 -1: optimize
-7 -1: setChar
-11 -1: OFFSET_MASK
-4 -1: TYPE
-177 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V
-18 -1: removeShutdownHook
-27 -1: ()Ljava/security/Principal;
-29 -1: JAVAFX_APPLICATION_CLASS_NAME
-6 -1: digits
-37 -1: [Ljava/lang/reflect/Constructor<TT;>;
-45 -1: ()Ljava/lang/Thread$UncaughtExceptionHandler;
-7 -1: tryLock
-19 -1: java/net/Proxy$Type
-21 -1: setJavaSecurityAccess
-13 -1: tieBreakOrder
-3 -1: no 
-16 -1: Australia/Sydney
-13 -1: DAY_IN_MILLIS
-19 -1: ()Ljava/nio/Buffer;
-12 -1: Integer.java
-14 -1: isBmpCodePoint
-6 -1: daemon
-23 -1: Lsun/misc/JavaIOAccess;
-106 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
-10 -1: getFloatAt
-15 -1: content/unknown
-52 -1: ()Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>;
-123 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
-4 -1: nsme
-12 -1: prefixLength
-9 -1: flagsMods
-95 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
-62 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
-16 -1: Illegal mode: 0x
-24 -1: java/io/FileOutputStream
-41 -1: [Pp][Ee][Rr][Mm][Ii][Ss][Ss][Ii][Oo][Nn]=
-24 -1: java/security/CodeSource
-16 -1: DUMP_CLASS_FILES
-25 -1: ([C)Ljava/nio/CharBuffer;
-12 -1: bindArgument
-50 -1: Ljava/lang/ref/FinalReference<Ljava/lang/Object;>;
-21 -1: unmodifiableSortedMap
-10 -1: jarHandler
-73 -1: (Ljava/lang/Class;[Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
-67 -1: ()Ljava/util/Map<Ljava/lang/Thread;[Ljava/lang/StackTraceElement;>;
-15 -1: threadSeqNumber
-18 -1: AutoCloseable.java
-9 -1: holdsLock
-25 -1: (Ljava/lang/Object;JJJJ)V
-7 -1: (IJII)I
-15 -1: copyToLongArray
-58 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Package;>;
-84 -1: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-32 -1: getExecutableTypeAnnotationBytes
-17 -1: streamHandlerLock
-35 -1: java/lang/IndexOutOfBoundsException
-15 -1: moveRootToFront
-28 -1: ()Ljava/nio/file/FileSystem;
-14 -1: content-length
-61 -1: (Ljava/lang/invoke/CallSite;Ljava/lang/invoke/MethodHandle;)V
-7 -1: csASCII
-18 -1: staticIsConsistent
-21 -1: sharedToGenericString
-8 -1: linkLast
-21 -1: isUnicodeExtensionKey
-7 -1: readInt
-7 -1: compile
-32 -1: ()Ljava/lang/reflect/Executable;
-4 -1: Big5
-20 -1: Ljava/util/Set<TE;>;
-18 -1: ExpiringCache.java
-44 -1: (Ljava/lang/String;[BII)Ljava/lang/Class<*>;
-18 -1: LinkedHashMap.java
-32 -1: Ljava/lang/UnsatisfiedLinkError;
-13 -1: parameterType
-28 -1: (ID)Ljava/lang/StringBuffer;
-15 -1: synchronizedSet
-9 -1: implClose
-6 -1: member
-14 -1: MH_INVOKE_MODS
-21 -1: forOutputStreamWriter
-37 -1: Lsun/misc/JavaIOFileDescriptorAccess;
-28 -1: java/lang/ProcessEnvironment
-17 -1: setNormalizedYear
-14 -1: isMalformed4_2
-14 -1: isMalformed4_3
-38 -1: (Ljava/lang/Object;)Ljava/lang/String;
-16 -1: getJavaAWTAccess
-12 -1: isPrivileged
-30 -1: java/util/Collections$EmptyMap
-17 -1: LinkedKeyIterator
-7 -1: vmcount
-27 -1: java/lang/ref/WeakReference
-5 -1: march
-13 -1: addOldMapping
-58 -1: (Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner;
-56 -1: (ILjava/lang/String;)[Ljava/lang/invoke/LambdaForm$Name;
-65 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask
-55 -1: (Ljava/lang/invoke/SerializedLambda;)Ljava/lang/Object;
-17 -1: getEnclosingClass
-35 -1: (I)Lsun/util/calendar/BaseCalendar;
-13 -1: binarySearch0
-25 -1: ([J)Ljava/nio/LongBuffer;
-19 -1: java/util/Map$Entry
-22 -1: java/util/HashMap$Node
-26 -1: sun/reflect/MethodAccessor
-8 -1: LASTYEAR
-7 -1: disable
-36 -1: sun/launcher/LauncherHelper$FXHelper
-6 -1: toPath
-10 -1: shortValue
-6 -1: remove
-59 -1: ([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;
-55 -1: java/util/concurrent/ConcurrentHashMap$ValueSpliterator
-64 -1: (Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
-15 -1: asPrimitiveType
-16 -1: PrintStream.java
-10 -1: image/jpeg
-22 -1: specificToStringHeader
-7 -1: class "
-38 -1: java/util/Collections$CheckedSortedMap
-19 -1: SUPPRESSED_SENTINEL
-16 -1: getEnumConstants
-54 -1: (ILjava/lang/CharSequence;II)Ljava/lang/StringBuilder;
-36 -1: Ljava/lang/Class<Ljava/lang/Short;>;
-13 -1: toThreadState
-38 -1: (Ljava/lang/Class;)Ljava/lang/Package;
-24 -1: (C)Ljava/lang/Character;
-19 -1: UNTREEIFY_THRESHOLD
-4 -1: NCPU
-23 -1: ()Ljava/lang/Exception;
-42 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)V
-15 -1: nothingToVerify
-15 -1: setInitialValue
-15 -1: getTimeInMillis
-12 -1: getDoubleAt0
-18 -1: parameterTypeCache
-86 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;)Ljava/nio/file/WatchKey;
-49 -1: java/util/concurrent/ConcurrentHashMap$ValuesView
-13 -1: <all actions>
-7 -1: exitVM.
-34 -1: Ljava/lang/ClassNotFoundException;
-68 -1: (Ljava/util/Map;Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
-28 -1: getCalendarDateFromFixedDate
-28 -1: UnsafeFieldAccessorImpl.java
-27 -1: java/lang/RuntimePermission
-74 -1: Ljava/lang/Object;Ljava/lang/Comparable<Lsun/util/locale/BaseLocale$Key;>;
-62 -1: ()Ljava/util/Iterator<Ljava/nio/charset/spi/CharsetProvider;>;
-13 -1: LanguageRange
-239 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-37 -1: DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
-62 -1: (Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
-16 -1: DMH.invokeStatic
-11 -1: (TK;TV;)TV;
-7 -1: ([FI)[F
-14 -1: newPerfCounter
-35 -1: ([JI)Ljava/util/Spliterator$OfLong;
-30 -1: java/util/AbstractList$ListItr
-5 -1: cp912
-5 -1: cp914
-45 -1: (Ljava/io/BufferedWriter;Ljava/lang/String;)V
-6 -1: LOCNAM
-8 -1: launcher
-5 -1: cp915
-14 -1: standardString
-26 -1: ()Ljava/lang/Thread$State;
-10 -1: L_ALPHANUM
-8 -1: (C[CII)I
-9 -1: SEPTEMBER
-20 -1: java/text/DateFormat
-38 -1: Ljava/lang/CloneNotSupportedException;
-5 -1: cp920
-23 -1: getConstructorSignature
-16 -1: ReferenceHandler
-19 -1: America/Puerto_Rico
-5 -1: cp923
-10 -1: typeString
-30 -1: Self-suppression not permitted
-25 -1: (Ljava/io/OutputStream;)V
-9 -1: implReset
-12 -1: fullAddCount
-34 -1: java/lang/invoke/LambdaForm$Hidden
-25 -1: ()Lsun/misc/JavaIOAccess;
-9 -1: Math.java
-9 -1: getAndSet
-7 -1: failure
-14 -1: LINE_SEPARATOR
-6 -1: parent
-30 -1: java/lang/BootstrapMethodError
-8 -1: indexMap
-9 -1: ALL_KINDS
-23 -1: desiredAssertionStatus0
-39 -1: (ILjava/lang/Object;)Ljava/lang/Object;
-22 -1: RuntimePermission.java
-21 -1: getContextClassLoader
-14 -1: VARARGS_INVOKE
-8 -1: zoneinfo
-130 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;ILjava/lang/invoke/DirectMethodHandle$1;)V
-18 -1: java/lang/Readable
-11 -1: containsAll
-11 -1: newPosition
-57 -1: sun/reflect/InstantiationExceptionConstructorAccessorImpl
-13 -1: REVERSE_ORDER
-29 -1: Required array size too large
-6 -1: sunday
-44 -1: <T:Ljava/lang/Object;>()Ljava/util/Set<TT;>;
-10 -1: toIntExact
-33 -1: ([BIILjava/nio/charset/Charset;)V
-14 -1: indexOfSubList
-15 -1: tryAcquireNanos
-31 -1: java/lang/InvalidClassException
-22 -1: SecureClassLoader.java
-12 -1: proxiedHosts
-7 -1: ([CII)I
-11 -1: toHexString
-30 -1: sun/util/calendar/ZoneInfoFile
-31 -1: Ljava/util/jar/Attributes$Name;
-10 -1: L_USERINFO
-25 -1: (IB)Ljava/nio/ByteBuffer;
-11 -1: parseDouble
-7 -1: ([CII)V
-13 -1: Asia/Shanghai
-5 -1: [...]
-57 -1: ([Ljava/lang/Class;[B)[[Ljava/lang/annotation/Annotation;
-19 -1: java/nio/LongBuffer
-15 -1: getCertificates
-9 -1: comparing
-83 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;IILjava/lang/String;[B)V
-43 -1: Ljava/util/concurrent/atomic/AtomicInteger;
-23 -1: toFieldDescriptorString
-20 -1: Lsun/misc/MetaIndex;
-37 -1: java/util/Collections$UnmodifiableSet
-5 -1: (JC)V
-37 -1: nanosecond timeout value out of range
-26 -1: AbstractStringBuilder.java
-43 -1: java/lang/invoke/DirectMethodHandle$Special
-49 -1: ([Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;
-15 -1: currentPosition
-14 -1: java/net/Proxy
-13 -1: asConstructor
-8 -1: userInfo
-14 -1: parseClassPath
-15 -1: legacyMergeSort
-34 -1: java/security/UnresolvedPermission
-97 -1: Lsun/util/locale/LocaleObjectCache<Lsun/util/locale/BaseLocale$Key;Lsun/util/locale/BaseLocale;>;
-9 -1: freeEntry
-19 -1: delimiterCodePoints
-34 -1: Should be non-empty if initialized
-23 -1: (I)Ljava/lang/Class<*>;
-11 -1: Reader.java
-26 -1: checkClassLoaderPermission
-27 -1: java/nio/DirectShortBufferS
-95 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Lsun/misc/Launcher$ExtClassLoader;>;
-27 -1: java/nio/DirectShortBufferU
-20 -1: ()[Ljava/lang/Class;
-56 -1: ()[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-19 -1: sun/nio/cs/UTF_16BE
-24 -1: java/util/AbstractList$1
-10 -1: ([CIIIII)V
-60 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/lang/Object;>;
-37 -1: (Ljava/lang/invoke/LambdaForm$Name;)S
-9 -1: putDouble
-52 -1: ([Ljava/security/CodeSource;)Ljava/util/Enumeration;
-37 -1: (Ljava/lang/invoke/LambdaForm$Name;)Z
-22 -1: ()[Ljava/lang/Package;
-41 -1: java/lang/CharSequence$1CodePointIterator
-13 -1: auditSubclass
-24 -1: Ljava/util/jar/JarEntry;
-20 -1: findMethodHandleType
-15 -1: MAX_BUFFER_SIZE
-19 -1: FilePermission.java
-18 -1: WrappedPrintStream
-36 -1: (D)Ljava/lang/AbstractStringBuilder;
-11 -1: unfinalized
-10 -1: getFileURL
-37 -1: (Ljava/io/FileFilter;)[Ljava/io/File;
-54 -1: (Ljava/nio/ByteBuffer;I)Ljava/nio/charset/CoderResult;
-7 -1: ([ZI)[Z
-64 -1: (Ljava/security/CodeSource;)Ljava/security/PermissionCollection;
-6 -1: PUBLIC
-83 -1: (Ljava/util/jar/JarFile;Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
-17 -1: lockInterruptibly
-67 -1: ([Ljava/util/Hashtable$Entry;Ljava/lang/Object;Ljava/lang/Object;)V
-42 -1: java/util/ArraysParallelSortHelpers$FJChar
-21 -1: defaultCharBufferSize
-14 -1: unalignedKnown
-23 -1: ()Ljava/net/Proxy$Type;
-4 -1: TZDB
-14 -1: CharacterCache
-13 -1: lengthOfMonth
-13 -1: hasExtensions
-23 -1: Prefix string too short
-15 -1: Executable.java
-10 -1: forEachKey
-6 -1: getEra
-13 -1: appendEncoded
-21 -1: java/util/AbstractMap
-10 -1: access$100
-10 -1: access$102
-30 -1: javafx.application.Application
-46 -1: (Ljava/lang/Thread$UncaughtExceptionHandler;)V
-43 -1: Ljava/lang/invoke/LambdaForm$NamedFunction;
-101 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)Ljava/lang/reflect/Field;
-9 -1: WILD_CHAR
-21 -1: SynchronizedSortedSet
-28 -1: (Ljava/util/Collection<*>;)Z
-29 -1: (I[C)Ljava/lang/StringBuffer;
-65 -1: (Ljava/lang/String;[Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
-7 -1: putByte
-6 -1: H_MARK
-49 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/Object;
-98 -1: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;Z)Ljava/lang/ClassValue$Entry<*>;
-23 -1: array is not of length 
-52 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;TT;TT;)Z
-41 -1: Ljava/util/Collections$EmptyListIterator;
-8 -1:         
-11 -1: updateCheck
-29 -1: getBootClassPathEntryForClass
-27 -1: sun/nio/cs/US_ASCII$Encoder
-10 -1: bindCaller
-18 -1: Ljava/util/BitSet;
-10 -1: checkRange
-77 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Void;)V
-7 -1: Classes
-6 -1: store0
-23 -1: java/lang/Thread$Caches
-25 -1: Ljava/lang/CharacterData;
-7 -1: (JI[C)V
-49 -1: (Ljava/util/LinkedList;Ljava/util/LinkedList$1;)V
-16 -1: getGcInfoBuilder
-12 -1: counterCells
-14 -1: memoryLimitSet
-7 -1: , nojit
-9 -1: sharpsMap
-7 -1: october
-13 -1: isProxiedHost
-9 -1: rawOffset
-18 -1: toJavaFormatString
-19 -1: sun.boot.class.path
-60 -1: (ILjava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
-11 -1: spliterator
-13 -1: contentLength
-18 -1: unixTimeToFileTime
-31 -1: Lsun/reflect/LangReflectAccess;
-16 -1:  while Java has 
-79 -1: (JLjava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)I
-12 -1: timeEndOfDay
-17 -1: getCustomTimeZone
-25 -1: Ljava/lang/ref/Reference;
-20 -1: ()Ljava/util/Locale;
-64 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;Z)V
-13 -1: MAX_JVM_ARITY
-72 -1: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/invoke/MethodType;
-11 -1: AsLIFOQueue
-84 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/lang/Object;)Ljava/util/List<TT;>;
-12 -1: mappingCount
-29 -1: (Ljava/io/FileOutputStream;)V
-50 -1: <T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;TT;)V
-23 -1: Category cannot be NULL
-10 -1: normalized
-5 -1: CLASS
-28 -1: (IZ)Ljava/lang/StringBuffer;
-18 -1: java/lang/System$1
-18 -1: java/lang/System$2
-9 -1: getResult
-44 -1: ()Ljava/util/Collection<Ljava/lang/Thread;>;
-8 -1: isNative
-59 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Short;>;
-24 -1: [Ljava/lang/ThreadGroup;
-24 -1: (B)Ljava/nio/ByteBuffer;
-4 -1: READ
-44 -1: (Ljava/io/FilePermission;)Ljava/lang/String;
-93 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedCollection<TE;>;Ljava/util/Set<TE;>;
-12 -1: compileClass
-12 -1: isProxyClass
-20 -1: isSystemDomainLoader
-74 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/util/Comparator<-TT;>;)V
-7 -1: getMask
-72 -1: (Ljava/lang/ClassLoader;Ljava/lang/SecurityManager;Ljava/lang/String;I)V
-20 -1: removeLastOccurrence
-64 -1: (Ljava/lang/reflect/Field;)Ljava/lang/invoke/DirectMethodHandle;
-57 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
-11 -1: parkBlocker
-40 -1: (Lsun/misc/JarIndex;Ljava/lang/String;)V
-33 -1: [Ljava/security/ProtectionDomain;
-14 -1: setContentType
-14 -1: getEnumeration
-18 -1: ProtectionDomain  
-76 -1: (Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date;
-16 -1: setRequestMethod
-52 -1: (Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
-32 -1: Lsun/util/calendar/BaseCalendar;
-52 -1: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
-5 -1: .:@[]
-7 -1: addLast
-21 -1: AnnotatedElement.java
-10 -1: defaultVal
-16 -1: getCanonicalPath
-17 -1: protection_domain
-9 -1: strictfp 
-19 -1: sun/nio/cs/UTF_16LE
-9 -1: readBytes
-18 -1: removeStaleEntries
-46 -1: java/util/Collections$UnmodifiableNavigableSet
-5 -1: cpath
-14 -1: COPY_THRESHOLD
-8 -1: permsMap
-8 -1: japanese
-33 -1: java/nio/charset/StandardCharsets
-47 -1: Lsun/reflect/DelegatingConstructorAccessorImpl;
-19 -1: NF_checkGenericType
-40 -1: java/util/Collections$UnmodifiableList$1
-4 -1: TERM
-48 -1: The following can be used with stack and domain:
-27 -1: ([BII)Ljava/nio/ByteBuffer;
-40 -1: Ljava/util/Vector<Ljava/lang/Class<*>;>;
-5 -1: digit
-7 -1: isFinal
-39 -1: (Ljava/lang/String;Ljava/lang/String;)I
-26 -1: memberDeclaringClassOrNull
-10 -1: ([CI[BII)I
-38 -1: (Ljava/lang/Class;I)Ljava/lang/Object;
-15 -1: isValidProtocol
-17 -1: (this Collection)
-11 -1: getTreeNode
-16 -1: ThreadLocal.java
-23 -1: java/nio/HeapLongBuffer
-39 -1: (Ljava/lang/String;Ljava/lang/String;)V
-12 -1: getNextEntry
-39 -1: (Ljava/lang/String;Ljava/lang/String;)Z
-28 -1: (C)Lsun/invoke/util/Wrapper;
-9 -1: readFloat
-21 -1: overrideFieldAccessor
-16 -1: fillInStackTrace
-16 -1: getDeclaredField
-5 -1: deflt
-8 -1: nextChar
-10 -1: primCounts
-22 -1: getAnnotatedInterfaces
-26 -1: ()Ljava/util/zip/Inflater;
-73 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;)TU;
-16 -1: traceMethodCalls
-10 -1: sun.nio.cs
-7 -1: marshal
-9 -1: ftypeKind
-77 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
-11 -1: sun/misc/VM
-14 -1: GuardWithCatch
-40 -1: (Ljava/lang/Object;)Ljava/util/Iterator;
-13 -1: subtractExact
-42 -1: (Ljava/lang/Object;ILjava/lang/Object;II)V
-10 -1: isInfinite
-18 -1: sun.util.calendar.
-14 -1: java/lang/Math
-16 -1: java/lang/String
-10 -1: encodePath
-14 -1: compactAndTrim
-11 -1: getVariants
-4 -1: from
-47 -1: (Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;)V
-35 -1: serializeAgentPropertiesToByteArray
-16 -1: computeIfPresent
-9 -1: EMPTY_MAP
-28 -1: java/lang/InstantiationError
-68 -1: (Ljava/util/Comparator;Ljava/util/Comparator;)Ljava/util/Comparator;
-14 -1: getDisplayName
-14 -1: limitedContext
-23 -1: usagetracker.properties
-52 -1: java/util/concurrent/locks/ReentrantLock$NonfairSync
-7 -1: public 
-17 -1: srcBegin > srcEnd
-48 -1: (ILjava/util/List;)Ljava/lang/invoke/MethodType;
-21 -1: java/lang/ThreadDeath
-9 -1: gregorian
-111 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;
-52 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
-12 -1: generateFile
-20 -1: appendParameterTypes
-22 -1: sun/misc/FileURLMapper
-13 -1: defaultDomain
-25 -1: (I)Ljava/time/ZoneOffset;
-21 -1: getBooleanAttributes0
-39 -1: (Ljava/lang/String;)Lsun/misc/Resource;
-43 -1: Ljava/lang/Thread$UncaughtExceptionHandler;
-23 -1: getTypeAnnotationBytes0
-8 -1: ELOT_928
-32 -1: sun/nio/cs/FastCharsetProvider$1
-34 -1: Ljava/nio/BufferOverflowException;
-14 -1: AppClassLoader
-10 -1: protected 
-12 -1: isAnnotation
-16 -1: PerfCounter.java
-51 -1: Ljava/util/Map<Ljava/io/File;Lsun/misc/MetaIndex;>;
-160 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-11 -1: setLeapYear
-16 -1: parseContextSpec
-16 -1: setFieldAccessor
-8 -1: writeInt
-16 -1: java/lang/Number
-33 -1: java/util/AbstractMap$SimpleEntry
-9 -1: nextTable
-8 -1: getQuery
-14 -1: putOrderedLong
-93 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-52 -1: (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree;
-85 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-9 -1: singleton
-9 -1: destroyed
-15 -1: iso_8859-2:1987
-12 -1: comparingInt
-29 -1: [Ljava/lang/OutOfMemoryError;
-39 -1: (Ljava/lang/String;Ljava/lang/Object;)V
-27 -1: ([Ljava/util/Enumeration;)V
-36 -1: Ljava/nio/charset/CodingErrorAction;
-16 -1: getCanonicalName
-41 -1: (Ljava/nio/LongBuffer;)Ljava/util/BitSet;
-15 -1: DISPLAY_COUNTRY
-32 -1: getFunctionalInterfaceMethodName
-66 -1: (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
-24 -1: getUnresolvedPermissions
-66 -1: ([Ljava/lang/ClassValue$Entry<*>;I)Ljava/lang/ClassValue$Entry<*>;
-41 -1: ()Lsun/reflect/annotation/AnnotationType;
-7 -1: afIndex
-7 -1: csascii
-20 -1: ()Ljava/util/Vector;
-16 -1: EntrySpliterator
-53 -1: (Ljava/lang/Throwable;I)Ljava/lang/StackTraceElement;
-81 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
-20 -1: classAssertionStatus
-7 -1: EXECUTE
-21 -1: ()Ljava/lang/Runtime;
-6 -1: cesu-8
-7 -1: offset 
-23 -1: Ljava/lang/SafeVarargs;
-34 -1: (Ljava/util/LinkedHashMap$Entry;)V
-8 -1: entryFor
-8 -1: getCache
-46 -1: (Ljava/lang/Object;I)Ljava/lang/reflect/Field;
-4 -1: skip
-8 -1: (II[CI)V
-4 -1: vart
-12 -1: InnerClasses
-68 -1: (Ljava/util/Map;Ljava/lang/Class;[Ljava/lang/String;)Ljava/util/Map;
-19 -1: currentClassLoader0
-34 -1: getDefaultUncaughtExceptionHandler
-11 -1: String.java
-117 -1: (Ljava/lang/ThreadLocal<*>;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-7 -1: january
-31 -1: (ILjava/lang/String;IIIIIIIII)V
-24 -1: Lsun/misc/JavaAWTAccess;
-5 -1: .path
-15 -1: [Ljava/io/File;
-11 -1: Writer.java
-8 -1: , Size: 
-159 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-32 -1: java/lang/invoke/LambdaForm$Name
-51 -1: (Ljava/util/ArrayList;Ljava/util/AbstractList;III)V
-7 -1: getZone
-14 -1: JIS_X0212-1990
-21 -1: (Ljava/util/Set<*>;)Z
-149 -1: (Lsun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter;Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
-21 -1: Illegal Load factor: 
-35 -1: ()Ljava/lang/invoke/MethodTypeForm;
-22 -1: ([Z)Ljava/lang/String;
-7 -1: setName
-48 -1: <T:Ljava/lang/Object;>(TT;Ljava/lang/String;)TT;
-9 -1: INTERFACE
-22 -1: ARRAY_CHAR_INDEX_SCALE
-19 -1: java/nio/ByteBuffer
-23 -1: Ljava/io/ExpiringCache;
-7 -1: streams
-44 -1: java/lang/invoke/DirectMethodHandle$Accessor
-36 -1: ([Ljava/security/ProtectionDomain;)V
-16 -1: afterNodeRemoval
-9 -1: prevIndex
-49 -1: java/util/concurrent/ConcurrentHashMap$KeySetView
-22 -1: getEnumConstantsShared
-17 -1: java/lang/Integer
-12 -1: getRawOffset
-36 -1: ()Ljava/nio/file/attribute/FileTime;
-7 -1: offsets
-10 -1: ] throw =>
-3 -1: [[B
-10 -1: hostsEqual
-18 -1: compareComparables
-35 -1: sun/reflect/ConstructorAccessorImpl
-8 -1: december
-36 -1: Invalid binary time-zone data: TZDB:
-24 -1: synchronizedNavigableMap
-72 -1: sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
-19 -1: parseCustomTimeZone
-88 -1: (Ljava/lang/Class<*>;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
-9 -1: findClass
-6 -1: OBJECT
-3 -1: GBK
-110 -1: (JLjava/util/function/ToLongFunction<Ljava/util/Map$Entry<TK;TV;>;>;JLjava/util/function/LongBinaryOperator;)J
-6 -1: UTF_16
-17 -1: <all permissions>
-13 -1: lookupCharset
-28 -1: ConstructorAccessorImpl.java
-62 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask
-30 -1: Ljava/lang/ClassCastException;
-56 -1: ()Ljava/util/Spliterator<Ljava/util/Map$Entry<TK;TV;>;>;
-11 -1: invokerType
-23 -1: java/lang/StringBuilder
-12 -1: deleteCharAt
-11 -1: CR_OVERFLOW
-14 -1: toExternalForm
-3 -1: out
-34 -1: Ljava/net/URLStreamHandlerFactory;
-15 -1: encodeArrayLoop
-30 -1: ()Ljava/util/Enumeration<TK;>;
-27 -1: java/io/SyncFailedException
-10 -1: checkedSet
-16 -1: checkedSortedSet
-22 -1: java/util/zip/ZipEntry
-43 -1: java/util/LinkedHashMap$LinkedValueIterator
-22 -1: UnmodifiableCollection
-32 -1: java/nio/ByteBufferAsCharBufferB
-11 -1: blockerLock
-27 -1: checkExtensionsDependencies
-11 -1: fromIndex: 
-32 -1: java/nio/ByteBufferAsCharBufferL
-6 -1: UTF_32
-30 -1: java/util/Hashtable$Enumerator
-92 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<+TK;+TV;>;)Ljava/util/Map<TK;TV;>;
-4 -1: tail
-5 -1: (BB)C
-16 -1: isValidSignature
-9 -1: addMillis
-9 -1: peekFirst
-86 -1: <E:Ljava/lang/Object;>(Ljava/util/Set<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Set<TE;>;
-5 -1: (BB)I
-15 -1: jvmMicroVersion
-28 -1: [Ljava/util/Hashtable$Entry;
-15 -1: iso_8859-5:1988
-14 -1: HOUR_IN_MILLIS
-67 -1: (Ljava/util/PrimitiveIterator$OfInt;I)Ljava/util/Spliterator$OfInt;
-5 -1: (BB)S
-21 -1: UnmodifiableSortedMap
-79 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
-56 -1: Ljava/util/Stack<Ljava/lang/ClassLoader$NativeLibrary;>;
-5 -1: (BB)Z
-10 -1: treeifyBin
-8 -1: isOpaque
-27 -1: java.launcher.ergo.message1
-27 -1: java.launcher.ergo.message2
-101 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Cloneable;Ljava/lang/Comparable<Ljava/util/Date;>;
-31 -1: (Ljava/io/ObjectOutputStream;)V
-3 -1: GET
-13 -1: matchLocation
-13 -1: WrappedMember
-63 -1: NoSuchMethodException:\n  could not find proper constructor for 
-14 -1: gssloginconfig
-70 -1: (Ljava/util/LinkedList$Node<TE;>;TE;Ljava/util/LinkedList$Node<TE;>;)V
-57 -1: (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
-11 -1: toByteArray
-49 -1: java/util/ArraysParallelSortHelpers$FJByte$Sorter
-13 -1: no protocol: 
-940 -1: aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul
-42 -1: java/util/LinkedHashMap$LinkedHashIterator
-39 -1: java/util/ArrayDeque$DescendingIterator
-15 -1: MODIFIER_LETTER
-21 -1: (Lsun/misc/Cleaner;)Z
-12 -1: PACKAGE_NAME
-14 -1: getMappedValue
-10 -1: interrupt0
-8 -1: LF_LIMIT
-17 -1: getDeclaringClass
-42 -1: (ZILjava/lang/String;)Ljava/lang/Class<*>;
-57 -1: (Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V
-15 -1: java/nio/Bits$1
-61 -1: (Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
-28 -1: java/lang/ref/ReferenceQueue
-33 -1: [Ljava/security/cert/Certificate;
-44 -1: (Ljava/util/Hashtable;I)Ljava/util/Iterator;
-24 -1: java/security/CodeSigner
-19 -1: Non-positive length
-24 -1: [Ljava/util/Enumeration;
-38 -1: ()Ljava/security/PermissionCollection;
-16 -1: checkGenericType
-56 -1: java/util/concurrent/ConcurrentHashMap$ReduceEntriesTask
-7 -1: getYear
-5 -1: atime
-19 -1: Ljava/util/HashMap;
-125 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
-22 -1: STOP_THREAD_PERMISSION
-46 -1: (Ljava/util/Enumeration;)Ljava/util/ArrayList;
-16 -1: getPathSeparator
-10 -1: getMembers
-8 -1: getIntAt
-26 -1: java/io/File$TempDirectory
-48 -1: java/lang/invoke/MethodHandleImpl$GuardWithCatch
-25 -1: CaseInsensitiveComparator
-8 -1: pollLast
-21 -1: GET_POLICY_PERMISSION
-23 -1: uninitialized call site
-75 -1: (Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
-9 -1: directory
-51 -1: (JLjava/util/function/BiFunction<-TV;-TV;+TV;>;)TV;
-41 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;)V
-42 -1: (Ljava/lang/Throwable;Ljava/lang/String;)V
-26 -1: (FLjava/lang/Appendable;)V
-5 -1: stop0
-9 -1: substring
-64 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-5 -1: (JD)V
-9 -1: getShortB
-10 -1: nextOrSame
-24 -1: [ interpretWithArguments
-6 -1: GB2312
-32 -1: java/nio/BufferOverflowException
-23 -1: sun/nio/cs/ArrayEncoder
-4 -1: tanh
-9 -1: getShortL
-55 -1: (JLjava/util/function/BiFunction;)Ljava/util/Map$Entry;
-10 -1: getMessage
-12 -1: findTreeNode
-38 -1: DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
-23 -1: [Ljava/lang/Comparable;
-17 -1: getCallSiteTarget
-55 -1: (Ljava/nio/ByteBuffer;II)Ljava/nio/charset/CoderResult;
-19 -1: java/util/ArrayList
-17 -1: java/io/DataInput
-13 -1: getPrincipals
-52 -1: <E:Ljava/lang/Object;>(TE;)Ljava/util/Iterator<TE;>;
-44 -1: sun/reflect/generics/tree/ClassTypeSignature
-6 -1: loaded
-20 -1: ()Ljava/lang/Object;
-36 -1: Ljava/util/concurrent/ConcurrentMap;
-13 -1: classValueMap
-33 -1: java/lang/SystemClassLoaderAction
-6 -1: loader
-31 -1: java/lang/annotation/Annotation
-5 -1: colon
-11 -1: Vector.java
-24 -1: CharacterDataLatin1.java
-12 -1: setUseCaches
-22 -1: getTypeAnnotationBytes
-9 -1: readShort
-24 -1: longPrimitiveReturnCount
-5 -1: get16
-34 -1: setDefaultUncaughtExceptionHandler
-17 -1: cachedInputStream
-29 -1: java/util/LinkedHashMap$Entry
-17 -1: java/lang/Boolean
-50 -1: ()[Lsun/reflect/generics/tree/FormalTypeParameter;
-14 -1: AnnotationData
-21 -1: Ljava/net/Proxy$Type;
-13 -1: invokeVirtual
-14 -1: Parameter.java
-21 -1: getDayOfWeekDateAfter
-92 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-56 -1: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-46 -1: sun/util/locale/provider/LocaleProviderAdapter
-29 -1: Ljava/lang/StackTraceElement;
-47 -1: (TK;Ljava/util/function/Function<-TK;+TV;>;)TV;
-32 -1: enableContextClassLoaderOverride
-68 -1: (Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;
-51 -1: Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-9 -1: addAndGet
-5 -1: store
-7 -1: ([JII)V
-15 -1: signatureReturn
-18 -1: NF_reinvokerTarget
-22 -1: ()Ljava/nio/file/Path;
-25 -1: (C)Ljava/lang/Appendable;
-7 -1: expires
-18 -1: initializeInvokers
-19 -1: application/java-vm
-13 -1: stopOrSuspend
-13 -1: rawOffsetDiff
-6 -1: (JJZ)V
-9 -1: findValue
-5 -1: get32
-10 -1: asSubclass
-6 -1: forJRE
-3 -1: GMT
-7 -1: delete0
-69 -1: ([Ljava/security/cert/Certificate;[Ljava/security/cert/Certificate;)Z
-75 -1: (Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-6 -1: setEra
-24 -1: ()Ljava/util/Comparator;
-10 -1: access$200
-10 -1: access$202
-20 -1: retrieveDisplayNames
-3 -1: pae
-24 -1: java/lang/Byte$ByteCache
-7 -1: VM.java
-9 -1: TRANSIENT
-6 -1: setErr
-16 -1: jdkUpdateVersion
-10 -1: isResolved
-35 -1: sun/misc/JavaIOFileDescriptorAccess
-4 -1: char
-13 -1: Readable.java
-19 -1: UnixFileSystem.java
-43 -1: (Ljava/lang/ThreadLocal;)Ljava/lang/Object;
-40 -1: (Ljava/lang/String;[Ljava/lang/String;)V
-7 -1: profile
-11 -1: , version: 
-25 -1: PermissionCollection.java
-13 -1: setNormalized
-10 -1: access$210
-24 -1: (Ljava/lang/String;IJZ)J
-19 -1: isAnnotationPresent
-85 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
-19 -1: DMH.invokeInterface
-157 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;TV;>;Ljava/util/Collection<TV;>;Ljava/io/Serializable;
-94 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableCollection<TE;>;Ljava/util/List<TE;>;
-41 -1: java/lang/StringIndexOutOfBoundsException
-29 -1: java/net/UnknownHostException
-11 -1: (BBBBBBBB)J
-4 -1: iioe
-12 -1: (TK;TV;Z)TV;
-5 -1: ERROR
-31 -1: (Ljava/io/File;Ljava/io/File;)I
-32 -1: [Ljava/lang/invoke/MethodHandle;
-27 -1: lambda$comparing$77a9974f$1
-13 -1: toLowerCaseEx
-61 -1: (Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;)V
-66 -1: (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;
-43 -1: java/util/concurrent/ConcurrentHashMap$Node
-23 -1: latestUserDefinedLoader
-24 -1: buildAnnotatedSuperclass
-19 -1: compareToIgnoreCase
-31 -1: (Ljava/io/File;Ljava/io/File;)Z
-40 -1: (I[C)[Ljava/lang/invoke/LambdaForm$Name;
-16 -1: ROTATE_THRESHOLD
-18 -1: getClassAtIfLoaded
-37 -1: java/lang/IllegalThreadStateException
-5 -1: get64
-12 -1: writeReplace
-14 -1: DAYS_PER_CYCLE
-4 -1: _get
-6 -1: nChars
-26 -1: ()Ljava/net/SocketAddress;
-27 -1: setUncaughtExceptionHandler
-6 -1: jzfile
-42 -1: All subclasses should override this method
-3 2: Foo
-56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-136 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;[Ljava/security/Permission;)TT;
-3 -1: pdt
-44 -1: sun/util/locale/LocaleObjectCache$CacheEntry
-20 -1: java/util/Comparator
-9 -1: suspended
-11 -1: removeEntry
-10 -1: SPACE_FREE
-12 -1: processQueue
-9 -1: java.home
-5 -1: valid
-23 -1: printEnclosedStackTrace
-4 -1: push
-5 -1: guard
-23 -1: javaNetHttpCookieAccess
-36 -1: (Ljava/security/cert/Certificate;)[B
-9 -1: isWrapped
-12 -1: CharIterator
-26 -1: sun.io.useCanonPrefixCache
-42 -1: (Lsun/misc/Cleaner;Ljava/lang/Throwable;)V
-7 -1: prepare
-8 -1: parseInt
-13 -1: Invokers.java
-63 -1: (Ljava/net/URLClassLoader;)Ljava/security/AccessControlContext;
-18 -1: defaultWriteObject
-5 -1: class
-15 -1: EnclosingMethod
-23 -1: ([BI)Ljava/lang/String;
-16 -1: rangeCheckForAdd
-11 -1: getTimeImpl
-15 -1: arrayIndexScale
-5 -1: scalb
-5 -1: scale
-45 -1: (Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
-8 -1: ([FIIF)I
-16 -1: runAllFinalizers
-27 -1: ()Lsun/net/ProgressMonitor;
-15 -1: MemberName.java
-27 -1: [Ljava/lang/reflect/Member;
-6 -1: length
-14 -1: genericInvoker
-8 -1: ([FIIF)V
-34 -1: Ljava/nio/file/attribute/FileTime;
-6 -1: number
-70 -1: (Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
-12 -1: printLocales
-38 -1: java/lang/invoke/MethodHandleStatics$1
-8 -1: private 
-20 -1: invalid actions mask
-10 -1:  not found
-13 -1: parseClassSig
-22 -1: getAllAvailableLocales
-175 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-8 -1: ([BII)[B
-35 -1: (Ljava/util/HashMap$Node<TK;TV;>;)V
-132 -1: (Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V
-8 -1: ([BII)[C
-20 -1: DECIMAL_DIGIT_NUMBER
-40 -1: (Ljava/lang/String;[Ljava/lang/Object;)Z
-7 -1: ([CCI)I
-64 -1: (TV;)Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
-8 -1: aliasMap
-8 -1: checkfpx
-44 -1: java/util/Comparators$NaturalOrderComparator
-48 -1: (Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;
-12 -1: Name is null
-10 -1: invoke_L_L
-8 -1: URL.java
-51 -1: (JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime;
-25 -1: Lsun/invoke/util/Wrapper;
-19 -1: LauncherHelper.java
-10 -1: invoke_L_V
-5 -1: index
-30 -1: sun/security/x509/X509CertImpl
-8 -1: addClass
-46 -1: (I)Ljava/lang/invoke/LambdaForm$NamedFunction;
-20 -1: refKindIsConstructor
-10 -1: getFieldAt
-5 -1: log10
-13 -1: GetPerfAction
-15 -1: isLetterOrDigit
-27 -1: hasCheckedSpecialAttributes
-25 -1: MapReduceEntriesToIntTask
-17 -1: probeHomeLocation
-9 -1: image/png
-19 -1: checkSpreadArgument
-12 -1: LinkedKeySet
-13 -1: removeMapping
-39 -1: sun/security/util/SecurityConstants$AWT
-9 -1: MAX_RADIX
-28 -1: (F)Ljava/lang/StringBuilder;
-11 -1: ([C[B[I[I)Z
-36 -1: (Ljava/lang/Class;)Ljava/lang/Class;
-32 -1: java/lang/invoke/MagicLambdaImpl
-6 -1: monday
-16 -1: closeClassLoader
-41 -1: (Ljava/util/concurrent/locks/Condition;)I
-8 -1: reversed
-27 -1: sun/util/calendar/Gregorian
-49 -1: (Lsun/nio/cs/FastCharsetProvider;)Ljava/util/Map;
-42 -1: (Ljava/lang/String;Ljava/lang/Throwable;)V
-18 -1: java/util/Calendar
-8 -1: vmtarget
-17 -1: TREEIFY_THRESHOLD
-41 -1: (Ljava/util/concurrent/locks/Condition;)Z
-9 -1: deadChild
-8 -1: EntrySet
-5 -1: log1p
-58 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
-9 -1: pageCount
-14 -1: slotToArgTable
-24 -1: toMethodDescriptorString
-25 -1: ([B)Ljava/nio/ByteBuffer;
-21 -1: twoToTheDoubleScaleUp
-32 -1: sun/misc/URLClassPath$FileLoader
-40 -1: (Ljava/util/List<Ljava/lang/String;>;Z)V
-6 -1: cache1
-6 -1: cache2
-27 -1: Ljava/net/URLStreamHandler;
-20 -1: Detect premature EOF
-94 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamEncoder;
-12 -1: NF_checkBase
-20 -1: (Ljava/nio/Buffer;)V
-45 -1: <E:Ljava/lang/Object;>Ljava/util/Vector<TE;>;
-4 -1: Sync
-12 -1: H_UNRESERVED
-32 -1: (Ljava/util/Map;)Ljava/util/Set;
-32 -1: (Ljava/util/Map$Entry<TK;TV;>;)Z
-25 -1: java/util/Locale$Category
-8 -1: receiver
-9 -1: MAX_VALUE
-4 -1: .RSA
-25 -1: Ljava/net/URLClassLoader;
-15 -1: Terminator.java
-26 -1: (Ljava/lang/String;TV;)TV;
-4 -1: null
-76 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-9 -1: checkCast
-39 -1: ()Ljava/lang/AssertionStatusDirectives;
-15 -1: declaredMethods
-5 -1: clazz
-21 -1:    Retention policy: 
-20 -1: spreadArgElementType
-9 -1: WORD_MASK
-27 -1: ([IILjava/io/InputStream;)I
-11 -1: getMethodAt
-31 -1: (Ljava/net/URL;Ljava/net/URL;)Z
-13 -1: getLocaleName
-14 -1: isEnumConstant
-41 -1: (Ljava/lang/String;)Ljava/nio/CharBuffer;
-16 -1: newInvokeSpecial
-26 -1: (Ljava/nio/ByteBuffer;IS)V
-22 -1: sun/misc/JavaNioAccess
-184 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/security/AccessControlContext;
-96 -1: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-5 -1: ([S)I
-30 -1: java/security/AccessController
-37 -1: sun/misc/Launcher$SharedArchiveLoader
-4 -1: pack
-5 -1: ([S)V
-51 -1: failure       before throwing exception, dump stack
-10 -1: dayOfMonth
-6 -1: CENSIG
-28 -1: java/util/function/Predicate
-26 -1: Malformed \\uxxxx encoding.
-9 -1: initIndex
-11 -1: invoke_LL_L
-23 -1: ConcurrentWeakInternSet
-14 -1: java/lang/Void
-42 -1: java/lang/String$CaseInsensitiveComparator
-38 -1: Ljava/lang/invoke/LambdaForm$Compiled;
-34 -1: java/util/Collections$SingletonSet
-142 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/invoke/CallSite;
-35 -1: too many bootstrap method arguments
-17 -1: maxDelimCodePoint
-13 -1: previousIndex
-3 -1: pop
-6 -1: CENSIZ
-7 -1: ([Z[Z)Z
-11 -1: invoke_LL_V
-3 -1: pos
-33 -1: java/nio/file/WatchEvent$Modifier
-3 -1: pow
-12 -1: nextClearBit
-15 -1: Dictionary.java
-27 -1: sun/reflect/CallerSensitive
-13 -1: signatureType
-10 -1: dstSavings
-13 -1: UnicodeLittle
-16 -1: America/New_York
-82 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
-25 -1: referenceKindIsConsistent
-62 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/LongBuffer;>;
-4 -1: INTS
-11 -1: LOAD_FACTOR
-40 -1: sun/reflect/DelegatingMethodAccessorImpl
-16 -1: accumulateAndGet
-21 -1: (B)Ljava/lang/String;
-6 -1: UNSAFE
-13 -1: resolveOrFail
-21 -1: MapReduceMappingsTask
-5 -1: arity
-77 -1: (Ljava/io/FileDescriptor;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
-5 -1: value
-61 -1: Ljava/util/concurrent/ConcurrentHashMap$EntrySetView<TK;TV;>;
-6 -1: forJar
-52 -1: <T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>;
-21 -1: CREATE_ACC_PERMISSION
-28 -1: sun/misc/NativeSignalHandler
-11 -1: defineClass
-5 -1: match
-93 -1: (Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V
-11 -1: Double.java
-30 -1: America/Argentina/Buenos_Aires
-8 -1: previous
-37 -1: (Ljava/io/Writer;Ljava/lang/String;)V
-9 -1: Synthetic
-18 -1: isVMAnonymousClass
-62 -1: ([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I
-22 -1: (JI)Ljava/lang/String;
-49 -1: (Ljava/lang/CharSequence;II)Ljava/io/PrintStream;
-52 -1: ([Ljava/lang/Thread;)[[Ljava/lang/StackTraceElement;
-12 -1: setDayOfWeek
-11 -1: getManifest
-30 -1: java/util/Locale$FilteringMode
-54 -1: (Ljava/lang/String;)Lsun/util/calendar/CalendarSystem;
-12 -1: nextHashCode
-19 -1: ()Ljava/io/Console;
-42 -1: AccessControlContext invoking the Combiner
-19 -1: shouldBeInitialized
-17 -1: invocationCounter
-21 -1: IMPLEMENTATION_VENDOR
-7 -1: chararr
-60 -1: (Ljava/lang/String;)Ljava/util/Iterator<Ljava/lang/String;>;
-11 -1: asCollector
-52 -1: (ILjava/lang/CharSequence;)Ljava/lang/StringBuilder;
-9 -1: exception
-22 -1: newInstanceCallerCache
-20 -1: nativeLibraryContext
-24 -1: MODIFY_THREAD_PERMISSION
-4 -1: WRAP
-19 -1: Method name is null
-32 -1: sun/invoke/util/ValueConversions
-7 -1: APP_TAG
-24 -1: (Ljava/util/Hashtable;)I
-23 -1: METHOD_FORMAL_PARAMETER
-18 -1: inflationThreshold
-24 -1: java/io/DeleteOnExitHook
-3 -1: pst
-13 -1: BITS_PER_WORD
-25 -1: getConstructorAnnotations
-17 -1: CheckedCollection
-24 -1: (Ljava/util/Hashtable;)V
-7 -1: inClass
-5 -1: getFD
-8 -1: readLong
-19 -1: aliases_ISO_8859_13
-19 -1: invokeWithArguments
-19 -1: aliases_ISO_8859_15
-42 -1: ()Ljava/util/concurrent/ConcurrentHashMap;
-8 -1: expandTo
-23 -1: java/text/MessageFormat
-8 -1: classID0
-11 -1: replaceWith
-21 -1: Invalid port number :
-65 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-19 -1: isGregorianLeapYear
-16 -1: asSpreaderChecks
-11 -1: withInitial
-10 -1: X-UTF-32BE
-57 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-12 -1: wrong type: 
-57 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
-17 -1: sun/misc/Resource
-14 -1: getReadTimeout
-8 -1: safeTrim
-38 -1: DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
-14 -1: isElementIndex
-23 -1: FilterOutputStream.java
-6 -1: (IJI)V
-3 -1: put
-57 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
-43 -1: Expecting an absolute path of the library: 
-8 -1: checkRef
-53 -1: (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
-74 -1: (Ljava/lang/Class<*>;[Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
-11 -1: user.script
-10 -1: H_ALPHANUM
-17 -1: getCalendarSystem
-48 -1: Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;
-17 -1: EnsureInitialized
-82 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-243 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V
-26 -1: getAnnotatedExceptionTypes
-10 -1: validIndex
-6 -1: ([CC)I
-8 -1: overflow
-5 -1: getID
-93 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder;
-22 -1: java/util/StringJoiner
-9 -1: putFields
-18 -1: USE_SHARED_ARCHIVE
-8 -1: thursday
-8 -1: nanoTime
-59 -1: (Lsun/reflect/annotation/AnnotationType;Ljava/lang/Class;)V
-69 -1: (Ljava/nio/charset/CoderResult$Cache;I)Ljava/nio/charset/CoderResult;
-36 -1: (J)Ljava/lang/AbstractStringBuilder;
-16 -1: java/util/Arrays
-6 -1: ([CC)V
-25 -1: registerAsParallelCapable
-4 -1: slot
-24 -1: java/net/URLConnection$1
-6 -1: koi8-r
-19 -1:  should be of type 
-46 -1: java/util/concurrent/ConcurrentHashMap$TreeBin
-6 -1: koi8-u
-34 -1: data type scale not a power of two
-53 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
-21 -1: AccessibleObject.java
-53 -1: <E:Ljava/lang/Object;>()Ljava/util/NavigableSet<TE;>;
-88 -1: (Ljava/util/List;Ljava/util/Collection;Ljava/util/Locale$FilteringMode;)Ljava/util/List;
-17 -1: getAnnotationType
-36 -1: Ljava/util/HashMap$TreeNode<TK;TV;>;
-14 -1: declaringClass
-10 -1: read,write
-5 -1: getId
-10 -1: BIG_ENDIAN
-20 -1: PolymorphicSignature
-16 -1: comparingByValue
-67 -1: (ILjava/lang/invoke/MethodType;)[Ljava/lang/invoke/LambdaForm$Name;
-19 -1: java/util/Hashtable
-20 -1: getUnicodeLocaleKeys
-27 -1: ()Ljava/util/LinkedHashMap;
-51 -1: (Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
-30 -1: java/util/HashMap$HashIterator
-22 -1: (IZ)Ljava/lang/String;
-5 -1: yield
-34 -1: java/lang/Throwable$SentinelHolder
-62 -1: (Ljava/lang/invoke/MethodType;ZI)Ljava/lang/invoke/LambdaForm;
-5 -1: (FD)F
-17 -1: java/util/SubList
-24 -1: (Ljava/io/PrintStream;)V
-7 -1: LF.zero
-25 -1: java/util/StringTokenizer
-15 -1: ISO8859_15_FDIS
-11 -1: powerOfTwoD
-11 -1: powerOfTwoF
-22 -1: WeakHashMapSpliterator
-15 -1: refKindIsGetter
-12 -1: setRawOffset
-11 -1: setProperty
-23 -1: (Ljava/lang/Object;IB)V
-45 -1: (ILjava/lang/Object;)Ljava/util/HashMap$Node;
-13 -1: applyAsDouble
-83 -1: (Lsun/misc/URLClassPath$FileLoader;Ljava/lang/String;Ljava/net/URL;Ljava/io/File;)V
-19 -1: MethodAccessor.java
-9 -1: WALL_TIME
-7 -1: INVOKES
-13 -1: java.ext.dirs
-9 -1: getStatic
-56 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
-42 -1: (Ljava/util/function/UnaryOperator<TE;>;)V
-27 -1: java/lang/Class$MethodArray
-10 -1: H_USERINFO
-19 -1: PostVMInitHook.java
-7 -1: running
-32 -1: Warning: passing argument as-is 
-13 -1: EntryIterator
-22 -1: NF_checkSpreadArgument
-46 -1: ([DLjava/util/function/IntToDoubleFunction;I)V
-7 -1: .<init>
-13 -1: mappingLength
-20 -1: implOnMalformedInput
-53 -1: (Ljava/lang/String;ILjava/lang/reflect/Executable;I)V
-26 -1: cannot make variable arity
-18 -1: SharedSecrets.java
-27 -1: (Ljava/io/InputStream;IZ)[B
-9 -1: Asia/Gaza
-55 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
-5 -1: NTLM 
-19 -1: defaultCenturyStart
-18 -1: addElapsedTimeFrom
-38 -1: (Lsun/misc/Cleaner;)Lsun/misc/Cleaner;
-44 -1: (Ljava/io/OutputStream;ZLjava/lang/String;)V
-22 -1: (Ljava/lang/Object;B)V
-6 1: [LBar;
-7 -1: classes
-23 -1: java/net/URLClassLoader
-17 -1: sun/misc/Launcher
-163 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-12 -1: updateAndGet
-90 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-9 -1: increment
-27 -1: (Ljava/lang/CharSequence;)V
-16 -1: Ljava/io/Reader;
-27 -1: java/io/PushbackInputStream
-6 -1: (JFZ)V
-17 -1: getAppClassLoader
-35 -1: sun/reflect/generics/tree/Signature
-9 -1: elementAt
-27 -1: (Ljava/lang/CharSequence;)Z
-10 -1: readDouble
-37 -1: ([B)Ljava/nio/charset/CharsetEncoder;
-46 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V
-4 -1: park
-36 -1: java/lang/NegativeArraySizeException
-49 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Z
-121 -1: <T:Ljava/lang/Object;U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
-101 -1: (Ljava/lang/annotation/Annotation;Ljava/lang/annotation/Annotation;)Ljava/lang/annotation/Annotation;
-12 -1: .$|()[{^?*+\\
-6 -1: manRef
-3 -1: 437
-15 -1: newStringUnsafe
-15 -1: constantPoolOop
-10 -1: getPackage
-24 -1: FastCharsetProvider.java
-18 -1: getAnnotationBytes
-187 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class<*>;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/security/AccessControlContext;
-33 -1: Cannot suppress a null exception.
-27 -1: sun/nio/cs/StandardCharsets
-33 -1: (BB)Ljava/lang/invoke/MemberName;
-61 -1: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
-10 -1: X-UTF-32LE
-5 -1: toMap
-89 -1: (Ljava/lang/Class<*>;Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
-46 -1: ([Ljava/lang/Object;IILjava/util/Comparator;)V
-66 -1: ([Ljava/lang/reflect/Constructor;)[Ljava/lang/reflect/Constructor;
-22 -1: ()Ljava/nio/ByteOrder;
-20 -1: isMethodHandleInvoke
-25 -1: sun/net/www/URLConnection
-89 -1: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/lang/invoke/LambdaForm;>;
-49 -1: (Ljava/nio/charset/Charset;FFLjava/lang/String;)V
-17 -1: MIN_LOW_SURROGATE
-23 -1: AbstractCollection.java
-19 -1: (Ljava/util/Date;)I
-19 -1: (Ljava/util/Date;)J
-12 -1: cldrdata.jar
-4 -1: path
-77 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)V
-6 -1: MS1250
-37 -1: setJavaSecurityProtectionDomainAccess
-11 -1: isDelimiter
-5 -1: char0
-6 -1: MS1251
-5 -1: char1
-16 -1: getJavaNetAccess
-6 -1: MS1252
-6 -1: MS1253
-6 -1: MS1254
-51 -1: (Ljava/lang/Class;)Ljava/security/ProtectionDomain;
-6 -1: MS1257
-93 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class<*>;
-10 -1: access$300
-5 -1: (JZ)C
-19 -1: (Ljava/util/Date;)Z
-5 -1: (JZ)D
-26 -1: java/lang/Character$Subset
-10 -1: access$302
-5 -1: (JZ)F
-9 -1: emptyList
-5 -1: (JZ)I
-5 -1: (JZ)J
-23 -1: (Ljava/lang/Runnable;)V
-27 -1: java/lang/invoke/MemberName
-29 -1: ()Ljava/util/Comparator<TT;>;
-18 -1: retrieveDirectives
-7 -1: ([F[F)Z
-40 -1: (Lsun/misc/URLClassPath;Ljava/net/URL;)V
-5 -1: (JZ)S
-40 -1: (Ljava/util/function/IntUnaryOperator;)I
-5 -1: (JZ)V
-16 -1: parseAnnotations
-21 -1: (C)Ljava/lang/String;
-73 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Ljava/util/Map<TK;TV;>;
-15 -1: charset encoder
-17 -1: getDomainCombiner
-9 -1: EmptyList
-15 -1: java.vm.version
-19 -1: getResourceAsStream
-94 -1: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringEncoder;>;>;
-26 -1: java/util/HashMap$TreeNode
-22 -1: (Ljava/util/HashMap;)V
-23 -1: sun/misc/URLClassPath$1
-65 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;)Ljava/net/URLClassLoader;
-20 -1: Hashtable Enumerator
-23 -1: sun/misc/URLClassPath$2
-10 -1: Array.java
-8 -1: FT_LIMIT
-24 -1: ()[Ljava/lang/Throwable;
-23 -1: sun/misc/URLClassPath$3
-14 -1: java/io/Writer
-5 -1: chars
-76 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/NavigableMap<TK;TV;>;
-6 -1:  final
-5 -1: error
-34 -1: java/lang/ApplicationShutdownHooks
-29 -1: Lsun/launcher/LauncherHelper;
-30 -1: ()Ljava/util/Enumeration<TE;>;
-47 -1: (Ljava/util/List;)Ljava/lang/invoke/MethodType;
-9 -1: scriptKey
-5 -1: BYTES
-12 -1: getException
-69 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/MethodType;
-14 -1: Illegal Load: 
-189 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V
-66 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask
-29 -1: getJavaIOFileDescriptorAccess
-11 -1: toCodePoint
-15 -1: setCreationTime
-18 -1: NULL_CAUSE_MESSAGE
-8 -1: elements
-32 -1: ()Ljava/nio/charset/CoderResult;
-8 -1: utf-32be
-7 -1: addDate
-4 -1: Cast
-23 -1: sun/misc/JavaLangAccess
-8 -1: 0{1,12}$
-27 -1: (Ljava/util/ArrayList;III)V
-11 -1: lastIndexOf
-14 -1: getCodeSources
-53 -1: (Lsun/util/calendar/CalendarDate;Ljava/lang/String;)V
-17 -1: cachedConstructor
-7 -1: forName
-74 -1: (Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I
-47 -1: (Ljava/lang/Object;)Lsun/reflect/FieldAccessor;
-8 -1: getDebug
-18 -1: currentClassLoader
-49 -1: Illegal leading minus sign on unsigned string %s.
-20 -1: toLowerCaseCharArray
-38 -1: java/util/concurrent/ConcurrentHashMap
-8 -1: isHidden
-92 -1: (Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V
-29 -1: java/lang/ArithmeticException
-26 -1: (Ljava/io/OutputStream;Z)V
-66 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
-38 -1: Ljava/util/Map<Ljava/lang/String;TT;>;
-16 -1: getFindClassTime
-34 -1: ([J)Ljava/util/Spliterator$OfLong;
-24 -1: UnmodifiableNavigableSet
-32 -1: java/lang/ClassNotFoundException
-3 -1: \\n 
-6 -1: SEALED
-14 -1: Flushable.java
-3 -1: HST
-24 -1: (Ljava/lang/Object;JII)Z
-13 -1: toSecondOfDay
-16 -1: thenComparingInt
-26 -1: java/lang/NoSuchFieldError
-18 -1: java/util/Locale$1
-25 -1: [Ljava/util/HashMap$Node;
-75 -1: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-11 -1: x-mswin-936
-32 -1: java/lang/management/MemoryUsage
-25 -1: (JS)Ljava/nio/ByteBuffer;
-25 -1: java/lang/ref/Finalizer$1
-25 -1: java/lang/ref/Finalizer$2
-21 -1: (Ljava/util/BitSet;)V
-25 -1: java/lang/ref/Finalizer$3
-83 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;Ljava/util/Comparator<-TT;>;)TT;
-24 -1: sun/nio/ch/Interruptible
-21 -1: (Ljava/util/BitSet;)Z
-72 -1: ([Ljava/security/ProtectionDomain;Ljava/security/AccessControlContext;)V
-54 -1: Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>;
-34 -1: getConstructorParameterAnnotations
-4 -1: name
-92 -1: <E:Ljava/lang/Enum<TE;>;>Ljava/lang/Object;Ljava/lang/Comparable<TE;>;Ljava/io/Serializable;
-11 -1: FORM_OFFSET
-13 -1: getAliasTable
-5 -1: (DD)D
-23 -1: reflectionFactoryAccess
-221 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-59 -1: (Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
-6 -1: DELETE
-10 -1: returnType
-5 -1: (DD)I
-51 -1: ()Lsun/reflect/generics/repository/FieldRepository;
-8 -1: delegate
-12 -1: OTHER_LETTER
-18 -1: getTransitionIndex
-3 -1: HUP
-10 -1: (IIII[CI)V
-10 -1: ISO_8859-1
-17 -1: ArrayEncoder.java
-10 -1: ISO_8859-2
-34 -1: java/lang/reflect/AnnotatedElement
-10 -1: ISO_8859-4
-27 -1: sun/nio/cs/UTF_16LE$Decoder
-10 -1: ISO_8859-5
-13 -1: prefetchWrite
-9 -1: getFloatB
-10 -1: ISO_8859-7
-37 -1: (I)Ljava/lang/invoke/LambdaForm$Name;
-10 -1: ISO_8859-9
-10 -1: getActions
-11 -1: negateExact
-10 -1: isAbstract
-9 -1: getFloatL
-29 -1: java/lang/ClassValue$Identity
-14 -1: java/io/Reader
-8 -1: getOwner
-24 -1: java/lang/AssertionError
-17 -1: MethodHandle.java
-19 -1: classRedefinedCount
-10 -1: cachedYear
-15 -1: getAndIncrement
-26 -1: java.protocol.handler.pkgs
-14 -1: cleanSomeSlots
-27 -1: java/util/Spliterator$OfInt
-31 -1: getRawExecutableTypeAnnotations
-20 -1: ensureInitialization
-7 -1: os.arch
-57 -1: (Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V
-21 -1: UNSAFE_COPY_THRESHOLD
-20 -1: toUnsignedBigInteger
-82 -1: (Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection<Ljava/lang/Thread;>;
-15 -1: Reflection.java
-12 -1: decryptBlock
-3 -1: \\r 
-8 -1: newArray
-8 -1: Category
-36 -1: java/lang/reflect/GenericDeclaration
-22 -1: (Ljava/lang/String;Z)V
-8 -1: suspend0
-10 -1: getSigners
-22 -1: (Ljava/lang/String;Z)Z
-31 -1: Unable to create temporary file
-117 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
-17 -1: channelsAvailable
-9 -1: Date.java
-13 -1: toIndex < 0: 
-18 -1: mark > position: (
-11 -1: loadConvert
-4 -1: july
-42 -1: (Ljava/math/BigInteger;)Ljava/lang/String;
-6 -1: enable
-47 -1: (Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
-6 -1: unpack
-13 -1: setDayOfMonth
-19 -1: name can't be empty
-16 -1: getExtensionKeys
-15 -1: getAndDecrement
-36 -1: Ljava/lang/ClassValue$ClassValueMap;
-38 -1: (Ljava/lang/Class;Ljava/lang/String;)V
-11 -1: csISOlatin0
-9 -1: retention
-23 -1: system protocol handler
-9 -1: nullsLast
-15 -1: refKindIsStatic
-3 -1:  (\n
-48 -1: sun/launcher/LauncherHelper$ResourceBundleHolder
-29 -1: ()Ljava/util/LinkedList<TE;>;
-11 -1: csISOlatin9
-31 -1: ([CII)Ljava/lang/StringBuilder;
-29 -1: (II)Ljava/lang/StringBuilder;
-7 -1: pdcache
-4 -1: june
-12 -1: ;/?:@&=+$,[]
-141 -1: ([Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)[Ljava/lang/invoke/LambdaForm$Name;
-32 -1: ()[Ljava/util/WeakHashMap$Entry;
-110 -1: (Ljava/lang/Class<*>;ILjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-81 -1: (Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
-46 -1: String value %s exceeds range of unsigned int.
-6 -1: close0
-6 -1: (JDZ)V
-160 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Type;Ljava/lang/reflect/AnnotatedElement;
-12 -1: LinkedValues
-24 -1: java/nio/HeapCharBufferR
-23 -1: jvmVersionInfoAvailable
-16 -1: classLoaderDepth
-33 -1: (Lsun/nio/ch/DirectBuffer;IIIII)V
-32 -1: java/nio/file/attribute/FileTime
-50 -1: java/util/concurrent/ConcurrentHashMap$CounterCell
-73 -1: (Lsun/misc/URLClassPath$JarLoader;Lsun/misc/JarIndex;)Lsun/misc/JarIndex;
-60 -1: (Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
-25 -1: Ljava/lang/ref/Finalizer;
-12 -1: utf-32be-bom
-40 -1: (Ljava/lang/String;ILjava/lang/Object;)V
-9 -1: THROW_UCS
-23 -1: java/util/AbstractMap$1
-23 -1: java/util/AbstractMap$2
-10 -1: x-utf-32be
-4 -1: (S)B
-60 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/LambdaForm;
-20 -1: ResourceBundleHolder
-4 -1: (S)I
-13 -1: getSuppressed
-17 -1: jdk_micro_version
-4 -1: (S)J
-9 -1: isNumeric
-10 -1: variantKey
-8 -1: utf-32le
-47 -1: java/util/concurrent/ConcurrentHashMap$MapEntry
-25 -1: ()Ljava/lang/Class<-TT;>;
-6 -1: closed
-4 -1: (S)S
-15 -1: setStandardTime
-10 -1: ShortCache
-4 -1: (S)V
-40 -1: sun/net/www/MessageHeader$HeaderIterator
-17 -1: jdk_major_version
-8 -1: FXHelper
-6 -1: CENTIM
-19 -1: java/security/Guard
-46 -1: java.lang.invoke.MethodHandle.DUMP_CLASS_FILES
-4 -1: ENUM
-27 -1: Ljava/lang/SecurityManager;
-39 -1: ([Ljava/lang/Class;[Ljava/lang/Class;)Z
-11 -1: getFieldAt0
-12 -1: user.variant
-28 -1: (Ljava/io/DataInputStream;)V
-44 -1: ([JLjava/util/function/LongBinaryOperator;)V
-7 -1: getRoot
-3 -1:  + 
-16 -1: identityHashCode
-25 -1: java/security/Permissions
-16 -1: Ljava/net/Proxy;
-23 -1: java/io/ExpiringCache$1
-5 -1:  more
-10 -1: formatList
-49 -1: (Ljava/lang/String;)Lsun/launcher/LauncherHelper;
-29 -1: Relative path in absolute URI
-11 -1: checkMapped
-8 -1: Checksum
-8 -1: " Radix:
-9 -1: getAndAdd
-9 -1: implReady
-16 -1: SynchronizedList
-30 -1: [Ljava/lang/StackTraceElement;
-5 -1: right
-13 -1: UTF_16BE.java
-4 -1: HEAD
-11 -1: isInvocable
-6 -1: ENDCOM
-15 -1: getPropertiesEx
-6 -1: Unsafe
-7 -1: IBM-819
-37 -1: : 0 <= i2 && i2 < names.length: 0 <= 
-19 -1: filterAndAddHeaders
-22 -1: nativeParkEventPointer
-18 -1: checkPositionIndex
-13 -1: invalid url: 
-25 -1:  out of range from input 
-9 -1: loadClass
-12 -1: encodingName
-9 -1: x-JIS0208
-38 -1: (Ljava/lang/Class;Ljava/lang/Object;)Z
-28 -1: (I)Ljava/lang/reflect/Field;
-17 -1: getJvmVersionInfo
-6 -1: LIJFDV
-21 -1: (D)Ljava/lang/String;
-7 -1: oomeMsg
-30 -1: java/io/InvalidObjectException
-25 -1: java/io/FilterInputStream
-32 -1: Ljava/net/ContentHandlerFactory;
-13 -1: toUnsignedInt
-17 -1: reconstitutionPut
-37 -1: (Ljava/lang/Object;)Ljava/lang/Class;
-14 -1: getContentType
-43 -1: java/util/Collections$SynchronizedSortedSet
-24 -1: (II)Ljava/nio/file/Path;
-25 -1: JAVAFX_APPLICATION_MARKER
-29 -1: (IC)Ljava/lang/StringBuilder;
-13 -1: java/util/Set
-10 -1: clearError
-64 -1: (Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;
-25 -1: java/io/FileInputStream$1
-8 -1: getFirst
-36 -1: (Lsun/reflect/ConstructorAccessor;)V
-84 -1: (Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/NavigableMap;
-42 -1: (Ljava/lang/CharSequence;)Ljava/io/Writer;
-52 -1: ([Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-6 -1: (IFI)V
-62 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Queue<TE;>;
-17 -1: getHeaderFieldInt
-16 -1: CheckedSortedMap
-39 -1: (ZILjava/lang/String;)Ljava/lang/Class;
-10 -1: getterName
-10 -1: Asia/Tokyo
-4 -1: Node
-7 -1: rotate1
-13 -1: Stream closed
-7 -1: rotate2
-9 -1: checkExec
-17 -1: NF_checkExactType
-18 -1: ReverseComparator2
-18 -1: arrayElementGetter
-97 -1: (Ljava/util/ArrayPrefixHelpers$DoubleCumulateTask;Ljava/util/function/DoubleBinaryOperator;[DII)V
-9 -1: iso8859-1
-9 -1: iso8859-2
-9 -1: iso8859-4
-9 -1: iso8859-5
-9 -1: iso8859-7
-16 -1:  getPermissions 
-9 -1: iso8859-9
-9 -1: fromClass
-17 -1:  with modifiers "
-8 -1: isBooted
-24 -1: getCommonPoolParallelism
-10 -1: initialize
-47 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/Set<TT;>;
-17 -1: checkElementIndex
-14 -1: openConnection
-47 -1: (Ljava/lang/Thread;Lsun/nio/ch/Interruptible;)V
-12 -1: isAuthorized
-17 -1: ReduceEntriesTask
-7 -1: command
-24 -1: ArithmeticException.java
-24 -1: ensureOpenOrZipException
-67 -1: (Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate;
-39 -1: Ljava/lang/invoke/MethodHandles$Lookup;
-31 -1: Enclosing constructor not found
-34 -1: ()Lsun/util/calendar/BaseCalendar;
-25 -1: (JLjava/lang/Object;JJJ)V
-12 -1:  > toIndex: 
-22 -1: LocaleObjectCache.java
-19 -1: sun/misc/Launcher$1
-31 -1: java/util/HashMap$EntryIterator
-8 -1: contains
-60 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
-53 -1: (I[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-19 -1: java/io/PrintStream
-42 -1: java/lang/Math$RandomNumberGeneratorHolder
-100 -1: <K:Ljava/lang/Object;>(I)Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;Ljava/lang/Boolean;>;
-14 -1: getCapturedArg
-14 -1: getCodeSigners
-20 -1: mark() not supported
-56 -1: (Lsun/misc/URLClassPath;I)Lsun/misc/URLClassPath$Loader;
-20 -1: java/lang/StrictMath
-14 -1: annotationType
-3 -1: IET
-4 -1: lang
-13 -1: JarEntry.java
-9 -1: ([CIIII)I
-9 -1: canEncode
-5 -1: extra
-30 -1: java/lang/ref/ReferenceQueue$1
-37 -1: java/nio/channels/ReadableByteChannel
-73 -1: (Ljava/util/Map$Entry<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;)Z
-24 -1: java/io/BufferedReader$1
-10 -1: x-utf-32le
-16 -1: methodDescriptor
-25 -1: (IJ)Ljava/nio/ByteBuffer;
-18 -1: getSystemResources
-46 -1: (Ljava/lang/String;I)Ljava/util/regex/Pattern;
-46 -1: (Ljava/net/URL;)Lsun/misc/URLClassPath$Loader;
-20 -1: calendars.properties
-25 -1: implOnUnmappableCharacter
-12 -1: signers_name
-40 -1: (ZILjava/util/Locale;)Ljava/lang/String;
-8 -1: (TE;)TE;
-50 -1: ()Lsun/util/locale/provider/LocaleProviderAdapter;
-11 -1: key is null
-7 -1: encrypt
-21 -1: millisUntilExpiration
-55 -1: Unable to parse property sun.reflect.inflationThreshold
-9 -1: checkExit
-5 -1: SHORT
-43 -1: java/util/Collections$UnmodifiableSortedSet
-10 -1: ISO8859_15
-16 -1: verifyParameters
-24 -1: buildAnnotatedInterfaces
-15 -1: refKindIsSetter
-45 -1: (JLjava/util/function/BiConsumer<-TK;-TV;>;)V
-23 -1: (Ljava/lang/Object;IC)V
-90 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
-30 -1: (Ljava/net/URL;)Ljava/net/URI;
-60 -1: (BLjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;)V
-43 -1: (Ljava/util/Collection;Ljava/lang/Object;)I
-44 -1: (Ljava/net/URLConnection;)Ljava/lang/Object;
-17 -1: Stream not marked
-11 -1: targetCheck
-127 -1: (Ljava/lang/Class<*>;ILjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
-11 -1: debugString
-112 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-43 -1: (Ljava/util/Collection;Ljava/lang/Object;)V
-15 -1: NF_staticOffset
-22 -1: CASE_INSENSITIVE_ORDER
-6 -1: unpark
-29 -1: (Ljava/lang/CharSequence;II)I
-59 -1: Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
-19 -1: defaultFormatLocale
-7 -1: combine
-58 -1: (Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;
-29 -1: (Ljava/lang/CharSequence;II)V
-35 -1: sun/util/calendar/BaseCalendar$Date
-57 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-75 -1: ([Ljava/lang/reflect/Member;[Ljava/lang/String;)[Ljava/lang/reflect/Member;
-15 -1: MethodType_init
-5 -1: (JF)V
-20 -1: AUTOSELECT_FILTERING
-12 -1: invokeStatic
-18 -1: readFileDescriptor
-22 -1: java/lang/Terminator$1
-72 -1: (Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
-17 -1: EMPTY_STACK_TRACE
-13 -1: isSamePackage
-32 -1: ()Ljava/security/DomainCombiner;
-10 -1: decodeLoop
-30 -1: DIRECTIONALITY_EUROPEAN_NUMBER
-112 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/lang/String;
-33 -1: (Ljava/util/function/Predicate;)Z
-35 -1: logincontext  login context results
-17 -1: sun/nio/cs/UTF_16
-13 -1: SingletonList
-5 -1:  end=
-7 -1: getURLs
-17 -1: traceInstructions
-22 -1: generateCustomizedCode
-9 -1: NO_CHANGE
-11 -1: Number.java
-49 -1: <T:Ljava/lang/Object;>(ITT;)Ljava/util/List<TT;>;
-19 -1: checkSpecifyHandler
-8 -1: setValue
-30 -1: (Ljava/net/URL;)Ljava/net/URL;
-22 -1: (Ljava/lang/Object;C)V
-19 -1: Negative capacity: 
-24 -1: ArrayStoreException.java
-52 -1: (Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer;
-14 -1: linkMethodImpl
-42 -1: java/util/InvalidPropertiesFormatException
-4 -1: last
-19 -1: getLocalizedMessage
-65 -1: (Ljava/text/MessageFormat;[Ljava/lang/String;)[Ljava/lang/String;
-61 -1: Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/Object;>;
-40 -1: (I[CII)Ljava/lang/AbstractStringBuilder;
-27 -1: java.launcher.opt.datamodel
-29 -1: (Ljava/lang/reflect/Method;)V
-19 -1: SPECIFICATION_TITLE
-123 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;ILjava/lang/Class;)Lsun/reflect/SerializationConstructorAccessorImpl;
-32 -1: (I[CII)Ljava/lang/StringBuilder;
-29 -1: (Ljava/lang/reflect/Method;)Z
-23 -1: (Z[B)Ljava/lang/String;
-27 -1: sun/nio/cs/Surrogate$Parser
-32 -1: (Ljavax/security/auth/Subject;)Z
-29 -1: ()Ljava/lang/invoke/Invokers;
-7 -1: getPool
-7 -1: textOut
-12 -1: getEntryTime
-14 -1: classModifiers
-47 -1: (Ljava/util/Locale$Category;)Ljava/util/Locale;
-32 -1: getInheritedAccessControlContext
-4 -1: rcbt
-37 -1: (Ljava/lang/Class<*>;Ljava/io/File;)Z
-25 -1: AccessControlContext.java
-22 -1: FileURLConnection.java
-12 -1: NaturalOrder
-34 -1: sun/util/calendar/CalendarSystem$1
-94 -1: ([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
-17 -1: No enum constant 
-7 -1: ([DII)V
-8 -1: register
-23 -1: FINAL_QUOTE_PUNCTUATION
-27 -1: ACCESS_CLIPBOARD_PERMISSION
-15 -1: verifyConstants
-20 -1: (Ljava/io/Writer;I)V
-45 -1: (Ljava/lang/String;)Ljava/lang/reflect/Field;
-24 -1: linkMethodHandleConstant
-43 -1: (Ljava/io/OutputStream;Ljava/lang/String;)V
-125 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Comparator<-TV;>;)Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
-14 -1: ALL_PERMISSION
-12 -1: createObject
-10 -1: CRC32.java
-14 -1: reservedMemory
-22 -1: ensureCapacityInternal
-11 -1: FormatData_
-9 -1: maxMemory
-27 -1: (I)Ljava/util/ListIterator;
-8 -1: UTF-16BE
-27 -1: AbstractSequentialList.java
-10 -1: access$400
-16 -1: Locale settings:
-10 -1: access$402
-12 -1: HashSet.java
-24 -1: java/lang/Long$LongCache
-30 -1: [Ljava/lang/reflect/Parameter;
-11 -1: single_step
-45 -1: (Ljava/lang/String;)Lsun/security/util/Debug;
-97 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/SimpleMethodHandle;
-16 -1: indexOfBangSlash
-7 -1: region=
-26 -1: ([BII)Ljava/lang/Class<*>;
-8 -1: bitCount
-3 -1: INT
-67 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/function/IntFunction<+TT;>;)V
-35 -1: newGetFloatIllegalArgumentException
-11 -1: ([DII[DII)V
-22 -1: makePreparedLambdaForm
-3 -1:  < 
-35 -1: sun/management/GarbageCollectorImpl
-4 -1: (*)*
-7 -1: getPort
-18 -1: java/io/FileSystem
-7 -1: getNode
-38 -1: (Ljava/lang/Object;I)Ljava/lang/Class;
-36 -1: $SwitchMap$java$util$Locale$Category
-18 -1: securityCheckCache
-5 -1: cdate
-10 -1: childValue
-19 -1: getMainClassFromJar
-70 -1: <T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)TT;
-20 -1: unsuspendSomeThreads
-29 -1: sun.classloader.findClassTime
-11 -1: plusSeconds
-3 -1:  = 
-4 -1: Lock
-7 -1: regions
-38 -1: ()Ljava/lang/reflect/Constructor<TT;>;
-25 -1: parseParameterAnnotations
-20 -1: getSystemGMTOffsetID
-33 -1: [Cc][Oo][Dd][Ee][Bb][Aa][Ss][Ee]=
-37 -1: (Ljava/lang/String;I)Ljava/lang/Byte;
-10 -1: permission
-78 -1: (Ljava/lang/reflect/Constructor;)Lsun/reflect/generics/scope/ConstructorScope;
-28 -1: (Lsun/misc/JavaLangAccess;)V
-26 -1: GET_CLASSLOADER_PERMISSION
-24 -1: (J)Ljava/nio/ByteBuffer;
-20 -1: getUnresolvedActions
-49 -1: (I[BIILsun/security/util/ManifestEntryVerifier;)V
-5 -1: (ZJ)V
-14 -1: isClassOnlyJar
-35 -1: ()[Ljava/util/HashMap$Node<TK;TV;>;
-23 -1: ()Ljava/util/SortedMap;
-29 -1: HistoricallyNamedCharset.java
-30 -1: no leading reference parameter
-8 -1: csCESU-8
-3 -1:  > 
-13 -1: invoke_LLLL_L
-109 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;+TV;>;)Ljava/util/NavigableMap<TK;TV;>;
-13 -1: invoke_LLLL_V
-46 -1: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Field;
-5 -1: offer
-12 -1: isoLanguages
-61 -1: (Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V
-44 -1: sun/reflect/BootstrapConstructorAccessorImpl
-12 -1: BaseIterator
-58 -1: (IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;
-23 -1: initializeOSEnvironment
-62 -1: ([Ljava/security/cert/Certificate;)[Ljava/security/CodeSigner;
-3 -1:  >>
-13 -1: searchEntries
-7 -1: setDate
-3 -1: red
-3 -1: ref
-10 -1: EMPTY_LIST
-3 -1: rem
-78 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/List<TE;>;
-9 -1: scanToken
-6 -1: greek8
-9 -1: basicType
-12 -1: getFromClass
-43 -1: averageCharsPerByte exceeds maxCharsPerByte
-8 -1: isDaemon
-7 -1: nonNull
-17 -1: Invalid default: 
-45 -1: (Lsun/misc/URLClassPath;Ljava/lang/String;Z)V
-18 -1: java/lang/String$1
-11 -1: copyMethods
-15 -1: sun/misc/Signal
-5 -1: float
-18 -1: StreamDecoder.java
-19 -1: no such constructor
-14 -1: bad arity for 
-14 -1: divideUnsigned
-10 -1: CODING_END
-3 -1: IST
-14 -1: HeaderIterator
-9 -1: september
-20 -1: makeVarargsCollector
-6 -1: L_PATH
-45 -1: (Ljava/lang/String;)Ljava/io/File$PathStatus;
-24 -1: URI scheme is not "file"
-85 -1: (Ljava/lang/Class<TT;>;Ljava/lang/Class<TV;>;Ljava/lang/String;Ljava/lang/Class<*>;)V
-27 -1: java/util/function/Supplier
-17 -1: checkedCollection
-8 -1: MapEntry
-81 -1: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
-34 -1: java/security/ProtectionDomain$Key
-14 -1: List length = 
-39 -1: ([Ljava/lang/Object;)Ljava/lang/String;
-87 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-7 -1: unparse
-28 -1: jarFileHasClassPathAttribute
-40 -1: (Lsun/misc/JavaIOFileDescriptorAccess;)V
-30 -1: (Ljava/lang/reflect/Field;ZZ)V
-22 -1: GetPropertyAction.java
-8 -1: RUNNABLE
-10 -1: exprString
-13 -1: getAnnotation
-19 -1: class can't be null
-22 -1: defaultAssertionStatus
-8 -1: getName0
-16 -1: quoteReplacement
-15 -1: getMemberVMInfo
-42 -1: (Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
-16 -1: cachedLambdaForm
-16 -1: addFinalRefCount
-12 -1: getMethodAt0
-8 -1: ([ZII)[Z
-44 -1: (Ljava/lang/Object;TV;Ljava/lang/Object;)TV;
-4 -1: [TT;
-29 -1: Ljava/lang/invoke/LambdaForm;
-28 -1: java/util/DualPivotQuicksort
-61 -1: ()Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
-17 -1: registerDirectory
-8 -1: jarFiles
-69 -1: (Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;
-54 -1: [Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-15 -1: getDefaultValue
-39 -1: sun/util/calendar/ZoneInfoFile$Checksum
-20 -1: DISABLE_JAR_CHECKING
-12 -1: CONTENT_TYPE
-46 -1: array type not assignable to trailing argument
-60 -1: <T:Ljava/lang/Object;>([TT;II)Ljava/util/stream/Stream<TT;>;
-47 -1: java.lang.invoke.MethodHandle.COMPILE_THRESHOLD
-9 -1: toInstant
-152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/NavigableMap<TK;TV;>;
-7 -1: L_ALPHA
-29 -1: java/lang/AbstractMethodError
-29 -1: java/util/jar/Attributes$Name
-15 -1: LOCALE_SETTINGS
-19 -1: (J)Ljava/lang/Long;
-4 -1: jar:
-17 -1: ensureInitialized
-13 -1: LAST_MODIFIED
-40 -1: ([Ljava/lang/String;)[Ljava/lang/String;
-7 -1: shuffle
-70 -1: (Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder;
-19 -1: isPackageAccessible
-17 -1: compileToBytecode
-11 -1: getPackages
-237 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-53 -1: java/util/concurrent/ConcurrentHashMap$KeySpliterator
-26 -1: setURLStreamHandlerFactory
-47 -1: access        print all checkPermission results
-22 -1: sun/reflect/MethodInfo
-75 -1: (Ljava/lang/String;ZLjava/util/Set<Ljava/lang/String;>;)Lsun/misc/Resource;
-6 -1: KOI8-R
-14 -1: Character.java
-5 -1: (SS)I
-8 -1: unshared
-73 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
-19 -1: replacementTreeNode
-10 -1: BA_REGULAR
-8 -1: UTF-16LE
-44 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)V
-22 -1: InputStreamReader.java
-17 -1: getInvocationType
-23 -1: getDeclaredConstructors
-48 -1: [Lsun/reflect/generics/tree/FormalTypeParameter;
-67 -1: (Ljava/util/Comparator;Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
-6 -1: koi8_r
-14 -1: ofTotalSeconds
-16 -1: content-encoding
-6 -1: koi8_u
-10 -1: getEncoded
-6 -1: ()[TT;
-43 -1: ([ILjava/util/function/IntUnaryOperator;I)V
-18 -1: getSecurityContext
-13 -1: LF_GEN_LINKER
-78 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
-49 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V
-19 -1: LinkedEntryIterator
-23 -1: Warning: JIT compiler "
-7 -1: static 
-100 -1: (Ljava/lang/Class;ZLjava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Ljava/util/List;
-79 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;)Ljava/util/Collection<TT;>;
-10 -1: iso-ir-100
-10 -1: iso-ir-101
-13 -1: toUpperString
-31 -1: ()Ljava/util/Spliterator$OfInt;
-43 -1: Ljava/lang/StringIndexOutOfBoundsException;
-19 -1: Lsun/misc/JarIndex;
-7 -1: Version
-90 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
-10 -1: getHandler
-45 -1: (ILjava/lang/Object;)Ljava/lang/StringBuffer;
-28 -1: getDeclaredAnnotationsByType
-46 -1: ([Ljava/lang/Class;Ljava/lang/StringBuilder;)V
-53 -1: ()Ljava/util/Enumeration<Ljava/security/Permission;>;
-15 -1: addAllNonStatic
-10 -1: iso-ir-110
-14 -1:     Using VM: 
-17 -1: casReflectionData
-26 -1: (Lsun/util/PreHashedMap;)I
-24 -1: removeByNameAndSignature
-4 -1: OS X
-85 -1: (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Z
-16 -1: JarEntryIterator
-38 -1: Ljava/lang/Class<Ljava/lang/Integer;>;
-37 -1: Ljava/lang/Class<Ljava/lang/Double;>;
-28 -1: ([Ljava/util/HashMap$Node;)V
-34 -1: java/lang/reflect/GenericArrayType
-14 -1: annotationData
-26 -1: (Lsun/util/PreHashedMap;)V
-22 -1: checkPackageDefinition
-30 -1: ACCUMULATED_DAYS_IN_MONTH_LEAP
-12 -1: lowestOneBit
-64 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)V
-16 -1: asReadOnlyBuffer
-11 -1: getRealName
-17 -1: StringCoding.java
-10 -1: iso-ir-126
-11 -1: isSurrogate
-8 -1: setError
-138 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
-8 -1: (TK;)TK;
-4 -1: java
-136 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)TT;
-36 -1: ()Lsun/util/locale/LocaleExtensions;
-12 -1: doubleStream
-28 -1: ()Ljava/util/SimpleTimeZone;
-7 -1: :@&=+$,
-94 -1: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringDecoder;>;>;
-64 -1: (Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-19 -1: getSystemTimeZoneID
-18 -1: ReentrantLock.java
-8 -1: emptyMap
-16 -1: getSavedProperty
-249 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-14 -1: KeySpliterator
-13 -1: findResources
-14 -1: forWrapperType
-8 -1: floorMod
-12 -1: isoCountries
-10 -1: CheckedSet
-21 -1: AbstractCalendar.java
-12 -1: IS_INVOCABLE
-45 -1: (Ljava/lang/Class;)Lsun/reflect/ConstantPool;
-19 -1: checkSecurityAccess
-13 -1: Invalid index
-28 -1: STACK_TRACE_ELEMENT_SENTINEL
-88 -1: (ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-130 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-14 -1: aliases_IBM437
-10 -1: iso-ir-144
-10 -1: iso-ir-148
-35 -1: ()Ljava/nio/charset/CharsetDecoder;
-95 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-16 -1: UnmodifiableList
-40 -1: ()Ljava/util/concurrent/locks/Condition;
-9 -1: Path.java
-80 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/util/Map;
-36 -1: Ljava/lang/Class<Ljava/lang/Float;>;
-124 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/Object;
-20 -1: privateGetParameters
-24 -1: sun/nio/cs/StreamDecoder
-12 -1: getFreeSpace
-8 -1: US-ASCII
-22 -1: negativeZeroDoubleBits
-9 -1: putObject
-13 -1: linkToVirtual
-35 -1: Ljava/lang/Class<Ljava/lang/Long;>;
-15 -1: detectedCharset
-26 -1: java/lang/reflect/Modifier
-22 -1: JAVAFX_LAUNCH_MODE_JAR
-32 -1: java/net/URLStreamHandlerFactory
-7 -1: IBM-923
-80 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/String;
-13 -1: TRANSFERINDEX
-34 -1: (Lsun/nio/cs/StandardCharsets$1;)V
-23 -1: ()Ljava/io/InputStream;
-16 -1: ()Ljava/io/File;
-41 -1: (Ljava/lang/String;)Ljava/nio/ByteBuffer;
-22 -1: sun/reflect/Reflection
-23 -1: java/lang/AutoCloseable
-25 -1: BootstrapMethodError.java
-19 -1: EnclosingMethodInfo
-13 -1: transferIndex
-18 -1: java/lang/Compiler
-4 -1: zero
-29 -1: java/util/Arrays$NaturalOrder
-9 -1: language=
-37 -1: Ljava/util/ArrayList<Ljava/net/URL;>;
-73 -1: ()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-16 -1: balanceInsertion
-82 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-11 -1: asIntBuffer
-27 -1: (Ljava/util/LinkedList;II)V
-13 -1: ofEpochSecond
-19 -1: sunjce_provider.jar
-21 -1: (F)Ljava/lang/String;
-32 -1:  >> does not contain binding << 
-21 -1: declaredPublicMethods
-5 -1: FIELD
-17 -1: getPrimitiveClass
-127 -1: (Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;Ljava/lang/Class;Ljava/lang/String;)V
-21 -1: replaceParameterTypes
-73 -1: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/security/PermissionCollection;>;
-21 -1: (Ljava/lang/Double;)I
-5 -1: floor
-4 -1: halt
-14 -1: newConstructor
-48 -1: (Ljava/util/function/BiFunction<-TK;-TV;+TV;>;)V
-17 -1: packageAccessLock
-15 -1: America/Phoenix
-19 -1: Incoming arguments:
-11 -1: V_Monotonic
-14 -1: decrementExact
-15 -1: updatePositions
-14 -1: toLocaleString
-12 -1: appendEscape
-7 -1: DISPLAY
-27 -1: sun/nio/cs/US_ASCII$Decoder
-13 -1: LITTLE_ENDIAN
-6 -1: isNull
-13 -1: TempDirectory
-6 -1: LM_JAR
-39 -1: JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
-10 -1: isCompiled
-36 -1: (Ljava/lang/AbstractStringBuilder;)Z
-3 -1: run
-17 -1: START_PUNCTUATION
-33 -1: Ljava/util/Stack<Ljava/net/URL;>;
-49 -1: (Ljava/lang/String;)Ljava/lang/invoke/LambdaForm;
-28 -1: java/security/DomainCombiner
-53 -1: (Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId;
-81 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)[Ljava/lang/reflect/AnnotatedType;
-43 -1: java/lang/management/GarbageCollectorMXBean
-11 -1: toTitleCase
-12 -1: getHoldCount
-4 -1: ()[B
-4 -1: ()[C
-4 -1: ()[J
-20 -1: (Ljava/io/File;IZZ)Z
-18 -1: fileTimeToUnixTime
-23 -1: java/nio/HeapCharBuffer
-30 -1: Ljava/lang/ref/ReferenceQueue;
-6 -1: rt.jar
-69 -1: (Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-21 -1: java/lang/ThreadLocal
-25 -1: Ljava/lang/reflect/Field;
-44 -1: (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
-93 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/MethodHandle;
-22 -1: getDayOfWeekDateBefore
-37 -1: [Lsun/reflect/generics/tree/TypeTree;
-83 -1: <E:Ljava/lang/Object;>(Ljava/util/Map<TE;Ljava/lang/Boolean;>;)Ljava/util/Set<TE;>;
-10 -1: readFields
-42 -1: (Ljava/net/URL;)Ljava/security/CodeSource;
-44 -1: (Ljava/lang/String;IIJ)Ljava/nio/ByteBuffer;
-27 -1: Ljava/util/Collection<TE;>;
-13 -1: checkResource
-7 -1: rename0
-51 -1: (C)Ljava/lang/invoke/BoundMethodHandle$SpeciesData;
-47 -1: sun/reflect/generics/repository/FieldRepository
-11 -1: readBoolean
-134 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-13 -1: getZoneOffset
-17 -1: getJdkVersionInfo
-21 -1: sun/misc/MessageUtils
-23 -1: defaultAllowArraySyntax
-31 -1: java/util/concurrent/locks/Lock
-24 -1: java/lang/reflect/Method
-7 -1: toUpper
-17 -1: sun/misc/Signal$1
-51 -1: (JLjava/util/function/BiFunction<-TK;-TK;+TK;>;)TK;
-28 -1: (Ljava/lang/ref/Reference;)Z
-8 -1: nthreads
-26 -1: MapReduceEntriesToLongTask
-27 -1: (Ljava/util/NavigableSet;)V
-10 -1: savedProps
-25 -1: Lsun/security/util/Debug;
-12 -1: CR_MALFORMED
-13 -1: com.sun.proxy
-17 -1: CharSequence.java
-24 -1: (ILjava/lang/String;II)Z
-13 -1: findNextValue
-108 -1: <K::Ljava/lang/Comparable<-TK;>;V:Ljava/lang/Object;>()Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
-5 -1: (FF)F
-9 -1: typeClass
-5 -1: (FF)I
-11 -1: segmentMask
-7 -1: (JJJJ)V
-14 -1: aliases_CESU_8
-85 -1: (Ljava/lang/Class;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
-15 -1: getCalendarDate
-21 -1: getDeclaredAnnotation
-8 -1: ([BIIB)I
-15 -1: stripExtensions
-14 -1: getISO3Country
-5 -1: short
-47 -1: String value %s exceeds range of unsigned long.
-34 -1: ()Ljava/security/ProtectionDomain;
-8 -1: ([BIIB)V
-23 -1: (Ljava/lang/Object;ID)V
-47 -1: (Ljava/lang/String;Ljava/nio/charset/Charset;)V
-29 -1: RuntimeVisibleTypeAnnotations
-24 -1: (Ljava/io/InputStream;)V
-39 -1: (Ljava/lang/Class;Ljava/lang/String;Z)V
-16 -1: convertPrimitive
-8 -1: (TK;)TV;
-24 -1: (Ljava/io/InputStream;)Z
-6 -1: start 
-243 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-9 -1: asSpecial
-20 -1: java/text/Normalizer
-17 -1: DAYS_0000_TO_1970
-9 -1: toCharset
-20 -1: REPLACEALL_THRESHOLD
-20 -1: sun/net/util/URLUtil
-16 -1: findLoadedClass0
-14 -1: localedata.jar
-6 -1: Parser
-6 -1: start0
-4 -1: hash
-83 -1: (Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-29 -1: Ljava/lang/invoke/MemberName;
-8 -1: BOOT_TAG
-22 -1: MH_LINKER_ARG_APPENDED
-14 -1: comparingByKey
-47 -1: ([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
-6 -1: start=
-18 -1: StringBuilder.java
-7 -1: getLong
-12 -1: copyElements
-16 -1: highResFrequency
-11 -1: toGMTString
-10 -1: ISO_8859_1
-10 -1: ISO_8859_2
-6 -1: result
-10 -1: ISO_8859_4
-10 -1: ISO_8859_5
-10 -1: ISO_8859_7
-15 -1: unmodifiableSet
-10 -1: ISO_8859_9
-25 -1: NoClassDefFoundError.java
-42 -1: (Ljava/lang/String;)Ljava/util/LinkedList;
-14 -1: parallelPrefix
-22 -1: ARRAY_LONG_INDEX_SCALE
-6 -1: resume
-36 -1: Ljava/lang/invoke/LambdaForm$Hidden;
-50 -1: java/util/Collections$UnmodifiableRandomAccessList
-130 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-6 -1: getInt
-13 -1: getCachedYear
-21 -1: CONNECTOR_PUNCTUATION
-73 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;ILjava/lang/Class;)V
-24 -1: [Lsun/util/calendar/Era;
-22 -1: (Ljava/lang/Object;D)V
-74 -1: (Ljava/security/AccessControlContext;)Ljava/security/AccessControlContext;
-109 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Ljava/lang/Class$AnnotationData;Ljava/lang/Class$AnnotationData;)Z
-6 -1: ([CZ)V
-74 -1: (Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-19 -1: TRADITIONAL_CHINESE
-125 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-18 -1: unknown protocol: 
-57 -1: (Ljava/lang/reflect/Method;Lsun/reflect/MethodAccessor;)V
-13 -1: writeComments
-9 -1: Negotiate
-14 -1: Closeable.java
-10 -1: asSpreader
-122 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey;
-17 -1: jvm_minor_version
-9 -1: getDouble
-25 -1: Ljava/io/File$PathStatus;
-19 -1: averageCharsPerByte
-22 -1: getConstructorAccessor
-61 -1: (Ljava/lang/String;)Ljava/lang/management/MemoryManagerMBean;
-45 -1: (Ljava/lang/String;)Ljava/util/regex/Pattern;
-25 -1: (JC)Ljava/nio/ByteBuffer;
-20 -1: exclusiveOwnerThread
-85 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)V
-17 -1: getExtensionValue
-14 -1: getLoadAverage
-17 -1: GET_PD_PERMISSION
-6 -1: METHOD
-23 -1: sun/nio/cs/ISO_8859_1$1
-23 -1: (I[Ljava/lang/Object;)I
-4 1: zzz1
-13 -1: createWrapper
-4 1: zzz2
-4 1: zzz3
-33 -1:  greater than Character.MAX_RADIX
-37 -1: DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
-6 -1: BRIDGE
-20 -1: canonicalizeLanguage
-13 -1: setPermission
-46 -1: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
-3 -1: 646
-14 -1: java/lang/Long
-55 -1: java/util/concurrent/ConcurrentHashMap$SearchValuesTask
-38 -1: (IC)Ljava/lang/invoke/LambdaForm$Name;
-37 -1: (Ljava/lang/Class;)Ljava/lang/String;
-17 -1: javaUtilJarAccess
-23 -1: registerMethodsToFilter
-34 -1: (Ljava/nio/charset/Charset;[CII)[B
-11 -1: % VERSION 2
-37 -1: ([DI)Ljava/util/Spliterator$OfDouble;
-16 -1:     Stack Size: 
-52 -1: (Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
-17 -1: putDoubleVolatile
-10 -1: access$500
-10 -1: access$502
-28 -1: malformed input around byte 
-13 -1: LF_INVSPECIAL
-32 -1: Non-positive averageCharsPerByte
-14 -1: NF_fieldOffset
-10 -1: access$508
-48 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/List<TT;>;
-17 -1: defaultReadObject
-17 -1: java/util/TimSort
-13 -1: resolveClass0
-92 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-20 -1: setLangReflectAccess
-30 -1: java/lang/reflect/TypeVariable
-56 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/Spliterator<TT;>;
-8 -1: VOLATILE
-10 -1: Big5-HKSCS
-23 -1: (Ljava/util/Locale$1;)V
-15 -1: ISO_8859-1:1987
-14 -1: no such method
-10 -1: null value
-8 -1: checkURL
-22 -1: ARRAY_BYTE_INDEX_SCALE
-27 -1: (Ljava/lang/ClassLoader;Z)V
-22 -1: java/lang/reflect/Type
-25 -1: java/net/JarURLConnection
-36 -1: java/util/WeakHashMap$KeySpliterator
-26 -1: ()Lsun/misc/JavaAWTAccess;
-50 -1: (I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-9 -1: toDegrees
-12 -1: lowSurrogate
-19 -1: getEnclosingMethod0
-7 -1: bytearr
-35 -1: (Ljava/util/List;Ljava/util/List;)I
-25 -1: [Ljava/lang/reflect/Type;
-34 -1: javaSecurityProtectionDomainAccess
-21 -1: java.launcher.X.usage
-37 -1: sun/util/locale/InternalLocaleBuilder
-33 -1: ()Ljava/lang/invoke/MethodHandle;
-3 -1: scl
-19 -1: synthesizeAllParams
-68 -1: Ljava/util/Map<Ljava/lang/String;[Ljava/security/cert/Certificate;>;
-6 -1: vclass
-35 -1: (Ljava/util/List;Ljava/util/List;)V
-59 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Float;>;
-13 -1: CallSite.java
-10 1: Bar loaded
-21 -1: ARRAY_INT_BASE_OFFSET
-49 -1: Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-32 -1: [Ljava/lang/reflect/Constructor;
-4 -1: type
-34 -1: <T:Ljava/lang/Object;>([TT;II)[TT;
-25 -1: BufferedOutputStream.java
-23 -1: java/util/zip/ZipFile$1
-24 -1: ()Ljava/lang/ClassValue;
-50 -1: (Ljava/util/concurrent/CountedCompleter;[F[FIIII)V
-16 -1: getQueuedThreads
-26 -1: getJavaNetHttpCookieAccess
-8 -1: setExtra
-8 -1: implRead
-20 -1: linkMethod => throw 
-76 -1: (Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I
-11 -1: KeyIterator
-39 -1: Ljava/util/List<Ljava/lang/Throwable;>;
-3 -1: " "
-36 -1: Ljava/lang/IllegalArgumentException;
-11 -1: checkBounds
-30 -1: sun/nio/cs/FastCharsetProvider
-11 -1: toLongArray
-107 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;IILjava/lang/String;[B)Ljava/lang/reflect/Field;
-8 -1:  (build 
-39 -1: (Ljava/nio/Buffer;ILjava/nio/Buffer;I)V
-31 -1: [Ljava/lang/reflect/Executable;
-3 -1: set
-21 -1: PhantomReference.java
-41 -1: java/util/Collections$CheckedNavigableMap
-53 -1: Can not make a java.lang.Class constructor accessible
-12 -1: ([CII[CIII)I
-55 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Void;>;
-12 -1: MICROSECONDS
-11 -1: writeBuffer
-52 -1:               and domain that didn't have permission
-37 -1: java/nio/channels/WritableByteChannel
-26 -1: getRawClassTypeAnnotations
-15 -1: putCharVolatile
-33 -1: java/security/InvalidKeyException
-19 -1: Ljava/io/Closeable;
-83 -1: Lsun/util/locale/LocaleObjectCache<Ljava/util/Locale$LocaleKey;Ljava/util/Locale;>;
-10 -1: SetFromMap
-24 -1: JavaFX-Application-Class
-13 -1: asShortBuffer
-10 -1: getReifier
-15 -1: isPositionIndex
-18 -1: SignalHandler.java
-3 -1: JST
-28 -1: (Ljava/io/FileDescriptor;I)I
-28 -1: getStackAccessControlContext
-16 -1: updateByteBuffer
-27 -1: ()Ljava/net/ContentHandler;
-25 -1: (JD)Ljava/nio/ByteBuffer;
-39 -1: ()Lsun/misc/JavaIOFileDescriptorAccess;
-107 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-42 -1: sun/misc/PerfCounter$WindowsClientCounters
-8 -1: addExact
-28 -1: (Ljava/io/FileDescriptor;I)V
-36 -1: ([Ljava/lang/String;)Ljava/util/Map;
-21 -1: ()Ljava/lang/Process;
-4 -1: UTF8
-5 -1: mkdir
-10 -1: transient 
-3 -1: sgp
-15 -1: balanceDeletion
-161 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;
-15 -1: SynchronizedMap
-40 -1: sun.misc.URLClassPath.disableJarChecking
-92 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/io/Serializable;
-17 -1: removeEldestEntry
-35 -1: (I)Ljava/lang/Class$AnnotationData;
-24 -1: Ljava/util/Locale$Cache;
-13 -1: STANDARD_TIME
-17 -1: sun/nio/cs/MS1252
-99 -1: <K:Ljava/lang/Object;>()Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;Ljava/lang/Boolean;>;
-23 -1: java/util/LinkedHashSet
-9 -1: iso8859_1
-9 -1: iso8859_2
-9 -1: iso8859_4
-66 -1: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)[TA;
-9 -1: iso8859_5
-9 -1: iso8859_7
-9 -1: iso8859_9
-21 -1: Ljava/util/Formatter;
-6 -1: isPath
-21 -1: makeReferenceIdentity
-24 -1: sun/net/ApplicationProxy
-23 -1: ClassCastException.java
-11 -1: MethodArray
-12 -1: SingletonMap
-41 -1: java/util/ArrayPrefixHelpers$CumulateTask
-7 -1: seconds
-20 -1: ClassRepository.java
-14 -1: allocateMemory
-24 -1: java.launcher.jar.error1
-24 -1: java.launcher.jar.error2
-24 -1: java.launcher.jar.error3
-45 -1: (Ljava/lang/String;Ljava/util/jar/Manifest;)Z
-3 -1: sin
-7 -1: (J[II)I
-3 -1: Itr
-18 -1: findBootstrapClass
-10 -1: getElement
-15 -1: ISO_8859-4:1988
-34 -1: newGetLongIllegalArgumentException
-7 -1: pending
-17 -1: isNotContinuation
-6 -1: EXTSIG
-13 -1: searchMethods
-32 -1: Lsun/misc/JavaUtilZipFileAccess;
-33 -1: ([Ljava/lang/reflect/Parameter;)V
-31 -1: defaultUncaughtExceptionHandler
-89 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind<*>;)Ljava/nio/file/WatchKey;
-5 -1: ASCII
-28 -1: ()Lsun/reflect/ConstantPool;
-20 -1: isJavaIdentifierPart
-6 -1: EXTSIZ
-34 -1: Lsun/misc/JavaNetHttpCookieAccess;
-34 -1: ClassLoader object not initialized
-7 -1: CHECKED
-16 -1: encodeBufferLoop
-37 -1: (Ljava/time/Instant;)Ljava/util/Date;
-24 -1: (Ljava/util/Map$Entry;)Z
-50 -1: java/util/concurrent/ConcurrentHashMap$KeyIterator
-31 -1: ()[Ljava/lang/ClassValue$Entry;
-31 -1: java/lang/IllegalStateException
-43 -1: (Ljava/lang/Appendable;Ljava/util/Locale;)V
-6 -1: CENVEM
-53 -1: Ljava/util/ArrayList<Lsun/misc/URLClassPath$Loader;>;
-17 -1: getHeaderFieldKey
-71 -1: (Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;
-6 -1: CENVER
-17 -1: cleanStaleEntries
-9 -1: linkFirst
-57 -1: (Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
-8 -1: val$file
-27 -1: Invalid parameter modifiers
-6 -1: append
-57 -1: ()Lsun/reflect/generics/repository/ConstructorRepository;
-65 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask
-39 -1: (Ljava/lang/String;)Ljava/lang/Integer;
-25 -1: lambda$parallelSetAll$191
-25 -1: lambda$parallelSetAll$192
-25 -1: lambda$parallelSetAll$193
-23 -1: INSERTIONSORT_THRESHOLD
-17 -1: java/time/Instant
-25 -1: lambda$parallelSetAll$194
-14 -1: dynamicInvoker
-9 -1: iso646-us
-8 -1: position
-29 -1: java/nio/channels/FileChannel
-27 -1: java/util/stream/Collectors
-64 -1: (Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
-10 -1: INDEX_NAME
-15 -1: getCommentBytes
-67 -1: (Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream;
-22 -1: privateGetPublicFields
-32 -1: java/util/BitSet$1BitSetIterator
-12 -1: PERF_MODE_RO
-89 -1: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;Z)Ljava/lang/ClassValue$Entry;
-30 -1: java/security/PrivilegedAction
-18 -1: host can't be null
-26 -1: package name can't be null
-12 -1: PERF_MODE_RW
-10 -1: isEnqueued
-18 -1: argSlotToParameter
-37 -1: (II)Ljava/lang/AbstractStringBuilder;
-5 -1: tabAt
-53 -1: (Ljava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-11 -1: PATH_OFFSET
-18 -1: unicodebigunmarked
-15 -1: ConditionObject
-6 -1: KOREAN
-13 -1: isNamePresent
-24 -1: ()Ljava/lang/Class<TE;>;
-14 -1: isStandardTime
-8 -1: ([IIII)I
-9 -1: WeakEntry
-12 -1: javaIOAccess
-17 -1: key can't be null
-129 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/file/Path;>;Ljava/lang/Iterable<Ljava/nio/file/Path;>;Ljava/nio/file/Watchable;
-8 -1:  handler
-8 -1: ([IIII)V
-10 -1: atBugLevel
-18 -1: makeGuardWithCatch
-18 -1: currentLoadedClass
-11 -1: getCodeBase
-67 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+TT;>;)Ljava/util/List<TT;>;
-12 -1: JarFile.java
-19 -1: (C)Ljava/io/Writer;
-22 -1: createURLStreamHandler
-23 -1: sun/nio/cs/ArrayDecoder
-13 -1: setAccessible
-18 -1: stripOffParameters
-101 -1: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
-18 -1: Ljava/util/Random;
-16 -1: Pacific/Honolulu
-13 -1: useOldMapping
-65 -1: (Ljava/lang/invoke/LambdaForm$NamedFunction;[Ljava/lang/Object;)V
-14 -1: filterArgument
-12 -1: LF_MH_LINKER
-25 -1: isDirectMemoryPageAligned
-49 -1: (Ljava/util/BitSet;)Ljava/util/function/Supplier;
-54 -1: (Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;TV;)V
-16 -1: java/time/ZoneId
-4 -1: zfot
-18 -1: isSameClassPackage
-6 -1: julian
-8 -1: (TT;)TT;
-22 -1: java/util/jar/Manifest
-7 -1: charOut
-16 -1: getOffsetsByWall
-19 -1: Illegal replacement
-139 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/List<TE;>;Ljava/util/RandomAccess;Ljava/lang/Cloneable;Ljava/io/Serializable;
-96 -1: <T:Ljava/lang/Object;>(Ljava/lang/reflect/Constructor<TT;>;)Ljava/lang/reflect/Constructor<TT;>;
-15 -1: Annotation.java
-24 -1: (Ljava/lang/Class<*>;)[B
-6 -1: CODING
-34 -1: ([Ljava/lang/ClassValue$Entry;II)V
-6 -1: IGNORE
-62 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-29 -1: specificToGenericStringHeader
-12 -1: helpTransfer
-8 -1: fastTime
-62 -1: (Ljava/net/URLConnection;[Ljava/lang/Class;)Ljava/lang/Object;
-18 -1: Unhandled signal: 
-8 -1: isStrict
-15 -1: ISO_8859-7:1987
-13 -1: getWeekLength
-14 -1: jvmBuildNumber
-40 -1: (Ljava/lang/String;)Ljava/util/Iterator;
-6 -1: short0
-6 -1: short1
-73 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;)TT;
-10 -1: removeNode
-8 -1: setFloat
-18 -1: cspc862latinhebrew
-11 -1: setTimeZone
-34 -1: java/lang/reflect/AccessibleObject
-25 -1: MapReduceKeysToDoubleTask
-25 -1: java/lang/ref/Reference$1
-24 -1: java/nio/HeapByteBufferR
-15 -1: jdkMicroVersion
-117 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B[B)V
-8 -1: (TT;)TV;
-16 -1: Permissions.java
-22 -1: Ljava/util/Comparator;
-17 -1: getDaylightSaving
-25 -1: ([BIILjava/lang/String;)V
-9 -1: stillborn
-11 -1: maxPosition
-28 -1: java/util/ArrayPrefixHelpers
-73 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/SortedMap<TK;TV;>;
-14 -1: useCanonCaches
-5 -1: clean
-16 -1: checkPermission2
-34 -1: sun.misc.launcher.useSharedArchive
-13 -1: shutdownHooks
-5 -1: clear
-240 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-67 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;)TU;
-6 -1: cp1250
-6 -1: cp1251
-6 -1: cp1252
-13 -1: getZipMessage
-6 -1: cp1253
-28 -1: (J)Ljava/lang/ref/Reference;
-6 -1: cp1254
-54 -1: (ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-6 -1: cp1257
-10 -1: deepEquals
-17 -1: WRITE_BUFFER_SIZE
-13 -1: copyFromArray
-40 -1: java/util/Collections$ReverseComparator2
-36 -1: sun/reflect/generics/visitor/Reifier
-19 -1: averageBytesPerChar
-13 -1: javaAWTAccess
-6 -1: cp5346
-61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;
-6 -1: cp5347
-6 -1: cp5348
-6 -1: cp5349
-5 -1: field
-23 -1: ()Ljava/nio/LongBuffer;
-103 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
-37 -1: (I)Ljava/lang/Character$UnicodeBlock;
-11 -1: offsetAfter
-79 -1: Ljava/util/HashMap<Ljava/security/CodeSource;Ljava/security/ProtectionDomain;>;
-27 -1: invocationHandlerReturnType
-17 -1: POSITIVE_INFINITY
-11 -1: maybeRebind
-3 -1: str
-18 -1: setSecurityManager
-9 -1: signature
-18 -1: corrupted jar file
-89 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable;
-87 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-6 -1: CENATT
-6 -1: cp5350
-12 -1: AF_GETSTATIC
-38 -1: (TE;Ljava/util/LinkedList$Node<TE;>;)V
-8 -1: isLoaded
-6 -1: CENATX
-6 -1: cp5353
-18 -1: Africa/Addis_Ababa
-35 -1: sun/usagetracker/UsageTrackerClient
-11 -1: toUpperCase
-22 -1: java/util/zip/Inflater
-10 -1: iso_8859-1
-10 -1: iso_8859-2
-3 -1: sum
-7 -1: x-Johab
-10 -1: iso_8859-4
-10 -1: iso_8859-5
-85 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class;)Ljava/security/AccessControlContext;
-11 -1: activeCount
-49 -1: (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z
-51 -1: (Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;
-10 -1: iso_8859-7
-19 -1: appendVmErgoMessage
-10 -1: iso_8859-9
-14 -1: getClassLoader
-6 -1: (CJJ)Z
-15 -1: Lsun/misc/Perf;
-7 -1: getTree
-27 -1: Ljava/text/Normalizer$Form;
-11 -1: ISO-2022-JP
-69 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)Ljava/lang/Object;
-50 -1: java/lang/invoke/DirectMethodHandle$StaticAccessor
-15 -1: fxLauncherClass
-35 -1: (Ljava/net/URL;Ljava/lang/String;)V
-16 -1: getAndAccumulate
-35 -1: (Ljava/net/URL;Ljava/lang/String;)Z
-32 -1: Non-positive averageBytesPerChar
-35 -1: Ljava/lang/Class<Ljava/lang/Void;>;
-15 -1: CLASS_MODIFIERS
-12 -1: checkedQueue
-13 -1: enumConstants
-10 -1: getFactory
-95 -1: Ljava/util/concurrent/ConcurrentMap<TK;Lsun/util/locale/LocaleObjectCache$CacheEntry<TK;TV;>;>;
-13 -1: Africa/Harare
-57 -1: (JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
-11 -1: ISO-2022-KR
-19 -1: $assertionsDisabled
-13 -1: PROXY_PACKAGE
-17 -1: copyFromLongArray
-81 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/LinkedHashMap$Entry<TK;TV;>;
-11 -1: checkDelete
-38 -1: sun/management/ManagementFactoryHelper
-7 -1: UTC1900
-20 -1: getBootstrapResource
-23 -1: ()Ljava/lang/Throwable;
-16 -1: CALLER_SENSITIVE
-26 -1: checkSystemClipboardAccess
-32 -1: Can't set default locale to NULL
-16 -1: fxLauncherMethod
-4 -1:  >= 
-8 -1: provider
-9 -1: Finalizer
-78 -1: (Ljava/io/FileDescriptor;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
-13 -1: emptyIterator
-15 -1: getZipFileCount
-21 -1: isJavaIdentifierStart
-9 -1: connected
-11 -1: (ITK;TV;I)V
-16 -1: America/Honolulu
-22 -1: SynchronizedCollection
-28 -1: java/util/zip/ZipConstants64
-29 -1: inheritedAccessControlContext
-29 -1: ()[Ljava/security/CodeSigner;
-85 -1: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/sun/management/GcInfo;)V
-25 -1: (Ljava/nio/CharBuffer;Z)V
-15 -1: java/io/Console
-101 -1: (Ljava/lang/Class<*>;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
-9 -1: | resolve
-81 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Ljava/lang/invoke/MemberName;
-33 -1: (Ljava/nio/charset/Charset;FF[B)V
-49 -1: (Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
-66 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
-29 -1: ([Ljava/util/HashMap$Node;I)V
-13 -1: filterMethods
-4 -1: jcal
-61 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)[Ljava/lang/Class<*>;
-6 -1: which=
-46 -1: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
-4 -1: date
-18 -1: internalMemberName
-6 -1: (JJI)Z
-30 -1: [Ljava/lang/invoke/LambdaForm;
-60 -1: <T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
-15 -1: ReservationNode
-42 -1: java/lang/ThreadLocal$ThreadLocalMap$Entry
-6 -1: setIn0
-4 -1: sort
-8 -1: ibm00858
-110 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;IILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
-28 -1: Ljava/lang/ClassValue$Entry;
-22 -1: ensureExplicitCapacity
-6 -1: rotate
-14 -1: closeRequested
-30 -1: ([CII)Ljava/lang/StringBuffer;
-10 -1: LM_UNKNOWN
-15 -1: Comparable.java
-13 -1: getByteBuffer
-9 -1: getScheme
-15 -1: done with meta!
-17 -1: checkForTypeAlias
-7 -1: getKeys
-7 -1: SIG_DFL
-30 -1: Ljava/nio/charset/CoderResult;
-16 -1: returnTypesMatch
-19 -1: getClassAccessFlags
-18 -1: JavaNioAccess.java
-9 -1: setDouble
-23 -1: Ljava/util/zip/ZipFile;
-83 -1: (JLjava/util/function/ToIntFunction<-TK;>;ILjava/util/function/IntBinaryOperator;)I
-11 -1: ACCESS_READ
-15 -1: nativeByteOrder
-5 -1: hours
-7 -1: toArray
-7 -1: Encoder
-12 -1: resolveClass
-29 -1: (Ljava/io/FileDescriptor;JJ)V
-14 -1: redefinedCount
-8 -1: getTotal
-11 -1: iso_8859-13
-11 -1: iso_8859-15
-9 -1: expected 
-18 -1: getDeclaredMethods
-11 -1: elementData
-6 -1: intern
-10 -1: countryKey
-6 -1: setInt
-39 -1: Could not create extension class loader
-24 -1: SELF_SUPPRESSION_MESSAGE
-14 -1: argToSlotTable
-42 -1: Ljava/util/HashMap<TE;Ljava/lang/Object;>;
-5 -1:  \t\n\r\x0c
-4 -1: read
-12 -1: Objects.java
-7 -1: aliases
-29 -1: sun/reflect/LangReflectAccess
-6 -1: prefix
-15 -1: superInterfaces
-10 -1: getDoInput
-30 -1: java/nio/CharBufferSpliterator
-6 -1: KOI8_R
-12 -1: Asia/Kolkata
-6 -1: KOI8_U
-6 -1: LOCSIG
-15 -1: UA-Java-Version
-92 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap<TK;TV;>;Ljava/util/Map<TK;TV;>;
-14 -1: CertificateRep
-17 -1: getSystemResource
-85 -1: (JLjava/util/function/ToLongFunction<-TV;>;JLjava/util/function/LongBinaryOperator;)J
-27 -1: java/lang/reflect/Parameter
-5 -1: quote
-8 -1: not MH: 
-46 -1: java/util/Collections$UnmodifiableCollection$1
-6 -1: putVal
-6 -1: LOCSIZ
-6 -1: Atomic
-3 -1: 737
-38 -1: java/lang/UnsupportedClassVersionError
-27 -1: ()Ljava/lang/StringBuilder;
-41 -1: sun/net/www/protocol/jar/JarURLConnection
-60 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
-59 -1: <T:Ljava/lang/Object;>(TT;TT;Ljava/util/Comparator<-TT;>;)I
-54 -1: java/util/concurrent/locks/AbstractOwnableSynchronizer
-7 -1: getHost
-36 -1: (F)Ljava/lang/AbstractStringBuilder;
-69 -1: <U:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;)Ljava/lang/Class<+TU;>;
-4 -1: Form
-103 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;+TV;>;)Ljava/util/SortedMap<TK;TV;>;
-6 -1: spread
-8 -1: addHours
-13 -1: contentEquals
-47 -1: (Ljava/lang/String;Ljava/security/Permission;)V
-12 -1: newCondition
-23 -1: (Ljava/lang/Object;IZ)V
-26 -1: (Ljava/util/LinkedList;I)V
-13 -1: ConstantValue
-18 -1: URLConnection.java
-12 -1: Boolean.java
-75 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/net/URLStreamHandlerFactory;)V
-21 -1: EMPTY_THROWABLE_ARRAY
-153 -1: (Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;Ljava/lang/Class<*>;[Ljava/lang/String;)Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;
-18 -1: getUnresolvedCerts
-13 -1: Negative time
-28 -1: java/util/WeakHashMap$KeySet
-8 -1: slashify
-16 -1: isOtherLowercase
-17 -1: putObjectVolatile
-5 -1: ERASE
-12 -1: filterFields
-40 -1: Ljava/lang/ReflectiveOperationException;
-12 -1: VM settings:
-57 -1: (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-10 -1: access$600
-11 -1: ] return =>
-13 -1: user.timezone
-23 -1: USER_AGENT_JAVA_VERSION
-27 -1: (Ljava/util/HashMap$Node;)V
-19 -1: filterNTLMResponses
-28 -1: (Lsun/misc/VMNotification;)V
-37 -1: ()[[Ljava/lang/annotation/Annotation;
-45 -1: ()Lcom/sun/management/DiagnosticCommandMBean;
-3 -1: tan
-31 -1: getDirectlyAndIndirectlyPresent
-7 -1: prepend
-35 -1: (I)Lsun/util/calendar/CalendarDate;
-8 -1: val$dirs
-4 -1: test
-28 -1: Non-positive maxCharsPerByte
-83 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>;
-12 -1: JAVA_VERSION
-24 -1: ([Ljava/lang/Thread;IZ)I
-70 -1: (Ljava/lang/invoke/LambdaForm$Name;)Ljava/lang/invoke/LambdaForm$Name;
-57 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/Comparator<-TT;>;)V
-42 -1: (Ljava/lang/Class<*>;[I)Ljava/lang/Object;
-27 -1: java/lang/SecurityManager$1
-32 -1: java/security/SignatureException
-27 -1: java/lang/SecurityManager$2
-4 -1: .jar
-20 -1: parameterAnnotations
-31 -1: DIRECTIONALITY_BOUNDARY_NEUTRAL
-21 -1: hasClassPathAttribute
-17 -1: checkParentAccess
-35 -1: java/security/PermissionsEnumerator
-6 -1: FORMAT
-92 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;)TU;
-3 -1: 775
-11 -1: PROBE_LIMIT
-111 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-11 -1: AF_PUTFIELD
-22 -1: (Ljava/lang/Object;Z)V
-20 -1: getGenericReturnType
-9 -1: val$extcl
-13 -1: inClassLoader
-37 -1: sun.urlClassLoader.readClassBytesTime
-35 -1: (JLjava/util/function/BiConsumer;)V
-28 -1: getContentHandlerPkgPrefixes
-10 -1: getChannel
-78 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+TT;>;TT;Ljava/util/Comparator<-TT;>;)I
-16 -1: parseMemberValue
-4 -1: regn
-47 -1: ([Ljava/lang/Object;III)Ljava/util/Spliterator;
-11 -1:  but found 
-6 -1: adjust
-11 -1: isLowerCase
-29 -1: sun/reflect/ReflectionFactory
-98 -1: <E:Ljava/lang/Object;>(Ljava/util/SortedSet<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/SortedSet<TE;>;
-18 -1: [Ljava/lang/Error;
-5 -1: entry
-14 -1: refreshVersion
-8 -1: (IIIII)V
-22 -1: unmodifiableCollection
-6 -1: putAll
-22 -1: offsetByCodePointsImpl
-26 -1: (Ljava/lang/String;[BII)[C
-46 -1: (Ljava/net/URLClassLoader;Ljava/lang/String;)V
-4 -1: /LF=
-9 -1: Bits.java
-30 -1: [Ljava/util/WeakHashMap$Entry;
-19 -1: getLastModifiedTime
-44 -1: [Ljava/lang/Thread$UncaughtExceptionHandler;
-11 -1: getZoneInfo
-6 -1: lookup
-19 -1: MapReduceValuesTask
-18 -1: isVarargsCollector
-38 -1: java/util/jar/JarFile$JarEntryIterator
-11 -1: getJarIndex
-9 -1: getByName
-42 -1: (Ljava/lang/Object;JLjava/lang/Object;JJ)V
-71 -1: (Ljava/lang/invoke/LambdaForm$Name;I)Ljava/lang/invoke/LambdaForm$Name;
-30 -1: java/net/ContentHandlerFactory
-54 -1: (Ljava/lang/Class<*>;I)Ljava/lang/invoke/MethodHandle;
-12 -1: getSignature
-9 -1: parseLong
-25 -1: DEBUG_METHOD_HANDLE_NAMES
-15 -1: runFinalization
-13 -1: 0000000000000
-28 -1: ()[Ljava/lang/reflect/Field;
-37 -1: ([Ljava/lang/ClassValue$Entry<*>;II)V
-13 -1: gcInfoBuilder
-64 -1: (JLjava/util/function/BiFunction;Ljava/util/function/Consumer;)V
-5 -1: cnfe1
-8 -1: setShort
-28 -1: (C)Ljava/lang/StringBuilder;
-44 -1: (Ljava/nio/LongBuffer;)Ljava/nio/LongBuffer;
-70 -1: (Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class<*>;
-33 -1: java/lang/TypeNotPresentException
-5 -1: \n    
-20 -1: acquireInterruptibly
-21 -1: (I)Ljava/lang/String;
-24 -1: (Ljava/io/PrintWriter;)V
-16 -1: convertArguments
-32 -1: Ljava/net/MalformedURLException;
-15 -1: linkToInterface
-39 -1: java/lang/Throwable$PrintStreamOrWriter
-10 -1: iso8859_13
-13 -1: hasPrimitives
-10 -1: iso8859_15
-145 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/invoke/CallSite;
-8 -1: equalPDs
-28 -1: (Ljava/io/FileDescriptor;J)V
-7 -1: newLine
-43 -1: (Ljava/lang/Class<*>;I)Ljava/lang/Class<*>;
-8 -1: addEntry
-30 -1: java/util/WeakHashMap$EntrySet
-14 -1: USE_OLDMAPPING
-39 -1: (Ljava/io/DataInput;)Ljava/lang/String;
-12 -1: LF_EX_LINKER
-27 -1: java/lang/invoke/MethodType
-23 -1: JavaSecurityAccess.java
-23 -1: isLocalOrAnonymousClass
-19 -1: Expanded arguments:
-18 -1: sun/nio/cs/Unicode
-40 -1: ()Ljava/nio/charset/spi/CharsetProvider;
-23 -1: ([BLjava/lang/String;)V
-7 -1: default
-13 -1: highestOneBit
-9 -1: isDefault
-28 -1: (IF)Ljava/lang/StringBuffer;
-31 -1: ()Ljava/util/ListIterator<TE;>;
-4 -1: base
-23 -1: newPermissionCollection
-7 -1: version
-15 -1: Permission.java
-41 -1: java/lang/invoke/LambdaForm$NamedFunction
-8 -1: isQueued
-24 -1: ([Ljava/lang/Class<*>;)I
-64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask
-16 -1: checkInitialized
-37 -1: java/lang/ClassLoader$ParallelLoaders
-5 -1: ([B)I
-23 -1: Lsun/misc/URLClassPath;
-9 -1: usr_paths
-10 -1: Queue.java
-43 -1: (Ljava/io/File;Ljava/nio/charset/Charset;)V
-64 -1: (Ljava/lang/invoke/MethodTypeForm;)Ljava/lang/invoke/MemberName;
-3 -1: tid
-23 -1: JarIndex-Version: 1.0\n\n
-33 -1: (I)Ljava/nio/charset/CoderResult;
-5 -1: ([B)V
-10 -1: isInstance
-25 -1: unmappableCharacterAction
-11 -1: queueLength
-5 -1: ([B)Z
-10 -1: freeMemory
-47 -1: java/util/ArrayPrefixHelpers$DoubleCumulateTask
-52 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V
-41 -1: Ljava/util/Collections$ReverseComparator;
-16 -1: copyToShortArray
-206 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;ILjava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)Z
-38 -1: sun/launcher/LauncherHelper$SizePrefix
-17 -1: ACCESS_PERMISSION
-17 -1: ReverseComparator
-30 -1: ()Ljava/lang/ClassValue$Entry;
-17 -1: AF_PUTSTATIC_INIT
-6 -1: (IIB)I
-19 -1: java/nio/file/Files
-35 -1: (Z)[Ljava/lang/reflect/Constructor;
-20 -1: INVALID_FIELD_OFFSET
-17 -1: initializeHeaders
-10 -1: management
-10 -1: targetType
-61 -1: (Ljava/util/SortedSet;Ljava/lang/Class;)Ljava/util/SortedSet;
-5 -1: ascii
-8 -1: validate
-78 -1: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/lang/Object;>;
-25 -1: sun/nio/cs/UTF_16$Decoder
-36 -1: sun/management/DiagnosticCommandImpl
-24 -1: unmodifiableNavigableMap
-18 -1: canonicalizeScript
-29 -1: Lsun/misc/JavaSecurityAccess;
-74 -1: ([JLjava/util/function/IntToLongFunction;)Ljava/util/function/IntConsumer;
-38 -1: DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
-11 -1: languageTag
-33 -1: java/lang/invoke/VolatileCallSite
-18 -1: setRequestProperty
-6 -1: 0x%02X
-20 -1: (Ljava/lang/Float;)I
-35 -1: (Ljava/nio/charset/CoderResult$1;)V
-24 -1: (Ljava/lang/Object;JJB)V
-21 -1: synchronizedSortedSet
-59 -1: (Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
-30 -1: av.length == arity: av.length=
-7 -1: $VALUES
-27 -1: RandomNumberGeneratorHolder
-3 -1: tlr
-43 -1: java/util/ArraysParallelSortHelpers$FJFloat
-28 -1: ()[Ljava/io/File$PathStatus;
-26 -1: invalid extra field length
-13 -1: getExtensions
-7 -1: PARAMS0
-7 -1: PARAMS1
-30 -1: [Ljava/lang/invoke/MemberName;
-7 -1: PARAMS2
-31 -1: java/lang/AbstractStringBuilder
-161 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V
-4 -1: repl
-19 -1: ()Ljava/lang/Class;
-24 -1: BufferedInputStream.java
-9 -1: sizeCache
-8 -1: READLINK
-9 -1: metaIndex
-18 -1: getLocalizedObject
-6 -1: filter
-58 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-140 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
-24 -1: Ljava/util/HashMap$Node;
-35 -1: (Lsun/nio/cs/FastCharsetProvider;)V
-8 -1: dispatch
-19 -1: sun.stderr.encoding
-130 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/util/List<Ljava/lang/String;>;
-51 -1: Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
-30 -1: sun.reflect.inflationThreshold
-20 -1: MutableCallSite.java
-26 -1: invokeWithArgumentsTracing
-7 -1: getters
-38 -1: ()[Ljava/lang/reflect/TypeVariable<*>;
-46 -1: ([DLjava/util/function/DoubleBinaryOperator;)V
-5 -1: klass
-13 -1: publicMethods
-37 -1: ()[Ljava/lang/reflect/Constructor<*>;
-126 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
-6 -1: FJLong
-20 -1: canBeStaticallyBound
-17 -1: getTimezoneOffset
-9 -1: ALL_TYPES
-3 -1: toV
-8 -1: packages
-15 -1: codePointBefore
-10 -1: getCountry
-13 -1: getDSTSavings
-100 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)Lsun/nio/cs/StreamDecoder;
-50 -1: java/util/ArraysParallelSortHelpers$FJFloat$Sorter
-20 -1: hasNonVoidPrimitives
-7 -1: syncAll
-41 -1: domain        dump all domains in context
-59 -1: Ljava/util/Hashtable<Ljava/lang/Integer;Lsun/misc/Signal;>;
-16 -1: ForEachEntryTask
-18 -1: vminfoIsConsistent
-26 -1: (ZLjava/util/Comparator;)V
-9 -1: Lock.java
-31 -1: Lsun/reflect/ReflectionFactory;
-8 -1: (I[BII)I
-23 -1: doesExtendFXApplication
-87 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
-11 -1: windows-31j
-28 -1: sun/misc/URLClassPath$Loader
-17 -1: getEntryAfterMiss
-47 -1: ([Ljava/lang/reflect/Field;Ljava/lang/String;)J
-44 -1: Ljava/util/List<Ljava/security/Permission;>;
-10 -1: openStream
-31 -1: Ljava/net/UnknownHostException;
-19 -1: bad reference kind 
-29 -1: ()Ljava/nio/MappedByteBuffer;
-9 -1: H_UPALPHA
-37 -1: (Ljava/util/function/UnaryOperator;)V
-25 -1: FAKE_METHOD_HANDLE_INVOKE
-4 -1: peek
-25 -1: java/util/Hashtable$Entry
-18 -1: getMemberRefInfoAt
-37 -1: Ljava/util/WeakHashMap$Entry<TK;TV;>;
-14 -1: resolvedHandle
-27 -1: ()Ljava/util/Iterator<TV;>;
-61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/reflect/Method;>;
-6 -1: static
-50 -1: (Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath;
-38 -1: (Ljava/lang/Class;)[Ljava/lang/Object;
-41 -1: (Ljava/util/SortedSet;Ljava/lang/Class;)V
-41 -1: java/lang/invoke/WrongMethodTypeException
-5 -1: group
-10 -1: readObject
-13 -1: getParentFile
-14 -1: daylightSaving
-15 -1: eagerValidation
-36 -1: (Ljava/io/File;)Lsun/misc/MetaIndex;
-18 -1: reduceEntriesToInt
-15 -1: INITIAL_ENTRIES
-18 -1: AtomicInteger.java
-7 -1: .length
-128 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/CharBuffer;>;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/Readable;
-6 -1: asList
-21 -1: unmodifiableSortedSet
-22 -1: ([B)Ljava/util/BitSet;
-5 -1: check
-64 -1: (Ljava/util/jar/JarFile;Lsun/misc/MetaIndex;)Lsun/misc/JarIndex;
-35 -1: ()Ljava/nio/charset/CharsetEncoder;
-4 -1: oome
-25 -1: ()Lsun/misc/URLClassPath;
-27 -1: (Ljava/io/FilePermission;)V
-29 -1: IllegalArgumentException.java
-17 -1: jvmSpecialVersion
-21 -1: Ljava/util/ArrayList;
-13 -1: packagePrefix
-27 -1: (Ljava/io/FilePermission;)Z
-11 -1: canonicalID
-82 -1: Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/String;>;Ljava/io/Serializable;
-24 -1: java.launcher.opt.footer
-13 -1: NativeLibrary
-37 -1: (Ljava/lang/String;J)Ljava/lang/Long;
-16 -1: longBitsToDouble
-6 -1: getKey
-22 -1: (JLjava/lang/String;)V
-14 -1: ensureCapacity
-69 -1: (Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-22 -1: java/lang/Thread$State
-50 -1: ()Ljava/util/Iterator<Ljava/nio/charset/Charset;>;
-4 -1: 7bit
-46 -1: (Ljava/lang/Class<+Ljava/lang/ClassLoader;>;)Z
-76 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)[Ljava/lang/invoke/LambdaForm$Name;
-3 -1: ttb
-12 -1: UTF_16LE_BOM
-9 -1: remainder
-40 -1: ()Lsun/reflect/generics/visitor/Reifier;
-22 -1: [Ljava/lang/Throwable;
-17 -1: EMPTY_ENUMERATION
-13 -1: erasedInvoker
-46 -1: Ljava/nio/charset/IllegalCharsetNameException;
-10 -1: UnicodeBig
-53 -1: ()Ljava/util/Map<Ljava/io/File;Lsun/misc/MetaIndex;>;
-12 -1: MAX_EXPONENT
-10 -1: Enumerator
-15 -1: charset decoder
-11 -1: AF_GETFIELD
-12 -1: | getInvoker
-74 -1: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
-14 -1: toUnsignedLong
-46 -1: java/lang/invoke/MethodHandleNatives$Constants
-29 -1: java version "1.8.0-internal"
-21 -1: ([Ljava/lang/Class;)I
-16 -1: UPPERCASE_LETTER
-22 -1: newConstantPerfCounter
-6 -1: signum
-9 -1: getField0
-38 -1: java/nio/charset/CoderMalfunctionError
-21 -1: [Ljava/lang/Runnable;
-11 -1: putIfAbsent
-30 -1: java/util/Collections$EmptySet
-22 -1: (I)[Ljava/lang/String;
-34 -1: Ljava/security/SecurityPermission;
-49 -1: ([Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-190 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V
-22 -1: Not an annotation type
-34 -1: java/io/ObjectInputStream$GetField
-50 -1: (Lsun/reflect/FieldInfo;)Ljava/lang/reflect/Field;
-32 -1: Ljava/lang/NoSuchFieldException;
-70 -1: (Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)Ljava/lang/Object;
-9 -1: mergeSort
-77 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-21 -1: sun/nio/cs/ISO_8859_1
-8 -1: DST_MASK
-21 -1: Ljava/lang/Throwable;
-108 -1: (Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;I)Ljava/lang/Class$ReflectionData<TT;>;
-32 -1: java/util/Arrays$LegacyMergeSort
-59 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/Class<TT;>;>;
-16 -1: parseUnsignedInt
-36 -1: ([D)Ljava/util/Spliterator$OfDouble;
-26 -1: SPECIFY_HANDLER_PERMISSION
-13 -1: primitiveType
-17 -1: threadStartFailed
-21 -1: (J)Ljava/lang/String;
-23 -1: setClassAssertionStatus
-28 -1: java/util/Hashtable$EntrySet
-28 -1: Non-positive maxBytesPerChar
-19 -1: getApplicationClass
-14 -1: SentinelHolder
-15 -1: staticFieldBase
-25 -1: setDefaultRequestProperty
-66 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask
-8 -1: threadID
-9 -1: getFields
-15 -1: LineNumberTable
-38 -1: java/util/Collections$CheckedSortedSet
-14 -1: jdkBuildNumber
-6 -1: divide
-46 -1: (Ljava/io/BufferedWriter;Ljava/lang/String;Z)V
-20 -1: java/lang/Terminator
-92 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/lang/String;Ljava/net/URL;Ljava/util/jar/JarEntry;)V
-6 -1: force0
-10 -1: getThreads
-34 -1: java/util/IllformedLocaleException
-115 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/FieldRepository;
-9 -1: testFlags
-11 -1: getLanguage
-36 -1: java/util/function/IntBinaryOperator
-12 -1: Suppressed: 
-10 -1: isMandated
-23 -1: MethodAccessorImpl.java
-28 -1: (Ljava/util/zip/ZipEntry;)[B
-27 -1: Ljava/util/Hashtable$Entry;
-5 -1: table
-10 -1: Short.java
-19 -1: ReferenceQueue.java
-8 -1: setTabAt
-26 -1: ()Lsun/invoke/empty/Empty;
-53 -1: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
-74 -1: (ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-19 -1: changeParameterType
-61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/security/Permission;>;
-23 -1: (Ljava/lang/Object;IF)V
-32 -1: (I)Ljava/util/ListIterator<TE;>;
-6 -1: unread
-12 -1: isSubclassOf
-6 -1: (JJJ)V
-3 -1: Key
-105 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;ITK;TV;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-14 -1: x-utf-16le-bom
-22 -1: ()Ljava/nio/IntBuffer;
-104 -1: (Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-21 -1: removeFirstOccurrence
-21 -1: sun/misc/DoubleConsts
-23 -1: ()Ljava/util/SortedSet;
-11 -1: getManEntry
-23 -1: URI is not hierarchical
-7 -1: replace
-16 -1: getDisplayScript
-11 -1: ISO_8859-15
-16 -1: permuteArguments
-5 -1: (JI)C
-41 -1: Error decoding percent encoded characters
-22 -1: ([I)Ljava/lang/String;
-31 -1: java/lang/management/ThreadInfo
-9 -1: useCaches
-22 -1: withInternalMemberName
-5 -1: (JI)I
-5 -1: (JI)J
-67 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;
-95 -1: (Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration<Ljava/lang/String;>;
-7 -1: release
-56 -1: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
-5 -1: (JI)V
-46 -1: (Ljava/util/Iterator;I)Ljava/util/Spliterator;
-18 -1: verifyMemberAccess
-9 -1: warning: 
-23 -1: java/lang/reflect/Field
-67 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V
-10 -1: SizePrefix
-15 -1: setJavaIOAccess
-6 -1: (JI)[B
-10 -1: ST_FLUSHED
-10 -1: resolution
-9 -1: ST_CODING
-16 -1: sun/misc/Cleaner
-21 -1: (Ljava/lang/Class;)[B
-18 -1: WeakReference.java
-41 -1: (Ljava/util/List;Ljava/util/Comparator;)V
-18 -1: printPropertyValue
-3 -1: 813
-22 -1: setRunFinalizersOnExit
-4 -1: init
-44 -1: ()Ljava/util/Iterator<Ljava/nio/file/Path;>;
-3 -1: 819
-12 -1: listIterator
-8 -1: , arity=
-24 -1: (Ljava/util/ArrayList;)I
-49 -1: (IJLjava/io/FileDescriptor;Ljava/lang/Runnable;)V
-10 -1: principals
-17 -1: x-ISO-2022-CN-CNS
-22 -1: (Ljava/lang/Object;F)V
-14 -1: setReadTimeout
-19 -1: getProtectionDomain
-13 -1: pathSeparator
-12 -1: getAndSetInt
-58 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/util/Locale;
-11 -1: setWritable
-4 -1: perf
-50 -1: ()Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;
-6 -1: LOCTIM
-6 -1: status
-11 -1: replaceName
-52 -1: (Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;
-9 -1: nextToken
-13 -1: dropArguments
-20 -1: RECOGNIZED_MODIFIERS
-14 -1: getInputStream
-9 -1: readFully
-25 -1: (CLjava/nio/CharBuffer;)I
-24 -1: sun/misc/PathPermissions
-10 -1: malformedN
-9 -1: n is null
-19 -1: instanceof Double: 
-13 -1: markSupported
-26 -1: fromMethodDescriptorString
-43 -1: [Ljava/util/concurrent/locks/ReentrantLock;
-17 -1: parseUnsignedLong
-33 -1: Lsun/misc/URLClassPath$JarLoader;
-26 -1: (Ljava/io/OutputStream;I)V
-6 -1: L_DASH
-17 -1: EmptyNavigableMap
-19 -1: CharsetDecoder.java
-18 -1: makeDynamicInvoker
-12 -1: URLUtil.java
-27 -1: ()Ljava/util/Iterator<TT;>;
-9 -1: initTable
-11 -1: getFragment
-7 -1: isLower
-20 -1: getMethodOrFieldType
-29 -1: java/util/function/BiFunction
-10 -1: access$700
-3 -1: 850
-7 -1: UTC2037
-43 -1: java/util/ArraysParallelSortHelpers$FJShort
-9 -1: toSTZTime
-10 -1: access$702
-3 -1: 852
-8 -1: hashCode
-3 -1: 855
-44 -1: (Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-3 -1: 857
-3 -1: 858
-5 -1: erase
-55 -1: ()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
-47 -1: (Ljava/util/Iterator;JI)Ljava/util/Spliterator;
-38 -1: Ljava/nio/charset/spi/CharsetProvider;
-22 -1: can't deserialize enum
-13 -1: LF_EX_INVOKER
-18 -1: java/text/Collator
-18 -1: Zero length string
-49 -1: <T:Ljava/lang/Object;>()Ljava/util/Iterator<TT;>;
-5 -1: amd64
-12 -1: getNameCount
-7 -1: inCheck
-52 -1: (Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-53 -1: (ILjava/lang/CharSequence;II)Ljava/lang/StringBuffer;
-21 -1: java/util/WeakHashMap
-8 -1:  throws 
-52 -1: (Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
-55 -1: Ljava/lang/ref/SoftReference<Ljava/util/jar/Manifest;>;
-16 -1: emptyEnumeration
-3 -1: 862
-89 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;ILjava/lang/Class;)Ljava/util/List;
-3 -1: 866
-55 -1: Lsun/reflect/generics/repository/ConstructorRepository;
-35 -1: (Ljava/lang/ref/ReferenceQueue$1;)V
-33 -1: java/util/Collections$CheckedList
-18 -1: prefetchReadStatic
-7 -1: (JI[I)I
-78 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-7 -1: ordinal
-22 -1: FilterInputStream.java
-26 -1: java/util/zip/ZipConstants
-28 -1: JVM cannot find invoker for 
-43 -1: sun/reflect/generics/parser/SignatureParser
-51 -1: (Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)V
-73 -1: (Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
-17 -1: StringBuffer.java
-62 -1: ([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V
-6 -1: equals
-9 -1: formatter
-3 -1: 874
-35 -1: newGetShortIllegalArgumentException
-74 -1: (Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
-3 -1: ucp
-60 -1: ([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
-6 -1: create
-17 -1: makeReinvokerForm
-18 -1: csisolatincyrillic
-15 -1: incrementAndGet
-24 -1: maybeInstantiateVerifier
-33 -1: ()Ljava/nio/channels/FileChannel;
-6 -1: class 
-16 -1: getAnnotatedType
-43 -1: (Ljava/lang/reflect/Type;)Ljava/lang/Class;
-9 -1: HASH_BITS
-12 -1: placeInCache
-38 -1: java/util/Collections$SynchronizedList
-89 -1: (Ljava/net/URL;Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)Ljava/security/CodeSource;
-22 -1: (Ljava/lang/String;I)B
-20 -1: Ljava/util/TimeZone;
-16 -1: sun.java.command
-28 -1: java/util/WeakHashMap$Values
-10 -1: X-UTF-16BE
-22 -1: (Ljava/lang/String;I)I
-26 -1: java/nio/DirectCharBufferS
-99 -1: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class<*>;
-22 -1: (Ljava/lang/String;I)J
-26 -1: java/nio/DirectCharBufferU
-54 -1: (Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal;
-21 -1: java/util/AbstractSet
-37 -1: (Ljava/lang/String;)Ljava/lang/Short;
-36 -1: Ljava/nio/charset/CoderResult$Cache;
-22 -1: (Ljava/lang/String;I)S
-15 -1: Ljava/util/Map;
-59 -1: (Ljava/lang/reflect/Type;)Ljava/lang/reflect/AnnotatedType;
-22 -1: (Ljava/lang/String;I)V
-10 -1: getAddress
-25 -1: java/nio/DirectIntBufferS
-11 -1: IMPL_LOOKUP
-3 -1: uee
-7 -1: addTime
-37 -1: sun/security/action/GetPropertyAction
-25 -1: java/nio/DirectIntBufferU
-21 -1: javaUtilZipFileAccess
-34 -1: java/util/Collections$CheckedQueue
-11 -1: readResolve
-22 -1: (Ljava/lang/String;I)Z
-11 -1: findVirtual
-63 -1: (Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
-22 -1: getDeclaredAnnotations
-16 -1: Collections.java
-18 -1: invalid entry size
-49 -1: java/util/concurrent/ConcurrentHashMap$TableStack
-32 -1: java/util/AbstractSequentialList
-4 -1: int0
-16 -1: MAXIMUM_CAPACITY
-53 -1: ()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-4 -1: int1
-4 -1: int2
-4 -1: int3
-119 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;I)Lsun/reflect/MethodAccessor;
-7 -1: variant
-39 -1: Lsun/reflect/annotation/AnnotationType;
-11 -1: arrayOffset
-24 -1: ()Ljava/util/LinkedList;
-31 -1: java/lang/ClassCircularityError
-17 -1: java/lang/Package
-10 -1: ccsid00858
-27 -1: java/io/ExpiringCache$Entry
-16 -1: newFieldAccessor
-67 -1: (Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
-99 -1: Lsun/reflect/generics/repository/GenericDeclRepository<Lsun/reflect/generics/tree/ClassSignature;>;
-53 -1: (Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)V
-53 -1: Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-58 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/stream/Stream<TT;>;
-54 -1: (Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Z
-8 -1: Kerberos
-29 -1: ()Ljava/nio/channels/Channel;
-12 -1: java_version
-45 -1: (Lsun/reflect/DelegatingMethodAccessorImpl;)V
-10 -1: canConvert
-136 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-26 -1: getDayOfWeekDateOnOrBefore
-7 -1: INVALID
-10 -1: TERMINATED
-41 -1: Ljava/security/cert/CertificateException;
-74 -1: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;
-30 -1: [Ljava/lang/invoke/MethodType;
-13 -1: getMethodName
-7 -1: Factory
-34 -1: (Ljava/util/function/BiConsumer;)V
-11 -1: unlinkFirst
-37 -1: lambda$getDeclaredAnnotationsByType$0
-77 -1: (Ljava/nio/ByteBuffer;ILjava/nio/CharBuffer;II)Ljava/nio/charset/CoderResult;
-20 -1: java/util/ArrayDeque
-65 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
-49 -1: (Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$1;)V
-22 -1: (J)Ljava/time/Instant;
-17 -1: URLClassPath.java
-6 -1: 8859_1
-25 -1: stopRemoteManagementAgent
-6 -1: 8859_2
-17 -1: containsNullValue
-6 -1: 8859_4
-6 -1: 8859_5
-26 -1: (Ljava/nio/ByteBuffer;IC)V
-76 -1: (Ljava/lang/Runnable;Ljava/security/AccessControlContext;)Ljava/lang/Thread;
-6 -1: 8859_7
-6 -1: 8859_9
-8 -1: setHours
-9 -1: File.java
-21 -1: isIdentifierIgnorable
-5 -1: ([C)I
-4 -1: (B)I
-10 -1: codesource
-77 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/security/AccessControlContext;)V
-4 -1: (B)J
-6 -1: isFair
-30 -1: java/lang/NullPointerException
-10 -1: IMPL_NAMES
-13 -1: Runnable.java
-26 -1: Ill-formed extension key: 
-17 -1: ()[Ljava/io/File;
-18 -1: javaSecurityAccess
-16 -1: equalsIgnoreCase
-4 -1: (B)V
-5 -1: ([C)V
-25 -1: Ljava/io/FileInputStream;
-14 -1: trackJavaUsage
-20 -1: Ljava/io/FileSystem;
-10 -1: iso_8859_1
-4 -1: (B)Z
-30 -1: java/lang/NoClassDefFoundError
-152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/HashMap$TreeNode<TK;TV;>;Ljava/util/HashMap$TreeNode<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-19 -1: java/lang/Cloneable
-55 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;I)V
-27 -1: (Ljava/nio/ByteBuffer;IJZ)V
-21 -1: ()Lsun/misc/JarIndex;
-72 -1: ([Ljava/security/CodeSource;)Ljava/util/Enumeration<Ljava/lang/String;>;
-64 -1: (Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
-20 -1: invalid entry crc-32
-9 -1: BASECOUNT
-29 -1: java/security/BasicPermission
-52 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
-7 -1: ([B[B)Z
-17 -1: EMPTY_ELEMENTDATA
-61 -1: (Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
-49 -1: (ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
-29 -1: sun/reflect/MagicAccessorImpl
-121 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ConstructorRepository;
-6 -1: ([II)I
-40 -1: (Ljava/lang/String;I)Ljava/lang/Integer;
-25 -1: java.content.handler.pkgs
-63 -1: ()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>;
-13 -1: parameterList
-6 -1: rebind
-16 -1: isSuperInterface
-6 -1: ([II)V
-14 -1: currentRuntime
-9 -1: BA_EXISTS
-15 -1: END_PUNCTUATION
-15 -1: no such method 
-19 -1: getAndVerifyPackage
-4 -1: wrap
-24 -1: checkAwtEventQueueAccess
-7 -1: ibm-437
-4 -1: open
-47 -1: (Ljava/nio/ByteBuffer;[BI)Ljava/nio/ByteBuffer;
-21 -1: ADDRESS_BITS_PER_WORD
-13 -1: isConstructor
-12 -1: getUseCaches
-27 -1: sun/util/locale/LocaleUtils
-4 -1: koi8
-23 -1: getParameterAnnotations
-9 -1: providers
-57 -1: ([Ljava/lang/Object;Ljava/util/function/BinaryOperator;)V
-24 -1: Lsun/misc/JavaNetAccess;
-22 -1: ([J)Ljava/lang/String;
-7 -1: p-1022$
-6 -1: isType
-63 -1: Ljava/util/Map<Ljava/lang/String;Lsun/util/calendar/ZoneInfo;>;
-21 -1: pageAlignDirectMemory
-18 -1: getManifestDigests
-37 -1: [Ljava/lang/reflect/AccessibleObject;
-7 -1: decrypt
-54 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/util/HashMap;
-32 -1: lambda$comparingByKey$bbdbfea9$1
-21 -1: hasGenericInformation
-31 -1: java/nio/charset/CharsetEncoder
-15 -1: setTargetNormal
-3 -1: ulp
-18 -1: argumentTypesMatch
-12 -1: getDayOfYear
-8 -1: closeAll
-76 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/ref/SoftReference<TV;>;
-6 -1: concat
-9 -1: getLongAt
-16 -1: hasBeenFinalized
-32 -1: [Ljava/util/Hashtable$Entry<**>;
-23 -1: CheckedRandomAccessList
-106 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;
-21 -1: defineClassInPackage.
-11 -1: ([III[III)V
-8 -1: toZoneId
-34 -1: SUBCLASS_IMPLEMENTATION_PERMISSION
-55 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater
-8 -1: isDirect
-10 -1: ALL_ACCESS
-12 -1: isRegistered
-29 -1: ForEachTransformedMappingTask
-5 -1: LIJFD
-23 -1: (Ljava/util/TimeZone;)V
-23 -1: (Ljava/util/TimeZone;)Z
-20 -1: java/lang/Appendable
-29 -1: Lsun/util/calendar/Gregorian;
-9 -1: charValue
-8 -1: ONE_HOUR
-38 -1: (Ljava/util/Locale;)Ljava/lang/String;
-7 -1: script=
-10 -1: X-UTF-16LE
-7 -1: ENTRIES
-6 -1: detach
-38 -1: certpath      PKIX CertPathBuilder and
-14 -1: setLanguageTag
-13 -1: isAlphaString
-13 -1: interpretName
-9 -1: dayOfWeek
-88 -1: (Ljava/lang/Class;ZLjava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;
-91 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/MethodHandle;
-13 -1: addTypeString
-17 -1: VectorSpliterator
-12 -1: MILLISECONDS
-6 -1: CENCOM
-10 -1: KeySetView
-18 -1: getTargetException
-7 -1: H_ALPHA
-32 -1: sun/util/locale/BaseLocale$Cache
-25 -1: [Ljava/lang/CharSequence;
-7 -1: Builder
-4 -1: left
-19 -1: BootClassPathHolder
-12 -1: publicFields
-11 -1: windows-437
-9 -1: EMPTY_SET
-26 -1: GET_STACK_TRACE_PERMISSION
-6 -1: copyOf
-14 -1: aliases_IBM737
-9 -1: writeLong
-35 -1: (JLjava/util/concurrent/TimeUnit;)Z
-70 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>;
-22 -1: getAnnotatedReturnType
-41 -1: (Ljava/lang/String;[BII)Ljava/lang/Class;
-8 -1: ,maxpri=
-29 -1: handleParameterNumberMismatch
-26 -1: ts            timestamping
-11 -1: checkListen
-10 -1: SourceFile
-44 -1: (Ljava/lang/String;)Ljava/util/jar/JarEntry;
-17 -1: weakCompareAndSet
-9 -1: timestamp
-21 -1: (Z)Ljava/lang/String;
-12 -1: doneWithMeta
-20 -1: makeCollectArguments
-52 -1: (JLjava/util/function/BiFunction;)Ljava/lang/Object;
-10 -1: searchKeys
-48 -1: sun/reflect/SerializationConstructorAccessorImpl
-69 -1: (Ljava/lang/reflect/Constructor<*>;)Lsun/reflect/ConstructorAccessor;
-19 -1: ()Lsun/misc/Unsafe;
-11 -1: deepEquals0
-7 -1: GB18030
-13 -1: ValueIterator
-75 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-28 -1: java/util/PropertyPermission
-6 -1: CENCRC
-3 -1: url
-3 -1: L_L
-19 -1: Certificate too big
-33 -1: sun/reflect/DelegatingClassLoader
-16 -1: lambda$stream$57
-11 -1: BitSet.java
-13 -1: sun/misc/Perf
-26 -1: Ljava/util/SimpleTimeZone;
-7 -1: (BBBB)I
-24 -1: sun/misc/FloatingDecimal
-21 -1: sun/util/PreHashedMap
-8 -1: utf-16be
-11 -1: isInherited
-83 -1: (Ljava/util/Properties;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V
-52 -1: (Ljava/lang/Class;Ljava/security/ProtectionDomain;)V
-11 -1: getDoOutput
-18 -1: asVarargsCollector
-22 -1: NoSuchMethodError.java
-18 -1: getStackTraceDepth
-30 -1: (Ljava/io/File;)Ljava/net/URL;
-15 -1: CURRENCY_SYMBOL
-24 -1: Lsun/misc/JavaNioAccess;
-6 -1: NATIVE
-22 -1: Lsun/misc/PerfCounter;
-63 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask
-30 -1:  less than Character.MIN_RADIX
-17 -1: isCallerSensitive
-8 -1: shutdown
-11 -1: STATE_GREEN
-4 -1: next
-10 -1: tryPresize
-16 -1: CONSTRUCTOR_NAME
-3 -1: MAY
-21 -1: java.security.manager
-20 -1: Lsun/misc/Contended;
-16 -1: DISPLAY_LANGUAGE
-6 -1: KeySet
-9 -1: getScript
-3 -1: utc
-17 -1: TRACE_INTERPRETER
-39 -1: (Ljava/lang/Object;I)Ljava/lang/String;
-19 -1: getFieldAtIfLoaded0
-15 -1: methodFilterMap
-54 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;
-45 -1: java/security/cert/Certificate$CertificateRep
-43 -1: (Ljava/lang/String;)Lsun/util/calendar/Era;
-34 -1: java/security/cert/X509Certificate
-19 -1: versionsInitialized
-11 -1: isDirectory
-14 -1: aliases_IBM775
-38 -1: (Ljava/util/function/Consumer<-TE;>;)V
-38 -1: (Ljava/lang/String;)Ljava/util/Locale;
-40 -1: (Ljava/lang/String;Z)Lsun/misc/Resource;
-14 -1: setDefaultZone
-14 -1: highResCounter
-78 -1: (Ljava/lang/ClassValue$Version;Ljava/lang/Object;)Ljava/lang/ClassValue$Entry;
-16 -1: defaultUseCaches
-40 -1: (Ljava/util/zip/ZipFile;)Ljava/util/Map;
-24 -1: isSupplementaryCodePoint
-15 -1: ISO_8859_1.java
-13 -1: multiplyExact
-126 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
-8 -1: classMap
-8 -1: wildcard
-19 -1: getSimpleBinaryName
-17 -1: illegal signature
-14 -1:  == basicType(
-17 -1: ZipConstants.java
-32 -1: [Ljava/lang/VirtualMachineError;
-27 -1: ()Ljava/util/stream/Stream;
-24 -1: (Ljava/lang/Exception;)V
-21 -1: java/util/Enumeration
-13 -1: newSetFromMap
-8 -1: getenv.*
-20 -1: sun/management/Agent
-21 -1: sun/nio/cs/US_ASCII$1
-7 -1: comment
-15 -1: appendAuthority
-11 -1: hasWrappers
-10 -1: dstOffset 
-24 -1: sun/reflect/ConstantPool
-75 -1: (Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;
-52 -1: (Ljava/util/jar/JarFile;)Ljava/util/jar/JarVerifier;
-70 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>;
-14 -1: previousSetBit
-17 -1: AF_GETSTATIC_INIT
-15 -1: ArrayDeque.java
-7 -1: boolean
-25 -1: (I)Ljava/math/BigInteger;
-146 -1: (Ljava/lang/ref/ReferenceQueue<Ljava/lang/Class<*>;>;Ljava/util/concurrent/ConcurrentMap<+Ljava/lang/ref/WeakReference<Ljava/lang/Class<*>;>;*>;)V
-8 -1: getClass
-8 -1: user.dir
-6 -1: VALUES
-5 -1: raise
-39 -1: (JLjava/util/function/Consumer<-TV;>;)V
-107 -1: <T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
-5 -1: print
-8 -1: readChar
-55 -1: (JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
-56 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysTask
-60 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Double;>;
-102 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;)Ljava/util/SortedMap<TK;TV;>;
-23 -1: printModifiersIfNonzero
-14 -1: getterFunction
-15 -1: ISO-10646-UCS-2
-14 -1: canonizeString
-13 -1: getTotalSpace
-24 -1: synchronizedNavigableSet
-100 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;)TT;
-4 -1: ioex
-24 -1: ()Ljava/nio/FloatBuffer;
-14 -1: toBinaryString
-7 -1: Segment
-34 -1: ()Lsun/misc/JavaUtilZipFileAccess;
-17 -1: setTargetVolatile
-22 -1: (Ljava/util/List<*>;)V
-51 -1: (ILjava/lang/CharSequence;)Ljava/lang/StringBuffer;
-22 -1: (Ljava/util/List<*>;)Z
-5 -1: (FI)F
-11 -1: parseMethod
-8 -1: Compiled
-19 -1: java/util/SortedMap
-7 -1: setByte
-12 -1: getFieldType
-8 -1: pageSize
-14 -1: getCallerClass
-9 -1: ensureObj
-18 -1: refKindHasReceiver
-10 -1: getZoneIds
-24 -1: (Ljava/nio/CharBuffer;)I
-47 -1: ()Lsun/reflect/generics/parser/SignatureParser;
-8 -1: getIndex
-24 -1: (Ljava/lang/Thread;TT;)V
-18 -1: (Ljava/util/Map;)V
-18 -1: (Ljava/util/Map;)Z
-6 -1: random
-10 -1: putAddress
-64 -1: (Ljava/util/function/Consumer<-Ljava/util/Map$Entry<TK;TV;>;>;)V
-24 -1: (Ljava/nio/CharBuffer;)V
-8 -1: canCache
-24 -1: (Ljava/nio/CharBuffer;)Z
-9 -1: getIntAt0
-4 -1: sqrt
-8 -1: makeLong
-54 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;)V
-5 -1: (JJ)I
-26 -1: javaIOFileDescriptorAccess
-5 -1: (JJ)J
-15 -1:  != basicType: 
-36 -1: Ljava/lang/ref/ReferenceQueue<-TT;>;
-5 -1: words
-16 -1: sun.jnu.encoding
-32 -1: (Ljava/lang/invoke/LambdaForm;)V
-22 -1: ensureClassInitialized
-16 -1: Ljava/util/List;
-14 -1: varargsInvoker
-5 -1: (JJ)V
-20 -1: java/util/Properties
-12 -1: getImplClass
-21 -1: argumentTypesToString
-5 -1: (JJ)Z
-50 -1: java/util/Collections$SynchronizedRandomAccessList
-17 -1: makeWrappedMember
-21 -1: UnmodifiableSortedSet
-22 -1: (ILjava/lang/Class;Z)V
-3 -1: MIT
-13 -1: bootClassPath
-50 -1: (JLjava/util/function/Function;)Ljava/lang/Object;
-74 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap$Node<TK;TV;>;
-45 -1: (Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
-12 -1: advanceProbe
-10 -1: encoderFor
-14 -1: DataInput.java
-16 -1: java/lang/Double
-3 -1: 912
-3 -1: 914
-3 -1: abs
-3 -1: 915
-13 -1: currentThread
-17 -1: ClassDefiner.java
-32 -1: sun/misc/Launcher$ExtClassLoader
-16 -1: Current state = 
-12 -1: elementCount
-10 -1: unmaskNull
-8 -1: csibm857
-32 -1: java/net/UnknownServiceException
-10 -1: x-utf-16be
-3 -1: acc
-37 -1: Ljava/util/List<Ljava/io/Closeable;>;
-23 -1: ([Ljava/lang/Thread;Z)I
-17 -1: impliesIgnoreMask
-23 -1: getGenericComponentType
-51 -1: ()Lsun/reflect/generics/repository/ClassRepository;
-34 -1: " not found. Will use interpreter.
-38 -1: ()Ljava/security/AccessControlContext;
-6 -1: final 
-8 -1: utf-16le
-3 -1: 920
-3 -1: 923
-5 -1: (I)[C
-43 -1: (Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
-8 -1: csibm862
-34 -1: (Ljava/lang/ref/Reference<+TT;>;)Z
-8 -1: csibm866
-20 -1: getParameterizedType
-7 -1: (II[C)V
-20 -1: [Ljava/lang/Package;
-84 -1: (Ljava/lang/String;Ljava/security/ProtectionDomain;)Ljava/security/ProtectionDomain;
-28 -1: SynchronizedRandomAccessList
-18 -1: sun/misc/VMSupport
-61 -1: java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
-3 -1: add
-16 -1: ZipEntryIterator
-11 -1: next_target
-87 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class<*>;
-4 -1: amod
-12 -1: markedSkipLF
-55 -1: java/util/concurrent/ConcurrentHashMap$EntrySpliterator
-5 -1:  lim=
-29 -1: java/security/PermissionsHash
-50 -1: (Ljava/lang/CharSequence;II)Ljava/lang/Appendable;
-19 -1: makePairwiseConvert
-58 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)V
-8 -1: contents
-11 -1: user.region
-17 -1: RandomAccess.java
-13 -1: singletonList
-13 -1: policy,access
-64 -1: Ljava/util/Map<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;
-25 -1: (Ljava/lang/Appendable;)V
-19 -1: (Ljava/util/List;)V
-43 -1: (Ljava/lang/ClassLoader;Ljava/lang/Class;)V
-19 -1: (Ljava/util/List;)Z
-15 -1: America/Chicago
-25 -1: (II)Ljava/nio/CharBuffer;
-12 -1: getDayOfWeek
-8 -1: ([BIIZ)V
-28 -1: (Ljava/lang/reflect/Field;)I
-28 -1: (Ljava/lang/reflect/Field;)J
-18 -1: getDeclaringClass0
-11 -1: counterTime
-30 -1: (Ljava/util/Collection<TE;>;)V
-28 -1: (Ljava/lang/reflect/Field;)V
-31 -1: (IIIILjava/io/FileDescriptor;)V
-25 -1: java/net/SocketPermission
-20 -1: bad parameter count 
-18 -1: getHeaderFieldLong
-26 -1: GetReflectionFactoryAction
-19 -1: MIN_TRANSFER_STRIDE
-17 -1: java/nio/Bits$1$1
-7 -1: getSize
-33 -1: java/util/function/ToLongFunction
-46 -1: (IILjava/lang/String;)Ljava/lang/StringBuffer;
-10 -1: access$800
-65 -1: sun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache
-26 -1: (Ljava/lang/ClassLoader;)V
-25 -1: java/util/IdentityHashMap
-26 -1: (Ljava/lang/ClassLoader;)Z
-91 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
-26 -1: ([CIILjava/lang/String;I)I
-12 -1: canonicalize
-3 -1: val
-8 -1: putCharB
-12 -1: UTF_32LE_BOM
-60 -1: (Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;
-44 -1: (Lsun/misc/SignalHandler;Lsun/misc/Signal;)V
-26 -1: (Ljava/util/Enumeration;)V
-11 -1: INVALIDATED
-8 -1: putCharL
-22 -1: (II)Ljava/lang/String;
-7 -1: hasNext
-5 -1: WRITE
-20 -1: MIN_INITIAL_CAPACITY
-13 -1: propertyNames
-9 -1: Gregorian
-13 -1: getExpiration
-7 -1: minutes
-7 -1: ostream
-9 -1: java.lang
-17 -1: forceStandardTime
-9 -1: initWords
-41 -1: java/lang/Thread$UncaughtExceptionHandler
-9 -1: theUnsafe
-27 -1: ForEachTransformedEntryTask
-10 -1: forEncoder
-31 -1: needsClassLoaderPermissionCheck
-5 -1: ctime
-25 -1: ()Ljava/nio/DoubleBuffer;
-8 -1: getValue
-66 -1: (Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-42 -1: (Ljava/io/InputStream;Ljava/lang/String;)V
-6 -1: august
-14 -1: compileClasses
-13 -1: javaNetAccess
-22 -1: interpretWithArguments
-4 -1: url:
-14 -1: EMPTY_ITERATOR
-60 -1: Ljava/util/WeakHashMap<Ljava/io/Closeable;Ljava/lang/Void;>;
-24 -1: java/util/jar/Attributes
-12 -1: getOrDefault
-19 -1: Pacific/Guadalcanal
-33 -1: ()Ljava/lang/reflect/Constructor;
-38 -1: java/util/Collections$UnmodifiableList
-13 -1: basicTypeChar
-22 -1: (Ljava/lang/String;J)J
-14 -1: memberDefaults
-42 -1: (Ljava/lang/Class<*>;[Ljava/lang/String;)V
-38 -1: (Ljava/util/function/Consumer<-TK;>;)V
-16 -1: LF_NEWINVSPECIAL
-10 -1: classDepth
-28 -1: [Ljava/io/ObjectStreamField;
-46 -1: (Ljava/util/Collection;)Ljava/util/Collection;
-91 -1: ([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-11 -1: getLocation
-39 -1: (Ljava/lang/Class;[Ljava/lang/Class;Z)V
-9 -1: loadTable
-55 -1: Directory separator should not appear in library name: 
-7 -1: setTime
-14 -1: getConstructor
-4 -1: urls
-25 -1: dispatchUncaughtException
-77 -1: (ILjava/lang/Object;Ljava/lang/Class<*>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
-8 -1: modCount
-8 -1: Opening 
-6 -1: ENDHDR
-4 -1: cnfe
-34 -1: DIRECTIONALITY_PARAGRAPH_SEPARATOR
-10 -1: Asia/Amman
-3 -1: MST
-28 -1: DIRECTIONALITY_ARABIC_NUMBER
-3 -1: all
-4 -1: enum
-8 -1: copyWith
-12 -1: ([JI[IIJII)I
-29 -1: Ljava/lang/annotation/Target;
-7 -1: Thread-
-14 -1: x-utf-32le-bom
-38 -1: (ILjava/lang/management/MemoryUsage;)V
-33 -1: Signal already used by VM or OS: 
-27 -1: (I)Ljava/lang/StringBuffer;
-25 -1: java/text/Normalizer$Form
-10 -1: x-utf-16le
-34 -1:  can not access a member of class 
-27 -1: (Ljava/nio/ByteBuffer;IFZ)V
-28 -1: (Ljava/lang/ClassValue<*>;)V
-16 -1: INITIAL_CAPACITY
-23 -1: DirectMethodHandle.java
-18 -1: reduceValuesToLong
-41 -1: (Ljava/lang/String;Ljava/lang/Class<*>;)V
-6 -1: unwrap
-12 -1: threadStatus
-5 -1: (DI)D
-11 -1: fieldOffset
-52 -1: java/util/concurrent/ConcurrentHashMap$EntryIterator
-14 -1: ACCESS_EXECUTE
-44 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;
-29 -1: ([Ljava/lang/ThreadGroup;IZ)I
-18 -1: LocalVariableTable
-17 -1: ConstantPool.java
-26 -1: (Ljava/nio/ByteBuffer;ID)V
-4 -1: (C)B
-3 -1: and
-4 -1: head
-126 -1: (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory;
-4 -1: (C)C
-16 -1: Pacific/Auckland
-7 -1: Thread[
-5 -1: ([D)I
-4 -1: (C)I
-98 -1: <U:Ljava/lang/Object;>([Ljava/lang/reflect/Constructor<TU;>;)[Ljava/lang/reflect/Constructor<TU;>;
-11 -1: fileHandler
-30 -1: DIRECTIONALITY_NONSPACING_MARK
-10 -1: (this Map)
-14 -1: malformedCache
-5 -1: ([D)V
-4 -1: (C)V
-26 -1: getUnicodeLocaleAttributes
-4 -1: (C)Z
-81 -1: (JLjava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)J
-46 -1: [Ljava/util/concurrent/ConcurrentHashMap$Node;
-20 -1:     Max. Heap Size: 
-24 -1: Ljava/lang/reflect/Type;
-13 -1: EmptyIterator
-8 -1: allocate
-7 -1: FLUSHED
-8 -1: exitVM.*
-59 -1: (Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
-19 -1: reduceEntriesToLong
-15 -1: getISOLanguages
-13 -1: CONSTANT_ZERO
-23 -1: (I)Ljava/util/Iterator;
-96 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;
-11 -1: isSynthetic
-7 -1: lineBuf
-30 -1: java/lang/annotation/Inherited
-65 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Iterable<TE;>;
-35 -1: (Ljava/lang/String;)[Ljava/io/File;
-27 -1: java/security/cert/CertPath
-26 -1: startRemoteManagementAgent
-9 -1: shiftLeft
-5 -1: stack
-42 -1: (Ljava/lang/Class<*>;[Ljava/lang/Object;)V
-11 -1: CheckedList
-10 -1: replaceAll
-86 -1: (Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-24 -1: (I)Ljava/nio/CharBuffer;
-13 -1: image/vnd.fpx
-15 -1: iso_8859-1:1987
-19 -1: (Ljava/lang/Long;)I
-22 -1: sun/misc/SignalHandler
-15 -1: ifModifiedSince
-42 -1: (Ljava/lang/Class;)Ljava/lang/ClassLoader;
-105 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Class;I[Ljava/lang/invoke/MemberName;)I
-22 -1: Negative timeout value
-38 -1: Ljava/io/UnsupportedEncodingException;
-11 -1: removeRange
-13 -1: Compiler.java
-6 -1: Sorter
-8 -1: aliasSet
-10 -1: UNASSIGNED
-34 -1: lambda$comparingByValue$1065357e$1
-34 -1: ()Ljava/lang/Class$AnnotationData;
-25 -1: sun/misc/Launcher$Factory
-15 -1: getLongVolatile
-8 -1: vmloader
-10 -1: unicodebig
-10 -1: closeables
-31 -1: JavaIOFileDescriptorAccess.java
-7 -1:  static
-3 -1: arg
-21 -1: library can't be null
-42 -1: java/util/ArraysParallelSortHelpers$FJByte
-22 -1: getDeclaringExecutable
-19 -1: runFinalizersOnExit
-20 -1: simpleTimeZoneParams
-13 -1: Modifier.java
-14 -1: pkcs11keystore
-6 -1: shared
-30 -1: java/net/MalformedURLException
-26 -1: ()[Lsun/util/calendar/Era;
-13 -1: x-MS950-HKSCS
-10 -1: relativize
-40 -1: (Ljava/lang/String;JJ)Ljava/lang/String;
-31 -1: java/util/HashMap$ValueIterator
-29 -1: MODIFY_THREADGROUP_PERMISSION
-38 -1: (Ljava/lang/String;)Ljava/lang/Object;
-7 -1: destroy
-37 -1: (Ljava/util/List;)[Ljava/lang/String;
-18 -1: (Ljava/io/File;Z)V
-32 -1: Ljava/util/HashMap$Node<TK;TV;>;
-18 -1: interfaceModifiers
-34 -1: java/util/LinkedList$LLSpliterator
-7 -1: REF_???
-23 -1: java/net/ContentHandler
-20 -1: <compiledLambdaForm>
-17 -1: [Ljava/lang/Byte;
-6 -1: exitVM
-3 -1: att
-27 -1: sun/nio/cs/UTF_16BE$Encoder
-6 -1: exists
-28 -1: Ljava/util/Collection<+TE;>;
-48 -1: (Ljava/lang/CharSequence;)Ljava/lang/Appendable;
-6 -1: getMap
-52 -1: ([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;
-11 -1: stackTrace[
-21 -1: slowCheckMemberAccess
-33 -1: ReflectiveOperationException.java
-9 -1: versionId
-56 -1: Wrong number of parameters in MethodParameters attribute
-14 -1: isLowSurrogate
-8 -1: csPCp852
-16 -1: copyConstructors
-25 -1: ()Ljava/util/Spliterator;
-9 -1: closeLock
-17 -1: readUnsignedShort
-7 -1: 8859_13
-7 -1: 8859_15
-13 -1: TARGET_OFFSET
-26 -1: (Ljava/util/Hashtable;IZ)V
-44 -1: (Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;
-46 -1: (Ljava/lang/reflect/Type;)Ljava/lang/Class<*>;
-25 -1: DEFAULT_CONCURRENCY_LEVEL
-36 -1: Ljava/util/List<Ljava/lang/String;>;
-29 -1: sun.nio.PageAlignDirectMemory
-37 -1: (Ljava/lang/Class;I)Ljava/lang/Class;
-12 -1: encryptBlock
-8 -1: parentOf
-5 -1: H_HEX
-11 -1: getFloatAt0
-24 -1: VirtualMachineError.java
-18 -1: getDeclaredClasses
-59 -1: (Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer;
-42 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)[C
-37 -1: (Ljava/lang/String;)Ljava/lang/Float;
-13 -1: Iterator.java
-25 -1: (Ljava/io/PrintStream;I)V
-9 -1: getObject
-19 -1: [Ljava/lang/String;
-7 -1: SIZECTL
-11 -1: isUnderflow
-27 -1: sun.nio.MaxDirectMemorySize
-21 -1: isNonPublicProxyClass
-13 -1: toCalendarDOW
-9 -1: Type.java
-14 -1: aliases_IBM850
-17 -1: emptyNavigableMap
-14 -1: aliases_IBM852
-14 -1: aliases_IBM855
-14 -1: aliases_IBM857
-14 -1: aliases_IBM858
-15 -1: iso_8859-4:1988
-13 -1: UnicodeScript
-8 -1: getCharB
-17 -1: constructorMethod
-27 -1: java/util/function/Function
-20 -1: getProtectionDomain0
-8 -1: getCharL
-32 -1: ([Ljava/io/File;)[Ljava/net/URL;
-51 -1: (Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
-7 -1: getenv.
-5 -1: stale
-14 -1: aliases_IBM862
-32 -1: java/util/spi/LocaleNameProvider
-14 -1: aliases_IBM866
-51 -1: ([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-6 -1: CENDSK
-36 -1: java/util/Comparators$NullComparator
-34 -1: UnsafeStaticFieldAccessorImpl.java
-17 -1: staticFieldOffset
-12 -1: prefetchRead
-4 -1: help
-34 -1: (Ljava/util/concurrent/TimeUnit;)J
-8 -1: getChars
-19 -1: java/lang/Throwable
-34 -1: Annotation Type:\n   Member types: 
-55 -1: (Ljava/lang/Class<*>;Ljava/security/ProtectionDomain;)V
-14 -1: aliases_IBM874
-17 -1: getDisplayVariant
-24 -1: Ljava/net/NetPermission;
-15 -1: jvmMinorVersion
-11 -1: subSequence
-3 -1: x86
-6 -1: double
-14 -1: checkSlotCount
-20 -1: java/net/InetAddress
-14 -1: Principal.java
-8 -1: $,;:@&=+
-17 -1: ByteBuffered.java
-21 -1: sun.misc.Perf.getPerf
-11 -1: finishEntry
-27 -1: sun.timezone.ids.oldmapping
-26 -1: (ZLjava/io/OutputStream;)V
-41 -1: (Ljava/lang/String;Z)Ljava/lang/Class<*>;
-32 -1: generateSerializationConstructor
-6 -1: Value 
-40 -1: (Ljava/lang/String;Ljava/lang/String;Z)V
-16 -1: previousClearBit
-7 -1: theProp
-51 -1: (Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
-39 -1: com.sun.javafx.application.LauncherImpl
-21 -1: URLStreamHandler.java
-4 -1:  in 
-14 -1: BIT_INDEX_MASK
-125 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Comparator<-TK;>;)Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
-49 -1: (Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
-10 -1: scaleValue
-27 -1: (Ljava/nio/ByteBuffer;IDZ)V
-78 -1: (Ljava/util/Collection<Ljava/lang/reflect/Field;>;[Ljava/lang/reflect/Field;)V
-53 -1: <T:Ljava/lang/Object;>(I)Ljava/util/Enumeration<TT;>;
-38 -1: java/lang/IncompatibleClassChangeError
-60 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask
-23 -1: not a method or field: 
-35 -1: Ljava/nio/BufferUnderflowException;
-4 -1: i386
-13 -1: US_ASCII.java
-80 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/lang/reflect/AnnotatedType;
-21 -1: initializeSystemClass
-6 -1: ([CI)I
-18 -1: getBooleanProperty
-35 -1: java/util/function/ToDoubleFunction
-37 -1: (Ljava/lang/String;)Ljava/lang/Class;
-28 -1: MapReduceEntriesToDoubleTask
-38 -1: java/util/LinkedHashMap$LinkedEntrySet
-8 -1: copySign
-6 -1: ([CI)V
-55 -1: sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
-12 -1: parseBoolean
-3 -1: NET
-3 -1: NEW
-6 -1: Values
-17 -1: getJavaLangAccess
-9 -1: LocaleKey
-3 -1: :-1
-30 -1: (Ljava/io/ObjectInputStream;)V
-3 -1: NFC
-3 -1: NFD
-18 -1: SIMPLIFIED_CHINESE
-28 -1: ()Ljava/lang/reflect/Method;
-9 -1: localInit
-37 -1: sun/util/locale/LocaleSyntaxException
-15 -1: LambdaForm.java
-5 -1: rtype
-8 -1:  field "
-50 -1: (Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
-80 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)V
-36 -1: java/lang/invoke/MethodHandleNatives
-22 -1: (Ljava/util/Map<**>;)Z
-22 -1: Ljava/lang/Class<TV;>;
-7 -1: SubList
-14 -1: connect,accept
-19 -1: declaredAnnotations
-38 -1: Ljava/lang/ThreadLocal$ThreadLocalMap;
-11 -1: isSpaceChar
-10 -1: offerFirst
-20 -1: sun/nio/ByteBuffered
-17 -1: packageDefinition
-7 -1: trigger
-35 -1: [Ljava/lang/invoke/LambdaForm$Name;
-19 -1: sun.stdout.encoding
-5 -1: start
-26 -1: (Ljava/util/HashMap;IIII)V
-65 -1: (JLjava/util/function/Consumer<-Ljava/util/Map$Entry<TK;TV;>;>;)V
-6 -1: LOCVER
-3 -1: ://
-42 -1: (CLjava/lang/Class<*>;Ljava/lang/Object;)Z
-6 -1: friday
-45 -1: sun/reflect/DelegatingConstructorAccessorImpl
-15 -1: iso_8859-7:1987
-15 -1: newCalendarDate
-24 -1: getAnnotatedReceiverType
-32 -1: java/util/NoSuchElementException
-50 -1: (Ljava/util/NavigableSet;)Ljava/util/NavigableSet;
-26 -1: java/text/SimpleDateFormat
-16 -1: threadInitNumber
-55 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/Spliterator<TT;>;
-23 -1: (Ljava/lang/Object;)TT;
-3 1: bar
-37 -1: getFunctionalInterfaceMethodSignature
-5 -1: state
-39 -1: [Ljava/lang/reflect/GenericDeclaration;
-22 -1: sun/net/ProgressSource
-13 -1: LLSpliterator
-93 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TT;>;Ljava/util/Iterator<TT;>;
-5 -1: JAPAN
-11 -1: SPACE_TOTAL
-20 -1: CharsetProvider.java
-12 -1: CR_UNDERFLOW
-7 -1: ITALIAN
-11 -1: getCallerPD
-13 -1: isMemberClass
-38 -1: (Ljava/util/function/Consumer<-TT;>;)V
-18 -1: malformedForLength
-14 -1: ReflectionData
-34 -1: (BZI)Ljava/lang/invoke/LambdaForm;
-16 -1: forPrimitiveType
-31 -1:  field found in java.lang.Class
-60 -1: (Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V
-18 -1: DescendingIterator
-25 -1: (IZLjava/lang/Runnable;)V
-35 -1: ()[Ljava/lang/reflect/TypeVariable;
-3 -1: bcp
-23 -1: (Ljava/lang/Object;)TV;
-25 -1: setDefaultAssertionStatus
-10 -1: ([BIIIII)V
-150 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
-14 -1:    Inherited: 
-17 -1: fileTimeToWinTime
-7 -1: ([BI)[B
-26 -1: java/io/OutputStreamWriter
-58 -1: <T:Ljava/lang/Object;>(Ljava/util/ListIterator<+TT;>;I)TT;
-39 -1: sun/reflect/annotation/AnnotationParser
-71 -1: (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream;
-47 -1: Ljava/util/concurrent/locks/ReentrantLock$Sync;
-44 -1: (Ljava/util/Collection;[Ljava/lang/Object;)Z
-43 -1: ([ILjava/util/function/IntBinaryOperator;)V
-29 -1: reverseAllValidSurrogatePairs
-20 -1: Ljava/nio/file/Path;
-20 -1: getGenericSignature0
-42 -1: (Ljava/lang/String;Ljava/lang/Class<*>;Z)V
-8 -1: manEntry
-64 -1: (Ljava/lang/String;)Ljava/util/Enumeration<Lsun/misc/Resource;>;
-36 -1: newGetDoubleIllegalArgumentException
-63 -1: (Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;
-30 -1:     Ergonomics Machine Class: 
-40 -1: ()Ljava/util/Map<Ljava/lang/String;TT;>;
-50 -1: (Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-30 -1: CHECK_MEMBER_ACCESS_PERMISSION
-22 -1: (Ljava/lang/Boolean;)I
-10 -1: V_Variable
-68 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask
-61 -1: (Ljava/lang/String;IILjava/lang/String;)Ljava/nio/ByteBuffer;
-21 -1: accessClassInPackage.
-44 -1: java/util/WeakHashMap$WeakHashMapSpliterator
-11 -1: nextElement
-9 -1: separator
-48 -1: java/util/zip/ZipFile$ZipFileInflaterInputStream
-44 -1: java/security/UnresolvedPermissionCollection
-10 -1: access$900
-44 -1: java/util/ArraysParallelSortHelpers$FJDouble
-84 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
-52 -1: (Ljava/lang/ref/Finalizer;)Ljava/lang/ref/Finalizer;
-19 -1: getDeclaredMethods0
-29 -1: (IJ)Ljava/lang/StringBuilder;
-11 -1: Member.java
-61 -1: (Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMBean;
-35 -1: java/lang/AssertionStatusDirectives
-23 -1: Declaring class is null
-56 -1: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
-12 -1: java/io/File
-41 -1: java/util/ConcurrentModificationException
-47 -1: (Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;
-19 -1: parameterClassCache
-8 -1: US_ASCII
-15 -1: tryMonitorEnter
-22 -1: Ljava/util/Collection;
-67 -1: (Lsun/misc/Signal;Lsun/misc/SignalHandler;)Lsun/misc/SignalHandler;
-27 -1: (Lsun/misc/JavaNioAccess;)V
-9 -1: DigitOnes
-5 -1: write
-31 -1: NF_internalMemberNameEnsureInit
-18 -1: comparableClassFor
-20 -1: defineAnonymousClass
-49 -1: (Ljava/io/InputStream;Lsun/net/ProgressSource;J)V
-31 -1: java/lang/NumberFormatException
-17 -1: remainderUnsigned
-62 -1: <T::Ljava/lang/Comparable<-TT;>;>()Ljava/util/Comparator<TT;>;
-4 -1: Kind
-20 -1: (Ljava/lang/Short;)I
-8 -1: OfDouble
-51 -1: ([Ljava/lang/Object;Ljava/lang/invoke/MethodType;)Z
-22 -1: [Ljava/util/Map$Entry;
-13 -1: instanceClass
-29 -1: ()Ljava/lang/SecurityManager;
-12 -1: isUnmappable
-17 -1: getAllStackTraces
-19 -1: LinkedValueIterator
-7 -1: isDigit
-10 -1: rangeCheck
-89 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
-13 -1: getMethodType
-21 -1: FileOutputStream.java
-22 -1: ()Ljava/text/Collator;
-64 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;)TT;
-15 -1: defaultTimeZone
-14 -1: emptySortedMap
-35 -1: (Ljava/util/function/IntConsumer;)V
-45 -1: java/util/Collections$CheckedRandomAccessList
-11 -1: getPriority
-7 -1: signals
-6 -1: Subset
-15 -1: invokeInterface
-16 -1: nameRefsAreLegal
-38 -1: (Ljava/lang/Object;)Ljava/lang/Object;
-37 -1: Ljava/util/Collections$EmptyIterator;
-9 -1: Perf.java
-20 -1: java/math/BigInteger
-38 -1: java/util/WeakHashMap$ValueSpliterator
-71 -1: (Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
-50 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Object;)V
-21 -1: [Ljava/lang/Class<*>;
-13 -1: getProperties
-63 -1: (Ljava/lang/Class<*>;[B[Ljava/lang/Object;)Ljava/lang/Class<*>;
-65 -1: (Ljava/util/Set<Ljava/lang/Class<*>;>;)[Ljava/lang/reflect/Field;
-21 -1: sun/util/calendar/Era
-21 -1: Ljava/nio/CharBuffer;
-23 -1: (Ljava/lang/Object;JS)V
-24 -1: oracle/jrockit/jfr/VMJFR
-15 -1: access allowed 
-34 -1: ()Lsun/util/calendar/CalendarDate;
-97 -1: (Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
-44 -1: ([Ljava/lang/Object;[Ljava/lang/Object;III)V
-48 -1: (Ljava/util/Collection;I)Ljava/util/Spliterator;
-11 -1: SimpleEntry
-63 -1: (Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;)V
-8 -1: putFloat
-20 -1: linkToCallSiteMethod
-8 -1: invokers
-35 -1: (J)Lsun/util/calendar/BaseCalendar;
-6 -1: FRENCH
-26 -1: getRawParameterAnnotations
-9 -1: wordIndex
-29 -1: JNI_COPY_FROM_ARRAY_THRESHOLD
-20 -1: sun/nio/cs/Surrogate
-48 -1: (Lsun/misc/JavaSecurityProtectionDomainAccess;)V
-45 -1: (Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V
-3 -1: NST
-14 -1: getHeaderField
-27 -1: (Ljava/util/jar/JarFile;Z)V
-10 -1: findNative
-38 -1: The following can be used with access:
-29 -1: convertCertArrayToSignerArray
-4 -1: .DSA
-12 -1: dependencies
-12 -1: SYNCHRONIZED
-14 -1: x-euc-jp-linux
-28 -1: URLStreamHandlerFactory.java
-11 -1: checkPtypes
-68 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
-13 -1: addDayOfMonth
-10 -1: isAncestor
-16 -1: entryDislocation
-12 -1: tableSizeFor
-29 -1: (ID)Ljava/lang/StringBuilder;
-19 -1: getLastRuleInstance
-24 -1: getGenericParameterTypes
-8 -1: ,offset=
-37 -1: (Ljava/net/URL;Ljava/lang/String;II)V
-13 -1: UTF_16LE.java
-12 -1: setTimestamp
-31 -1: AtomicReferenceFieldUpdaterImpl
-6 -1: L_URIC
-4 -1: (D)D
-14 -1: DeqSpliterator
-13 -1: LF_INVVIRTUAL
-171 -1: <U:Ljava/lang/Object;W:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/Class<TW;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TU;TW;>;
-4 -1: (D)I
-22 -1: Ljava/lang/Class<TT;>;
-4 -1: (D)J
-196 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-13 -1: ,transitions=
-30 -1: (Lsun/net/www/MessageHeader;)I
-4 -1: (D)V
-12 -1: segmentShift
-4 -1: (D)Z
-14 -1: Reference.java
-26 -1: [Ljava/lang/reflect/Field;
-26 -1: java/nio/DirectByteBufferR
-31 -1: lambda$thenComparing$36697e65$1
-30 -1: (Lsun/net/www/MessageHeader;)V
-55 -1: No java.nio.charset.StandardCharsets instances for you!
-59 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;Ljava/lang/Object;)I
-19 -1: thenComparingDouble
-31 -1: ()Ljava/lang/invoke/LambdaForm;
-9 -1: getMillis
-21 -1: StandardCharsets.java
-15 -1: postDefineClass
-8 -1: getExtra
-3 -1: box
-10 -1: nextSetBit
-27 -1: java/util/ArrayList$SubList
-43 -1: (Ljava/util/concurrent/ConcurrentHashMap;)V
-52 -1: (Lsun/misc/URLClassPath;)Ljava/net/URLStreamHandler;
-7 -1: putLong
-40 -1: <T::Ljava/lang/Comparable<-TT;>;>([TT;)V
-8 -1: ([DII)[D
-8 -1: ([SIIS)I
-8 -1: argument
-12 -1: linkCallSite
-56 -1: <T:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<TT;>;
-15 -1: returnSlotCount
-68 -1: (Ljava/lang/String;[Ljava/lang/Class<*>;Z)Ljava/lang/reflect/Method;
-20 -1: defaultDisplayLocale
-21 -1: (Ljava/util/Vector;)V
-49 -1: (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V
-12 -1: isAlphabetic
-5 -1: perms
-13 -1: dosToJavaTime
-8 -1: ([SIIS)V
-7 -1: valueOf
-27 -1: Ljava/util/LinkedList$Node;
-41 -1: (Ljava/lang/String;I)Ljava/lang/Class<*>;
-38 -1: ()Ljava/nio/charset/CodingErrorAction;
-4 -1: MASK
-5 -1: Field
-101 -1: (Ljava/lang/Class;Ljava/nio/ByteBuffer;Lsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/lang/Object;
-56 -1: (Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
-9 -1: SURROGATE
-72 -1: (Ljava/lang/invoke/DirectMethodHandle$StaticAccessor;)Ljava/lang/Object;
-19 -1: PARAMETER_MODIFIERS
-48 -1: ([Ljava/lang/Object;II)Ljava/util/stream/Stream;
-56 -1: (TK;TV;Ljava/util/function/BiFunction<-TV;-TV;+TV;>;)TV;
-118 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
-29 -1: (Lsun/nio/ch/Interruptible;)V
-45 -1: Ljava/lang/ref/Reference<Ljava/lang/Object;>;
-17 -1: isHeldExclusively
-3 -1: NYI
-15 -1: getByteVolatile
-20 -1: compareAndSwapObject
-29 -1: (Z)[Ljava/lang/reflect/Field;
-7 -1: ([SII)V
-13 -1: toLanguageTag
-18 -1: StreamEncoder.java
-25 -1: (IF)Ljava/nio/ByteBuffer;
-18 -1: afterNodeInsertion
-11 -1: accessOrder
-60 -1: Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;
-20 -1: META-INF/MANIFEST.MF
-18 -1: getSuperInterfaces
-26 -1: (Ljava/nio/ByteBuffer;IZ)C
-26 -1: (Ljava/nio/ByteBuffer;IZ)D
-9 -1: PROTECTED
-18 -1:  not visible from 
-26 -1: java/lang/RuntimeException
-26 -1: (Ljava/nio/ByteBuffer;IZ)F
-20 -1: java/net/FileNameMap
-15 -1: insertArguments
-8 -1: diagprop
-26 -1: (Ljava/nio/ByteBuffer;IZ)I
-26 -1: (Ljava/nio/ByteBuffer;IZ)J
-20 -1: createContentHandler
-11 -1: getProtocol
-26 -1: (Ljava/nio/ByteBuffer;IZ)S
-33 -1: Ljava/lang/NoSuchMethodException;
-19 -1: entry name too long
-40 -1: java/util/jar/JarVerifier$VerifierStream
-6 -1: server
-7 -1: OCTOBER
-26 -1: sun/invoke/util/VerifyType
-6 -1: domain
-9 -1: getUnsafe
-5 -1: ([Z)I
-4 -1: cons
-42 -1: ()Ljava/lang/ReflectiveOperationException;
-4 -1: byte
-29 -1: java/util/function/BiConsumer
-24 -1: getJavaUtilZipFileAccess
-37 -1: ([Ljava/lang/Object;)Ljava/util/List;
-27 -1: timeout can not be negative
-62 -1: Ljava/util/Map<Ljava/io/InputStream;Ljava/util/zip/Inflater;>;
-16 -1: getOurStackTrace
-34 -1: (J)Ljava/lang/ref/Reference<+TT;>;
-50 -1: Lsun/reflect/generics/repository/MethodRepository;
-20 -1: MIN_BYTE_BUFFER_SIZE
-3 -1: buf
-13 -1: getAttributes
-6 -1: GERMAN
-38 -1: java/security/NoSuchAlgorithmException
-20 -1: Direct buffer memory
-6 -1: (IIZ)V
-27 -1: JVMTI_THREAD_STATE_RUNNABLE
-26 -1: [Ljava/io/File$PathStatus;
-36 -1: (Ljava/util/List;Ljava/lang/Class;)V
-13 -1: JarIndex.java
-34 -1: java/lang/Character$CharacterCache
-8 -1: csIBM857
-10 -1: LineReader
-28 -1: Ljava/lang/RuntimeException;
-30 -1: ()Ljava/util/Enumeration<TV;>;
-12 -1: getSeparator
-124 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;
-97 -1: Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/ref/WeakReference<Ljava/nio/charset/CoderResult;>;>;
-21 -1: ConstantCallSite.java
-40 -1: sun/util/locale/provider/LocaleResources
-101 -1: <U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
-4 -1: copy
-23 -1: sun/security/util/Debug
-10 -1: isAbsolute
-34 -1: (Ljava/lang/invoke/MethodHandle;)V
-34 -1: (Ljava/lang/invoke/MethodHandle;)Z
-48 -1: ()[Ljava/util/concurrent/ConcurrentHashMap$Node;
-34 -1: (Lsun/reflect/LangReflectAccess;)V
-8 -1: csIBM862
-8 -1: csIBM866
-64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask
-39 -1: No java.util.Objects instances for you!
-68 -1: (Ljava/util/PrimitiveIterator$OfInt;JI)Ljava/util/Spliterator$OfInt;
-19 -1: Illegal class name 
-24 -1: uncaughtExceptionHandler
-12 -1: runFinalizer
-23 -1: java/io/FileInputStream
-41 -1: (Ljava/lang/Class<*>;Ljava/lang/String;)V
-98 -1: (Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
-30 -1: java/nio/charset/CoderResult$1
-20 -1: SourceDebugExtension
-30 -1: java/nio/charset/CoderResult$2
-69 -1: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)Z
-14 -1: 1.8.0-internal
-16 -1: ReduceValuesTask
-13 -1: toLowerString
-14 -1: newPrintStream
-13 -1: unicodelittle
-19 -1: getClassLoadingLock
-9 -1: DigitTens
-80 -1: (Ljava/lang/Class<*>;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-12 -1: sun_eu_greek
-21 -1: getBootstrapClassPath
-9 -1: volatile 
-15 -1: UnmodifiableMap
-21 -1: enumConstantDirectory
-10 -1: getContent
-4 -1: cosh
-74 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
-11 -1: ([JII[JII)V
-28 -1: java/lang/reflect/Executable
-17 -1: MapReduceKeysTask
-6 -1: isOpen
-17 -1: AnnotationDefault
-17 -1: Already connected
-27 -1: (Lsun/misc/JavaNetAccess;)V
-34 -1: ([BILjava/nio/charset/Charset;Z)[B
-55 -1: Ljava/lang/invoke/DirectMethodHandle$EnsureInitialized;
-8 -1: Set.java
-10 -1: DEAD_ENTRY
-7 -1: nextInt
-3 -1: wtb
-23 -1: java/util/Collections$1
-86 -1: (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier;
-23 -1: java/util/Collections$2
-23 -1: java/util/Collections$3
-18 -1: DoubleCumulateTask
-22 -1: skip value is negative
-85 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;
-5 -1: \\[\\]$
-34 -1: Ljava/util/NoSuchElementException;
-3 -1: NaN
-30 -1: sun/util/calendar/CalendarDate
-10 -1: V_Constant
-20 -1: java/lang/Comparable
-9 -1: text/html
-20 -1: -9223372036854775808
-20 -1: DataInputStream.java
-20 -1:    Member defaults: 
-35 -1: Ljava/lang/ref/ReferenceQueue$Lock;
-8 -1: getBytes
-17 -1: CodePointIterator
-11 -1: Signal.java
-19 -1: javaHomePrefixCache
-12 -1: replaceFirst
-37 -1: Ljava/lang/IndexOutOfBoundsException;
-39 -1: (Ljava/lang/String;ZI)Ljava/lang/Class;
-21 -1: initSystemClassLoader
-28 -1: America/Indiana/Indianapolis
-47 -1: (Ljava/security/Permission;Ljava/lang/Object;)V
-27 -1: java/net/URISyntaxException
-21 -1: createSecurityManager
-7 -1: suspend
-12 -1: L_UNRESERVED
-17 -1: checkMemberAccess
-12 -1: CoreCounters
-19 -1: java/net/HttpCookie
-8 -1: isGetter
-17 -1: setDaylightSaving
-27 -1: java.launcher.javafx.error1
-53 -1: java/util/concurrent/ConcurrentHashMap$CollectionView
-16 -1: readUnsignedByte
-47 -1: (Ljava/lang/String;)Ljava/net/URLStreamHandler;
-40 -1: (Z)[Ljava/lang/reflect/Constructor<TT;>;
-14 -1: javaLangAccess
-5 -1: apply
-8 -1: getFloat
-15 -1: getD3DAvailable
-25 -1: startLocalManagementAgent
-7 -1: RUNTIME
-22 -1: LocalVariableTypeTable
-8 -1: doOutput
-16 -1: CheckedSortedSet
-10 -1: zoneOffset
-64 -1: (Ljava/security/Permission;)Ljava/security/PermissionCollection;
-13 -1: hasUnresolved
-13 -1: user.language
-11 -1: getDoubleAt
-14 -1: getQueueLength
-37 -1: java/nio/DirectByteBuffer$Deallocator
-6 -1: ASHIFT
-9 -1: checkPath
-80 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljava/lang/Class;)V
-6 -1: CENEXT
-16 -1: doubleToLongBits
-11 -1: copyToArray
-9 -1: copyField
-36 -1: ()Lsun/util/calendar/Gregorian$Date;
-53 -1: (ILjava/lang/Object;)Ljava/util/HashMap$Node<TK;TV;>;
-44 -1: (TK;TV;Ljava/lang/ref/ReferenceQueue<TV;>;)V
-35 -1: java/util/Collections$EmptyIterator
-38 -1: sealing violation: can't seal package 
-37 -1: (Ljava/util/Queue;Ljava/lang/Class;)V
-129 -1: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B[B)V
-18 -1: HashMapSpliterator
-8 -1: putShort
-23 -1: (Ljava/lang/Object;II)V
-7 -1: GERMANY
-13 -1: toTitleString
-102 -1: (Ljava/util/ArrayPrefixHelpers$CumulateTask;Ljava/util/function/BinaryOperator;[Ljava/lang/Object;II)V
-44 -1: ([Ljava/lang/Object;)Ljava/util/Spliterator;
-6 -1: unused
-25 -1: java/net/URLClassLoader$1
-25 -1: java/net/URLClassLoader$2
-25 -1: java/net/URLClassLoader$3
-25 -1: java/net/URLClassLoader$4
-12 -1: getFixedDate
-25 -1: java/net/URLClassLoader$5
-4 -1: time
-25 -1: java/net/URLClassLoader$6
-25 -1: java/net/URLClassLoader$7
-14 -1: historicalName
-12 -1: normalizeKey
-13 -1: MIN_SURROGATE
-41 -1: java/nio/charset/CharacterCodingException
-18 -1: java/lang/Iterable
-8 -1: ([JII)[J
-103 -1: Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
-18 -1: putBooleanVolatile
-5 -1: Entry
-11 -1: CounterCell
-12 -1: monitorEnter
-10 -1: skipBuffer
-15 -1: hasMoreElements
-24 -1: newIllegalStateException
-24 -1: Ljava/lang/LinkageError;
-12 -1: getEntryFlag
-44 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;)V
-18 -1: java/nio/IntBuffer
-17 -1: jdk_minor_version
-28 -1: DIRECTIONALITY_RIGHT_TO_LEFT
-15 -1: getAndSetObject
-7 -1: sizeCtl
-15 -1: Ljava/util/Set;
-32 -1: (I)Ljava/lang/invoke/LambdaForm;
-16 -1: runFinalization0
-30 -1: Ljava/lang/reflect/Executable;
-15 -1: compareUnsigned
-5 -1: nkeys
-31 -1: Ljava/nio/channels/FileChannel;
-40 -1: sun/reflect/generics/tree/ClassSignature
-22 -1: (Ljava/lang/Object;I)B
-22 -1: (Ljava/lang/Object;I)C
-22 -1: (Ljava/lang/Object;I)D
-7 -1: JANUARY
-30 -1: newGetIllegalArgumentException
-22 -1: (Ljava/lang/Object;I)F
-22 -1: (Ljava/lang/Object;I)I
-22 -1: (Ljava/lang/Object;I)J
-28 -1: generateNamedFunctionInvoker
-38 -1: (Ljava/lang/String;)Ljava/time/ZoneId;
-19 -1: lambda$codePoints$2
-4 -1: Null
-7 -1: setEras
-15 -1: lambda$chars$15
-14 -1: CollectionView
-24 -1: (C)Ljava/io/PrintStream;
-22 -1: (Ljava/lang/Object;I)S
-96 -1: (Ljava/security/AccessControlContext;Lsun/security/util/Debug;Ljava/security/ProtectionDomain;)V
-17 -1: getJulianCalendar
-22 -1: (Ljava/lang/Object;I)V
-17 -1: getMethodAccessor
-9 -1: not owner
-35 -1: java/lang/reflect/ParameterizedType
-15 -1: ValueCollection
-22 -1: (Ljava/lang/Object;I)Z
-4 -1: utf8
-5 -1: CHINA
-9 -1: sprintf0d
-18 -1: java/nio/file/Path
-35 -1: DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
-30 -1: URI has an authority component
-43 -1: (Ljava/lang/Object;)Ljava/util/Spliterator;
-15 -1: <no principals>
-62 -1: (Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
-6 -1: ([ZZ)V
-10 -1: getContext
-12 -1: content-type
-99 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
-51 -1: (Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;)V
-27 -1: Invalid constant pool index
-20 -1: getUnicodeLocaleType
-43 -1: Ljava/nio/charset/CharacterCodingException;
-113 -1: (Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap<Ljava/lang/String;Lsun/misc/URLClassPath$Loader;>;)V
-56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
-24 -1: Lsun/misc/SignalHandler;
-8 -1: readlink
-125 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind<*>;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey;
-11 -1: initStatics
-15 -1: unmappableCache
-13 -1: fixMethodType
-25 -1: sun/net/www/MessageHeader
-3 -1: cdt
-27 -1: Ljava/util/Locale$Category;
-59 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
-8 -1: Accessor
-14 -1: mapLibraryName
-54 -1: (Lsun/misc/URLClassPath$JarLoader;)Lsun/misc/JarIndex;
-24 -1: ZoneOffsetTransitionRule
-7 -1: getChar
-3 -1: cee
-25 -1: MapReduceValuesToLongTask
-20 -1: declaredPublicFields
-44 -1: (Ljava/lang/ClassLoader;Ljava/lang/String;)J
-13 -1: removeElement
-20 -1: Ljava/nio/ByteOrder;
-8 -1: parallel
-67 -1: (Ljava/lang/reflect/Constructor;Lsun/reflect/ConstructorAccessor;)V
-22 -1: java/util/zip/ZipCoder
-8 -1: ([ZIIZ)V
-45 -1: (Ljava/lang/String;Ljava/lang/CharSequence;)Z
-8 -1: february
-40 -1: java/util/zip/ZipFile$ZipFileInputStream
-47 -1: java/nio/charset/Charset$ExtendedProviderHolder
-13 -1: IEEEremainder
-15 -1: sun/misc/Perf$1
-9 -1: abstract 
-20 -1: ()Ljava/time/ZoneId;
-7 -1: ONE_DAY
-92 -1: (Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-45 -1: (Ljava/util/ListIterator;I)Ljava/lang/Object;
-16 -1: Buffer size <= 0
-9 -1: checkName
-11 -1: getJarEntry
-20 -1: Replacement too long
-53 -1: (Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;
-12 -1: isWhitespace
-15 -1: csISOLatinGreek
-70 -1: (Ljava/lang/reflect/Constructor<*>;Lsun/reflect/ConstructorAccessor;)V
-20 -1: TypeAnnotationTarget
-3 -1: No 
-27 -1: Lsun/reflect/FieldAccessor;
-12 -1: doPrivileged
-83 -1: (JLjava/util/function/ToIntFunction<-TV;>;ILjava/util/function/IntBinaryOperator;)I
-60 -1: (Ljava/nio/file/attribute/FileTime;)Ljava/util/zip/ZipEntry;
-11 -1: changeEntry
-18 -1: MessageHeader.java
-51 -1: ([Ljava/lang/String;Ljava/util/Map;)Ljava/util/Map;
-9 -1: castEntry
-16 -1: ACCESS_MODIFIERS
-11 -1: newInstance
-24 -1: lastIndexOfSupplementary
-13 -1: JZENTRY_EXTRA
-5 -1: LONGS
-7 -1: domain 
-16 -1: protocolPathProp
-21 -1: java/util/Hashtable$1
-10 -1: isSameDate
-23 -1: (I)Ljava/nio/file/Path;
-33 -1: java/util/PrimitiveIterator$OfInt
-7 -1: ([II)[I
-8 -1: variant=
-29 -1: (Ljava/util/Collection<*>;Z)Z
-38 -1:  already loaded in another classloader
-10 -1: setSeconds
-9 -1: makeShort
-59 -1: ClassLoader.findLibrary failed to return an absolute path: 
-26 -1: java/util/jar/JarException
-9 -1: setCharAt
-13 -1: initCauseFrom
-13 -1: val$fieldName
-18 -1: MIN_HIGH_SURROGATE
-60 -1: (Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)B
-25 -1: getDayOfWeekFromFixedDate
-10 -1: maybeReBox
-9 -1: getHandle
-60 -1: (Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)I
-59 -1: ([Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<TT;>;
-3 -1: cis
-11 -1: getIssuerDN
-9 -1: codebase=
-80 -1: (ILjava/lang/invoke/BoundMethodHandle$SpeciesData;)Ljava/lang/invoke/LambdaForm;
-29 -1: addThreadDumpForSynchronizers
-6 -1: FRANCE
-77 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>([TU;ILjava/lang/Class<+[TT;>;)[TT;
-45 -1: <T:Ljava/lang/Object;>()Ljava/util/List<TT;>;
-16 -1: putFloatVolatile
-34 -1: (Ljava/lang/Class;)Ljava/util/Map;
-28 -1: ()Ljava/security/Permission;
-28 -1: (Ljava/lang/CharSequence;I)I
-51 -1: ()Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
-25 -1: (II)Ljava/nio/ByteBuffer;
-20 -1: BasicPermission.java
-5 -1: isNaN
-48 -1: (Ljava/lang/Throwable;)Ljava/lang/InternalError;
-10 -1: ONE_MINUTE
-55 -1: (Ljava/lang/invoke/DirectMethodHandle$StaticAccessor;)J
-13 -1: DAYS_IN_MONTH
-7 -1: domains
-10 -1: isUnshared
-58 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Long;>;
-47 -1: (Ljava/util/List;)Ljava/security/cert/CertPath;
-28 -1: ()Ljava/util/Enumeration<*>;
-34 -1: sun/misc/Launcher$ExtClassLoader$1
-22 -1: (CLjava/lang/Object;)Z
-64 -1: Ljava/lang/ref/WeakReference<Ljava/nio/charset/CharsetDecoder;>;
-7 -1: ENGLISH
-27 -1: (Ljava/util/zip/Inflater;)V
-24 -1: makeArrayElementAccessor
-72 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
-48 -1: (Ljava/util/jar/JarFile;)Ljava/util/Enumeration;
-48 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-15 -1: getNthDayOfWeek
-16 -1: printHelpMessage
-15 -1: getAbsoluteFile
-9 -1: OPEN_READ
-19 -1: willGMTOffsetChange
-28 -1: (Ljava/util/LinkedHashMap;)V
-37 -1: java/security/AllPermissionCollection
-5 -1: [id="
-34 -1: java/lang/invoke/BoundMethodHandle
-31 -1: ()Ljava/security/cert/CertPath;
-50 -1: java/util/ArraysParallelSortHelpers$FJShort$Sorter
-14 -1: StaticAccessor
-22 -1: synchronizedCollection
-53 -1: ([Ljava/io/File;)Ljava/security/AccessControlContext;
-37 -1: (Ljava/lang/Class;Ljava/lang/Class;)Z
-14 -1: codePointCount
-13 -1:  is param at 
-37 -1: Ljava/lang/invoke/MemberName$Factory;
-20 -1: annotationDataOffset
-31 -1: protocol doesn't support output
-11 -1: hostAddress
-12 -1: ,dstSavings=
-35 -1: java.lang.Integer.IntegerCache.high
-15 -1: ParallelLoaders
-48 -1: (Ljava/util/Locale;)Lsun/util/locale/BaseLocale;
-8 -1: getSize0
-22 -1: checkCreateClassLoader
-8 -1: transfer
-32 -1: (Lsun/misc/JavaSecurityAccess;)V
-26 -1: ()Ljava/net/URLConnection;
-3 -1: cmp
-9 -1: setMillis
-34 -1: sun/util/calendar/AbstractCalendar
-19 -1: getDirectBufferPool
-7 -1: ([FII)V
-28 -1: ([C)Ljava/lang/StringBuffer;
-54 -1: (Ljava/lang/Class<*>;)Ljava/security/ProtectionDomain;
-26 -1: (Ljava/nio/ByteBuffer;IF)V
-11 -1: discardMark
-71 -1: (Ljava/lang/Class;)Lsun/util/locale/provider/LocaleServiceProviderPool;
-30 -1: java/io/UTFDataFormatException
-53 -1: (Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
-48 -1: java/util/concurrent/ConcurrentHashMap$Traverser
-5 -1: ([F)I
-37 -1: (IC)Ljava/lang/AbstractStringBuilder;
-27 -1: Ljava/util/jar/JarVerifier;
-22 -1: java/util/Spliterators
-32 -1: java/lang/invoke/MutableCallSite
-20 -1: java/io/Serializable
-5 -1: ([F)V
-35 -1: (Ljava/security/ProtectionDomain;)V
-33 -1: ()Ljava/lang/ref/Reference<+TT;>;
-10 -1: unlinkLast
-6 -1: (JSZ)V
-8 -1: isStatic
-14 -1: subclassAudits
-23 -1: (Ljava/lang/String;)TT;
-17 -1: java.awt.headless
-9 -1: <Unknown>
-39 -1: Lsun/util/locale/LocaleSyntaxException;
-8 -1: location
-3 -1: cos
-27 -1: createGarbageCollectorMBean
-20 -1: MAX_MH_INVOKER_ARITY
-75 -1: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
-14 -1: Cloneable.java
-50 -1: (Lsun/reflect/DelegatingConstructorAccessorImpl;)V
-26 -1: sun/nio/ch/FileChannelImpl
-51 -1: (Ljava/lang/Class;Ljava/lang/reflect/Constructor;)V
-18 -1: Unknown byte order
-28 -1: ()[Lsun/invoke/util/Wrapper;
-21 -1: getReadClassBytesTime
-64 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm;
-11 -1: setDelegate
-20 -1: (Ljava/util/List;)[C
-7 -1: usemmap
-22 -1: (CC)Ljava/lang/String;
-34 -1: sun/invoke/util/BytecodeDescriptor
-21 -1: getJavaSecurityAccess
-53 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
-7 -1: ibm-737
-19 -1: (Ljava/lang/Enum;)I
-4 -1: rint
-11 -1: Constructor
-9 -1: arraycopy
-35 -1: ([D)Ljava/util/stream/DoubleStream;
-13 -1: comparingLong
-40 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;
-23 -1: OutputStreamWriter.java
-8 -1: getShort
-17 -1: CLASSPATH_LASTOCC
-13 -1: createNewFile
-14 -1: internalValues
-34 -1: Ljava/lang/IllegalAccessException;
-23 -1: (JILjava/lang/Object;)V
-27 -1: sun.misc.URLClassPath.debug
-45 -1: [Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-35 -1: ()Lsun/reflect/ConstructorAccessor;
-12 -1: classEnabled
-23 -1: cachedFixedDateNextJan1
-48 -1: (Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-26 -1: (Ljava/lang/ThreadGroup;)V
-7 -1: setErr0
-6 -1: CENFLG
-26 -1: (Ljava/lang/ThreadGroup;)Z
-18 -1: sun/misc/MetaIndex
-3 -1: crc
-34 -1: (Z)Ljava/lang/invoke/MethodHandle;
-12 -1: replaceNames
-15 -1: java/util/Stack
-57 -1: Ljava/util/Vector<Ljava/lang/ClassLoader$NativeLibrary;>;
-89 -1: (JLjava/util/function/ToDoubleFunction<-TV;>;DLjava/util/function/DoubleBinaryOperator;)D
-24 -1: permission can't be null
-22 -1: Unable to connect to: 
-44 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
-14 -1: floatToIntBits
-11 -1: getLastRule
-6 -1: EXTCRC
-26 -1: java/net/InetSocketAddress
-36 -1: (Lsun/misc/URLClassPath$JarLoader;)V
-27 3: sun/launcher/LauncherHelper
-8 -1: ecma-118
-49 -1: (Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL;
-13 -1: hashCodeValue
-5 -1: CESU8
-21 -1: appendVmSelectMessage
-13 -1: bindImmediate
-12 -1: closeLoaders
-16 -1: emptySpliterator
-28 -1: (J)Ljava/time/LocalDateTime;
-22 -1: [Ljava/lang/Character;
-5 -1: certs
-6 -1: (null)
-25 -1: java/io/ObjectInputStream
-27 -1: ([Ljava/lang/ThreadGroup;)I
-3 -1: cst
-3 -1: csu
-20 -1: java/nio/ShortBuffer
-53 -1: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
-4 -1: (Z)I
-24 -1: Ljava/io/FileDescriptor;
-6 -1: cclass
-10 -1: , profile 
-39 -1: (Ljava/lang/String;)Ljava/lang/Process;
-4 -1: (Z)V
-5 -1: toURI
-24 -1: ConstructorAccessor.java
-5 -1: toURL
-18 -1: addAllIfNotPresent
-4 -1: (Z)Z
-5 -1: parse
-11 -1: isPrimitive
-42 -1: (Ljava/io/File;)Ljava/lang/ProcessBuilder;
-36 -1: (Ljava/util/Date;)Ljava/lang/String;
-23 -1: getFormalTypeParameters
-13 -1: Resource.java
-7 -1: ibm-775
-6 -1: isEnum
-24 -1: setJavaUtilZipFileAccess
-21 -1: \t[CIRCULAR REFERENCE:
-51 -1: (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
-24 -1: (I)Ljava/nio/ByteBuffer;
-53 -1: sun/reflect/generics/repository/GenericDeclRepository
-3 -1: xor
-17 -1: invokeBasicMethod
-27 -1: java/lang/invoke/LambdaForm
-99 -1: (Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
-46 -1: Lsun/reflect/generics/factory/GenericsFactory;
-37 -1: sun/misc/Launcher$BootClassPathHolder
-10 -1: BindCaller
-24 -1: java/lang/reflect/Member
-32 -1: java/lang/management/ThreadState
-5 -1: (IB)V
-21 -1: RuntimeException.java
-5 -1: ended
-17 -1: java/util/TreeSet
-7 -1: : no !/
-16 -1: java/util/Vector
-9 -1: nextAfter
-22 -1: Ljava/lang/Deprecated;
-20 -1: requestedCharsetName
-37 -1: ([JIII)Ljava/util/Spliterator$OfLong;
-14 -1: internArgument
-11 -1: getTimeZone
-10 -1: isValidKey
-11 -1: LAST_RESULT
-43 -1: sun/reflect/annotation/TypeAnnotationParser
-13 -1: encodedInPath
-52 -1: (Ljava/security/PrivilegedAction;)Ljava/lang/Object;
-4 -1: LL_L
-34 -1: java/nio/charset/CodingErrorAction
-10 -1: copyFields
-11 -1: getConstant
-9 -1: threshold
-13 -1: aliases_UTF_8
-27 -1: (Ljava/util/ArrayDeque;II)V
-29 -1: Ljava/lang/ref/SoftReference;
-19 -1: indexedBinarySearch
-11 -1: containsKey
-81 -1: ([Ljava/lang/ClassValue$Entry;Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
-86 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<*>;II)Ljava/lang/invoke/MethodHandle;
-15 -1: cannot convert 
-25 -1: getSystemResourceAsStream
-46 -1: (Ljava/util/Properties;)Ljava/util/Properties;
-12 -1: reverseOrder
-16 -1: getSystemPackage
-8 -1: ([SII)[S
-19 -1: makeAccessException
-100 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
-39 -1: ([Ljava/lang/Class;I)[Ljava/lang/Class;
-19 -1: Ljava/lang/Boolean;
-6 -1: Hidden
-47 -1: java/lang/invoke/MethodHandleImpl$ArrayAccessor
-5 -1: APRIL
-8 -1: emptySet
-11 -1: getCombiner
-58 -1: (Ljava/lang/String;I[Ljava/lang/invoke/LambdaForm$Name;I)V
-24 -1: java.system.class.loader
-14 -1: Can't handle: 
-16 -1: isNullConversion
-38 -1: ()Ljava/util/HashMap$TreeNode<TK;TV;>;
-29 -1: referenceKindIsConsistentWith
-11 -1: flushBuffer
-8 -1: putField
-27 -1: ()Ljava/security/PublicKey;
-53 -1: ()Ljava/util/stream/Stream<Ljava/util/jar/JarEntry;>;
-10 -1: pathToURLs
-26 -1: throwIllegalStateException
-10 -1: markedChar
-14 -1: isNativeMethod
-36 -1: (I)Ljava/lang/AbstractStringBuilder;
-54 -1: java/util/concurrent/ConcurrentHashMap$ReservationNode
-45 -1: Lsun/misc/JavaSecurityProtectionDomainAccess;
-62 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;I)V
-7 -1: subList
-8 -1: UTF_32BE
-6 -1: U_None
-50 -1: sun/reflect/generics/repository/AbstractRepository
-62 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;I)Z
-43 -1: sun/net/www/protocol/file/FileURLConnection
-13 -1: setZoneOffset
-43 -1: Underlying input stream returned zero bytes
-54 -1: [a-zA-Z_$][a-zA-Z0-9_$]*([.][a-zA-Z_$][a-zA-Z0-9_$]*)*
-13 -1: containsValue
-44 -1: (Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
-25 -1: isNullReferenceConversion
-38 -1: Ljava/util/Vector<Ljava/lang/String;>;
-6 -1: toFile
-7 -1: getSlot
-17 -1: (Ljava/net/URI;)V
-32 -1: java.security.cert.Certificate: 
-24 -1: ()Lsun/misc/PerfCounter;
-11 -1: Asia/Hebron
-16 -1: createMemoryPool
-10 -1: addToCache
-29 -1: Ljava/lang/invoke/DontInline;
-39 -1: java/lang/ref/Finalizer$FinalizerThread
-58 -1: (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope;
-20 -1: getBooleanAttributes
-15 -1: parallelLockMap
-34 -1: java/util/Vector$VectorSpliterator
-21 -1: createMemoryPoolMBean
-15 -1: no content-type
-41 -1: Couldn't find 3-letter language code for 
-5 -1: slash
-34 -1: Ljava/lang/annotation/ElementType;
-8 -1: isSetter
-26 -1: (ZLjava/lang/String;JJJZ)V
-6 -1: GMT_ID
-73 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Constructor<TT;>;>;
-56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
-32 -1: (Ljava/util/Set;)Ljava/util/Set;
-4 -1: stop
-62 -1: (Ljava/lang/String;IILjava/lang/String;I)Ljava/nio/ByteBuffer;
-11 -1: genericInfo
-11 -1: listToArray
-26 -1: ()Ljava/util/jar/Manifest;
-13 -1: putOrderedInt
-5 -1: flush
-13 -1: ArrayAccessor
-4 -1: Name
-95 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-68 -1: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-23 -1: java/lang/ref/Reference
-37 -1: (Ljava/nio/file/attribute/FileTime;)J
-14 -1: MIN_CODE_POINT
-9 -1: ISO8859-1
-9 -1: ISO8859-2
-9 -1: ISO8859-5
-34 -1: ([CILjava/nio/charset/Charset;Z)[C
-9 -1: ISO8859-9
-9 -1: getUTF8At
-12 -1: java/net/URI
-67 -1: (Ljava/io/DataInput;Ljava/lang/String;)Lsun/util/calendar/ZoneInfo;
-22 -1: ListCompositionPattern
-67 -1: (Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;
-3 1: xxx
-12 -1: java/net/URL
-27 -1: Can't overwrite cause with 
-30 -1: sun/util/locale/BaseLocale$Key
-22 -1: forkSecondaryFinalizer
-23 -1: java/security/Principal
-8 -1: makeSite
-17 -1: NEGATIVE_INFINITY
-12 -1: addUnstarted
-12 -1: internalForm
-9 -1: cellsBusy
-23 -1: (Ljava/lang/Object;IJ)V
-13 -1: getParameters
-6 -1: H_PATH
-10 -1: L_REG_NAME
-139 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
-6 -1: latin0
-10 -1: addSeconds
-6 -1: latin1
-6 -1: latin2
-6 -1: latin4
-6 -1: latin5
-17 -1: getWaitingThreads
-6 -1: latin9
-21 -1: java/util/Comparators
-10 -1: trimToSize
-96 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;Ljava/lang/Object;)Ljava/util/Collection<TT;>;
-43 -1: ([JLjava/util/function/IntToLongFunction;)V
-23 -1: GET_COMBINER_PERMISSION
-20 -1: lambda$replaceAll$14
-5 -1: KOREA
-20 -1: getJvmSpecialVersion
-9 -1: dumpStack
-16 -1: CACHE_LOAD_LIMIT
-43 -1:               GSS LoginConfigImpl debugging
-26 -1: (DLjava/lang/Appendable;)V
-8 -1: forName0
-35 -1: java/lang/ClassLoader$NativeLibrary
-46 -1: java/util/concurrent/ConcurrentHashMap$Segment
-24 -1: getDeclaredAnnotationMap
-89 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
-20 -1: java_runtime_version
-26 -1: java/util/stream/IntStream
-16 -1: Ljava/io/Writer;
-69 -1: ()Ljava/util/SortedMap<Ljava/lang/String;Ljava/nio/charset/Charset;>;
-15 -1: getClassLoader0
-6 -1: x86_64
-11 -1: isInterface
-15 -1: MODIFIER_SYMBOL
-44 -1: Note: Separate multiple options with a comma
-9 -1: recursive
-19 -1: java/nio/CharBuffer
-8 -1: capacity
-17 -1: validateMainClass
-50 -1: (Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
-22 -1: (Ljava/lang/Object;J)B
-22 -1: (Ljava/lang/Object;J)C
-22 -1: (Ljava/lang/Object;J)D
-17 -1: not a method type
-22 -1: (Ljava/lang/Object;J)F
-5 -1: count
-32 -1: AtomicReferenceFieldUpdater.java
-22 -1: (Ljava/lang/Object;J)I
-14 -1: methodAccessor
-22 -1: (Ljava/lang/Object;J)J
-7 -1: isError
-51 -1: (Ljava/nio/Buffer;II)Ljava/nio/charset/CoderResult;
-53 -1: (BZLjava/lang/Class<*>;)Ljava/lang/invoke/LambdaForm;
-25 -1:  <no signer certificates>
-5 -1: [pos=
-14 -1: lambda$chars$1
-9 -1: CELLVALUE
-16 -1: haveLeftoverChar
-22 -1: ([Ljava/lang/String;)V
-32 -1: java/lang/InstantiationException
-7 -1: SIG_IGN
-13 -1: ZipUtils.java
-50 -1: Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;
-22 -1: (Ljava/lang/Object;J)S
-69 -1: Ljava/util/HashMap<Ljava/lang/String;Lsun/misc/URLClassPath$Loader;>;
-16 -1: newInternalError
-22 -1: (Ljava/lang/Object;J)V
-9 -1: ABBR_MASK
-5 -1: array
-22 -1: (Ljava/lang/Object;J)Z
-13 -1: FilteringMode
-30 -1: java/util/stream/StreamSupport
-19 -1: retrieveDisplayName
-56 -1: (Ljava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
-10 -1: val$values
-9 -1: normalize
-28 -1: (II)Ljava/lang/CharSequence;
-16 -1: serialVersionUID
-7 -1: getPath
-25 -1: (ILjava/lang/Class<*>;Z)V
-13 -1: thenComparing
-51 -1: (Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
-36 -1: ()[Ljava/lang/annotation/Annotation;
-14 -1: MetaIndex.java
-8 -1: identity
-15 -1: findSystemClass
-24 -1: privateGetDeclaredFields
-27 -1: java/lang/ref/SoftReference
-19 -1: useCanonPrefixCache
-3 -1: dec
-3 -1: PLT
-8 -1: UTF_32LE
-17 -1: java/util/HashMap
-12 -1: toEpochMilli
-9 -1: intStream
-11 -1: Caused by: 
-31 -1: java/nio/charset/CharsetDecoder
-30 -1:               is being checked
-11 -1: parseHeader
-25 -1: ACCUMULATED_DAYS_IN_MONTH
-34 -1: newGetByteIllegalArgumentException
-21 -1: checkPropertiesAccess
-13 -1: StackMapTable
-8 -1: addCount
-51 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
-9 -1: authority
-15 -1: iso-10646-ucs-2
-6 -1: SUNDAY
-22 -1: LocalGregorianCalendar
-9 -1: listRoots
-32 -1: Lsun/reflect/generics/tree/Tree;
-38 -1: [Ljava/util/WeakHashMap$Entry<TK;TV;>;
-11 -1: nativeOrder
-5 -1: long0
-5 -1: long1
-5 -1: long2
-5 -1: long3
-17 -1: capacityIncrement
-5 -1: long4
-97 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
-31 -1: Ljava/lang/CharacterDataLatin1;
-5 -1: long5
-5 -1: long6
-5 -1: long7
-17 -1: reduceValuesToInt
-13 -1: package2certs
-13 -1: isTypeVisible
-30 -1: java/lang/ref/PhantomReference
-47 -1: ()Ljava/util/stream/Stream<Ljava/lang/String;>;
-9 -1: longValue
-3 -1: PNT
-10 -1: storeToXML
-10 -1: getMethod0
-12 -1: constantZero
-7 -1: promise
-116 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/MethodRepository;
-32 -1: DIRECTIONALITY_SEGMENT_SEPARATOR
-9 -1: byteOrder
-9 -1: isPromise
-4 -1: isOn
-6 -1: LOCCRC
-10 -1: setDefault
-9 -1: setHandle
-15 -1: java/nio/Buffer
-37 -1: (Ljava/lang/String;I)Ljava/lang/Long;
-10 -1: Float.java
-12 -1: showSettings
-27 -1: (Ljava/io/FileDescriptor;)I
-27 -1: (Ljava/io/FileDescriptor;)J
-21 -1: java/util/Spliterator
-22 -1: CodingErrorAction.java
-11 -1: isMalformed
-27 -1: java/util/PrimitiveIterator
-15 -1: THROW_EXCEPTION
-15 -1: copyToCharArray
-26 -1: ()Ljava/util/jar/JarEntry;
-27 -1: (Ljava/io/FileDescriptor;)V
-11 -1: getEncoding
-48 -1: (Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;I)V
-17 -1: java.runtime.name
-28 -1: (Lsun/invoke/util/Wrapper;)Z
-20 -1: annotationTypeOffset
-27 -1: (J)Ljava/lang/StringBuffer;
-15 -1: METHOD_RECEIVER
-10 -1: startEntry
-29 -1: (I)Ljava/lang/reflect/Member;
-7 -1: setOut0
-10 -1: getMethods
-26 -1: ()Lsun/misc/JavaNioAccess;
-18 -1: linkToTargetMethod
-8 -1: INSTANCE
-3 -1: dir
-41 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;)V
-9 -1: unboxCast
-58 -1: <T:Ljava/lang/Throwable;>(TT;)Lsun/invoke/empty/Empty;^TT;
-12 -1: java.version
-50 -1: (Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
-32 2: sun/net/www/protocol/jar/Handler
-20 -1: java/lang/Compiler$1
-9 -1: LongCache
-14 -1: FILL_THRESHOLD
-22 -1: getRawClassAnnotations
-9 -1: (JI[CII)I
-13 -1: hasMoreTokens
-13 -1: getSuperclass
-3 -1: PRC
-12 -1: MAX_PRIORITY
-14 -1: checkCacheLoad
-7 -1: lowMask
-8 -1: LM_CLASS
-7 -1: initIDs
-27 -1: Ljava/util/Collection<TV;>;
-3 -1: yes
-3 -1: PRT
-91 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
-27 -1: ()Lsun/security/util/Debug;
-8 -1: VM start
-9 -1: setMemory
-7 -1: getName
-10 -1: findSignal
-19 -1: startsWithLocHeader
-37 -1: java/util/Collections$SynchronizedMap
-51 -1: (ICLjava/lang/Object;)Ljava/lang/invoke/LambdaForm;
-62 -1: (Ljava/util/Locale;)Lsun/util/locale/provider/LocaleResources;
-17 -1: lastParameterType
-9 -1: NO_PTYPES
-116 -1: <T:Ljava/lang/Object;>([Ljava/lang/ClassValue$Entry<*>;Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
-18 -1: DisplayNamePattern
-8 -1: getField
-5 -1: flags
-3 -1: PST
-17 -1: annotationDefault
-18 -1: java/nio/ByteOrder
-8 -1: highMask
-6 -1: ascii7
-29 -1: getGregorianYearFromFixedDate
-125 -1: (Ljava/lang/String;[Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)V
-8 -1: =Lambda(
-29 -1: Ljava/util/WeakHashMap$Entry;
-18 -1: multiValueIterator
-74 -1: Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;
-13 -1: CONV_OP_LIMIT
-6 -1: sclSet
-81 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
-14 -1: appendFragment
-46 -1: java/util/Collections$SynchronizedNavigableMap
-36 -1: application/x-java-serialized-object
-13 -1: setNativeName
-53 -1: java/util/concurrent/ConcurrentHashMap$ForwardingNode
-16 -1: setJavaAWTAccess
-30 -1: methodHandleInvokeLinkerMethod
-15 -1: reduceKeysToInt
-20 -1: ensureCapacityHelper
-23 -1: createFileURLConnection
-12 -1: d3dAvailable
-69 -1: (Ljava/lang/Object;Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
-49 -1: java/util/ArraysParallelSortHelpers$FJLong$Sorter
-21 -1: explicitCastArguments
-24 -1: JAVAFX_LAUNCH_MODE_CLASS
-9 -1: invoke_MT
-18 -1: ensureMemberAccess
-74 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I
-36 -1: java/nio/charset/spi/CharsetProvider
-23 -1: (Ljava/lang/String;II)V
-14 -1: initProperties
-4 -1: (F)F
-35 -1: [[Ljava/lang/annotation/Annotation;
-4 -1: (F)I
-106 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/String;>;Ljava/lang/CharSequence;
-46 -1: java/lang/invoke/BoundMethodHandle$SpeciesData
-74 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
-24 -1: java.launcher.opt.header
-37 -1: ([Ljava/security/ProtectionDomain;Z)V
-10 -1: lineBuffer
-7 -1: ibm-813
-9 -1: isBuiltin
-4 -1: (F)V
-7 -1: ibm-819
-9 -1: H_ESCAPED
-4 -1: (F)Z
-20 -1: suppressedExceptions
-12 -1: UTF-32LE-BOM
-19 -1: CalendarSystem.java
-8 -1: readOnly
-81 -1: (JLjava/util/function/Function;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-32 -1: sun/misc/Launcher$AppClassLoader
-78 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/io/File;>;
-17 -1: [Ljava/lang/Enum;
-41 -1: java/util/Collections$CheckedNavigableSet
-8 -1: asSetter
-3 -1: dom
-41 -1: (I)[Ljava/util/WeakHashMap$Entry<TK;TV;>;
-16 -1: localeExtensions
-21 -1: sun/net/www/ParseUtil
-21 -1: Ljava/nio/ByteBuffer;
-29 -1: java/util/concurrent/TimeUnit
-25 -1: java/lang/CharacterData00
-15 -1: sun/misc/Unsafe
-28 -1: java/io/ByteArrayInputStream
-3 -1: dow
-25 -1: java/lang/CharacterData01
-25 -1: java/lang/CharacterData02
-6 -1: STORED
-11 -1: isTransient
-8 -1: function
-16 -1: getCanonicalFile
-13 -1: ,useDaylight=
-24 -1: domain (context is null)
-12 -1: Cleaner.java
-17 -1: CalendarDate.java
-49 -1: Lsun/reflect/generics/repository/FieldRepository;
-14 -1: forInputString
-25 -1: java/lang/CharacterData0E
-67 -1: (Ljava/lang/Object;Ljava/util/function/Supplier;)Ljava/lang/Object;
-19 -1: codePointBeforeImpl
-6 -1: script
-21 -1: systemNativeLibraries
-38 -1: ([Ljava/lang/Class;)Ljava/lang/String;
-14 -1: CONTENT_LENGTH
-19 -1: HeapCharBuffer.java
-22 -1: ExtendedProviderHolder
-41 -1: java/lang/invoke/InvokerBytecodeGenerator
-12 -1: basicInvoker
-26 -1: ([Ljava/lang/Comparable;)V
-10 -1: val$tclass
-47 -1: (Ljava/lang/Throwable;)Lsun/invoke/empty/Empty;
-18 -1: isLegalReplacement
-22 -1: spliteratorUnknownSize
-15 -1: SynchronizedSet
-16 -1: MethodParameters
-22 -1: desiredAssertionStatus
-29 -1: ()Ljava/util/ArrayDeque<TE;>;
-36 -1: ()Ljava/lang/reflect/Constructor<*>;
-66 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/invoke/LambdaForm;>;
-58 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
-50 -1: (Ljava/util/concurrent/CountedCompleter;[J[JIIII)V
-14 -1: requireNonNull
-21 -1: java/lang/ThreadGroup
-95 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
-76 -1: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)V
-14 -1: reflectionData
-33 -1: Ljava/lang/invoke/MethodTypeForm;
-7 -1: tuesday
-31 -1: ()Lsun/misc/JavaSecurityAccess;
-14 -1: fieldFilterMap
-28 -1: ([Ljava/lang/ThreadGroup;Z)I
-7 -1: ibm-850
-83 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;
-7 -1: ibm-852
-5 -1: cesu8
-14 -1: ForwardingNode
-29 -1: (Ljava/nio/ByteBuffer;IIIII)V
-7 -1: ibm-855
-12 -1: SingletonSet
-16 -1: isOtherUppercase
-15 -1: FIELD_UNDEFINED
-9 -1: makeEntry
-7 -1: ibm-857
-10 -1: extensions
-10 -1: longStream
-19 -1: getGenericSignature
-7 -1: newNode
-8 -1: jarNames
-25 -1: java/util/jar/JarVerifier
-49 -1: ()[Lsun/reflect/generics/tree/ClassTypeSignature;
-4 -1: wait
-115 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository;
-56 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
-65 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
-7 -1: ibm-862
-9 -1: ISO646-US
-7 -1: ibm-866
-16 -1: extendedProvider
-7 -1: ([C[C)Z
-93 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-8 -1: getHours
-21 -1: ()[Ljava/lang/String;
-187 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V
-106 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/locks/ReentrantLock;Ljava/io/Serializable;
-24 -1: java/nio/file/FileSystem
-14 -1: ForEachKeyTask
-13 -1: defaultLocale
-20 -1: constructorModifiers
-13 -1: asWrapperType
-42 -1: (Ljava/lang/String;ZI)Ljava/lang/Class<*>;
-17 -1: BaseCalendar.java
-76 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/CodeSigner;
-14 -1: isSynchronized
-27 -1: java/nio/DirectByteBuffer$1
-3 -1: ()B
-7 -1: ibm-874
-12 -1: exactInvoker
-3 -1: ()C
-39 -1: (Ljava/lang/Thread;Ljava/lang/Object;)V
-3 -1: ()D
-3 -1: ()F
-27 -1: [Ljava/lang/reflect/Method;
-10 -1: floatValue
-3 -1: ()I
-3 -1: ()J
-18 -1: getLocaleResources
-59 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask
-67 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$Entry;)V
-11 -1: maxPriority
-11 -1: getStringAt
-60 -1: (Ljava/lang/ClassValue$Version;)Ljava/lang/ClassValue$Entry;
-3 -1: ()S
-49 -1: (Ljava/lang/String;)Ljava/io/ExpiringCache$Entry;
-42 -1: (III)Lsun/util/calendar/BaseCalendar$Date;
-82 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<TT;>;Ljava/lang/Object;)Ljava/util/Set<TT;>;
-62 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/util/Map;
-3 -1: ()V
-24 -1: ()Ljava/nio/ShortBuffer;
-29 -1: file descriptor can't be null
-3 -1: ()Z
-7 -1: matcher
-66 -1: (Ljava/lang/reflect/Constructor;)Lsun/reflect/ConstructorAccessor;
-7 -1: matches
-12 -1: getAuthority
-16 -1: java/lang/Object
-5 -1: (IC)V
-17 -1: EmptyListIterator
-8 -1: charsets
-8 -1: sameFile
-47 -1: (TT;Ljava/util/function/UnaryOperator<TV;>;)TV;
-16 -1: overwrittenEntry
-15 -1: reinvokerTarget
-11 -1: isUpperCase
-5 -1: toUri
-9 -1: GMT+00:00
-33 -1: java/util/concurrent/ForkJoinPool
-10 -1: parseFloat
-53 -1: java/util/concurrent/ConcurrentHashMap$SearchKeysTask
-48 -1: (Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-82 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;ILjava/lang/Class<*>;)V
-15 -1: reduceCacheLoad
-76 -1: (Ljava/lang/Class<*>;[Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
-20 -1: singletonSpliterator
-24 -1: getTransitionEpochSecond
-24 -1: MapReduceValuesToIntTask
-13 -1: ALLOWED_FLAGS
-55 -1: (Ljava/lang/reflect/Field;Z)Lsun/reflect/FieldAccessor;
-34 -1: [Ljava/lang/annotation/Annotation;
-10 -1: readBuffer
-21 -1: Illegal month value: 
-31 -1: java/security/SecureClassLoader
-12 -1: reinitialize
-5 -1: limit
-4 -1: grow
-15 -1: getCreationTime
-7 -1: , from 
-25 -1: (Ljava/lang/ClassValue;)V
-13 -1: java.compiler
-37 -1: ()Ljava/util/Set<Ljava/lang/String;>;
-6 -1: FJChar
-16 -1: getFieldAccessor
-4 -1: eras
-11 -1: isSupported
-24 -1: ()Ljava/text/DateFormat;
-32 -1: java/util/Collections$CopiesList
-32 -1: java/io/NotSerializableException
-15 -1: typeAnnotations
-27 -1: defaultAllowUserInteraction
-57 -1: (Ljava/lang/String;I[Ljava/lang/invoke/LambdaForm$Name;)V
-18 -1: checkArgumentTypes
-71 -1: (Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar;
-10 -1: isMirrored
-27 -1: (I)Ljava/lang/Thread$State;
-26 -1: (Ljava/util/Collection;Z)Z
-6 -1: ibm367
-16 -1: isAssignableFrom
-7 -1: readUTF
-35 -1: Ljava/lang/ref/ReferenceQueue<TV;>;
-56 -1: ([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
-8 -1: MANDATED
-18 -1: canonicalizeRegion
-11 -1: checkAccept
-44 -1: (Ljava/net/Proxy;)Lsun/net/ApplicationProxy;
-8 -1: ECMA-118
-22 -1: ReflectPermission.java
-4 -1: _put
-41 -1: java.lang.invoke.MethodHandle.DEBUG_NAMES
-47 -1: java/util/concurrent/ConcurrentHashMap$TreeNode
-44 -1: (Ljava/net/URL;[Ljava/security/CodeSigner;)V
-5 -1: april
-44 -1: ([Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
-150 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;TK;>;Ljava/util/Set<TK;>;Ljava/io/Serializable;
-91 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-26 -1: sun/net/util/IPAddressUtil
-8 -1: Modifier
-9 -1: isVarargs
-24 -1: -- listing properties --
-16 -1: hasAllPermission
-27 -1: MapReduceMappingsToLongTask
-29 -1: sharedGetParameterAnnotations
-9 -1: argCounts
-11 -1: toLocalTime
-89 -1: (Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
-4 -1: ROOT
-20 -1: sun.reflect.noCaches
-18 -1: UnicodeBigUnmarked
-4 -1: Lazy
-35 -1: java/lang/invoke/SimpleMethodHandle
-20 -1: (I)Ljava/nio/Buffer;
-48 -1: ()Lsun/reflect/generics/tree/ClassTypeSignature;
-31 -1: (I[CII)Ljava/lang/StringBuffer;
-17 -1: America/Anchorage
-7 -1: markpos
-9 -1: enumerate
-11 -1: parseLocale
-24 -1: java.launcher.cls.error1
-46 -1: (ILjava/lang/Object;)Ljava/lang/StringBuilder;
-24 -1: java.launcher.cls.error2
-24 -1: java.launcher.cls.error3
-24 -1: java.launcher.cls.error4
-21 -1: java/util/ArrayList$1
-17 -1: getExceptionTypes
-24 -1: java.launcher.cls.error5
-30 -1: java/util/Spliterator$OfDouble
-10 -1: forDecoder
-8 -1: getEntry
-10 -1: checkGuard
-12 -1: checkInitted
-34 -1: Lsun/util/locale/LocaleExtensions;
-41 -1: java/util/ArraysParallelSortHelpers$FJInt
-10 -1: findStatic
-22 -1: setConstructorAccessor
-34 -1: Lsun/misc/URLClassPath$FileLoader;
-20 -1: not a reinvoker MH: 
-16 -1: LongCumulateTask
-11 -1: checkAccess
-14 -1: SearchKeysTask
-36 -1: ()[Ljava/lang/reflect/AnnotatedType;
-11 -1: initDefault
--- a/test/hotspot/jtreg/runtime/appcds/FieldAnnotationsTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test for field annotations.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/FieldAnnotationsApp.java test-classes/MyAnnotation.java
- * @run driver FieldAnnotationsTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-// This is a test for the handling of multi-dimensional Arrays in MetaspaceClosure.
-//
-// We choose FieldAnnotations because they happen to be implemented as a multi-dimension
-// Array (Annotations::_fields_annotations, which is of type Array<Array<unsigned char>*>*,
-// and is handled by the template class PointerArrayRef<T> in metaspaceClosure.hpp).
-//
-// Specifically, we are testing the following C code, where _fields_annotations is non-NULL:
-//
-// void Annotations::metaspace_pointers_do(MetaspaceClosure* it) {
-//   ...
-//   it->push(&_fields_annotations);
-//
-// which will be matched with the function
-//
-// template <typename T> void MetaspaceClosure::push(Array<T*>** mpp, Writability w = _default)
-//
-public class FieldAnnotationsTest {
-    public static void main(String[] args) throws Exception {
-        String[] ARCHIVE_CLASSES = {"FieldAnnotationsApp", "MyAnnotation"};
-        String appJar = JarBuilder.build("FieldAnnotationsTest", ARCHIVE_CLASSES);
-
-        OutputAnalyzer dumpOutput = TestCommon.dump(
-                appJar, ARCHIVE_CLASSES);
-        TestCommon.checkDump(dumpOutput);
-
-        OutputAnalyzer execOutput = TestCommon.exec(appJar, "FieldAnnotationsApp");
-        TestCommon.checkExec(execOutput, "Field annotations are OK.");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/FreeUnusedMetadata.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Unused metadata created during dump time should be freed from the CDS archive.
- * @requires vm.cds
- * @library /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile test-classes/MethodNoReturn.jasm test-classes/Hello.java
- * @run driver FreeUnusedMetadata
- */
-
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class FreeUnusedMetadata {
-    static byte iconst_1 =  4;
-    static byte pop      = 87;
-    static byte[] pattern = { // This has the same sequence as in test-classes/MethodNoReturn.jasm
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        pop,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        iconst_1,
-        pop,
-        pop,
-        pop,
-        pop,
-        pop,
-        pop,
-        pop,
-        pop
-    };
-
-    public static void main(String[] args) throws Exception {
-        String[] ARCHIVE_CLASSES = {"Hello", "MethodNoReturn"};
-        String appJar = JarBuilder.build("FreeUnusedMetadata", ARCHIVE_CLASSES);
-
-        OutputAnalyzer dumpOutput = TestCommon.dump(
-                appJar, ARCHIVE_CLASSES);
-        TestCommon.checkDump(dumpOutput, "Loading classes to share");
-
-        OutputAnalyzer execOutput = TestCommon.exec(appJar, "Hello");
-        TestCommon.checkExec(execOutput, "Hello World");
-
-
-        String archive = TestCommon.getCurrentArchiveName();
-        System.out.println("Checking for pattern inside " + archive + "...");
-
-        byte[] data = Files.readAllBytes(Paths.get(archive));
-        int max = data.length - pattern.length;
-        for (int i=0; i<max; i++) {
-            if (data[i+0] == iconst_1 && data[i+1] == pop &&
-                data[i+2] == iconst_1 && data[i+3] == pop) {
-                boolean match = true;
-                for (int x=4; x<pattern.length; x++) {
-                    if (data[i+x] != pattern[x]) {
-                        match = false;
-                        break;
-                    }
-                }
-
-                if (match) {
-                    throw new RuntimeException("method of unverifiable class should have been " +
-                        "removed from the archive " + archive +
-                        " , but was found at offset " + i);
-                }
-            }
-        }
-        System.out.println("Not found: method from unverifiable class has been removed");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/GraalWithLimitedMetaspace.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test dumping with limited metaspace with loading of JVMCI related classes.
- *          VM should not crash but CDS dump will abort upon failure in allocating metaspace.
- * @requires vm.cds & vm.graal.enabled & vm.compMode == "Xmixed"
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build UseAppCDS_Test
- * @run driver ClassFileInstaller -jar test.jar UseAppCDS_Test
- * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
- *      -XX:+TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
- *      GraalWithLimitedMetaspace
- */
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.io.*;
-
-public class GraalWithLimitedMetaspace {
-
-    // Class UseAppCDS_Test is loaded by the App loader
-
-    static final String TEST_OUT = "UseAppCDS_Test.main--executed";
-
-    private static final String TESTJAR = "./test.jar";
-    private static final String TESTNAME = "UseAppCDS_Test";
-    private static final String TESTCLASS = TESTNAME + ".class";
-
-    private static final String CLASSLIST_FILE = "./GraalWithLimitedMetaspace.classlist";
-    private static final String ARCHIVE_FILE = "./GraalWithLimitedMetaspace.jsa";
-    private static final String BOOTCLASS = "java.lang.Class";
-
-    public static void main(String[] args) throws Exception {
-
-        // dump loaded classes into a classlist file
-        dumpLoadedClasses(new String[] { BOOTCLASS, TESTNAME });
-
-
-        // create an archive using the classlist
-        dumpArchive();
-
-    }
-
-    public static List<String> toClassNames(String filename) throws IOException {
-        ArrayList<String> classes = new ArrayList<>();
-        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)))) {
-            for (; ; ) {
-                String line = br.readLine();
-                if (line == null) {
-                    break;
-                }
-                classes.add(line.replaceAll("/", "."));
-            }
-        }
-        return classes;
-    }
-
-    static void dumpLoadedClasses(String[] expectedClasses) throws Exception {
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
-            "-XX:DumpLoadedClassList=" + CLASSLIST_FILE,
-            // trigger JVMCI runtime init so that JVMCI classes will be
-            // included in the classlist
-            "-XX:+UnlockExperimentalVMOptions",
-            "-XX:+EnableJVMCI",
-            "-XX:+EagerJVMCI",
-            "-cp",
-            TESTJAR,
-            TESTNAME,
-            TEST_OUT);
-
-        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-loaded-classes")
-            .shouldHaveExitValue(0)
-            .shouldContain(TEST_OUT);
-
-        List<String> dumpedClasses = toClassNames(CLASSLIST_FILE);
-
-        for (String clazz : expectedClasses) {
-            if (!dumpedClasses.contains(clazz)) {
-                throw new RuntimeException(clazz + " missing in " +
-                                           CLASSLIST_FILE);
-            }
-        }
-    }
-
-    static void dumpArchive() throws Exception {
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
-            "-cp",
-            TESTJAR,
-            "-XX:SharedClassListFile=" + CLASSLIST_FILE,
-            "-XX:SharedArchiveFile=" + ARCHIVE_FILE,
-            "-Xlog:cds",
-            "-Xshare:dump",
-            "-XX:MetaspaceSize=12M",
-            "-XX:MaxMetaspaceSize=12M");
-
-        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-archive");
-        int exitValue = output.getExitValue();
-        if (exitValue == 1) {
-            output.shouldContain("Failed allocating metaspace object type");
-        } else if (exitValue == 0) {
-            output.shouldContain("Loading classes to share");
-        } else {
-            throw new RuntimeException("Unexpected exit value " + exitValue);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/HelloExtTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary a simple test for loading a class using the platform class loader
- *          (which used to be called the "extension loader) in AppCDS
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile test-classes/HelloExt.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver HelloExtTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class HelloExtTest {
-
-  public static void main(String[] args) throws Exception {
-    JarBuilder.build("helloExt", "HelloExt");
-
-    String appJar = TestCommon.getTestJar("helloExt.jar");
-    JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-    String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
-    String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
-
-    TestCommon.dump(appJar,
-        TestCommon.list("javax/annotation/processing/FilerException", "[Ljava/lang/Comparable;"),
-        bootClassPath);
-
-    String prefix = ".class.load. ";
-    String class_pattern = ".*LambdaForm[$]MH[/][0123456789].*";
-    String suffix = ".*source: shared objects file.*";
-    String pattern = prefix + class_pattern + suffix;
-
-    TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, bootClassPath, "-Xlog:class+load", "HelloExt")
-        .assertNormalExit(output -> output.shouldNotMatch(pattern));
-
-
-    TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, bootClassPath, "-Xlog:class+load",
-            "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary",
-            "HelloExt")
-        .assertNormalExit(output ->  output.shouldNotMatch(class_pattern));
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/HelloTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Hello World test for AppCDS
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver HelloTest
- */
-
-public class HelloTest {
-  public static void main(String[] args) throws Exception {
-      TestCommon.test(JarBuilder.getOrCreateHelloJar(),
-          TestCommon.list("Hello"), "Hello");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/IgnoreEmptyClassPaths.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test the -XX:+IgnoreEmptyClassPaths flag
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/HelloMore.java
- * @run driver IgnoreEmptyClassPaths
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class IgnoreEmptyClassPaths {
-
-  public static void main(String[] args) throws Exception {
-    String jar1 = JarBuilder.getOrCreateHelloJar();
-    String jar2 = JarBuilder.build("IgnoreEmptyClassPaths_more", "HelloMore");
-
-    String sep = File.pathSeparator;
-    String cp_dump = jar1 + sep + jar2 + sep;
-    String cp_exec = sep + jar1 + sep + sep + jar2 + sep;
-
-    TestCommon.testDump(cp_dump, TestCommon.list("Hello", "HelloMore"),
-                        "-XX:+TraceClassPaths", "-XX:+IgnoreEmptyClassPaths");
-
-    TestCommon.run(
-        "-verbose:class",
-        "-cp", cp_exec,
-        "-XX:+IgnoreEmptyClassPaths", // should affect classpath even if placed after the "-cp" argument
-        "-XX:+TraceClassPaths",
-        "HelloMore")
-      .assertNormalExit();
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/JarBuilder.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @summary Simple jar builder
- *   Input: jarName className1 className2 ...
- *     do not specify extensions, just the names
- *     E.g. prot_domain ProtDomainA ProtDomainB
- *   Output: A jar containing compiled classes, placed in a test classes folder
- * @library /open/test/lib
- */
-
-import jdk.test.lib.JDKToolFinder;
-import jdk.test.lib.compiler.CompilerUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-import java.io.File;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import sun.tools.jar.Main;
-
-public class JarBuilder {
-    // to turn DEBUG on via command line: -DJarBuilder.DEBUG=[true, TRUE]
-    private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("JarBuilder.DEBUG", "false"));
-    private static final String classDir = System.getProperty("test.classes");
-
-    public static String getJarFilePath(String jarName) {
-        return classDir + File.separator + jarName + ".jar";
-    }
-
-    // jar all files under dir, with manifest file man, with an optional versionArgs
-    // for generating a multi-release jar.
-    // The jar command is as follows:
-    // jar cmf \
-    //  <path to output jar> <path to the manifest file>\
-    //   -C <path to the base classes> .\
-    //    --release 9 -C <path to the versioned classes> .
-    // the last line begins with "--release" corresponds to the optional versionArgs.
-    public static void build(String jarName, File dir, String man, String ...versionArgs)
-        throws Exception {
-        ArrayList<String> args = new ArrayList<String>();
-        if (man != null) {
-            args.add("cfm");
-        } else {
-            args.add("cf");
-        }
-        args.add(classDir + File.separator + jarName + ".jar");
-        if (man != null) {
-            args.add(man);
-        }
-        args.add("-C");
-        args.add(dir.getAbsolutePath());
-        args.add(".");
-        for (String verArg : versionArgs) {
-            args.add(verArg);
-        }
-        createJar(args);
-    }
-
-    public static String build(String jarName, String ...classNames)
-        throws Exception {
-
-        return createSimpleJar(classDir, getJarFilePath(jarName), classNames);
-    }
-
-    public static String build(boolean classesInWorkDir, String jarName, String ...classNames)
-        throws Exception {
-        if (classesInWorkDir) {
-            return createSimpleJar(".", getJarFilePath(jarName), classNames);
-        } else {
-            return build(jarName, classNames);
-        }
-    }
-
-
-    public static String buildWithManifest(String jarName, String manifest,
-        String jarClassesDir, String ...classNames) throws Exception {
-        String jarPath = getJarFilePath(jarName);
-        ArrayList<String> args = new ArrayList<String>();
-        args.add("cvfm");
-        args.add(jarPath);
-        args.add(System.getProperty("test.src") + File.separator + "test-classes"
-            + File.separator + manifest);
-        addClassArgs(args, jarClassesDir, classNames);
-        createJar(args);
-
-        return jarPath;
-    }
-
-
-    // Execute: jar uvf $jarFile -C $dir .
-    static void update(String jarFile, String dir) throws Exception {
-        String jarExe = JDKToolFinder.getJDKTool("jar");
-
-        ArrayList<String> args = new ArrayList<>();
-        args.add(jarExe);
-        args.add("uvf");
-        args.add(jarFile);
-        args.add("-C");
-        args.add(dir);
-        args.add(".");
-
-        executeProcess(args.toArray(new String[1]));
-    }
-
-
-    private static String createSimpleJar(String jarclassDir, String jarName,
-        String[] classNames) throws Exception {
-
-        ArrayList<String> args = new ArrayList<String>();
-        args.add("cf");
-        args.add(jarName);
-        addClassArgs(args, jarclassDir, classNames);
-        createJar(args);
-
-        return jarName;
-    }
-
-    private static void addClassArgs(ArrayList<String> args, String jarclassDir,
-        String[] classNames) {
-
-        for (String name : classNames) {
-            args.add("-C");
-            args.add(jarclassDir);
-            args.add(name + ".class");
-        }
-    }
-
-    public static void createModularJar(String jarPath,
-                                      String classesDir,
-                                      String mainClass) throws Exception {
-        ArrayList<String> argList = new ArrayList<String>();
-        argList.add("--create");
-        argList.add("--file=" + jarPath);
-        if (mainClass != null) {
-            argList.add("--main-class=" + mainClass);
-        }
-        argList.add("-C");
-        argList.add(classesDir);
-        argList.add(".");
-        createJar(argList);
-    }
-
-    private static void createJar(ArrayList<String> args) {
-        if (DEBUG) printIterable("createJar args: ", args);
-
-        Main jarTool = new Main(System.out, System.err, "jar");
-        if (!jarTool.run(args.toArray(new String[1]))) {
-            throw new RuntimeException("jar operation failed");
-        }
-    }
-
-    // Many AppCDS tests use the same simple "Hello.jar" which contains
-    // simple Hello.class and does not specify additional attributes.
-    // For this common use case, use this method to get the jar path.
-    // The method will check if the jar already exists
-    // (created by another test or test run), and will create the jar
-    // if it does not exist
-    public static String getOrCreateHelloJar() throws Exception {
-        String jarPath = getJarFilePath("hello");
-
-        File jarFile = new File(jarPath);
-        if (jarFile.exists()) {
-            return jarPath;
-        } else {
-            return build("hello", "Hello");
-        }
-    }
-
-    public static void compile(String dstPath, String source, String... extraArgs) throws Exception {
-        ArrayList<String> args = new ArrayList<String>();
-        args.add(JDKToolFinder.getCompileJDKTool("javac"));
-        args.add("-d");
-        args.add(dstPath);
-        if (extraArgs != null) {
-            for (String s : extraArgs) {
-                args.add(s);
-            }
-        }
-        args.add(source);
-
-        if (DEBUG) printIterable("compile args: ", args);
-
-        ProcessBuilder pb = new ProcessBuilder(args);
-        OutputAnalyzer output = new OutputAnalyzer(pb.start());
-        output.shouldHaveExitValue(0);
-    }
-
-    public static void compileModule(Path src,
-                                     Path dest,
-                                     String modulePathArg // arg to --module-path
-                                     ) throws Exception {
-        boolean compiled = false;
-        if (modulePathArg == null) {
-            compiled = CompilerUtils.compile(src, dest);
-        } else {
-            compiled = CompilerUtils.compile(src, dest,
-                                           "--module-path", modulePathArg);
-        }
-        if (!compiled) {
-            throw new RuntimeException("module did not compile");
-        }
-    }
-
-
-    public static void signJar() throws Exception {
-        String keyTool = JDKToolFinder.getJDKTool("keytool");
-        String jarSigner = JDKToolFinder.getJDKTool("jarsigner");
-        String classDir = System.getProperty("test.classes");
-        String FS = File.separator;
-
-        executeProcess(keyTool,
-            "-genkey", "-keystore", "./keystore", "-alias", "mykey",
-            "-storepass", "abc123", "-keypass", "abc123",
-            "-dname", "CN=jvmtest")
-            .shouldHaveExitValue(0);
-
-        executeProcess(jarSigner,
-           "-keystore", "./keystore", "-storepass", "abc123", "-keypass",
-           "abc123", "-signedjar", classDir + FS + "signed_hello.jar",
-           classDir + FS + "hello.jar", "mykey")
-           .shouldHaveExitValue(0);
-    }
-
-    private static OutputAnalyzer executeProcess(String... cmds)
-        throws Exception {
-
-        JarBuilder.printArray("executeProcess: ", cmds);
-        return ProcessTools.executeProcess(new ProcessBuilder(cmds));
-    }
-
-    // diagnostic
-    public static void printIterable(String msg, Iterable<String> l) {
-        StringBuilder sum = new StringBuilder();
-        for (String s : l) {
-            sum.append(s).append(' ');
-        }
-        System.out.println(msg + sum.toString());
-    }
-
-    public static void printArray(String msg, String[] l) {
-        StringBuilder sum = new StringBuilder();
-        for (String s : l) {
-            sum.append(s).append(' ');
-        }
-        System.out.println(msg + sum.toString());
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/JvmtiAddPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary JvmtiEnv::AddToBootstrapClassLoaderSearch and JvmtiEnv::AddToSystemClassLoaderSearch should disable AppCDS
- * @requires vm.cds
- * @bug 8060592
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @compile test-classes/Hello.java
- * @compile test-classes/JvmtiApp.java
- * @run driver JvmtiAddPath
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class JvmtiAddPath {
-    static String use_whitebox_jar;
-    static String[] no_extra_matches = {};
-    static String[] check_appcds_enabled = {
-        "[class,load] ExtraClass source: shared object"
-    };
-    static String[] check_appcds_disabled = {
-        "[class,load] ExtraClass source: file:"
-    };
-
-    static void run(String cp, String... args) throws Exception {
-        run(no_extra_matches, cp, args);
-    }
-
-    static void run(String[] extra_matches, String cp, String... args) throws Exception {
-        String[] opts = {"-cp", cp, "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", use_whitebox_jar};
-        opts = TestCommon.concat(opts, args);
-        TestCommon.run(opts).assertNormalExit(extra_matches);
-    }
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("jvmti_addboot", "Hello");
-        JarBuilder.build("jvmti_addapp", "Hello");
-        JarBuilder.build("jvmti_app", "JvmtiApp", "ExtraClass");
-        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-
-        // In all the test cases below, appJar does not contain Hello.class. Instead, we
-        // append JAR file(s) that contain Hello.class to the boot classpath, the app
-        // classpath, or both, and verify that Hello.class is loaded by the expected ClassLoader.
-        String appJar = TestCommon.getTestJar("jvmti_app.jar");         // contains JvmtiApp.class
-        String addappJar = TestCommon.getTestJar("jvmti_addapp.jar");   // contains Hello.class
-        String addbootJar = TestCommon.getTestJar("jvmti_addboot.jar"); // contains Hello.class
-        String twoAppJars = appJar + File.pathSeparator + addappJar;
-        String wbJar = TestCommon.getTestJar("WhiteBox.jar");
-        use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        TestCommon.testDump(appJar, TestCommon.list("JvmtiApp", "ExtraClass"), use_whitebox_jar);
-
-        System.out.println("Test case 1: not adding any paths - Hello.class should not be found");
-        run(check_appcds_enabled, appJar, "-Xlog:class+load", "JvmtiApp", "noadd"); // appcds should be enabled
-
-        System.out.println("Test case 2: add to boot classpath only - should find Hello.class in boot loader");
-        String[] toCheck = (TestCommon.isDynamicArchive()) ? check_appcds_enabled
-                                                           : check_appcds_disabled;
-        run(toCheck, appJar, "-Xlog:class+load", "JvmtiApp", "bootonly", addbootJar); // appcds should be disabled
-
-        System.out.println("Test case 3: add to app classpath only - should find Hello.class in app loader");
-        run(appJar, "JvmtiApp", "apponly", addappJar);
-
-        System.out.println("Test case 4: add to boot and app paths - should find Hello.class in boot loader");
-        run(appJar, "JvmtiApp", "appandboot", addbootJar, addappJar);
-
-        System.out.println("Test case 5: add to app using -cp, but add to boot using JVMTI - should find Hello.class in boot loader");
-        run(twoAppJars, "JvmtiApp", "bootonly", addappJar);
-
-        System.out.println("Test case 6: add to app using AppCDS, but add to boot using JVMTI - should find Hello.class in boot loader");
-        TestCommon.testDump(twoAppJars, TestCommon.list("JvmtiApp", "ExtraClass", "Hello"), use_whitebox_jar);
-        if (!TestCommon.isDynamicArchive()) {
-            // skip for dynamic archive, the Hello class will be loaded from
-            // the dynamic archive
-            run(twoAppJars, "JvmtiApp", "bootonly", addappJar);
-        }
-
-        System.out.println("Test case 7: add to app using AppCDS, no JVMTI calls - should find Hello.class in app loader");
-        run(twoAppJars, "JvmtiApp", "noadd-appcds");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/LongClassListPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test the handling of long path to the classlist file.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver LongClassListPath
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.util.Arrays;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class LongClassListPath {
-    private static final int MAX_PATH = 260;
-    public static void main(String[] args) throws Exception {
-        String[] classes = {"hello"};
-        String classList =
-            CDSTestUtils.makeClassList(classes).getPath();
-        String archiveName = "LongClassListPath.jsa";
-
-        // Create a directory with long path and copy the classlist file to
-        // the directory.
-        Path classDir = Paths.get(System.getProperty("test.classes"));
-        Path destDir = classDir;
-        int subDirLen = MAX_PATH - classDir.toString().length() - 2;
-        if (subDirLen > 0) {
-            char[] chars = new char[subDirLen];
-            Arrays.fill(chars, 'x');
-            String subPath = new String(chars);
-            destDir = Paths.get(System.getProperty("test.classes"), subPath);
-        }
-        File longDir = destDir.toFile();
-        longDir.mkdir();
-        String destClassList = longDir.getPath() + File.separator + "LongClassListPath.classlist";
-        Files.copy(Paths.get(classList), Paths.get(destClassList), StandardCopyOption.REPLACE_EXISTING);
-
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-XX:ExtraSharedClassListFile=" + destClassList, "-cp", JarBuilder.getOrCreateHelloJar())
-            .setArchiveName(archiveName);
-        CDSTestUtils.createArchiveAndCheck(opts);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/LotsOfClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-import java.util.ArrayList;
-
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-
-/*
- * @test
- * @summary Try to archive lots of classes by searching for classes from the jrt:/ file system. With JDK 12
- *          this will produce an archive with over 30,000 classes.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @run driver/timeout=500 LotsOfClasses
- */
-
-public class LotsOfClasses {
-
-    public static void main(String[] args) throws Throwable {
-        ArrayList<String> list = new ArrayList<>();
-        TestCommon.findAllClasses(list);
-
-        CDSOptions opts = new CDSOptions();
-        opts.setClassList(list);
-        opts.addSuffix("--add-modules");
-        opts.addSuffix("ALL-SYSTEM");
-        opts.addSuffix("-Xlog:hashtables");
-        opts.addSuffix("-Xmx500m");
-        opts.addSuffix("-Xlog:gc+region+cds");
-        opts.addSuffix("-Xlog:gc+region=trace");
-
-        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
-        CDSTestUtils.checkDump(out);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/MissingSuperTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary When super class is missing during dumping, no crash should happen.
- *
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/MissingSuper.java
- * @run driver MissingSuperTest
- */
-
-public class MissingSuperTest {
-
-  public static void main(String[] args) throws Exception {
-    // The classes "MissingSuperSup" and "MissingSuperIntf" are intentionally not
-    // included into the jar to provoke the test condition
-    JarBuilder.build("missing_super", "MissingSuper",
-        "MissingSuperSub", "MissingSuperImpl");
-
-    String appJar = TestCommon.getTestJar("missing_super.jar");
-    TestCommon.test(appJar, TestCommon.list("MissingSuper",
-        "MissingSuperSub",
-        "MissingSuperImpl"),
-        "MissingSuper");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/MoveJDKTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test that CDS still works when the JDK is moved to a new directory
- * @requires vm.cds
- * @requires os.family == "linux"
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver MoveJDKTest
- */
-
-// This test works only on Linux because it depends on symlinks and the name of the hotspot DLL (libjvm.so).
-// It probably doesn't work on Windows.
-// TODO: change libjvm.so to libjvm.dylib on MacOS, before adding "@requires os.family == mac"
-// TODO: test on solaris, before adding "@requires os.family == solaris"
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class MoveJDKTest {
-    public static void main(String[] args) throws Exception {
-        String java_home_src = System.getProperty("java.home");
-        String java_home_dst = System.getProperty("user.dir") + File.separator + "moved_jdk";
-
-        TestCommon.startNewArchiveName();
-        String jsaFile = TestCommon.getCurrentArchiveName();
-        String jsaOpt = "-XX:SharedArchiveFile=" + jsaFile;
-        {
-            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java", "-Xshare:dump", jsaOpt);
-            TestCommon.executeAndLog(pb, "dump");
-        }
-        {
-            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java",
-                                            "-Xshare:auto",
-                                            jsaOpt,
-                                            "-Xlog:class+path=info",
-                                            "-version");
-            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-src");
-            out.shouldNotContain("shared class paths mismatch");
-            out.shouldNotContain("BOOT classpath mismatch");
-        }
-
-        clone(new File(java_home_src), new File(java_home_dst));
-        System.out.println("============== Cloned JDK at " + java_home_dst);
-
-        // Test runtime with cloned JDK
-        {
-            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
-                                            "-Xshare:auto",
-                                            jsaOpt,
-                                            "-Xlog:class+path=info",
-                                            "-version");
-            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-dst");
-            out.shouldNotContain("shared class paths mismatch");
-            out.shouldNotContain("BOOT classpath mismatch");
-        }
-
-        // Test with bad JAR file name, hello.modules
-        String helloJar = JarBuilder.getOrCreateHelloJar();
-        String fake_modules = copyFakeModulesFromHelloJar();
-        String dumptimeBootAppendOpt = "-Xbootclasspath/a:" + fake_modules;
-        {
-            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java",
-                                            "-Xshare:dump",
-                                            dumptimeBootAppendOpt,
-                                            jsaOpt);
-            TestCommon.executeAndLog(pb, "dump");
-        }
-        {
-            String runtimeBootAppendOpt = dumptimeBootAppendOpt + System.getProperty("path.separator") + helloJar;
-            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
-                                            "-Xshare:auto",
-                                            runtimeBootAppendOpt,
-                                            jsaOpt,
-                                            "-Xlog:class+path=info",
-                                            "-version");
-            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-dst");
-            out.shouldNotContain("shared class paths mismatch");
-            out.shouldNotContain("BOOT classpath mismatch");
-        }
-
-        // Test with no modules image in the <java home>/lib directory
-        renameModulesFile(java_home_dst);
-        {
-            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
-                                            "-version");
-            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-missing-modules");
-            out.shouldHaveExitValue(1);
-            out.shouldContain("Failed setting boot class path.");
-        }
-    }
-
-    // Do a cheap clone of the JDK. Most files can be sym-linked. However, $JAVA_HOME/bin/java and $JAVA_HOME/lib/.../libjvm.so"
-    // must be copied, because the java.home property is derived from the canonicalized paths of these 2 files.
-    static void clone(File src, File dst) throws Exception {
-        if (dst.exists()) {
-            if (!dst.isDirectory()) {
-                throw new RuntimeException("Not a directory :" + dst);
-            }
-        } else {
-            if (!dst.mkdir()) {
-                throw new RuntimeException("Cannot create directory: " + dst);
-            }
-        }
-        for (String child : src.list()) {
-            if (child.equals(".") || child.equals("..")) {
-                continue;
-            }
-
-            File child_src = new File(src, child);
-            File child_dst = new File(dst, child);
-            if (child_dst.exists()) {
-                throw new RuntimeException("Already exists: " + child_dst);
-            }
-            if (child_src.isFile()) {
-                if (child.equals("libjvm.so") || child.equals("java")) {
-                    Files.copy(child_src.toPath(), /* copy data to -> */ child_dst.toPath());
-                } else {
-                    Files.createSymbolicLink(child_dst.toPath(),  /* link to -> */ child_src.toPath());
-                }
-            } else {
-                clone(child_src, child_dst);
-            }
-        }
-    }
-
-    static void renameModulesFile(String javaHome) throws Exception {
-        String modulesDir = javaHome + File.separator + "lib";
-        File origModules = new File(modulesDir, "modules");
-        if (!origModules.exists()) {
-            throw new RuntimeException("modules file not found");
-        }
-
-        File renamedModules = new File(modulesDir, "orig_modules");
-        if (renamedModules.exists()) {
-            throw new RuntimeException("found orig_modules unexpectedly");
-        }
-
-        boolean success = origModules.renameTo(renamedModules);
-        if (!success) {
-            throw new RuntimeException("rename modules file failed");
-        }
-    }
-
-    static ProcessBuilder makeBuilder(String... args) throws Exception {
-        System.out.print("[");
-        for (String s : args) {
-            System.out.print(" " + s);
-        }
-        System.out.println(" ]");
-        return new ProcessBuilder(args);
-    }
-
-    private static String copyFakeModulesFromHelloJar() throws Exception {
-        String classDir = System.getProperty("test.classes");
-        String newFile = "hello.modules";
-        String path = classDir + File.separator + newFile;
-
-        Files.copy(Paths.get(classDir, "hello.jar"),
-            Paths.get(classDir, newFile),
-            StandardCopyOption.REPLACE_EXISTING);
-        return path;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/MultiProcessSharing.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Run multiple processes with the same archive, ensure they share
- *
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @compile test-classes/MultiProcClass.java
- * @run driver MultiProcessSharing
- */
-
-import java.io.File;
-import jdk.test.lib.Asserts;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-
-public class MultiProcessSharing {
-    static String useWbJar;
-    static String sharedClass1Jar;
-    static boolean checkPmap = false;
-
-    public static void main(String[] args) throws Exception {
-        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        useWbJar = "-Xbootclasspath/a:" + wbJar;
-        sharedClass1Jar = JarBuilder.build("shared_class1", "MultiProcClass");
-
-        // create an archive
-        OutputAnalyzer out = TestCommon.dump(sharedClass1Jar,
-            TestCommon.list("MultiProcClass"), useWbJar);
-        TestCommon.checkDump(out);
-
-        // determine whether OK to use pmap for extra test verification
-        long myPid = ProcessHandle.current().pid();
-        checkPmap = (Platform.isLinux() && (MultiProcClass.runPmap(myPid, false) == 0));
-        System.out.println("MultiProcessSharing: checkPmap is " + checkPmap);
-
-        // use an archive in several processes concurrently
-        int numProcesses = 3;
-        Thread[] threads = new Thread[numProcesses];
-        ProcessHandler[] processHandlers = new ProcessHandler[numProcesses];
-        for (int i = 0; i < numProcesses; i++) {
-            processHandlers[i] = new ProcessHandler(i);
-            threads[i] = new Thread(processHandlers[i]);
-        }
-
-        for (Thread t : threads) {
-            t.start();
-        }
-
-        for (Thread t : threads) {
-            try {
-                t.join();
-            } catch (InterruptedException ie) {
-                throw ie;
-            }
-        }
-
-        // check results
-        for (ProcessHandler ph : processHandlers) {
-            TestCommon.checkExec(ph.out);
-            if (checkPmap && !TestCommon.isUnableToMap(ph.out)) {
-                checkPmapOutput(ph.out.getOutput());
-            }
-        }
-    }
-
-
-    static class ProcessHandler implements Runnable {
-        int processNumber;
-        OutputAnalyzer out;
-
-        ProcessHandler(int processNumber) {
-            this.processNumber = processNumber;
-        }
-
-        @Override
-        public void run() {
-            try {
-                out = TestCommon.exec(sharedClass1Jar,
-                   "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", useWbJar,
-                   "MultiProcClass", "" + processNumber, "" + checkPmap);
-            } catch (Exception e) {
-                throw new RuntimeException("Error occurred when using archive, exec()" + e);
-            }
-        }
-    }
-
-
-    private static void checkPmapOutput(String stdio) {
-        System.out.println("Checking pmap output ...");
-        String[] lines = stdio.split("\n");
-
-        boolean foundJsa = false;
-        boolean foundReadOnlyJsaSection = false;
-
-        for (String line : lines) {
-            if (line.contains(TestCommon.getCurrentArchiveName()))
-                System.out.println(line);
-                foundJsa = true;
-                if (line.contains("r--")) {
-                    foundReadOnlyJsaSection = true;
-                }
-
-                // On certain ARM platforms system maps r/o memory mapped files
-                // as r/x; see JDK-8145694 for details
-                if ( (Platform.isARM() || Platform.isAArch64()) && line.contains("r-x") ) {
-                    foundReadOnlyJsaSection = true;
-                }
-        }
-
-        Asserts.assertTrue(foundJsa && foundReadOnlyJsaSection);
-    }
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test MultiReleaseJars
- * @summary Test multi-release jar with AppCDS.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @run main/othervm/timeout=2400 MultiReleaseJars
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
-import java.io.IOException;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class MultiReleaseJars {
-
-    static final int MAJOR_VERSION = Runtime.version().major();
-    static final String MAJOR_VERSION_STRING = String.valueOf(MAJOR_VERSION);
-
-    static String[] getMain() {
-        String[] sts = {
-            "package version;",
-            "public class Main {",
-            "    public static void main(String[] args) {",
-            "        Version version = new Version();",
-            "        System.out.println(\"I am running on version \" + version.getVersion());",
-            "    }",
-            "}"
-        };
-        return sts;
-    }
-
-    static String[] getVersion(int version) {
-        String[] sts = {
-            "package version;",
-            "public class Version {",
-            "    public int getVersion(){ return " + version + "; }",
-            "}"
-        };
-        return sts;
-    }
-
-    static void writeFile(File file, String... contents) throws Exception {
-        if (contents == null) {
-            throw new java.lang.RuntimeException("No input for writing to file" + file);
-        }
-        try (
-             FileOutputStream fos = new FileOutputStream(file);
-             PrintStream ps = new PrintStream(fos)
-        ) {
-            for (String str : contents) {
-                ps.println(str);
-            }
-        }
-    }
-
-    /* version.jar entries and files:
-     * META-INF/
-     * META-INF/MANIFEST.MF
-     * version/
-     * version/Main.class
-     * version/Version.class
-     * META-INF/versions/
-     * META-INF/versions/<major-version>/
-     * META-INF/versions/<major-version>/version/
-     * META-INF/versions/<major-version>/version/Version.class
-     */
-    static void createClassFilesAndJar() throws Exception {
-        String tempDir = System.getProperty("test.classes");
-        File baseDir = new File(tempDir + File.separator + "base");
-        File vDir    = new File(tempDir + File.separator + MAJOR_VERSION_STRING);
-
-        baseDir.mkdirs();
-        vDir.mkdirs();
-
-        File fileMain = TestCommon.getOutputSourceFile("Main.java");
-        writeFile(fileMain, getMain());
-
-        File fileVersion = TestCommon.getOutputSourceFile("Version.java");
-        writeFile(fileVersion, getVersion(7));
-        JarBuilder.compile(baseDir.getAbsolutePath(), fileVersion.getAbsolutePath(), "--release", "7");
-        JarBuilder.compile(baseDir.getAbsolutePath(), fileMain.getAbsolutePath(),
-            "-cp", baseDir.getAbsolutePath(), "--release", MAJOR_VERSION_STRING);
-
-        String[] meta = {
-            "Multi-Release: true",
-            "Main-Class: version.Main"
-        };
-        File metainf = new File(tempDir, "mf.txt");
-        writeFile(metainf, meta);
-
-        fileVersion = TestCommon.getOutputSourceFile("Version.java");
-        writeFile(fileVersion, getVersion(MAJOR_VERSION));
-        JarBuilder.compile(vDir.getAbsolutePath(), fileVersion.getAbsolutePath(), "--release", MAJOR_VERSION_STRING);
-
-        JarBuilder.build("version", baseDir, metainf.getAbsolutePath(),
-            "--release", MAJOR_VERSION_STRING, "-C", vDir.getAbsolutePath(), ".");
-
-        // the following jar file is for testing case-insensitive "Multi-Release"
-        // attibute name
-        String[] meta2 = {
-            "multi-Release: true",
-            "Main-Class: version.Main"
-        };
-        metainf = new File(tempDir, "mf2.txt");
-        writeFile(metainf, meta2);
-        JarBuilder.build("version2", baseDir, metainf.getAbsolutePath(),
-            "--release", MAJOR_VERSION_STRING, "-C", vDir.getAbsolutePath(), ".");
-    }
-
-    static void checkExecOutput(OutputAnalyzer output, String expectedOutput) throws Exception {
-        try {
-            TestCommon.checkExec(output, expectedOutput);
-        } catch (java.lang.RuntimeException re) {
-            String cause = re.getMessage();
-            if (!expectedOutput.equals(cause)) {
-                throw re;
-            }
-        }
-    }
-
-    public static void main(String... args) throws Exception {
-        // create version.jar which contains Main.class and Version.class.
-        // Version.class has two versions: 8 and the current version.
-        createClassFilesAndJar();
-
-        String mainClass          = "version.Main";
-        String loadInfo           = "[class,load] version.Version source: shared objects file";
-        String appClasses[]       = {"version/Main", "version/Version"};
-        String appJar             = TestCommon.getTestJar("version.jar");
-        String appJar2            = TestCommon.getTestJar("version2.jar");
-        String enableMultiRelease = "-Djdk.util.jar.enableMultiRelease=true";
-        String jarVersion         = null;
-        String expectedOutput     = null;
-
-        // 1. default to highest version
-        //    if META-INF/versions exists, no other commandline options like -Djdk.util.jar.version and
-        //    -Djdk.util.jar.enableMultiRelease passed to vm
-        OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
-        output.shouldContain("Loading classes to share: done.");
-        output.shouldHaveExitValue(0);
-
-        output = TestCommon.exec(appJar, mainClass);
-        checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
-
-        // 2. Test versions 7 and the current major version.
-        //    -Djdk.util.jar.enableMultiRelease=true (or force), default is true.
-        //    a) -Djdk.util.jar.version=7 does not exist in jar.
-        //        It will fallback to the root version which is also 7 in this test.
-        //    b) -Djdk.util.jar.version=MAJOR_VERSION exists in the jar.
-        for (int i : new int[] {7, MAJOR_VERSION}) {
-            jarVersion = "-Djdk.util.jar.version=" + i;
-            expectedOutput = "I am running on version " + i;
-            output = TestCommon.dump(appJar, appClasses, enableMultiRelease, jarVersion);
-            output.shouldContain("Loading classes to share: done.");
-            output.shouldHaveExitValue(0);
-
-            output = TestCommon.exec(appJar, mainClass);
-            checkExecOutput(output, expectedOutput);
-        }
-
-        // 3. For unsupported version, 5 and current major version + 1, the multiversion
-        // will be turned off, so it will use the default (root) version.
-        for (int i : new int[] {5, MAJOR_VERSION + 1}) {
-            jarVersion = "-Djdk.util.jar.version=" + i;
-            output = TestCommon.dump(appJar, appClasses, enableMultiRelease, jarVersion);
-            output.shouldHaveExitValue(0);
-            // With the fix for 8172218, multi-release jar is being handled in
-            // jdk corelib which doesn't emit the following warning message.
-            //output.shouldContain("JDK" + i + " is not supported in multiple version jars");
-
-            output = TestCommon.exec(appJar, mainClass);
-            if (i == 5)
-                checkExecOutput(output, "I am running on version 7");
-            else
-                checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
-        }
-
-        // 4. If explicitly disabled from command line for multiversion jar, it will use default
-        //    version at root regardless multiversion versions exists.
-        //    -Djdk.util.jar.enableMultiRelease=false (not 'true' or 'force')
-        for (int i = 6; i < MAJOR_VERSION + 1; i++) {
-            jarVersion = "-Djdk.util.jar.version=" + i;
-            output = TestCommon.dump(appJar, appClasses, "-Djdk.util.jar.enableMultiRelease=false", jarVersion);
-            output.shouldHaveExitValue(0);
-
-            output = TestCommon.exec(appJar, mainClass);
-            expectedOutput = "I am running on version 7";
-            checkExecOutput(output, expectedOutput);
-        }
-
-        // 5. Sanity test with -Xbootclasspath/a
-        //    AppCDS behaves the same as the non-AppCDS case. A multi-release
-        //    jar file in the -Xbootclasspath/a will be ignored.
-        output = TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar, enableMultiRelease, jarVersion);
-        output.shouldContain("Loading classes to share: done.");
-        output.shouldHaveExitValue(0);
-
-        output = TestCommon.exec(appJar, "-Xbootclasspath/a:" + appJar, mainClass);
-        checkExecOutput(output, "I am running on version 7");
-
-        // 6. Sanity test case-insensitive "Multi-Release" attribute name
-        output = TestCommon.dump(appJar2, appClasses);
-        output.shouldContain("Loading classes to share: done.");
-        output.shouldHaveExitValue(0);
-
-        output = TestCommon.exec(appJar2, mainClass);
-        checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/OldClassTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary classes with major version < JDK_6 (50) should not be included in CDS
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.org.objectweb.asm
- *          java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run build TestCommon JarBuilder
- * @run driver OldClassTest
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.nio.file.Files;
-
-import java.util.*;
-import jdk.internal.org.objectweb.asm.*;
-
-public class OldClassTest implements Opcodes {
-
-  public static void main(String[] args) throws Exception {
-    File jarSrcFile = new File(JarBuilder.getOrCreateHelloJar());
-
-    File dir = new File(System.getProperty("test.classes", "."));
-    File jarFile = new File(dir, "OldClassTest_old.jar");
-    String jar = jarFile.getPath();
-
-    if (!jarFile.exists() || jarFile.lastModified() < jarSrcFile.lastModified()) {
-      createTestJarFile(jarSrcFile, jarFile);
-    } else {
-      System.out.println("Already up-to-date: " + jarFile);
-    }
-
-    String appClasses[] = TestCommon.list("Hello");
-
-    // CASE 1: pre-JDK 6 compiled classes should be excluded from the dump
-    OutputAnalyzer output = TestCommon.dump(jar, appClasses);
-    TestCommon.checkExecReturn(output, 0, true, "Pre JDK 6 class not supported by CDS");
-
-    TestCommon.run(
-        "-cp", jar,
-        "Hello")
-      .assertNormalExit("Hello Unicode world (Old)");
-
-    // CASE 2: if we exlcude old version of this class, we should not pick up
-    //         the newer version of this class in a subsequent classpath element.
-    String classpath = jar + File.pathSeparator + jarSrcFile.getPath();
-    output = TestCommon.dump(classpath, appClasses);
-    TestCommon.checkExecReturn(output, 0, true, "Pre JDK 6 class not supported by CDS");
-
-    TestCommon.run(
-        "-cp", classpath,
-        "Hello")
-      .assertNormalExit("Hello Unicode world (Old)");
-  }
-
-  static void createTestJarFile(File jarSrcFile, File jarFile) throws Exception {
-    jarFile.delete();
-    Files.copy(jarSrcFile.toPath(), jarFile.toPath());
-
-    File dir = new File(System.getProperty("test.classes", "."));
-    File outdir = new File(dir, "old_class_test_classes");
-    outdir.delete();
-    outdir.mkdir();
-
-    writeClassFile(new File(outdir, "Hello.class"), makeOldHello());
-
-    JarBuilder.update(jarFile.getPath(), outdir.getPath());
-  }
-
-  static void writeClassFile(File file, byte bytecodes[]) throws Exception {
-    try (FileOutputStream fos = new FileOutputStream(file)) {
-        fos.write(bytecodes);
-      }
-  }
-
-/* makeOldHello() was obtained using JDK8. We use a method name > 128 that would
-   trigger a call to java.lang.Character.isJavaIdentifierStart() during class
-   file parsing.
-
-cat > Hello.java <<EOF
-public class Hello {
-    public static void main(String args[]) {
-        System.out.println(\u1234());
-    }
-    static String \u1234() {
-        return "Hello Unicode world (Old)";
-    }
-}
-EOF
-javac Hello.java
-java jdk.internal.org.objectweb.asm.util.ASMifier Hello.class
-
- */
-
-  static byte[] makeOldHello() throws Exception {
-    ClassWriter cw = new ClassWriter(0);
-    FieldVisitor fv;
-    MethodVisitor mv;
-    AnnotationVisitor av0;
-
-      cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "Hello", null, "java/lang/Object", null);
-
-    {
-      mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
-      mv.visitCode();
-      mv.visitVarInsn(ALOAD, 0);
-      mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
-      mv.visitInsn(RETURN);
-      mv.visitMaxs(1, 1);
-      mv.visitEnd();
-    }
-    {
-      mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
-      mv.visitCode();
-      mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
-      mv.visitMethodInsn(INVOKESTATIC, "Hello", "\u1234", "()Ljava/lang/String;", false);
-      mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
-      mv.visitInsn(RETURN);
-      mv.visitMaxs(2, 1);
-      mv.visitEnd();
-    }
-    {
-      mv = cw.visitMethod(ACC_STATIC, "\u1234", "()Ljava/lang/String;", null, null);
-      mv.visitCode();
-      mv.visitLdcInsn("Hello Unicode world (Old)");
-      mv.visitInsn(ARETURN);
-      mv.visitMaxs(1, 0);
-      mv.visitEnd();
-    }
-    cw.visitEnd();
-
-    return cw.toByteArray();
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/PackageSealing.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of package.
- * @requires vm.cds
- * @library /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile test-classes/C1.java
- * @compile test-classes/C2.java
- * @compile test-classes/PackageSealingTest.java
- * @compile test-classes/Hello.java
- * @run driver PackageSealing
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class PackageSealing {
-    public static void main(String args[]) throws Exception {
-        String[] classList = {"sealed/pkg/C1", "pkg/C2", "PackageSealingTest"};
-        String appJar = ClassFileInstaller.writeJar("pkg_seal.jar",
-            ClassFileInstaller.Manifest.fromSourceFile("test-classes/package_seal.mf"),
-            "PackageSealingTest", "sealed/pkg/C1", "pkg/C2");
-
-        String helloJar = JarBuilder.getOrCreateHelloJar();
-        String jars = helloJar + File.pathSeparator + appJar;
-
-        // test shared package from -cp path
-        TestCommon.testDump(jars, TestCommon.list(classList));
-        OutputAnalyzer output;
-        output = TestCommon.exec(jars, "PackageSealingTest");
-        TestCommon.checkExec(output, "OK");
-
-        // test shared package from -Xbootclasspath/a
-        TestCommon.dump(helloJar, TestCommon.list(classList),
-                        "-Xbootclasspath/a:" + appJar);
-        output = TestCommon.exec(helloJar, "-Xbootclasspath/a:" + appJar, "PackageSealingTest");
-        TestCommon.checkExec(output, "OK");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ParallelLoad2.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Load app classes from CDS archive in parallel threads. Similar to ParallelLoad.java, but each class in its own JAR
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/ParallelLoad.java
- * @compile test-classes/ParallelClasses.java
- * @run driver ParallelLoad2
- */
-
-import java.io.File;
-
-public class ParallelLoad2 {
-  public static int MAX_CLASSES = 40;
-  public static void main(String[] args) throws Exception {
-    JarBuilder.build("parallel_load2", "ParallelLoad", "ParallelLoadThread", "ParallelLoadWatchdog");
-    for (int i=0; i<MAX_CLASSES; i++) {
-      JarBuilder.build("parallel_load2_" + i, "ParallelClass" + i);
-    }
-
-    String cp = TestCommon.getTestJar("parallel_load2.jar");
-    for (int i=0; i<MAX_CLASSES; i++) {
-      cp += File.pathSeparator + TestCommon.getTestJar("parallel_load2_" + i + ".jar");
-    }
-
-    String[] class_list = new String[MAX_CLASSES + 2];
-    for (int i=0; i<MAX_CLASSES; i++) {
-      class_list[i] = "ParallelClass" + i;
-    }
-    class_list[class_list.length - 1] = "ParallelLoad";
-    class_list[class_list.length - 2] = "ParallelLoadThread";
-
-    TestCommon.test(cp, class_list,
-                          "ParallelLoad");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ParallelLoadTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Load app classes from CDS archive in parallel threads
- * @library /test/lib
- * @requires vm.cds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/ParallelLoad.java
- * @compile test-classes/ParallelClasses.java
- * @run driver ParallelLoadTest
- */
-
-public class ParallelLoadTest {
-    public static final int MAX_CLASSES = 40;
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("parallel_load", getClassList(true));
-        String appJar = TestCommon.getTestJar("parallel_load.jar");
-        TestCommon.test(appJar, getClassList(false), "ParallelLoad");
-    }
-
-    private static String[] getClassList(boolean includeWatchdog) {
-        int extra = includeWatchdog ? 3 : 2;
-        String[] classList = new String[MAX_CLASSES + extra];
-
-        int i;
-        for (i=0; i<MAX_CLASSES; i++) {
-            classList[i] = "ParallelClass" + i;
-        }
-
-        classList[i++] = "ParallelLoad";
-        classList[i++] = "ParallelLoadThread";
-        if (includeWatchdog)
-            classList[i++] = "ParallelLoadWatchdog";
-
-        return classList;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/PrintSharedArchiveAndExit.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary test the -XX:+PrintSharedArchiveAndExit flag
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/HelloMore.java
- * @run main/othervm/timeout=3600 PrintSharedArchiveAndExit
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class PrintSharedArchiveAndExit {
-  private static void check(OutputAnalyzer output, int ret, boolean checkContain, String... matches) throws Exception {
-    // Tests specific to this test
-    TestCommon.checkExecReturn(output, ret, checkContain, matches);
-
-    // In all test case, we should never print out the following due to
-    // PrintSharedArchiveAndExit. JVM should have been terminated
-    // before reaching these outputs.
-    TestCommon.checkExecReturn(output, ret, false,
-                               "Usage:",            // JVM help message
-                               "java version",      // JVM version
-                               "Hello World");      // output from the Hello.class in hello.jar
-  }
-
-  private static void log(String msg) {
-    System.out.println(">---------------------------------------------------------------------");
-    System.out.println(msg);
-    System.out.println("<---------------------------------------------------------------------");
-  }
-
-  public static void main(String[] args) throws Exception {
-    String appJar = JarBuilder.getOrCreateHelloJar();
-    String appJar2 = JarBuilder.build("PrintSharedArchiveAndExit-more", "HelloMore");
-
-    String cp = appJar + File.pathSeparator + appJar2;
-    String lastCheckMsg = "checking shared classpath entry: " + appJar2; // the last JAR to check
-
-    TestCommon.testDump(cp, TestCommon.list("Hello", "HelloMore"));
-
-    log("Normal execution -- all the JAR paths should be checked");
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
-
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit",
-        "-XX:+PrintSharedDictionary")  // Test PrintSharedDictionary as well.
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg, "java.lang.Object"));
-
-    log("Normal execution -- Make sure -version, help message and app main()\n" +
-        "class are not invoked. These are checked inside check().");
-    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "-version")
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
-
-    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "-help")
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
-
-    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "Hello")
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
-
-    log("Execution with simple errors -- with 'simple' errors like missing or modified\n" +
-        "JAR files, the VM should try to continue to print the remaining information.\n" +
-        "Use an invalid Boot CP -- all the JAR paths should be checked");
-    TestCommon.run(
-        "-cp", cp,
-        "-Xbootclasspath/a:foo.jar",
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[BOOT classpath mismatch, "));
-
-    log("Use an App CP shorter than the one at dump time -- all the JAR paths should be checked");
-    TestCommon.run(
-        "-cp", ".",
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "Run time APP classpath is shorter than the one at dump time: ."));
-
-    log("Use an invalid App CP -- all the JAR paths should be checked.\n" +
-        "Non-existing jar files will be ignored.");
-    String invalidCP = "non-existing-dir" + File.pathSeparator + cp;
-    TestCommon.run(
-        "-cp", invalidCP,
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
-
-    log("Changed modification time of hello.jar -- all the JAR paths should be checked");
-    (new File(appJar)).setLastModified(System.currentTimeMillis() + 2000);
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[Timestamp mismatch]"));
-
-    log("Even if hello.jar is out of date, we should still be able to print the dictionary.");
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit",
-        "-XX:+PrintSharedDictionary")  // Test PrintSharedDictionary as well.
-      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "java.lang.Object"));
-
-
-    log("Remove hello.jar -- all the JAR paths should be checked");
-    (new File(appJar)).delete();
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit")
-      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[Required classpath entry does not exist: " + appJar + "]"));
-
-    log("Execution with major errors -- with 'major' errors like the JSA file\n" +
-        "is missing, we should stop immediately to avoid crashing the JVM.");
-    TestCommon.run(
-        "-cp", cp,
-        "-XX:+PrintSharedArchiveAndExit",
-        "-XX:SharedArchiveFile=./no-such-fileappcds.jsa")
-      .ifNoMappingFailure(output -> check(output, 1, false, lastCheckMsg));
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ProhibitedPackage.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of prohibited package.
- * @requires vm.cds
- * @library /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile test-classes/ProhibitedHelper.java test-classes/Prohibited.jasm
- * @run driver ProhibitedPackage
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ProhibitedPackage {
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("prohibited_pkg", "java/lang/Prohibited", "ProhibitedHelper");
-
-        String appJar = TestCommon.getTestJar("prohibited_pkg.jar");
-
-        // Test support for customer loaders
-        if (Platform.areCustomLoadersSupportedForCDS() &&
-            !TestCommon.isDynamicArchive()) {
-            String classlist[] = new String[] {
-                "java/lang/Object id: 1",
-                "java/lang/Prohibited id: 2 super: 1 source: " + appJar
-            };
-
-            // Make sure a class in a prohibited package for a custom loader
-            // will be ignored during dumping.
-            TestCommon.dump(appJar,  classlist, "-Xlog:cds")
-                .shouldContain("Dumping")
-                .shouldContain("[cds] Prohibited package for non-bootstrap classes: java/lang/Prohibited.class")
-                .shouldHaveExitValue(0);
-        }
-
-
-        // Make sure a class in a prohibited package for a non-custom loader
-        // will be ignored during dumping.
-        TestCommon.dump(appJar,
-                        TestCommon.list("java/lang/Prohibited", "ProhibitedHelper"),
-                        "-Xlog:class+load")
-            .shouldContain("Dumping")
-            .shouldNotContain("[info][class,load] java.lang.Prohibited source: ")
-            .shouldHaveExitValue(0);
-
-        // Try loading the class in a prohibited package with various -Xshare
-        // modes. The class shouldn't be loaded and appropriate exceptions
-        // are expected.
-
-        OutputAnalyzer output;
-
-        // -Xshare:on
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, "ProhibitedHelper")
-          .assertNormalExit("Prohibited package name: java.lang");
-
-        // -Xshare:auto
-        output = TestCommon.execAuto(
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, "ProhibitedHelper");
-        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
-        TestCommon.checkExec(output, opts, "Prohibited package name: java.lang");
-
-        // -Xshare:off
-        output = TestCommon.execOff(
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            "-cp", appJar, "ProhibitedHelper");
-        output.shouldContain("Prohibited package name: java.lang");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/ProtectionDomain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of protection domain.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/ProtDomain.java
- * @compile test-classes/ProtDomainB.java
- * @compile test-classes/JimageClassProtDomain.java
- * @run driver ProtectionDomain
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ProtectionDomain {
-  public static void main(String[] args) throws Exception {
-    JarBuilder.build("prot_domain", "ProtDomain", "ProtDomainB", "ProtDomainOther",
-                     "ProtDomainBOther", "JimageClassProtDomain");
-
-    String appJar = TestCommon.getTestJar("prot_domain.jar");
-    TestCommon.testDump(appJar,
-         TestCommon.list("ProtDomain",
-                         "ProtDomainBOther",
-                         "java/util/Dictionary",
-                         "com/sun/tools/javac/Main",
-                         "jdk/nio/zipfs/ZipInfo",
-                         "java/net/URL",
-                         "sun/rmi/rmic/Main",
-                         "com/sun/jndi/dns/DnsName"));
-
-    // First class is loaded from CDS, second class is loaded from JAR
-    TestCommon.run("-cp", appJar, "ProtDomain")
-        .assertNormalExit("Protection Domains match");
-
-    // First class is loaded from JAR, second class is loaded from CDS
-    TestCommon.run("-cp", appJar, "ProtDomainB")
-        .assertNormalExit("Protection Domains match");
-
-    // Test ProtectionDomain for application and extension module classes from the
-    // "modules" jimage
-    TestCommon.run("-cp", appJar, "JimageClassProtDomain")
-        .assertNormalExit(output -> output.shouldNotContain(
-                          "Failed: Protection Domains do not match"));
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/RelativePath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test relative paths specified in the -cp.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/HelloMore.java
- * @run driver RelativePath
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import java.util.Arrays;
-import jdk.test.lib.Platform;
-
-public class RelativePath {
-
-  private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-  public static void main(String[] args) throws Exception {
-    String appJar = JarBuilder.getOrCreateHelloJar();
-    String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
-
-    // dump an archive with only the jar name in the -cp
-    int idx = appJar.lastIndexOf(File.separator);
-    String jarName = appJar.substring(idx + 1);
-    String jarDir = appJar.substring(0, idx);
-    TestCommon.testDump(jarDir, jarName, TestCommon.list("Hello"));
-
-    // copy the jar file to another dir. Specify the jar file without
-    // a directory path.
-    Path srcPath = Paths.get(appJar);
-    Path destDir = Files.createTempDirectory(USER_DIR, "deploy");
-    Path destPath = destDir.resolve(jarName);
-    Files.copy(srcPath, destPath, REPLACE_EXISTING, COPY_ATTRIBUTES);
-    TestCommon.runWithRelativePath(
-        destDir.toString(),
-        "-Xshare:on",
-        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
-        "-cp", jarName + File.pathSeparator + appJar2,
-        "-Xlog:class+load=trace,class+path=info",
-        "HelloMore")
-        .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-            });
-
-    // Long path test
-    // Create a long directory path and copy the appJar there.
-    final int MAX_PATH = 260;
-    destDir = Paths.get(jarDir);
-    int subDirLen = MAX_PATH - jarDir.length() - 3;
-    if (subDirLen > 0) {
-        char[] chars = new char[subDirLen];
-        Arrays.fill(chars, 'x');
-        String subPath = new String(chars);
-        destDir = Paths.get(jarDir, subPath);
-    }
-    File longDir = destDir.toFile();
-    longDir.mkdir();
-    String destJar = longDir.getPath() + File.separator + jarName;
-    Files.copy(Paths.get(appJar), Paths.get(destJar), REPLACE_EXISTING);
-    // Create an archive with the appJar in the long directory path.
-    TestCommon.testDump(destJar, TestCommon.list("Hello"));
-
-    // Run with -cp containing the appJar and another jar appended.
-    TestCommon.run(
-        "-cp", destJar + File.pathSeparator + appJar2,
-        "-Xlog:class+load=trace,class+path=info",
-        "HelloMore")
-        .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-            });
-
-    // Dump an archive with a specified JAR file in -classpath
-    TestCommon.testDump(appJar, TestCommon.list("Hello"));
-
-    // compose a relative path to the hello.jar
-    String newHello = TestCommon.composeRelPath(appJar);
-
-    // create a sym link to the original hello.jar
-    File linkedHello = null;
-    if (!Platform.isWindows()) {
-        linkedHello = TestCommon.createSymLink(appJar);
-    }
-
-    // PASS:1) same appJar but referred to via a relative path
-    TestCommon.run(
-        "-cp", newHello + File.pathSeparator + appJar2,
-        "-Xlog:class+load=trace,class+path=info",
-        "HelloMore")
-      .assertNormalExit();
-
-    // PASS:2) relative path starting with "."
-    TestCommon.runWithRelativePath(
-        jarDir,
-        "-Xshare:on",
-        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
-        "-cp", "." + File.separator + jarName + File.pathSeparator + appJar2,
-        "-Xlog:class+load=trace,class+path=info",
-        "HelloMore")
-        .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-            });
-
-    // PASS:3) relative path starting with ".."
-    idx = jarDir.lastIndexOf(File.separator);
-    String jarSubDir = jarDir.substring(idx + 1);
-    TestCommon.runWithRelativePath(
-        jarDir,
-        "-Xshare:on",
-        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
-        "-cp", ".." + File.separator + jarSubDir + File.separator + jarName
-               + File.pathSeparator + appJar2,
-        "-Xlog:class+load=trace,class+path=info",
-        "HelloMore")
-        .assertNormalExit(output -> {
-                output.shouldContain("Hello source: shared objects file")
-                      .shouldHaveExitValue(0);
-            });
-
-    // PASS:4) a jar linked to the original hello.jar
-    if (!Platform.isWindows()) {
-        TestCommon.run(
-            "-cp", linkedHello.getPath() + File.pathSeparator + appJar2,
-            "HelloMore")
-          .assertNormalExit();
-    }
-
-    final String errorMessage1 = "Unable to use shared archive";
-    final String errorMessage2 = "shared class paths mismatch";
-    // FAIL: 1) runtime with classpath different from the one used in dump time
-    // (runtime has an extra jar file prepended to the class path)
-    TestCommon.run(
-        "-cp", appJar2 + File.pathSeparator + newHello,
-        "HelloMore")
-        .assertAbnormalExit(errorMessage1, errorMessage2);
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/RewriteBytecodesTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Use ClassLoader.defineClass() to load a class with rewritten bytecode. Make sure
- *          the archived class with the same name is not loaded.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/RewriteBytecodes.java test-classes/Util.java test-classes/Super.java test-classes/Child.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver RewriteBytecodesTest
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class RewriteBytecodesTest {
-  public static void main(String[] args) throws Exception {
-    String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-    String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-    String appJar = JarBuilder.build("dynamic_define", "RewriteBytecodes", "Util", "Super", "Child");
-    String superClsFile = (new File(System.getProperty("test.classes", "."), "Super.class")).getPath();
-
-    TestCommon.dump(appJar, TestCommon.list("RewriteBytecodes", "Super", "Child"),
-                    // command-line arguments ...
-                    use_whitebox_jar);
-
-    OutputAnalyzer output = TestCommon.exec(appJar,
-                    // command-line arguments ...
-                    "--add-opens=java.base/java.lang=ALL-UNNAMED",
-                    use_whitebox_jar,
-                    "-XX:+UnlockDiagnosticVMOptions",
-                    "-XX:+WhiteBoxAPI",
-                    "RewriteBytecodes", superClsFile);
-    TestCommon.checkExec(output);
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,479 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary SharedArchiveConsistency
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.compiler
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @build sun.hotspot.WhiteBox
- * @compile test-classes/Hello.java
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
- */
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Utils;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.channels.FileChannel;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import java.nio.file.StandardOpenOption;
-import static java.nio.file.StandardOpenOption.READ;
-import static java.nio.file.StandardOpenOption.WRITE;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Random;
-import sun.hotspot.WhiteBox;
-
-public class SharedArchiveConsistency {
-    public static WhiteBox wb;
-    public static int offset_magic;     // CDSFileMapHeaderBase::_magic
-    public static int offset_version;   // CDSFileMapHeaderBase::_version
-    public static int offset_jvm_ident; // FileMapHeader::_jvm_ident
-    public static int sp_offset_crc;    // CDSFileMapRegion::_crc
-    public static int offset_paths_misc_info_size;
-    public static int file_header_size = -1;// total size of header, variant, need calculation
-    public static int CDSFileMapRegion_size; // size of CDSFileMapRegion
-    public static int sp_offset;       // offset of CDSFileMapRegion
-    public static int sp_used_offset;  // offset of CDSFileMapRegion::_used
-    public static int size_t_size;     // size of size_t
-    public static int int_size;        // size of int
-
-    public static File jsa;        // will be updated during test
-    public static File orgJsaFile; // kept the original file not touched.
-    // The following should be consistent with the enum in the C++ MetaspaceShared class
-    public static String[] shared_region_name = {
-        "mc",          // MiscCode
-        "rw",          // ReadWrite
-        "ro",          // ReadOnly
-        "md",          // MiscData
-        "first_closed_archive",
-        "last_closed_archive",
-        "first_open_archive",
-        "last_open_archive"
-    };
-
-    public static int num_regions = shared_region_name.length;
-    public static String[] matchMessages = {
-        "Unable to use shared archive",
-        "An error has occurred while processing the shared archive file.",
-        "Checksum verification failed.",
-        "The shared archive file has been truncated."
-    };
-
-    public static void getFileOffsetInfo() throws Exception {
-        wb = WhiteBox.getWhiteBox();
-        offset_magic = wb.getOffsetForName("FileMapHeader::_magic");
-        offset_version = wb.getOffsetForName("FileMapHeader::_version");
-        offset_jvm_ident = wb.getOffsetForName("FileMapHeader::_jvm_ident");
-        sp_offset_crc = wb.getOffsetForName("CDSFileMapRegion::_crc");
-        try {
-            int nonExistOffset = wb.getOffsetForName("FileMapHeader::_non_exist_offset");
-            System.exit(-1); // should fail
-        } catch (Exception e) {
-            // success
-        }
-
-        sp_offset = wb.getOffsetForName("FileMapHeader::_space[0]") - offset_magic;
-        sp_used_offset = wb.getOffsetForName("CDSFileMapRegion::_used") - sp_offset_crc;
-        size_t_size = wb.getOffsetForName("size_t_size");
-        CDSFileMapRegion_size  = wb.getOffsetForName("CDSFileMapRegion_size");
-    }
-
-    public static int getFileHeaderSize(FileChannel fc) throws Exception {
-        if (file_header_size != -1) {
-            return file_header_size;
-        }
-        // this is not real header size, it is struct size
-        int_size = wb.getOffsetForName("int_size");
-        file_header_size = wb.getOffsetForName("file_header_size");
-        offset_paths_misc_info_size = wb.getOffsetForName("FileMapHeader::_paths_misc_info_size") -
-            offset_magic;
-        int path_misc_info_size   = (int)readInt(fc, offset_paths_misc_info_size, int_size);
-        file_header_size += path_misc_info_size;
-        System.out.println("offset_paths_misc_info_size = " + offset_paths_misc_info_size);
-        System.out.println("path_misc_info_size   = " + path_misc_info_size);
-        System.out.println("file_header_size      = " + file_header_size);
-        file_header_size = (int)align_up_page(file_header_size);
-        System.out.println("file_header_size (aligned to page) = " + file_header_size);
-        return file_header_size;
-    }
-
-    public static long align_up_page(long l) throws Exception {
-        // wb is obtained in getFileOffsetInfo() which is called first in main() else we should call
-        // WhiteBox.getWhiteBox() here first.
-        int pageSize = wb.getVMPageSize();
-        return (l + pageSize -1) & (~ (pageSize - 1));
-    }
-
-    private static long getRandomBetween(long start, long end) throws Exception {
-        if (start > end) {
-            throw new IllegalArgumentException("start must be less than end");
-        }
-        Random aRandom = Utils.getRandomInstance();
-        int d = aRandom.nextInt((int)(end - start));
-        if (d < 1) {
-            d = 1;
-        }
-        return start + d;
-    }
-
-    public static long readInt(FileChannel fc, long offset, int nbytes) throws Exception {
-        ByteBuffer bb = ByteBuffer.allocate(nbytes);
-        bb.order(ByteOrder.nativeOrder());
-        fc.position(offset);
-        fc.read(bb);
-        return  (nbytes > 4 ? bb.getLong(0) : bb.getInt(0));
-    }
-
-    public static void writeData(FileChannel fc, long offset, ByteBuffer bb) throws Exception {
-        fc.position(offset);
-        fc.write(bb);
-    }
-
-    public static FileChannel getFileChannel(File jsaFile) throws Exception {
-        List<StandardOpenOption> arry = new ArrayList<StandardOpenOption>();
-        arry.add(READ);
-        arry.add(WRITE);
-        return FileChannel.open(jsaFile.toPath(), new HashSet<StandardOpenOption>(arry));
-    }
-
-    public static void modifyJsaContentRandomly(File jsaFile) throws Exception {
-        FileChannel fc = getFileChannel(jsaFile);
-        // corrupt random area in the data areas
-        long[] used    = new long[num_regions];       // record used bytes
-        long start0, start, end, off;
-        int used_offset, path_info_size;
-
-        int bufSize;
-        System.out.printf("%-24s%12s%12s%16s\n", "Space Name", "Used bytes", "Reg Start", "Random Offset");
-        start0 = getFileHeaderSize(fc);
-        for (int i = 0; i < num_regions; i++) {
-            used[i] = get_region_used_size_aligned(fc, i);
-            start = start0;
-            for (int j = 0; j < i; j++) {
-                start += align_up_page(used[j]);
-            }
-            end = start + used[i];
-            if (start == end) {
-                continue; // Ignore empty regions
-            }
-            off = getRandomBetween(start, end);
-            System.out.printf("%-24s%12d%12d%16d\n", shared_region_name[i], used[i], start, off);
-            if (end - off < 1024) {
-                bufSize = (int)(end - off + 1);
-            } else {
-                bufSize = 1024;
-            }
-            ByteBuffer bbuf = ByteBuffer.wrap(new byte[bufSize]);
-            writeData(fc, off, bbuf);
-        }
-        if (fc.isOpen()) {
-            fc.close();
-        }
-    }
-
-    static long get_region_used_size_aligned(FileChannel fc, int region) throws Exception {
-        long n = sp_offset + CDSFileMapRegion_size * region + sp_used_offset;
-        long alignment = WhiteBox.getWhiteBox().metaspaceReserveAlignment();
-        long used = readInt(fc, n, size_t_size);
-        used = (used + alignment - 1) & ~(alignment - 1);
-        return used;
-    }
-
-    public static boolean modifyJsaContent(int region, File jsaFile) throws Exception {
-        FileChannel fc = getFileChannel(jsaFile);
-        byte[] buf = new byte[4096];
-        ByteBuffer bbuf = ByteBuffer.wrap(buf);
-
-        long total = 0L;
-        long[] used = new long[num_regions];
-        System.out.printf("%-24s%12s\n", "Space name", "Used bytes");
-        for (int i = 0; i < num_regions; i++) {
-            used[i] = get_region_used_size_aligned(fc, i);
-            System.out.printf("%-24s%12d\n", shared_region_name[i], used[i]);
-            total += used[i];
-        }
-        System.out.printf("%-24s%12d\n", "Total: ", total);
-        long header_size = getFileHeaderSize(fc);
-        long region_start_offset = header_size;
-        for (int i=0; i<region; i++) {
-            region_start_offset += used[i];
-        }
-        if (used[region] == 0) {
-            System.out.println("Region " + shared_region_name[region] + " is empty. Nothing to corrupt.");
-            return false;
-        }
-        System.out.println("Corrupt " + shared_region_name[region] + " section, start = " + region_start_offset
-                           + " (header_size + 0x" + Long.toHexString(region_start_offset-header_size) + ")");
-        long bytes_written = 0L;
-        while (bytes_written < used[region]) {
-            writeData(fc, region_start_offset + bytes_written, bbuf);
-            bbuf.clear();
-            bytes_written += 4096;
-        }
-        if (fc.isOpen()) {
-            fc.close();
-        }
-        return true;
-    }
-
-    public static void modifyJsaHeader(File jsaFile) throws Exception {
-        FileChannel fc = getFileChannel(jsaFile);
-        // screw up header info
-        byte[] buf = new byte[getFileHeaderSize(fc)];
-        ByteBuffer bbuf = ByteBuffer.wrap(buf);
-        writeData(fc, 0L, bbuf);
-        if (fc.isOpen()) {
-            fc.close();
-        }
-    }
-
-    public static void modifyJvmIdent() throws Exception {
-        FileChannel fc = getFileChannel(jsa);
-        int headerSize = getFileHeaderSize(fc);
-        System.out.println("    offset_jvm_ident " + offset_jvm_ident);
-        byte[] buf = new byte[256];
-        ByteBuffer bbuf = ByteBuffer.wrap(buf);
-        writeData(fc, (long)offset_jvm_ident, bbuf);
-        if (fc.isOpen()) {
-            fc.close();
-        }
-    }
-
-    public static void modifyHeaderIntField(long offset, int value) throws Exception {
-        FileChannel fc = getFileChannel(jsa);
-        int headerSize = getFileHeaderSize(fc);
-        System.out.println("    offset " + offset);
-        byte[] buf = ByteBuffer.allocate(4).putInt(value).array();
-        ByteBuffer bbuf = ByteBuffer.wrap(buf);
-        writeData(fc, offset, bbuf);
-        if (fc.isOpen()) {
-            fc.close();
-        }
-    }
-
-    public static void copyFile(File from, File to) throws Exception {
-        if (to.exists()) {
-            if(!to.delete()) {
-                throw new IOException("Could not delete file " + to);
-            }
-        }
-        to.createNewFile();
-        setReadWritePermission(to);
-        Files.copy(from.toPath(), to.toPath(), REPLACE_EXISTING);
-    }
-
-    // Copy file with bytes deleted or inserted
-    // del -- true, deleted, false, inserted
-    public static void copyFile(File from, File to, boolean del) throws Exception {
-        try (
-            FileChannel inputChannel = new FileInputStream(from).getChannel();
-            FileChannel outputChannel = new FileOutputStream(to).getChannel()
-        ) {
-            long size = inputChannel.size();
-            int init_size = getFileHeaderSize(inputChannel);
-            outputChannel.transferFrom(inputChannel, 0, init_size);
-            int n = (int)getRandomBetween(0, 1024);
-            if (del) {
-                System.out.println("Delete " + n + " bytes at data start section");
-                inputChannel.position(init_size + n);
-                outputChannel.transferFrom(inputChannel, init_size, size - init_size - n);
-            } else {
-                System.out.println("Insert " + n + " bytes at data start section");
-                outputChannel.position(init_size);
-                outputChannel.write(ByteBuffer.wrap(new byte[n]));
-                outputChannel.transferFrom(inputChannel, init_size + n , size - init_size);
-            }
-        }
-    }
-
-    public static void restoreJsaFile() throws Exception {
-        Files.copy(orgJsaFile.toPath(), jsa.toPath(), REPLACE_EXISTING);
-    }
-
-    public static void setReadWritePermission(File file) throws Exception {
-        if (!file.canRead()) {
-            if (!file.setReadable(true)) {
-                throw new IOException("Cannot modify file " + file + " as readable");
-            }
-        }
-        if (!file.canWrite()) {
-            if (!file.setWritable(true)) {
-                throw new IOException("Cannot modify file " + file + " as writable");
-            }
-        }
-    }
-
-    public static void testAndCheck(String[] execArgs) throws Exception {
-        OutputAnalyzer output = TestCommon.execCommon(execArgs);
-        String stdtxt = output.getOutput();
-        System.out.println("Note: this test may fail in very rare occasions due to CRC32 checksum collision");
-        for (String message : matchMessages) {
-            if (stdtxt.contains(message)) {
-                // match any to return
-                return;
-            }
-        }
-        TestCommon.checkExec(output);
-    }
-
-    // dump with hello.jsa, then
-    // read the jsa file
-    //   1) run normal
-    //   2) modify header
-    //   3) keep header correct but modify content in each region specified by shared_region_name[]
-    //   4) update both header and content, test
-    //   5) delete bytes in data begining
-    //   6) insert bytes in data begining
-    //   7) randomly corrupt data in each region specified by shared_region_name[]
-    public static void main(String... args) throws Exception {
-        // must call to get offset info first!!!
-        getFileOffsetInfo();
-        Path currentRelativePath = Paths.get("");
-        String currentDir = currentRelativePath.toAbsolutePath().toString();
-        System.out.println("Current relative path is: " + currentDir);
-        // get jar file
-        String jarFile = JarBuilder.getOrCreateHelloJar();
-
-        // dump (appcds.jsa created)
-        TestCommon.testDump(jarFile, null);
-
-        // test, should pass
-        System.out.println("1. Normal, should pass but may fail\n");
-
-        String[] execArgs = {"-Xlog:cds", "-cp", jarFile, "Hello"};
-        // tests that corrupt contents of the archive need to run with
-        // VerifySharedSpaces enabled to detect inconsistencies
-        String[] verifyExecArgs = {"-Xlog:cds", "-XX:+VerifySharedSpaces", "-cp", jarFile, "Hello"};
-
-        OutputAnalyzer output = TestCommon.execCommon(execArgs);
-
-        try {
-            TestCommon.checkExecReturn(output, 0, true, "Hello World");
-        } catch (Exception e) {
-            TestCommon.checkExecReturn(output, 1, true, matchMessages[0]);
-        }
-
-        // get current archive name
-        jsa = new File(TestCommon.getCurrentArchiveName());
-        if (!jsa.exists()) {
-            throw new IOException(jsa + " does not exist!");
-        }
-
-        setReadWritePermission(jsa);
-
-        // save as original untouched
-        orgJsaFile = new File(new File(currentDir), "appcds.jsa.bak");
-        copyFile(jsa, orgJsaFile);
-
-        // modify jsa header, test should fail
-        System.out.println("\n2. Corrupt header, should fail\n");
-        modifyJsaHeader(jsa);
-        output = TestCommon.execCommon(execArgs);
-        output.shouldContain("The shared archive file has a bad magic number");
-        output.shouldNotContain("Checksum verification failed");
-
-        copyFile(orgJsaFile, jsa);
-        // modify _jvm_ident and _paths_misc_info_size, test should fail
-        System.out.println("\n2a. Corrupt _jvm_ident and _paths_misc_info_size, should fail\n");
-        modifyJvmIdent();
-        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
-        output = TestCommon.execCommon(execArgs);
-        output.shouldContain("The shared archive file was created by a different version or build of HotSpot");
-        output.shouldNotContain("Checksum verification failed");
-
-        copyFile(orgJsaFile, jsa);
-        // modify _magic and _paths_misc_info_size, test should fail
-        System.out.println("\n2b. Corrupt _magic and _paths_misc_info_size, should fail\n");
-        modifyHeaderIntField(offset_magic, 0x00000000);
-        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
-        output = TestCommon.execCommon(execArgs);
-        output.shouldContain("The shared archive file has a bad magic number");
-        output.shouldNotContain("Checksum verification failed");
-
-        copyFile(orgJsaFile, jsa);
-        // modify _version and _paths_misc_info_size, test should fail
-        System.out.println("\n2c. Corrupt _version and _paths_misc_info_size, should fail\n");
-        modifyHeaderIntField(offset_version, 0x00000000);
-        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
-        output = TestCommon.execCommon(execArgs);
-        output.shouldContain("The shared archive file has the wrong version");
-        output.shouldNotContain("Checksum verification failed");
-
-        File newJsaFile = null;
-        // modify content
-        System.out.println("\n3. Corrupt Content, should fail\n");
-        for (int i=0; i<num_regions; i++) {
-            newJsaFile = new File(TestCommon.getNewArchiveName(shared_region_name[i]));
-            copyFile(orgJsaFile, newJsaFile);
-            TestCommon.setCurrentArchiveName(newJsaFile.toString());
-            if (modifyJsaContent(i, newJsaFile)) {
-                testAndCheck(verifyExecArgs);
-            }
-        }
-
-        // modify both header and content, test should fail
-        System.out.println("\n4. Corrupt Header and Content, should fail\n");
-        newJsaFile = new File(TestCommon.getNewArchiveName("header-and-content"));
-        copyFile(orgJsaFile, newJsaFile);
-        TestCommon.setCurrentArchiveName(newJsaFile.toString());
-        modifyJsaHeader(newJsaFile);
-        modifyJsaContent(0, newJsaFile);  // this will not be reached since failed on header change first
-        output = TestCommon.execCommon(execArgs);
-        output.shouldContain("The shared archive file has a bad magic number");
-        output.shouldNotContain("Checksum verification failed");
-
-        // delete bytes in data section
-        System.out.println("\n5. Delete bytes at beginning of data section, should fail\n");
-        copyFile(orgJsaFile, jsa, true);
-        TestCommon.setCurrentArchiveName(jsa.toString());
-        testAndCheck(verifyExecArgs);
-
-        // insert bytes in data section forward
-        System.out.println("\n6. Insert bytes at beginning of data section, should fail\n");
-        copyFile(orgJsaFile, jsa, false);
-        testAndCheck(verifyExecArgs);
-
-        System.out.println("\n7. modify Content in random areas, should fail\n");
-        newJsaFile = new File(TestCommon.getNewArchiveName("random-areas"));
-        copyFile(orgJsaFile, newJsaFile);
-        TestCommon.setCurrentArchiveName(newJsaFile.toString());
-        modifyJsaContentRandomly(newJsaFile);
-        testAndCheck(verifyExecArgs);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/SharedBaseAddress.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-/*
- * @test SharedBaseAddress
- * @summary Test variety of values for SharedBaseAddress, in AppCDS mode,
- *          making sure VM handles normal values as well as edge values
- *          w/o a crash.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run main/timeout=240 SharedBaseAddress
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SharedBaseAddress {
-
-    // shared base address test table
-    private static final String[] testTable = {
-        "1g", "8g", "64g","512g", "4t",
-        "32t", "128t", "0",
-        "1", "64k", "64M"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-
-        for (String testEntry : testTable) {
-            System.out.println("sharedBaseAddress = " + testEntry);
-
-            OutputAnalyzer dumpOutput = TestCommon.dump(
-                appJar, new String[] {"Hello"}, "-XX:SharedBaseAddress=" + testEntry);
-            TestCommon.checkDump(dumpOutput, "Loading classes to share");
-
-            OutputAnalyzer execOutput = TestCommon.exec(appJar, "Hello");
-            TestCommon.checkExec(execOutput, "Hello World");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/SharedPackages.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of package.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/PackageTest.java
- * @compile test-classes/JimageClassPackage.java
- * @run driver SharedPackages
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SharedPackages {
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("pkg", "p/PackageTest", "JimageClassPackage");
-
-        String appJar = TestCommon.getTestJar("pkg.jar");
-        TestCommon.testDump(appJar, TestCommon.list("p/PackageTest",
-                                                    "java/util/Dictionary",
-                                                    "sun/tools/javac/Main",
-                                                    "jdk/nio/zipfs/ZipInfo",
-                                                    "java/net/URL",
-                                                    "sun/rmi/rmic/Main",
-                                                    "com/sun/jndi/dns/DnsName"));
-
-        OutputAnalyzer output;
-
-        // Test 1: shared class from Jar on the -cp
-        output = TestCommon.exec(appJar, "-verbose:class", "p.PackageTest");
-        TestCommon.checkExec(output, "Expected package");
-        if (!TestCommon.isUnableToMap(output))
-            output.shouldContain("Package is not sealed");
-
-        // Test 2: shared classes from "modules" jimage
-        output = TestCommon.exec(appJar, "-verbose:class",
-                                 "JimageClassPackage");
-        if (!TestCommon.isUnableToMap(output)) {
-            output.shouldNotContain("Unexpected package");
-            output.shouldNotContain("Package is not sealed");
-        }
-
-        // Test 3: shared class from Jar on the -Xbootclasspath/a
-        TestCommon.dump(
-            appJar, TestCommon.list("p/PackageTest"), "-Xbootclasspath/a:" + appJar);
-        output = TestCommon.exec(appJar, "-Xbootclasspath/a:" + appJar, "p.PackageTest");
-        if (!TestCommon.isUnableToMap(output)) {
-            output.shouldNotContain("Unexpected package");
-            output.shouldContain("Package is not sealed");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/SignedJar.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of signed JAR.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver SignedJar
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-
-public class SignedJar {
-    public static void main(String[] args) throws Exception {
-        String unsignedJar = JarBuilder.getOrCreateHelloJar();
-        JarBuilder.signJar();
-
-        // Test class exists in signed JAR
-        String signedJar = TestCommon.getTestJar("signed_hello.jar");
-        OutputAnalyzer output;
-        output = TestCommon.dump(signedJar, TestCommon.list("Hello"));
-        TestCommon.checkDump(output, "Skipping Hello: Signed JAR");
-
-        // At runtime, the Hello class should be loaded from the jar file
-        // instead of from the shared archive since a class from a signed
-        // jar shouldn't be dumped into the archive.
-        output = TestCommon.exec(signedJar, "-verbose:class", "Hello");
-        String expectedOutput = ".class,load. Hello source: file:.*signed_hello.jar";
-
-        try {
-            output.shouldMatch(expectedOutput);
-        } catch (Exception e) {
-            TestCommon.checkCommonExecExceptions(output, e);
-        }
-
-        // Test class exists in both signed JAR and unsigned JAR
-        String jars = signedJar + System.getProperty("path.separator") + unsignedJar;
-        output = TestCommon.dump(jars, TestCommon.list("Hello"));
-        TestCommon.checkDump(output, "Skipping Hello: Signed JAR");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/SpecifySysLoaderProp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary If -Djava.system.class.loader=xxx is specified in command-line, disable archived non-system classes
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *      jdk.jartool/sun.tools.jar
- * @compile test-classes/TestClassLoader.java
- * @compile test-classes/ReportMyLoader.java
- * @compile test-classes/TrySwitchMyLoader.java
- * @run driver SpecifySysLoaderProp
- */
-
-import java.io.*;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SpecifySysLoaderProp {
-
-  public static void main(String[] args) throws Exception {
-    JarBuilder.build("sysloader", "TestClassLoader", "ReportMyLoader", "TrySwitchMyLoader");
-
-    String jarFileName = "sysloader.jar";
-    String appJar = TestCommon.getTestJar(jarFileName);
-    TestCommon.testDump(appJar, TestCommon.list("ReportMyLoader"));
-    String warning = "VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified";
-
-
-    // (0) Baseline. Do not specify -Djava.system.class.loader
-    //     The test class should be loaded from archive
-    TestCommon.run(
-        "-verbose:class",
-        "-cp", appJar,
-        "ReportMyLoader")
-      .assertNormalExit("[class,load] ReportMyLoader source: shared objects file",
-                        "ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@");
-
-    // (1) Try to execute the archive with -Djava.system.class.loader=no.such.Klass,
-    //     it should fail
-    TestCommon.run(
-        "-cp", appJar,
-        "-Djava.system.class.loader=no.such.Klass",
-        "ReportMyLoader")
-      .assertAbnormalExit(output -> {
-          output.shouldContain(warning);
-          output.shouldContain("ClassNotFoundException: no.such.Klass");
-        });
-
-    // (2) Try to execute the archive with -Djava.system.class.loader=TestClassLoader,
-    //     it should run, but archived non-system classes should be disabled
-    TestCommon.run(
-        "-verbose:class",
-        "-cp", appJar,
-        "-Djava.system.class.loader=TestClassLoader",
-        "ReportMyLoader")
-      .assertNormalExit("ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@", //<-this is still printed because TestClassLoader simply delegates to Launcher$AppLoader, but ...
-             "TestClassLoader.called = true", //<-but this proves that TestClassLoader was indeed called.
-             "TestClassLoader: loadClass(\"ReportMyLoader\",") //<- this also proves that TestClassLoader was indeed called.
-      .assertNormalExit(output -> {
-        output.shouldMatch(".class,load. TestClassLoader source: file:");
-        output.shouldMatch(".class,load. ReportMyLoader source: file:.*" + jarFileName);
-        });
-
-    // (3) Try to change the java.system.class.loader programmatically after
-    //     the app's main method is executed. This should have no effect in terms of
-    //     changing or switching the actual system class loader that's already in use.
-    TestCommon.run(
-        "-verbose:class",
-        "-cp", appJar,
-        "TrySwitchMyLoader")
-      .assertNormalExit("[class,load] ReportMyLoader source: shared objects file",
-             "TrySwitchMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@",
-             "ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@",
-             "TestClassLoader.called = false");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/TestCommon.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,665 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-import jdk.test.lib.Utils;
-import jdk.test.lib.BuildHelper;
-import jdk.test.lib.JDKToolFinder;
-import jdk.test.lib.Platform;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.cds.CDSTestUtils.Result;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.net.URI;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.FileSystem;
-import java.nio.file.FileSystems;
-import java.nio.file.Path;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipOutputStream;
-import jtreg.SkippedException;
-import cdsutils.DynamicDumpHelper;
-
-
-/**
- * This is a test utility class for common AppCDS test functionality.
- *
- * Various methods use (String ...) for passing VM options. Note that the order
- * of the VM options are important in certain cases. Many methods take arguments like
- *
- *    (String prefix[], String suffix[], String... opts)
- *
- * Note that the order of the VM options is:
- *
- *    prefix + opts + suffix
- */
-public class TestCommon extends CDSTestUtils {
-    private static final String JSA_FILE_PREFIX = System.getProperty("user.dir") +
-        File.separator;
-
-    private static final SimpleDateFormat timeStampFormat =
-        new SimpleDateFormat("HH'h'mm'm'ss's'SSS");
-
-    private static final String timeoutFactor =
-        System.getProperty("test.timeout.factor", "1.0");
-
-    private static String currentArchiveName;
-
-    // Call this method to start new archive with new unique name
-    public static void startNewArchiveName() {
-        deletePriorArchives();
-        currentArchiveName = getNewArchiveName();
-    }
-
-    // Call this method to get current archive name
-    public static String getCurrentArchiveName() {
-        return currentArchiveName;
-    }
-
-    public static void setCurrentArchiveName(String archiveName) {
-        currentArchiveName = archiveName;
-    }
-
-    public static String getNewArchiveName() {
-        return getNewArchiveName(null);
-    }
-
-    public static String getNewArchiveName(String stem) {
-        if (stem == null) {
-            stem = "appcds";
-        }
-        return JSA_FILE_PREFIX + stem + "-" +
-            timeStampFormat.format(new Date()) + ".jsa";
-    }
-
-    // Attempt to clean old archives to preserve space
-    // Archives are large artifacts (20Mb or more), and much larger than
-    // most other artifacts created in jtreg testing.
-    // Therefore it is a good idea to clean the old archives when they are not needed.
-    // In most cases the deletion attempt will succeed; on rare occasion the
-    // delete operation will fail since the system or VM process still holds a handle
-    // to the file; in such cases the File.delete() operation will silently fail, w/o
-    // throwing an exception, thus allowing testing to continue.
-    public static void deletePriorArchives() {
-        File dir = new File(System.getProperty("user.dir"));
-        String files[] = dir.list();
-        for (String name : files) {
-            if (name.startsWith("appcds-") && name.endsWith(".jsa")) {
-                if (!(new File(dir, name)).delete())
-                    System.out.println("deletePriorArchives(): delete failed for file " + name);
-            }
-        }
-    }
-
-    // Create AppCDS archive using most common args - convenience method
-    // Legacy name preserved for compatibility
-    public static OutputAnalyzer dump(String appJar, String classList[],
-                                               String... suffix) throws Exception {
-        return createArchive(appJar, classList, suffix);
-    }
-
-    public static OutputAnalyzer dump(String appJarDir, String appJar, String classList[],
-                                               String... suffix) throws Exception {
-        return createArchive(appJarDir, appJar, classList, suffix);
-    }
-
-    // Create AppCDS archive using most common args - convenience method
-    public static OutputAnalyzer createArchive(String appJar, String classList[],
-                                               String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
-        opts.setClassList(classList);
-        opts.addSuffix(suffix);
-        return createArchive(opts);
-    }
-
-    public static OutputAnalyzer createArchive(String appJarDir, String appJar, String classList[],
-                                               String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
-        opts.setAppJarDir(appJarDir);
-        opts.setClassList(classList);
-        opts.addSuffix(suffix);
-        return createArchive(opts);
-    }
-
-    // Simulate -Xshare:dump with -XX:ArchiveClassesAtExit. See comments around patchJarForDynamicDump()
-    private static final Class tmp = DynamicDumpHelper.class;
-
-    // Create AppCDS archive using appcds options
-    public static OutputAnalyzer createArchive(AppCDSOptions opts)
-        throws Exception {
-        ArrayList<String> cmd = new ArrayList<String>();
-        startNewArchiveName();
-
-        for (String p : opts.prefix) cmd.add(p);
-
-        if (opts.appJar != null) {
-            cmd.add("-cp");
-            cmd.add(opts.appJar);
-            File jf = new File(opts.appJar);
-            if (DYNAMIC_DUMP && !jf.isDirectory()) {
-                patchJarForDynamicDump(opts.appJar);
-            }
-        } else {
-            cmd.add("-Djava.class.path=");
-        }
-
-        if (opts.archiveName == null) {
-            opts.archiveName = getCurrentArchiveName();
-        }
-
-        if (DYNAMIC_DUMP) {
-            cmd.add("-Xshare:on");
-            cmd.add("-XX:ArchiveClassesAtExit=" + opts.archiveName);
-
-            cmd.add("-Xlog:cds");
-            cmd.add("-Xlog:cds+dynamic");
-            boolean mainModuleSpecified = false;
-            boolean patchModuleSpecified = false;
-            for (String s : opts.suffix) {
-                if (s.length() == 0) {
-                    continue;
-                }
-                if (s.equals("-m")) {
-                    mainModuleSpecified = true;
-                }
-                if (s.startsWith("--patch-module=")) {
-                    patchModuleSpecified = true;
-                }
-                cmd.add(s);
-            }
-
-            if (opts.appJar != null) {
-                // classlist is supported only when we have a Jar file to patch (to insert
-                // cdsutils.DynamicDumpHelper)
-                if (opts.classList == null) {
-                    throw new RuntimeException("test.dynamic.dump requires classList file");
-                }
-
-                if (!mainModuleSpecified && !patchModuleSpecified) {
-                    cmd.add("cdsutils.DynamicDumpHelper");
-                    File classListFile = makeClassList(opts.classList);
-                    cmd.add(classListFile.getPath());
-                }
-            } else {
-                if (!mainModuleSpecified && !patchModuleSpecified) {
-                    // If you have an empty classpath, you cannot specify a classlist!
-                    if (opts.classList != null && opts.classList.length > 0) {
-                        throw new RuntimeException("test.dynamic.dump not supported empty classpath with non-empty classlist");
-                    }
-                    cmd.add("-version");
-                }
-            }
-        } else {
-            // static dump
-            cmd.add("-Xshare:dump");
-            cmd.add("-XX:SharedArchiveFile=" + opts.archiveName);
-
-            if (opts.classList != null) {
-                File classListFile = makeClassList(opts.classList);
-                cmd.add("-XX:ExtraSharedClassListFile=" + classListFile.getPath());
-            }
-            for (String s : opts.suffix) {
-                cmd.add(s);
-            }
-        }
-
-        String[] cmdLine = cmd.toArray(new String[cmd.size()]);
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
-        if (opts.appJarDir != null) {
-            pb.directory(new File(opts.appJarDir));
-        }
-        return executeAndLog(pb, "dump");
-    }
-
-    // This allows you to run the AppCDS tests with JFR enabled at runtime (though not at
-    // dump time, as that's uncommon for typical AppCDS users).
-    //
-    // To run in this special mode, add the following to your jtreg command-line
-    //    -Dtest.cds.run.with.jfr=true
-    //
-    // Some AppCDS tests are not compatible with this mode. See the group
-    // hotspot_appcds_with_jfr in ../../TEST.ROOT for details.
-    private static final boolean RUN_WITH_JFR = Boolean.getBoolean("test.cds.run.with.jfr");
-    // This method simulates -Xshare:dump with -XX:ArchiveClassesAtExit. This way, we
-    // can re-use many tests (outside of the ./dynamicArchive directory) for testing
-    // general features of JDK-8215311 (JEP 350: Dynamic CDS Archives).
-    //
-    // We insert the cdsutils/DynamicDumpHelper.class into the first Jar file in
-    // the classpath. We use this class to load all the classes specified in the classlist.
-    //
-    // There's no need to change the run-time command-line: in this special mode, two
-    // archives are involved. The command-line specifies only the top archive. However,
-    // the location of the base archive is recorded in the top archive, so it can be
-    // determined by the JVM at runtime start-up.
-    //
-    // To run in this special mode, specify the following in your jtreg command-line
-    //    -Dtest.dynamic.cds.archive=true
-    //
-    // Note that some tests are not compatible with this special mode, including
-    //    + Tests in ./dynamicArchive: these tests are specifically written for
-    //      dynamic archive, and do not use TestCommon.createArchive(), which works
-    //      together with patchJarForDynamicDump().
-    //    + Tests related to cached objects and shared strings: dynamic dumping
-    //      does not support these.
-    //    + Custom loader tests: DynamicDumpHelper doesn't support the required
-    //      classlist syntax. (FIXME).
-    //    + Extra symbols and extra strings.
-    // See the hotspot_appcds_dynamic in ../../TEST.ROOT for details.
-    //
-    // To run all tests that are compatible with this mode:
-    //    cd test/hotspot/jtreg
-    //    jtreg -Dtest.dynamic.cds.archive=true :hotspot_appcds_dynamic
-    //
-    private static void patchJarForDynamicDump(String cp) throws Exception {
-        System.out.println("patchJarForDynamicDump: classpath = " + cp);
-        String firstJar = cp;
-        int n = firstJar.indexOf(File.pathSeparator);
-        if (n > 0) {
-            firstJar = firstJar.substring(0, n);
-        }
-        String classDir = System.getProperty("test.classes");
-        String expected1 = classDir + File.separator;
-        String expected2 = System.getProperty("user.dir") + File.separator;
-
-        if (!firstJar.startsWith(expected1) && !firstJar.startsWith(expected2)) {
-            throw new RuntimeException("FIXME: jar file not at a supported location ('"
-                                       + expected1 + "', or '" + expected2 + "'): " + firstJar);
-        }
-
-        String replaceJar = firstJar + ".tmp";
-        String patchClass = "cdsutils/DynamicDumpHelper.class";
-        ZipFile zipFile = new ZipFile(firstJar);
-        byte[] buf = new byte[1024];
-        int len;
-        if (zipFile.getEntry(patchClass) == null) {
-            FileOutputStream fout = new FileOutputStream(replaceJar);
-            final ZipOutputStream zos = new ZipOutputStream(fout);
-
-            zos.putNextEntry(new ZipEntry(patchClass));
-            InputStream is = new FileInputStream(classDir + File.separator + patchClass);
-            while ((len = (is.read(buf))) > 0) {
-                zos.write(buf, 0, len);
-            }
-            zos.closeEntry();
-            is.close();
-
-            for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) {
-                ZipEntry entryIn = (ZipEntry) e.nextElement();
-                zos.putNextEntry(entryIn);
-                is = zipFile.getInputStream(entryIn);
-                while ((len = is.read(buf)) > 0) {
-                    zos.write(buf, 0, len);
-                }
-                zos.closeEntry();
-                is.close();
-            }
-
-            zos.close();
-            fout.close();
-            zipFile.close();
-
-            File oldFile = new File(firstJar);
-            File newFile = new File(replaceJar);
-            oldFile.delete();
-            newFile.renameTo(oldFile);
-            System.out.println("firstJar = " + firstJar + " Modified");
-        } else {
-            System.out.println("firstJar = " + firstJar);
-        }
-    }
-
-    // Execute JVM using AppCDS archive with specified AppCDSOptions
-    public static OutputAnalyzer runWithArchive(AppCDSOptions opts)
-        throws Exception {
-
-        ArrayList<String> cmd = new ArrayList<String>();
-
-        for (String p : opts.prefix) cmd.add(p);
-
-        cmd.add("-Xshare:" + opts.xShareMode);
-        cmd.add("-showversion");
-        cmd.add("-XX:SharedArchiveFile=" + getCurrentArchiveName());
-        cmd.add("-Dtest.timeout.factor=" + timeoutFactor);
-
-        if (opts.appJar != null) {
-            cmd.add("-cp");
-            cmd.add(opts.appJar);
-        }
-
-        for (String s : opts.suffix) cmd.add(s);
-
-        if (RUN_WITH_JFR) {
-            boolean usesJFR = false;
-            for (String s : cmd) {
-                if (s.startsWith("-XX:StartFlightRecording=") || s.startsWith("-XX:FlightRecorderOptions")) {
-                    System.out.println("JFR option might have been specified. Don't interfere: " + s);
-                    usesJFR = true;
-                    break;
-                }
-            }
-            if (!usesJFR) {
-                System.out.println("JFR option not specified. Enabling JFR ...");
-                cmd.add(0, "-XX:StartFlightRecording=dumponexit=true");
-                System.out.println(cmd);
-            }
-        }
-
-        String[] cmdLine = cmd.toArray(new String[cmd.size()]);
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
-        if (opts.appJarDir != null) {
-            pb.directory(new File(opts.appJarDir));
-        }
-        return executeAndLog(pb, "exec");
-    }
-
-
-    public static OutputAnalyzer execCommon(String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions());
-        opts.addSuffix(suffix);
-        return runWithArchive(opts);
-    }
-
-    // This is the new API for running a Java process with CDS enabled.
-    // See comments in the CDSTestUtils.Result class for how to use this method.
-    public static Result run(String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions());
-        opts.addSuffix(suffix);
-        return new Result(opts, runWithArchive(opts));
-    }
-
-    public static Result runWithRelativePath(String jarDir, String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions());
-        opts.setAppJarDir(jarDir);
-        opts.addSuffix(suffix);
-        return new Result(opts, runWithArchive(opts));
-    }
-
-    public static OutputAnalyzer exec(String appJar, String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
-        opts.addSuffix(suffix);
-        return runWithArchive(opts);
-    }
-
-    public static Result runWithModules(String prefix[], String upgrademodulepath, String modulepath,
-                                            String mid, String... testClassArgs) throws Exception {
-        AppCDSOptions opts = makeModuleOptions(prefix, upgrademodulepath, modulepath,
-                                               mid, testClassArgs);
-        return new Result(opts, runWithArchive(opts));
-    }
-
-    public static OutputAnalyzer execAuto(String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions());
-        opts.addSuffix(suffix).setXShareMode("auto");
-        return runWithArchive(opts);
-    }
-
-    public static OutputAnalyzer execOff(String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions());
-        opts.addSuffix(suffix).setXShareMode("off");
-        return runWithArchive(opts);
-    }
-
-
-    private static AppCDSOptions makeModuleOptions(String prefix[], String upgrademodulepath, String modulepath,
-                                            String mid, String testClassArgs[]) {
-        AppCDSOptions opts = (new AppCDSOptions());
-
-        opts.addPrefix(prefix);
-        if (upgrademodulepath == null) {
-            opts.addSuffix("-p", modulepath, "-m", mid);
-        } else {
-            opts.addSuffix("--upgrade-module-path", upgrademodulepath,
-                           "-p", modulepath, "-m", mid);
-        }
-        opts.addSuffix(testClassArgs);
-        return opts;
-    }
-
-    public static OutputAnalyzer execModule(String prefix[], String upgrademodulepath, String modulepath,
-                                            String mid, String... testClassArgs)
-        throws Exception {
-        AppCDSOptions opts = makeModuleOptions(prefix, upgrademodulepath, modulepath,
-                                               mid, testClassArgs);
-        return runWithArchive(opts);
-    }
-
-    // A common operation: dump, then check results
-    public static OutputAnalyzer testDump(String appJar, String classList[],
-                                          String... suffix) throws Exception {
-        OutputAnalyzer output = dump(appJar, classList, suffix);
-        if (DYNAMIC_DUMP) {
-            if (isUnableToMap(output)) {
-                throw new SkippedException(UnableToMapMsg);
-            }
-            output.shouldContain("Written dynamic archive");
-        } else {
-            output.shouldContain("Loading classes to share");
-        }
-        output.shouldHaveExitValue(0);
-        return output;
-    }
-
-    public static OutputAnalyzer testDump(String appJarDir, String appJar, String classList[],
-                                          String... suffix) throws Exception {
-        OutputAnalyzer output = dump(appJarDir, appJar, classList, suffix);
-        if (DYNAMIC_DUMP) {
-            if (isUnableToMap(output)) {
-                throw new SkippedException(UnableToMapMsg);
-            }
-            output.shouldContain("Written dynamic archive");
-        } else {
-            output.shouldContain("Loading classes to share");
-        }
-        output.shouldHaveExitValue(0);
-        return output;
-    }
-
-    /**
-     * Simple test -- dump and execute appJar with the given classList in classlist.
-     */
-    public static OutputAnalyzer test(String appJar, String classList[], String... args)
-        throws Exception {
-        testDump(appJar, classList);
-
-        OutputAnalyzer output = exec(appJar, args);
-        return checkExec(output);
-    }
-
-
-    public static OutputAnalyzer checkExecReturn(OutputAnalyzer output, int ret,
-                           boolean checkContain, String... matches) throws Exception {
-        try {
-            for (String s : matches) {
-                if (checkContain) {
-                    output.shouldContain(s);
-                } else {
-                    output.shouldNotContain(s);
-                }
-            }
-            output.shouldHaveExitValue(ret);
-        } catch (Exception e) {
-            checkCommonExecExceptions(output, e);
-        }
-
-        return output;
-    }
-
-    // Convenience concatenation utils
-    public static String[] list(String ...args) {
-        return args;
-    }
-
-
-    public static String[] list(String arg, int count) {
-        ArrayList<String> stringList = new ArrayList<String>();
-        for (int i = 0; i < count; i++) {
-            stringList.add(arg);
-        }
-
-        String outputArray[] = stringList.toArray(new String[stringList.size()]);
-        return outputArray;
-    }
-
-
-    public static String[] concat(String... args) {
-        return list(args);
-    }
-
-
-    public static String[] concat(String prefix[], String... extra) {
-        ArrayList<String> list = new ArrayList<String>();
-        for (String s : prefix) {
-            list.add(s);
-        }
-        for (String s : extra) {
-            list.add(s);
-        }
-
-        return list.toArray(new String[list.size()]);
-    }
-
-    public static String[] concat(String prefix, String[] extra) {
-        ArrayList<String> list = new ArrayList<String>();
-        list.add(prefix);
-        for (String s : extra) {
-            list.add(s);
-        }
-
-        return list.toArray(new String[list.size()]);
-    }
-
-    // ===================== Concatenate paths
-    public static String concatPaths(String... paths) {
-        String prefix = "";
-        String s = "";
-        for (String p : paths) {
-            s += prefix;
-            s += p;
-            prefix = File.pathSeparator;
-        }
-        return s;
-    }
-
-
-    public static String getTestJar(String jar) {
-        File jarFile = CDSTestUtils.getTestArtifact(jar, true);
-        if (!jarFile.isFile()) {
-            throw new RuntimeException("Not a regular file: " + jarFile.getPath());
-        }
-        return jarFile.getPath();
-    }
-
-
-    public static String getTestDir(String d) {
-        File dirFile = CDSTestUtils.getTestArtifact(d, true);
-        if (!dirFile.isDirectory()) {
-            throw new RuntimeException("Not a directory: " + dirFile.getPath());
-        }
-        return dirFile.getPath();
-    }
-
-    public static boolean checkOutputStrings(String outputString1,
-                                             String outputString2,
-                                             String split_regex) {
-        String[] sa1 = outputString1.split(split_regex);
-        String[] sa2 = outputString2.split(split_regex);
-        Arrays.sort(sa1);
-        Arrays.sort(sa2);
-
-        int i = 0;
-        for (String s : sa1) {
-            if (!s.equals(sa2[i])) {
-                throw new RuntimeException(s + " is different from " + sa2[i]);
-            }
-            i ++;
-        }
-        return true;
-    }
-
-    static Pattern pattern;
-
-    static void findAllClasses(ArrayList<String> list) throws Throwable {
-        // Find all the classes in the jrt file system
-        pattern = Pattern.compile("/modules/[a-z.]*[a-z]+/([^-]*)[.]class");
-        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
-        Path base = fs.getPath("/modules/");
-        findAllClassesAtPath(base, list);
-    }
-
-    private static void findAllClassesAtPath(Path p, ArrayList<String> list) throws Throwable {
-        try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
-            for (Path entry: stream) {
-                Matcher matcher = pattern.matcher(entry.toString());
-                if (matcher.find()) {
-                    String className = matcher.group(1);
-                    list.add(className);
-                }
-                try {
-                    findAllClassesAtPath(entry, list);
-                } catch (Throwable t) {}
-            }
-        }
-    }
-
-    public static String composeRelPath(String appJar) {
-         int idx = appJar.lastIndexOf(File.separator);
-         String jarName = appJar.substring(idx + 1);
-         String jarDir = appJar.substring(0, idx);
-         String lastDir = jarDir.substring(jarDir.lastIndexOf(File.separator));
-         String relPath = jarDir + File.separator + ".." + File.separator + lastDir;
-         String newJar = relPath + File.separator + jarName;
-         return newJar;
-    }
-
-
-    public static File createSymLink(String appJar) throws Exception {
-         int idx = appJar.lastIndexOf(File.separator);
-         String jarName = appJar.substring(idx + 1);
-         String jarDir = appJar.substring(0, idx);
-         File origJar = new File(jarDir, jarName);
-         String linkedJarName = "linked_" + jarName;
-         File linkedJar = null;
-         if (!Platform.isWindows()) {
-             linkedJar = new File(jarDir, linkedJarName);
-             if (linkedJar.exists()) {
-                 linkedJar.delete();
-             }
-             Files.createSymbolicLink(linkedJar.toPath(), origJar.toPath());
-         }
-         return linkedJar;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/TestWithProfiler.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/**
- * @test
- * @bug 8145221
- * @summary After creating an AppCDS archive, run the test with the JFR profiler
- *          enabled, and keep calling a method in the archive in a tight loop.
- *          This is to test the safe handling of trampoline functions by the
- *          profiler.
- * @requires vm.hasJFR & vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/MyThread.java
- * @compile test-classes/TestWithProfilerHelper.java
- * @run driver TestWithProfiler
- */
-
-import jdk.test.lib.BuildHelper;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class TestWithProfiler {
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("myThread", "MyThread", "TestWithProfilerHelper");
-        String appJar = TestCommon.getTestJar("myThread.jar");
-        OutputAnalyzer output = TestCommon.dump(appJar,
-            TestCommon.list("MyThread", "TestWithProfilerHelper"));
-        TestCommon.checkDump(output);
-        output = TestCommon.exec(appJar,
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-Xint",
-            "-XX:+FlightRecorder",
-            "-XX:StartFlightRecording=duration=15s,filename=myrecording.jfr,settings=profile,dumponexit=true",
-            "TestWithProfilerHelper");
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/TraceLongClasspath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary ensure -XX:+TraceClassPaths showing entire expecting app classpath
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @compile test-classes/Super.java
- * @run driver TraceLongClasspath
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class TraceLongClasspath {
-
-    final static String ps = File.pathSeparator;
-
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String dummyJar = JarBuilder.build("dummy", "Super");
-
-        String longClassPath =
-            dummyJar + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/user-patch.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/abc-startup.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/features/com.foobar.db.jdbc7-dms.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/jdk/lib/tools.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/server/lib/someapps.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/../foobar_common/modules/net.xy.batcontrib_1.1.0.0_1-0b3/lib/bat-contrib.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/modules/features/foobar.aas.common.kkkkkkkkkkk.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.common.adapters_11.1.1/foobar.abc.common.adapters.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.plane.adapter_12.1.3/foobar.plane.adapter.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/lib/ccccccccar-common.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/communications/modules/config.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/communications/modules/userprefs-config.jar" + ps +
-            "/scratch/xxxx/yyyy/XXXXXX/aaaaaaaa/xxxxxxx/xxxxxxxx.us.foobar.com/CommonDomain/config/abc-infra" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/qqqqqq-all-1.6.5.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/foobar.abc.thread.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/thread-rrrrrrr-ext-aas.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.adapter_11.1.1/foobar.abc.adapter.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.ccc_11.1.1/foobar.abc.ccc.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-configuration.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-lang.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-logging.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.wccore/foobar-ppppppp-api.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.ooo_12.1.3/ooo-manifest.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/internal/features/rrr_aaxyxx_foobar.rrr.aas.classpath.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/rrrrrrrr-api.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/commons-xxx-1.1.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.mgmt_11.1.1/abc-infra-mgmt.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/eee/archives/eee-eee.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/marchnet.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/marchclient.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/march.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/jlib/iiiloader.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/xxxxxxyyzzzzz/classes-xxxxxxyyzzzzz.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_core.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_codec.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_imageio.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/jdk/lib/tools.jar" + ps +
-            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.ooo_12.1.3/ooo-manifest.jar";
-
-        String myCP = longClassPath + ps + appJar;
-        // Dump an archive with a specified JAR file in -classpath
-        TestCommon.testDump(myCP, TestCommon.list("Hello"));
-
-        // Then try to execute the archive with a different classpath and with -XX:+TraceClassPaths.
-        // The diagnosis "expecting" app classpath trace should show the entire classpath.
-        TestCommon.run(
-            "-XX:+TraceClassPaths", "-Xlog:cds",
-            "-cp", appJar,
-            "Hello")
-            .assertAbnormalExit(output -> {
-                output.shouldContain("Unable to use shared archive");
-                output.shouldContain("shared class paths mismatch");
-                // the "expecting" app classpath from -XX:+TraceClassPaths should not
-                // be truncated
-                output.shouldContain(myCP);
-              });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/UnusedCPDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @bug 8209385
- * @summary non-empty dir in -cp should be fine during dump time if only classes
- *          from the system modules are being loaded even though some are
- *          defined to the PlatformClassLoader and AppClassLoader.
- * @requires vm.cds
- * @library /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run main/othervm -Dtest.cds.copy.child.stdout=false UnusedCPDuringDump
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class UnusedCPDuringDump {
-
-    public static void main(String[] args) throws Exception {
-        File dir = new File(System.getProperty("user.dir"));
-        File emptydir = new File(dir, "emptydir");
-        emptydir.mkdir();
-        String appJar = JarBuilder.getOrCreateHelloJar();
-
-        OutputAnalyzer output = TestCommon.dump(dir.getPath(),
-            TestCommon.list("sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo",
-                            "com/sun/tools/sjavac/client/ClientMain"),
-                            "-Xlog:class+path=info,class+load=debug");
-        TestCommon.checkDump(output,
-                             "[class,load] sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo",
-                             "for instance a 'jdk/internal/loader/ClassLoaders$PlatformClassLoader'",
-                             "[class,load] com.sun.tools.sjavac.client.ClientMain",
-                             "for instance a 'jdk/internal/loader/ClassLoaders$AppClassLoader'");
-
-        String jsaOpt = "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName();
-        TestCommon.run("-cp", appJar, jsaOpt, "-Xlog:class+path=info,class+load=debug", "Hello")
-            .assertNormalExit("Hello World");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/UseAppCDS_Test.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-public class UseAppCDS_Test {
-    // args are from UseAppCDS:
-    // args[0] = TEST_OUT
-    public static void main(String[] args) {
-        System.out.println(args[0]);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.nio.file.Files;
-
-import java.util.*;
-import jdk.internal.org.objectweb.asm.*;
-
-/**
- * The testsets contained in this class are executed by ./VerifierTest_*.java, so that
- * individual testsets can be executed in parallel to shorten the total time required.
- */
-public class VerifierTest implements Opcodes {
-    // Test verification settings for dumping & runtime
-    static final String VFY_ALL = "-Xverify:all";
-    static final String VFY_REMOTE = "-Xverify:remote"; // default
-    static final String VFY_NONE = "-XX:+UnlockDiagnosticVMOptions, -XX:-BytecodeVerificationRemote, -XX:-BytecodeVerificationLocal";
-
-    static final String ERR =
-        "ERROR: class VerifierTestC was loaded unexpectedly";
-    static final String MAP_FAIL =
-        "shared archive file was created with less restrictive verification setting";
-    static final String VFY_ERR = "java.lang.VerifyError";
-    static final String PASS_RESULT = "Hi, how are you?";
-    static final String VFY_INFO_MESSAGE =
-        "All non-system classes will be verified (-Xverify:remote) during CDS dump time.";
-    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
-
-    enum Testset1Part {
-        A, B
-    }
-
-    public static void main(String[] args) throws Exception {
-        String subCaseId = args[0];
-        String jarName_verifier_test_tmp = "verifier_test_tmp" + "_" + subCaseId;
-        String jarName_verifier_test = "verifier_test" + "_" + subCaseId;
-        String jarName_greet = "greet" + "_" + subCaseId;
-        String jarName_hi = "hi" + "_" + subCaseId;
-
-
-        JarBuilder.build(jarName_verifier_test_tmp, "VerifierTest0", "VerifierTestA",
-                         "VerifierTestB", "VerifierTestC", "VerifierTestD", "VerifierTestE",
-                         "UnverifiableBase", "UnverifiableIntf", "UnverifiableIntfSub");
-        JarBuilder.build(jarName_greet, "Greet");
-        JarBuilder.build(jarName_hi, "Hi", "Hi$MyClass");
-
-        File dir = new File(System.getProperty("test.classes", "."));
-        File jarSrcFile = new File(dir, jarName_verifier_test_tmp + ".jar");
-        File jarFile = new File(dir, jarName_verifier_test + ".jar");
-        String jar = jarFile.getPath();
-
-        if (!jarFile.exists() || jarFile.lastModified() < jarSrcFile.lastModified()) {
-            createTestJarFile(jarSrcFile, jarFile);
-        } else {
-            System.out.println("Already up-to-date: " + jarFile);
-        }
-
-        String noAppClasses[] = TestCommon.list("");
-        String appClasses[] = TestCommon.list("UnverifiableBase",
-                                              "UnverifiableIntf",
-                                              "UnverifiableIntfSub",
-                                              "VerifierTestA",
-                                              "VerifierTestB",
-                                              "VerifierTestC",
-                                              "VerifierTestD",
-                                              "VerifierTestE",
-                                              "VerifierTest0");
-
-
-        switch (subCaseId) {
-        case "0":         testset_0(jar, noAppClasses, appClasses);                 return;
-        case "1A":        testset_1(jar, noAppClasses, appClasses, Testset1Part.A); return;
-        case "1B":        testset_1(jar, noAppClasses, appClasses, Testset1Part.B); return;
-        case "2":         testset_2(jarName_greet, jarName_hi);                   return;
-        default:
-            throw new RuntimeException("Unknown option: " + subCaseId);
-        }
-    }
-
-    static void testset_0(String jar, String[] noAppClasses, String[] appClasses) throws Exception {
-        // Unverifiable classes won't be included in the CDS archive.
-        // Dumping should not fail.
-        OutputAnalyzer output = TestCommon.dump(jar, appClasses);
-        output.shouldHaveExitValue(0);
-        if (output.getStdout().contains("Loading clases to share")) {
-            // last entry in appClasses[] is a verifiable class
-            for (int i = 0; i < (appClasses.length - 1); i++) {
-                output.shouldContain("Verification failed for " + appClasses[i]);
-                output.shouldContain("Removed error class: " + appClasses[i]);
-            }
-        }
-    }
-
-    static void checkRuntimeOutput(OutputAnalyzer output, String expected) throws Exception {
-        output.shouldContain(expected);
-        if (expected.equals(PASS_RESULT) ||
-            expected.equals(VFY_ERR)) {
-            output.shouldHaveExitValue(0);
-        } else {
-            output.shouldNotHaveExitValue(0);
-        }
-    }
-
-    static void testset_1(String jar, String[] noAppClasses, String[] appClasses, Testset1Part part)
-        throws Exception
-    {
-        String config[][] = {
-            // {dump_list, dumptime_verification_setting,
-            //  runtime_verification_setting, expected_output_str},
-
-            // Dump app/ext with -Xverify:remote
-            {"app",   VFY_REMOTE, VFY_REMOTE, VFY_ERR},
-            {"app",   VFY_REMOTE, VFY_ALL,    MAP_FAIL},
-            {"app",   VFY_REMOTE, VFY_NONE,   ERR },
-            // Dump app/ext with -Xverify:all
-            {"app",   VFY_ALL,    VFY_REMOTE, VFY_ERR },
-            {"app",   VFY_ALL,    VFY_ALL,    VFY_ERR },
-            {"app",   VFY_ALL,    VFY_NONE,   ERR },
-            // Dump app/ext with verifier turned off
-            {"app",   VFY_NONE,   VFY_REMOTE, VFY_ERR},
-            {"app",   VFY_NONE,   VFY_ALL,    MAP_FAIL},
-            {"app",   VFY_NONE,   VFY_NONE,   ERR },
-            // Dump sys only with -Xverify:remote
-            {"noApp", VFY_REMOTE, VFY_REMOTE, VFY_ERR},
-            {"noApp", VFY_REMOTE, VFY_ALL,    VFY_ERR},
-            {"noApp", VFY_REMOTE, VFY_NONE,   ERR},
-            // Dump sys only with -Xverify:all
-            {"noApp", VFY_ALL, VFY_REMOTE,    VFY_ERR},
-            {"noApp", VFY_ALL, VFY_ALL,       VFY_ERR},
-            {"noApp", VFY_ALL, VFY_NONE,      ERR},
-            // Dump sys only with verifier turned off
-            {"noApp", VFY_NONE, VFY_REMOTE,   VFY_ERR},
-            {"noApp", VFY_NONE, VFY_ALL,      VFY_ERR},
-            {"noApp", VFY_NONE, VFY_NONE,     ERR},
-        };
-
-        int loop_start, loop_stop;
-
-        // Further break down testset_1 into two parts (to be invoked from VerifierTest_1A.java
-        // and VerifierTest_1B.java) to improve parallel test execution time.
-        switch (part) {
-        case A:
-            loop_start = 0;
-            loop_stop  = 9;
-            break;
-        case B:
-        default:
-            assert part == Testset1Part.B;
-            loop_start = 9;
-            loop_stop  = config.length;
-            break;
-        }
-
-        String prev_dump_setting = "";
-        for (int i = loop_start; i < loop_stop; i ++) {
-            String dump_list[] = config[i][0].equals("app") ? appClasses :
-                noAppClasses;
-            String dump_setting = config[i][1];
-            String runtime_setting = config[i][2];
-            String expected_output_str = config[i][3];
-            System.out.println("Test case [" + i + "]: dumping " + config[i][0] +
-                               " with " + dump_setting +
-                               ", run with " + runtime_setting);
-            if (!dump_setting.equals(prev_dump_setting)) {
-                String dump_arg1;
-                String dump_arg2;
-                String dump_arg3;
-                // Need to break this into two separate arguments.
-                if (dump_setting.equals(VFY_NONE)) {
-                    dump_arg1 = "-XX:+UnlockDiagnosticVMOptions";
-                    dump_arg2 = "-XX:-BytecodeVerificationRemote";
-                    dump_arg3 = "-XX:-BytecodeVerificationLocal";
-                } else {
-                    // Redundant args should be harmless.
-                    dump_arg1 = dump_arg2 = dump_arg3 = dump_setting;
-                }
-
-                OutputAnalyzer dumpOutput = TestCommon.dump(
-                                                            jar, dump_list, dump_arg1, dump_arg2,
-                                                            dump_arg3, CDS_LOGGING,
-                                                            // FIXME: the following options are for working around a GC
-                                                            // issue - assert failure when dumping archive with the -Xverify:all
-                                                            "-Xms256m",
-                                                            "-Xmx256m");
-                if (dump_setting.equals(VFY_NONE) &&
-                    runtime_setting.equals(VFY_REMOTE)) {
-                    dumpOutput.shouldContain(VFY_INFO_MESSAGE);
-                }
-            }
-            String runtime_arg1;
-            String runtime_arg2;
-            String runtime_arg3;
-            if (runtime_setting.equals(VFY_NONE)) {
-                runtime_arg1 = "-XX:+UnlockDiagnosticVMOptions";
-                runtime_arg2 = "-XX:-BytecodeVerificationRemote";
-                runtime_arg3 = "-XX:-BytecodeVerificationLocal";
-            } else {
-                // Redundant args should be harmless.
-                runtime_arg1 = runtime_arg2 = runtime_arg3 = runtime_setting;
-            }
-            TestCommon.run("-cp", jar,
-                           runtime_arg1, runtime_arg2, runtime_arg3,
-                           "VerifierTest0")
-                .ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
-            prev_dump_setting = dump_setting;
-        }
-    }
-
-    static void testset_2(String jarName_greet, String jarName_hi) throws Exception {
-        String appClasses[];
-        String jar;
-
-        // The following section is for testing the scenarios where
-        // the classes are verifiable during dump time.
-        appClasses = TestCommon.list("Hi",
-                                     "Greet",
-                                     "Hi$MyClass");
-        jar = TestCommon.getTestJar(jarName_hi + ".jar") + File.pathSeparator +
-            TestCommon.getTestJar(jarName_greet + ".jar");
-        String config2[][] = {
-            // {dump_list, dumptime_verification_setting,
-            //  runtime_verification_setting, expected_output_str},
-
-            // Dump app/ext with -Xverify:remote
-            {"app",   VFY_REMOTE, VFY_REMOTE, PASS_RESULT},
-            {"app",   VFY_REMOTE, VFY_ALL,    MAP_FAIL},
-            {"app",   VFY_REMOTE, VFY_NONE,   PASS_RESULT },
-            // Dump app/ext with -Xverify:all
-            {"app",   VFY_ALL,    VFY_REMOTE, PASS_RESULT },
-            {"app",   VFY_ALL,    VFY_ALL,    PASS_RESULT },
-            {"app",   VFY_ALL,    VFY_NONE,   PASS_RESULT },
-            // Dump app/ext with verifier turned off
-            {"app",   VFY_NONE,   VFY_REMOTE, PASS_RESULT},
-            {"app",   VFY_NONE,   VFY_ALL,    MAP_FAIL},
-            {"app",   VFY_NONE,   VFY_NONE,   PASS_RESULT },
-        };
-        String prev_dump_setting = "";
-        for (int i = 0; i < config2.length; i ++) {
-            // config2[i][0] is always set to "app" in this test
-            String dump_setting = config2[i][1];
-            String runtime_setting = config2[i][2];
-            String expected_output_str = config2[i][3];
-            System.out.println("Test case [" + i + "]: dumping " + config2[i][0] +
-                               " with " + dump_setting +
-                               ", run with " + runtime_setting);
-            if (!dump_setting.equals(prev_dump_setting)) {
-                String dump_arg1;
-                String dump_arg2;
-                String dump_arg3;
-                if (dump_setting.equals(VFY_NONE)) {
-                    dump_arg1 = "-XX:+UnlockDiagnosticVMOptions";
-                    dump_arg2 = "-XX:-BytecodeVerificationRemote";
-                    dump_arg3 = "-XX:-BytecodeVerificationLocal";
-                } else {
-                    // Redundant args should be harmless.
-                    dump_arg1 = dump_arg2 = dump_arg3 = dump_setting;
-                }
-                OutputAnalyzer dumpOutput = TestCommon.dump(
-                                                            jar, appClasses, dump_arg1, dump_arg2,
-                                                            dump_arg3, CDS_LOGGING,
-                                                            // FIXME: the following options are for working around a GC
-                                                            // issue - assert failure when dumping archive with the -Xverify:all
-                                                            "-Xms256m",
-                                                            "-Xmx256m");
-                if (dump_setting.equals(VFY_NONE) &&
-                    runtime_setting.equals(VFY_REMOTE)) {
-                    dumpOutput.shouldContain(VFY_INFO_MESSAGE);
-                }
-            }
-            String runtime_arg1;
-            String runtime_arg2;
-            String runtime_arg3;
-            if (runtime_setting.equals(VFY_NONE)) {
-                runtime_arg1 = "-XX:+UnlockDiagnosticVMOptions";
-                runtime_arg2 = "-XX:-BytecodeVerificationRemote";
-                runtime_arg3 = "-XX:-BytecodeVerificationLocal";
-            } else {
-                // Redundant args should be harmless.
-                runtime_arg1 = runtime_arg2 = runtime_arg3 = runtime_setting;
-            }
-            TestCommon.run("-cp", jar,
-                           runtime_arg1, runtime_arg2, runtime_arg3,
-                           "Hi")
-                .ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
-           prev_dump_setting = dump_setting;
-        }
-    }
-
-    static void createTestJarFile(File jarSrcFile, File jarFile) throws Exception {
-        jarFile.delete();
-        Files.copy(jarSrcFile.toPath(), jarFile.toPath());
-
-        File dir = new File(System.getProperty("test.classes", "."));
-        File outdir = new File(dir, "verifier_test_classes");
-        outdir.mkdir();
-
-        writeClassFile(new File(outdir, "UnverifiableBase.class"), makeUnverifiableBase());
-        writeClassFile(new File(outdir, "UnverifiableIntf.class"), makeUnverifiableIntf());
-
-        JarBuilder.update(jarFile.getPath(), outdir.getPath());
-    }
-
-    static void writeClassFile(File file, byte bytecodes[]) throws Exception {
-        try (FileOutputStream fos = new FileOutputStream(file)) {
-            fos.write(bytecodes);
-        }
-    }
-
-    // This was obtained using JDK8: java jdk.internal.org.objectweb.asm.util.ASMifier tmpclasses/UnverifiableBase.class
-    static byte[] makeUnverifiableBase() throws Exception {
-        ClassWriter cw = new ClassWriter(0);
-        FieldVisitor fv;
-        MethodVisitor mv;
-        AnnotationVisitor av0;
-
-        cw.visit(V1_8, ACC_SUPER, "UnverifiableBase", null, "java/lang/Object", null);
-        {
-            fv = cw.visitField(ACC_FINAL + ACC_STATIC, "x", "LVerifierTest;", null, null);
-            fv.visitEnd();
-        }
-        {
-            mv = cw.visitMethod(0, "<init>", "()V", null, null);
-            mv.visitCode();
-            mv.visitVarInsn(ALOAD, 0);
-            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
-            mv.visitInsn(RETURN);
-            mv.visitMaxs(1, 1);
-            mv.visitEnd();
-        }
-        {
-            mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
-            mv.visitCode();
-            mv.visitTypeInsn(NEW, "VerifierTest0");
-            mv.visitInsn(DUP);
-            mv.visitMethodInsn(INVOKESPECIAL, "VerifierTest0", "<init>", "()V", false);
-            mv.visitFieldInsn(PUTSTATIC, "UnverifiableBase", "x", "LVerifierTest;");
-            mv.visitInsn(RETURN);
-            mv.visitMaxs(2, 0);
-            mv.visitEnd();
-        }
-        addBadMethod(cw);
-        cw.visitEnd();
-
-        return cw.toByteArray();
-    }
-
-    // This was obtained using JDK8: java jdk.internal.org.objectweb.asm.util.ASMifier tmpclasses/UnverifiableIntf.class
-    static byte[] makeUnverifiableIntf() throws Exception {
-        ClassWriter cw = new ClassWriter(0);
-        FieldVisitor fv;
-        MethodVisitor mv;
-        AnnotationVisitor av0;
-
-        cw.visit(V1_8, ACC_ABSTRACT + ACC_INTERFACE, "UnverifiableIntf", null, "java/lang/Object", null);
-
-        {
-            fv = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "x", "LVerifierTest0;", null, null);
-            fv.visitEnd();
-        }
-        {
-            mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
-            mv.visitCode();
-            mv.visitTypeInsn(NEW, "VerifierTest0");
-            mv.visitInsn(DUP);
-            mv.visitMethodInsn(INVOKESPECIAL, "VerifierTest0", "<init>", "()V", false);
-            mv.visitFieldInsn(PUTSTATIC, "UnverifiableIntf", "x", "LVerifierTest0;");
-            mv.visitInsn(RETURN);
-            mv.visitMaxs(2, 0);
-            mv.visitEnd();
-        }
-        addBadMethod(cw);
-        cw.visitEnd();
-
-        return cw.toByteArray();
-    }
-
-    // Add a bad method to make the class fail verification.
-    static void addBadMethod(ClassWriter cw) throws Exception {
-        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "bad", "()V", null, null);
-        mv.visitCode();
-        mv.visitInsn(ARETURN); //  java.lang.VerifyError: Operand stack underflow
-        mv.visitMaxs(2, 2);
-        mv.visitEnd();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_0.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Unverfiable app classes should not be archived.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * @modules jdk.jartool/sun.tools.jar
- *          java.base/jdk.internal.org.objectweb.asm
- * @compile test-classes/Greet.java
- * @compile test-classes/Hi.java
- * @compile test-classes/VerifierTest0.java
- * @run main/othervm/timeout=3600 VerifierTest 0
- */
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_1A.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Unverfiable app classes should not be archived.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * @modules jdk.jartool/sun.tools.jar
- *          java.base/jdk.internal.org.objectweb.asm
- * @compile test-classes/Greet.java
- * @compile test-classes/Hi.java
- * @compile test-classes/VerifierTest0.java
- * @run main/othervm/timeout=3600 VerifierTest 1A
- */
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_1B.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Unverfiable app classes should not be archived.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * @modules jdk.jartool/sun.tools.jar
- *          java.base/jdk.internal.org.objectweb.asm
- * @compile test-classes/Greet.java
- * @compile test-classes/Hi.java
- * @compile test-classes/VerifierTest0.java
- * @run main/othervm/timeout=3600 VerifierTest 1B
- */
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_2.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Unverfiable app classes should not be archived.
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * @modules jdk.jartool/sun.tools.jar
- *          java.base/jdk.internal.org.objectweb.asm
- * @compile test-classes/Greet.java
- * @compile test-classes/Hi.java
- * @compile test-classes/VerifierTest0.java
- * @run main/othervm/timeout=3600 VerifierTest 2
- */
--- a/test/hotspot/jtreg/runtime/appcds/WideIloadTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/**
- * @test
- * @summary Test 'iload_w' bytecode in shared class
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Iloadw.jasm
- * @compile test-classes/IloadwMain.java
- * @run driver WideIloadTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class WideIloadTest {
-    public static void main(String args[]) throws Exception {
-        JarBuilder.build("iload_w", "Iloadw", "IloadwMain");
-        String appJar = TestCommon.getTestJar("iload_w.jar");
-        OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list(
-                                        "Iloadw", "IloadwMain"));
-        TestCommon.checkDump(dumpOutput);
-        OutputAnalyzer execOutput = TestCommon.exec(appJar, "IloadwMain");
-        TestCommon.checkExec(execOutput, "Passed");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/WrongClasspath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary classpath mismatch between dump time and execution time
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver WrongClasspath
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class WrongClasspath {
-
-  public static void main(String[] args) throws Exception {
-    String appJar = JarBuilder.getOrCreateHelloJar();
-
-    // Dump an archive with a specified JAR file in -classpath
-    TestCommon.testDump(appJar, TestCommon.list("Hello"));
-
-    // Then try to execute the archive without -classpath -- it should fail
-    TestCommon.run(
-        /* "-cp", appJar, */ // <- uncomment this and the execution should succeed
-        "-Xlog:cds",
-        "Hello")
-        .assertAbnormalExit("Unable to use shared archive",
-                            "shared class paths mismatch");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/XShareAutoWithChangedJar.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test -Xshare:auto for AppCDS
- * @requires vm.cds
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/Hello.java
- * @run driver XShareAutoWithChangedJar
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class XShareAutoWithChangedJar {
-  public static void main(String[] args) throws Exception {
-    String appJar = JarBuilder.build("XShareAutoWithChangedJar", "Hello");
-
-    // 1. dump
-    OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"));
-    TestCommon.checkDump(output);
-
-    // 2. change the jar
-    JarBuilder.build("XShareAutoWithChangedJar", "Hello");
-
-    // 3. exec
-    output = TestCommon.execAuto("-cp", appJar, "Hello");
-    output.shouldContain("Hello World");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedIntegerCacheTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test primitive box caches integrity in various scenarios (IntegerCache etc)
- * @requires vm.cds.archived.java.heap
- * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile CheckIntegerCacheApp.java
- * @run driver ClassFileInstaller -jar boxCache.jar CheckIntegerCacheApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ArchivedIntegerCacheTest
- */
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ArchivedIntegerCacheTest {
-
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("boxCache.jar");
-
-        Path userDir = Paths.get(System.getProperty("user.dir"));
-        Path moduleDir = Files.createTempDirectory(userDir, "mods");
-
-        //
-        // Dump default archive
-        //
-        OutputAnalyzer output = TestCommon.dump(appJar,
-                TestCommon.list("CheckIntegerCacheApp"),
-                use_whitebox_jar);
-        TestCommon.checkDump(output);
-
-        // Test case 1)
-        // - Default options
-        System.out.println("----------------------- Test case 1 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "CheckIntegerCacheApp",
-                "127",
-                "true");
-        TestCommon.checkExec(output);
-
-        // Test case 2)
-        // - Default archive
-        // - Larger -XX:AutoBoxCacheMax
-        System.out.println("----------------------- Test case 2 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "-XX:AutoBoxCacheMax=20000",
-                "CheckIntegerCacheApp",
-                "20000",
-                "false");
-        TestCommon.checkExec(output);
-
-        //
-        // Dump with -XX:AutoBoxCacheMax specified
-        //
-        output = TestCommon.dump(appJar,
-                TestCommon.list("CheckIntegerCacheApp"),
-                "-XX:AutoBoxCacheMax=20000",
-                use_whitebox_jar);
-        TestCommon.checkDump(output);
-
-        // Test case 3)
-        // - Large archived cache
-        // - Default options
-        System.out.println("----------------------- Test case 3 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                "--module-path",
-                moduleDir.toString(),
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "CheckIntegerCacheApp",
-                "127",
-                "true");
-        TestCommon.checkExec(output);
-
-
-        // Test case 4)
-        // - Large archived cache
-        // - Matching options
-        System.out.println("----------------------- Test case 4 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                "--module-path",
-                moduleDir.toString(),
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "-XX:AutoBoxCacheMax=20000",
-                "CheckIntegerCacheApp",
-                "20000",
-                "true");
-        TestCommon.checkExec(output);
-
-        // Test case 5)
-        // - Large archived cache
-        // - Larger requested cache
-        System.out.println("----------------------- Test case 5 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                "--module-path",
-                moduleDir.toString(),
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "-XX:AutoBoxCacheMax=30000",
-                "CheckIntegerCacheApp",
-                "30000",
-                "false");
-        TestCommon.checkExec(output);
-
-        // Test case 6)
-        // - Cache is too large to archive
-        output = TestCommon.dump(appJar,
-                TestCommon.list("CheckIntegerCacheApp"),
-                "-XX:AutoBoxCacheMax=2000000",
-                "-Xmx1g",
-                "-XX:NewSize=1g",
-                "-Xlog:cds+heap=info",
-                "-Xlog:gc+region+cds",
-                "-Xlog:gc+region=trace",
-                use_whitebox_jar);
-        TestCommon.checkDump(output,
-            "Cannot archive the sub-graph referenced from [Ljava.lang.Integer; object",
-            "humongous regions have been found and may lead to fragmentation");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleComboTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test archived system module sub-graph and verify objects are archived.
- * @requires vm.cds.archived.java.heap
- * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile CheckArchivedModuleApp.java
- * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ArchivedModuleComboTest
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-import sun.hotspot.WhiteBox;
-
-public class ArchivedModuleComboTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-
-        Path userDir = Paths.get(System.getProperty("user.dir"));
-        Path moduleDir = Files.createTempDirectory(userDir, "mods");
-
-        //
-        // Dump without --module-path, without --show-module-resolution
-        //
-        OutputAnalyzer output = TestCommon.dump(appJar,
-                                    TestCommon.list("CheckArchivedModuleApp"),
-                                    use_whitebox_jar);
-        TestCommon.checkDump(output);
-
-        // Test case 1)
-        // - Dump without --module-path, without --show-module-resolution
-        // - Run from -cp only and without --show-module-resolution
-        //     + archived boot layer module ModuleDescriptors should be used
-        //     + archived boot layer configuration should be used
-        System.out.println("----------------------- Test case 1 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "yes",
-                                 "yes");
-        TestCommon.checkExec(output);
-
-        // Test case 2)
-        // - Dump without --module-path, without --show-module-resolution
-        // - Run from -cp only and with --show-module-resolution
-        //     + archived boot layer module ModuleDescriptors should be used with
-        //       --show-module-resolution (requires resolution)
-        //     + archived boot layer Configuration should not be disabled
-        System.out.println("----------------------- Test case 2 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "--show-module-resolution",
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "yes",
-                                 "no");
-        TestCommon.checkExec(output, "root java.base jrt:/java.base");
-
-        // Test case 3)
-        // - Dump without --module-path, without --show-module-resolution
-        // - Run with --module-path
-        //    + archived boot layer module ModuleDescriptors should be disabled
-        //    + archived boot layer Configuration should be disabled
-        System.out.println("----------------------- Test case 3 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "--module-path",
-                                 moduleDir.toString(),
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "no",
-                                 "no");
-        TestCommon.checkExec(output);
-
-        //
-        // Dump with --module-path specified (test case 4, 5). Use an
-        // empty directory as it's simple and still triggers the case
-        // where system module objects are not archived.
-        //
-        output = TestCommon.dump(appJar,
-                                 TestCommon.list("CheckArchivedModuleApp"),
-                                 "--module-path",
-                                 moduleDir.toString(),
-                                 use_whitebox_jar);
-        TestCommon.checkDump(output);
-
-        // Test case 4)
-        // - Dump with --module-path
-        // - Run from -cp only, no archived boot layer module ModuleDescriptors
-        //   and Configuration should be found.
-        System.out.println("----------------------- Test case 4 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "no",
-                                 "no");
-        TestCommon.checkExec(output);
-
-        // Test case 5)
-        // - Dump with --module-path
-        // - Run with --module-path, no archived boot layer module ModuleDescriptors
-        //   and Configuration should be found.
-        System.out.println("----------------------- Test case 5 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "--module-path",
-                                 moduleDir.toString(),
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "no",
-                                 "no");
-        TestCommon.checkExec(output);
-
-        //
-        // Dump without --module-path, with --show-module-resolution
-        //
-        output = TestCommon.dump(appJar,
-                                 TestCommon.list("CheckArchivedModuleApp"),
-                                 "--show-module-resolution",
-                                 use_whitebox_jar);
-        TestCommon.checkDump(output, "root java.base jrt:/java.base");
-
-        // Test case 6)
-        // - Dump without --module-path, with --show-module-resolution
-        // - Run from -cp only and without --show-module-resolution
-        //     + archived boot layer module ModuleDescriptors should be used
-        //     + archived boot layer Configuration should be used
-        System.out.println("----------------------- Test case 6 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "yes",
-                                 "yes");
-        TestCommon.checkExec(output);
-
-        // Test case 7)
-        // - Dump without --module-path, with --show-module-resolution
-        // - Run from -cp only and with --show-module-resolution
-        //     + archived boot layer module ModuleDescriptors should be used with
-        //       --show-module-resolution (requires resolution)
-        //     + archived boot layer Configuration should be disabled
-        System.out.println("----------------------- Test case 7 ----------------------");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "--show-module-resolution",
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "CheckArchivedModuleApp",
-                                 "yes",
-                                 "no");
-        TestCommon.checkExec(output, "root java.base jrt:/java.base");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleCompareTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Compare archived system modules with non-archived.
- * @requires vm.cds.archived.java.heap
- * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile PrintSystemModulesApp.java
- * @run driver ClassFileInstaller -jar app.jar PrintSystemModulesApp
- * @run driver ArchivedModuleCompareTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class ArchivedModuleCompareTest {
-    public static void main(String[] args) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-
-        // Test case 1)
-        // Compare the list of archived system module names with non-archived
-        // list. They must be the same.
-        System.out.println("---------------- Test case 1 -----------------");
-        OutputAnalyzer output = TestCommon.dump(appJar,
-                        TestCommon.list("PrintSystemModulesApp"));
-        TestCommon.checkDump(output);
-
-        output = TestCommon.execOff("-cp", appJar, "PrintSystemModulesApp");
-        output.shouldHaveExitValue(0);
-        String bootModules1 = output.getStdout();
-
-        output = TestCommon.exec(appJar, "PrintSystemModulesApp");
-        TestCommon.checkExec(output);
-        if (output.getStderr().contains("sharing")) {
-            String bootModules2 = output.getStdout();
-            TestCommon.checkOutputStrings(bootModules1, bootModules2, ", ");
-        }
-
-        // Test case 2)
-        // Verify --show-module-resolution output with the output from
-        // -Xshare:off run
-        System.out.println("---------------- Test case 2 -----------------");
-        output = TestCommon.execOff("-cp", appJar,
-                                    "--show-module-resolution",
-                                    "-version");
-        output.shouldHaveExitValue(0);
-        String moduleResolutionOut1 = output.getStdout();
-
-        output = TestCommon.exec(appJar,
-                                 "--show-module-resolution",
-                                 "-version");
-        TestCommon.checkExec(output);
-        if (output.getStderr().contains("sharing")) {
-            String moduleResolutionOut2 = output.getStdout();
-            TestCommon.checkOutputStrings(
-                moduleResolutionOut1, moduleResolutionOut2, "\n");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/**
- * Copyright (c) 2018, 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.
- */
-
-/*
- * @test
- * @summary Test archived module graph with custom runtime image
- * @requires vm.cds.archived.java.heap
- * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.module
- *          java.management
- *          jdk.jlink
- *          jdk.compiler
- * @build sun.hotspot.WhiteBox
- * @compile CheckArchivedModuleApp.java
- * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ArchivedModuleWithCustomImageTest
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.compiler.CompilerUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class ArchivedModuleWithCustomImageTest {
-    private static final String JAVA_HOME = System.getProperty("java.home");
-    private static final String TEST_MODULE = "test";
-    private static final Path jdkHome = Paths.get(System.getProperty("test.jdk"));
-    private static final Path jdkMods = jdkHome.resolve("jmods");
-    private static final Path testSrc = Paths.get(System.getProperty("test.src"));
-    private static final Path src = testSrc.resolve("src").resolve(TEST_MODULE);
-    private static final Path classes = Paths.get("classes");
-    private static final Path jmods = Paths.get("jmods");
-
-    public static void main(String[] args) throws Throwable {
-        if (Files.notExists(jdkMods)) {
-            System.out.println("No jmods/ in test JDK, not supported.");
-            return;
-        }
-
-        // compile test module class
-        if (!CompilerUtils.compile(src, classes)) {
-            throw new RuntimeException("Compilation failure.");
-        }
-
-        // create custom runtime image named 'myimage'
-        Files.createDirectories(jmods);
-        Path image = Paths.get("myimage");
-        runJmod(classes.toString(), TEST_MODULE);
-        runJlink(image, TEST_MODULE);
-
-        // test using 'myimage'
-        testArchivedModuleUsingImage(image);
-
-        Files.delete(jmods.resolve(TEST_MODULE + ".jmod"));
-    }
-
-    private static void runJlink(Path image, String modName) throws Throwable {
-        Path jlink = Paths.get(JAVA_HOME, "bin", "jlink");
-        OutputAnalyzer output = ProcessTools.executeProcess(jlink.toString(),
-                        "--output", image.toString(),
-                        "--add-modules", modName,
-                        "--module-path", jdkMods + File.pathSeparator + jmods);
-        output.shouldHaveExitValue(0);
-    }
-
-    private static void runJmod(String cp, String modName) throws Throwable {
-        Path jmod = Paths.get(JAVA_HOME, "bin", "jmod");
-        OutputAnalyzer output = ProcessTools.executeProcess(jmod.toString(),
-                       "create",
-                       "--class-path", cp,
-                       "--module-version", "1.0",
-                       "--main-class", "jdk.test.Test",
-                       jmods.resolve(modName + ".jmod").toString());
-        output.shouldHaveExitValue(0);
-    }
-
-    private static void testArchivedModuleUsingImage(Path image)
-                            throws Throwable {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-        Path customJava = Paths.get(image.toString(), "bin", "java");
-
-        // -Xshare:dump with custom runtime image
-        String[] dumpCmd = {
-            customJava.toString(),
-            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
-            "-Xshare:dump"};
-        printCommand(dumpCmd);
-        ProcessBuilder pbDump = new ProcessBuilder();
-        pbDump.command(dumpCmd);
-        OutputAnalyzer output = TestCommon.executeAndLog(
-            pbDump, "custom.runtime.image.dump");
-        TestCommon.checkDump(output);
-
-        // Test case 1):
-        // test archived module graph objects are used with custome runtime image
-        System.out.println("------------------- Test case 1 -------------------");
-        String[] runCmd = {customJava.toString(),
-                           use_whitebox_jar,
-                           "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
-                           "-cp",
-                           appJar,
-                           "-Xshare:on",
-                           "-XX:+UnlockDiagnosticVMOptions",
-                           "-XX:+WhiteBoxAPI",
-                           "CheckArchivedModuleApp",
-                           "yes",
-                           "yes"};
-        printCommand(runCmd);
-        ProcessBuilder pbRun = new ProcessBuilder();
-        pbRun.command(runCmd);
-        output = TestCommon.executeAndLog(pbRun, "custom.runtime.image.run");
-        output.shouldHaveExitValue(0);
-
-
-        // Test case 2):
-        // verify --show-module-resolution output
-        System.out.println("------------------- Test case 2 -------------------");
-
-        // myimage/bin/java -Xshare:off --show-module-resolution -version
-        String[] showModuleCmd1 = {customJava.toString(),
-                                   "-Xshare:off",
-                                   "--show-module-resolution",
-                                   "-version"};
-        printCommand(showModuleCmd1);
-        pbRun = new ProcessBuilder();
-        pbRun.command(showModuleCmd1);
-        output = TestCommon.executeAndLog(
-            pbRun, "custom.runtime.image.showModuleResolution.nocds");
-        output.shouldHaveExitValue(0);
-        String moduleResolutionOut1 = output.getStdout();
-
-        // myimage/bin/java -Xshare:on --show-module-resolution -version
-        //    -XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa
-        String[] showModuleCmd2 = {
-            customJava.toString(),
-            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
-            "-Xshare:on",
-            "--show-module-resolution",
-            "-version"};
-        printCommand(showModuleCmd2);
-        pbRun = new ProcessBuilder();
-        pbRun.command(showModuleCmd2);
-        output = TestCommon.executeAndLog(
-            pbRun, "custom.runtime.image.showModuleResolution.cds");
-        if (output.getStderr().contains("sharing")) {
-            String moduleResolutionOut2 = output.getStdout();
-            TestCommon.checkOutputStrings(
-                moduleResolutionOut1, moduleResolutionOut2, "\n");
-        }
-    }
-
-    private static void printCommand(String opts[]) {
-        StringBuilder cmdLine = new StringBuilder();
-        for (String cmd : opts)
-            cmdLine.append(cmd).append(' ');
-        System.out.println("Command line: [" + cmdLine.toString() + "]");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckArchivedModuleApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.io.File;
-import java.lang.module.Configuration;
-import java.lang.module.ModuleDescriptor;
-import java.util.List;
-import java.util.Set;
-import sun.hotspot.WhiteBox;
-
-//
-// Test archived system module graph when open archive heap objects are mapped:
-//
-public class CheckArchivedModuleApp {
-    static WhiteBox wb;
-    public static void main(String args[]) throws Exception {
-        wb = WhiteBox.getWhiteBox();
-
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("Archived open_archive_heap objects are not mapped.");
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        if (args.length != 2) {
-           throw new RuntimeException(
-               "FAILED. Incorrect argument length: " + args.length);
-        }
-
-        boolean expectArchivedDescriptors = "yes".equals(args[0]);
-        boolean expectArchivedConfiguration = "yes".equals(args[1]);
-        // -XX:+EnableJVMCI adds extra system modules, in which case the system
-        // module objects are not archived.
-        Boolean enableJVMCI = wb.getBooleanVMFlag("EnableJVMCI");
-        if (enableJVMCI != null && enableJVMCI) {
-            expectArchivedDescriptors = false;
-            expectArchivedConfiguration = false;
-        }
-
-        checkModuleDescriptors(expectArchivedDescriptors);
-        checkConfiguration(expectArchivedConfiguration);
-        checkEmptyConfiguration(expectArchivedConfiguration);
-    }
-
-    private static void checkModuleDescriptors(boolean expectArchivedDescriptors) {
-        Set<Module> modules = ModuleLayer.boot().modules();
-        for (Module m : modules) {
-            ModuleDescriptor md = m.getDescriptor();
-            String name = md.name();
-            if (expectArchivedDescriptors) {
-                if (wb.isShared(md)) {
-                    System.out.println(name + " is archived. Expected.");
-                } else {
-                    throw new RuntimeException(
-                        "FAILED. " + name + " is not archived. Expect archived.");
-                }
-            } else {
-                if (!wb.isShared(md)) {
-                    System.out.println(name + " is not archived. Expected.");
-                } else {
-                    throw new RuntimeException(
-                        "FAILED. " + name + " is archived. Expect not archived.");
-                }
-            }
-        }
-    }
-
-    private static void checkEmptyConfiguration(boolean expectArchivedConfiguration) {
-        // Configuration.EMPTY_CONFIGURATION uses the singletons,
-        // ListN.EMPTY_LIST, SetN.EMPTY_SET and MapN.EMPTY_MAP in
-        // ImmutableCollections for the 'parents', 'modules' and
-        // 'graph' fields. The ImmutableCollections singletons
-        // can be accessed via List.of(), Set.of() and Map.of() APIs.
-        // Configuration public APIs also allow access to the
-        // EMPTY_CONFIGURATION's 'parents' and 'modules'. When the
-        // archived java heap data is enabled at runtime, make sure
-        // the EMPTY_CONFIGURATION.parents and EMPTY_CONFIGURATION.modules
-        // are the archived ImmutableCollections singletons.
-        Configuration emptyCf = Configuration.empty();
-        List emptyCfParents = emptyCf.parents();
-        Set emptyCfModules = emptyCf.modules();
-        if (expectArchivedConfiguration) {
-            if (emptyCfParents == List.of() &&
-                wb.isShared(emptyCfParents)) {
-                System.out.println("Empty Configuration has expected parents.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. Unexpected parents for empty Configuration.");
-            }
-            if (emptyCfModules == Set.of() &&
-                wb.isShared(emptyCfModules)) {
-                System.out.println("Empty Configuration has expected module set.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. Unexpected module set for empty Configuration.");
-            }
-        }
-    }
-
-
-
-    private static void checkConfiguration(boolean expectArchivedConfiguration) {
-        Configuration cf = ModuleLayer.boot().configuration();
-
-        if (expectArchivedConfiguration) {
-            if (wb.isShared(cf)) {
-                System.out.println("Boot layer configuration is archived. Expected.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. Boot layer configuration is not archived.");
-            }
-        } else {
-            if (!wb.isShared(cf)) {
-                System.out.println("Boot layer configuration is not archived. Expected.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. Boot layer configuration is archived.");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedMirrorApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import sun.hotspot.WhiteBox;
-
-//
-// Test class mirror objects are cached when open archive heap objects are mapped:
-//  - Well-known shared library classes:
-//      java.lang.Object
-//      java.lang.String
-//  - Shared application class loaded by the system class loader
-//  - Shared application class loaded user defined class loader
-//
-public class CheckCachedMirrorApp {
-    static WhiteBox wb;
-    public static void main(String args[]) throws Exception {
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-
-        URLClassLoader loader = new URLClassLoader(urls);
-        Class hello = loader.loadClass("Hello");
-        System.out.println("Loaded " + hello + " from " + url + " using loader " + loader);
-
-        wb = WhiteBox.getWhiteBox();
-
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("Archived open_archive_heap objects are not mapped.");
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        // Well-known shared library classes
-        Class object_class = Object.class;
-        checkMirror(object_class, true);
-        Class string_class = String.class;
-        checkMirror(string_class, true);
-
-        // Shared app class
-        Class app_class = CheckCachedMirrorApp.class;
-        checkMirror(app_class, true);
-
-        // Hello is shared class and loaded by the 'loader' defined in current app.
-        // It should not have cached resolved_references.
-        Class class_with_user_defined_loader = hello;
-        checkMirror(class_with_user_defined_loader, false);
-    }
-
-    static void checkMirror(Class c, boolean mirrorShouldBeArchived) {
-        System.out.print("Check cached mirror for " + c);
-        if (wb.isSharedClass(c)) {
-            // Check if the Class object is cached
-            if (mirrorShouldBeArchived && wb.isShared(c)) {
-                System.out.println(c + " mirror is cached. Expected.");
-            } else if (!mirrorShouldBeArchived && !wb.isShared(c)) {
-                System.out.println(c + " mirror is not cached. Expected.");
-            } else if (mirrorShouldBeArchived && !wb.isShared(c)) {
-                throw new RuntimeException(
-                    "FAILED. " + c + " mirror is not cached.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. " + c + " mirror should not be cached.");
-            }
-        } else {
-          System.out.println("Class " + c + "is not shared, skipping the check for mirror");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedMirrorTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test archived mirror
- * @requires vm.cds.archived.java.heap
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile CheckCachedMirrorApp.java
- * @compile ../test-classes/Hello.java
- * @run driver ClassFileInstaller -jar app.jar CheckCachedMirrorApp
- * @run driver ClassFileInstaller -jar hello.jar Hello
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver CheckCachedMirrorTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class CheckCachedMirrorTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-        String helloJarPath = ClassFileInstaller.getJarPath("hello.jar");
-
-        String classlist[] = new String[] {
-            "CheckCachedMirrorApp",            // built-in app loader
-            "java/lang/Object id: 1",          // boot loader
-            "Hello id: 2 super: 1 source: " + helloJarPath // custom loader
-        };
-
-        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
-        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
-                                                "-XX:+UnlockDiagnosticVMOptions",
-                                                "-XX:+WhiteBoxAPI",
-                                                "-Xlog:cds=debug",
-                                                "CheckCachedMirrorApp",
-                                                helloJarPath);
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferences.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test resolved_references
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile CheckCachedResolvedReferencesApp.java
- * @compile ../test-classes/Hello.java
- * @run driver ClassFileInstaller -jar app.jar CheckCachedResolvedReferencesApp
- * @run driver ClassFileInstaller -jar hello.jar Hello
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver CheckCachedResolvedReferences
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class CheckCachedResolvedReferences {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-        String helloJarPath = ClassFileInstaller.getJarPath("hello.jar");
-
-        String classlist[] = new String[] {
-            "CheckCachedResolvedReferencesApp",            // built-in app loader
-            "java/lang/Object id: 1",                      // boot loader
-            "Hello id: 2 super: 1 source: " + helloJarPath // custom loader
-        };
-
-        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
-        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
-                                                "-XX:+UnlockDiagnosticVMOptions",
-                                                "-XX:+WhiteBoxAPI",
-                                                "CheckCachedResolvedReferencesApp",
-                                                helloJarPath);
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferencesApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import sun.hotspot.WhiteBox;
-
-public class CheckCachedResolvedReferencesApp {
-    public static void main(String args[]) throws Exception {
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-
-        URLClassLoader loader = new URLClassLoader(urls);
-        Class hello = loader.loadClass("Hello");
-        System.out.println("Loaded " + hello + " from " + url + " using loader " + loader);
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("Archived open_archive_heap objects are not mapped.");
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        // CheckCachedResolvedReferencesApp is shared class and loaded by the
-        // AppClassLoader. It should have cached resolved_references.
-        if (wb.isSharedClass(CheckCachedResolvedReferencesApp.class)) {
-            Object refs1 = wb.getResolvedReferences(CheckCachedResolvedReferencesApp.class);
-            if (refs1 != null && wb.isShared(refs1)) {
-                System.out.println(
-                    "resolved references from CheckCachedResolvedReferencesApp is cached");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. CheckCachedResolvedReferencesApp has no cached resolved references");
-            }
-        }
-
-        // Hello is shared class and loaded by the 'loader' defined in current app.
-        // It should not have cached resolved_references.
-        if (wb.isSharedClass(hello)) {
-            Object refs2 = wb.getResolvedReferences(hello);
-            if (refs2 != null) {
-                if (!wb.isShared(refs2)) {
-                    System.out.println("resolved references from hello is not cached");
-                } else {
-                    throw new RuntimeException(
-                        "FAILED. Hello has unexpected cached resolved references");
-                }
-            } else {
-                throw new RuntimeException("FAILED. Hello has no resolved references");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckIntegerCacheApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-//
-// Help test archived box cache consistency.
-//
-// Takes two arguments:
-// 0: the expected maximum value expected to be archived
-// 1: if the values are expected to be retrieved from the archive or not
-//    (only applies to IntegerCache; other caches should always be mapped
-//    from archive)
-//
-public class CheckIntegerCacheApp {
-    static WhiteBox wb;
-
-    public static void main(String[] args) throws Exception {
-        wb = WhiteBox.getWhiteBox();
-
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        if (args.length != 2) {
-            throw new RuntimeException(
-                    "FAILED. Incorrect argument length: " + args.length);
-        }
-
-        boolean archivedExpected = Boolean.parseBoolean(args[1]);
-
-        // Base JLS compliance check
-        for (int i = -128; i <= 127; i++) {
-            if (Integer.valueOf(i) != Integer.valueOf(i)) {
-                throw new RuntimeException(
-                        "FAILED. All values in range [-128, 127] should be interned in cache: " + i);
-            }
-            if (Byte.valueOf((byte)i) != Byte.valueOf((byte)i)) {
-                throw new RuntimeException(
-                        "FAILED. All Byte values in range [-128, 127] should be interned in cache: " + (byte)i);
-            }
-            if (Short.valueOf((short)i) != Short.valueOf((short)i)) {
-                throw new RuntimeException(
-                        "FAILED. All Short values in range [-128, 127] should be interned in cache: " + (byte)i);
-            }
-            if (Long.valueOf(i) != Long.valueOf(i)) {
-                throw new RuntimeException(
-                        "FAILED. All Long values in range [-128, 127] should be interned in cache: " + i);
-            }
-            checkArchivedAsExpected(archivedExpected, Integer.valueOf(i));
-            checkArchivedAsExpected(true, Byte.valueOf((byte)i));
-            checkArchivedAsExpected(true, Short.valueOf((short)i));
-            checkArchivedAsExpected(true, Long.valueOf(i));
-
-            // Character cache only values 0 through 127
-            if (i >= 0) {
-                if (Character.valueOf((char)i) != Character.valueOf((char)i)) {
-                    throw new RuntimeException(
-                            "FAILED. All Character values in range [0, 127] should be interned in cache: " + i);
-                }
-                checkArchivedAsExpected(true, Character.valueOf((char)i));
-            }
-        }
-
-        int high = Integer.parseInt(args[0]);
-        if (Integer.valueOf(high) != Integer.valueOf(high)) {
-            throw new RuntimeException(
-                    "FAILED. Value expected to be retrieved from cache: " + high);
-        }
-        checkArchivedAsExpected(archivedExpected, Integer.valueOf(high));
-
-        if (Integer.valueOf(high + 1) == Integer.valueOf(high + 1)) {
-            throw new RuntimeException(
-                    "FAILED. Value not expected to be retrieved from cache: " + high);
-        }
-        checkArchivedAsExpected(false, Integer.valueOf(high + 1));
-        checkArchivedAsExpected(false, Short.valueOf((short)128));
-        checkArchivedAsExpected(false, Long.valueOf(128));
-        checkArchivedAsExpected(false, Character.valueOf((char)128));
-    }
-
-    private static void checkArchivedAsExpected(boolean archivedExpected, Object value) {
-        if (archivedExpected) {
-            if (!wb.isShared(value)) {
-                throw new RuntimeException(
-                        "FAILED. Value expected to be archived: " + value +
-                        " of type " + value.getClass().getName());
-            }
-        } else {
-            if (wb.isShared(value)) {
-                throw new RuntimeException(
-                        "FAILED. Value not expected to be archived: " + value +
-                        " of type " + value.getClass().getName());
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/DifferentHeapSizes.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test automatic relocation of archive heap regions dur to heap size changes.
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=160 -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. DifferentHeapSizes
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-import jdk.test.lib.cds.CDSTestUtils;
-
-public class DifferentHeapSizes {
-    static final String DEDUP = "-XX:+UseStringDeduplication"; // This increases code coverage.
-
-    static class Scenario {
-        int dumpSize;   // in MB
-        int runSizes[]; // in MB
-        Scenario(int ds, int... rs) {
-            dumpSize = ds;
-            runSizes = rs;
-        }
-    }
-
-    static Scenario[] scenarios = {
-        //           dump -Xmx ,         run -Xmx
-        new Scenario(        32,         32, 64, 512, 2048, 4097, 16374, 31000),
-        new Scenario(       128,         32, 64, 512, 2048, 4097, 16374, 31000, 40000),
-        new Scenario(      2048,         32, 512, 2600, 4097, 8500, 31000,      40000),
-        new Scenario(     17000,         32, 512, 2048, 4097, 8500, 31000,      40000),
-        new Scenario(     31000,         32, 512, 2048, 4097, 8500, 17000,      40000)
-    };
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.getOrCreateHelloJar();
-        String appJar = TestCommon.getTestJar("hello.jar");
-        String appClasses[] = TestCommon.list("Hello");
-
-        for (Scenario s : scenarios) {
-            String dumpXmx = "-Xmx" + s.dumpSize + "m";
-            OutputAnalyzer output = TestCommon.dump(appJar, appClasses, dumpXmx);
-
-            for (int runSize : s.runSizes) {
-                String runXmx = "-Xmx" + runSize + "m";
-                CDSTestUtils.Result result = TestCommon.run("-cp", appJar, "-showversion",
-                        "-Xlog:cds", runXmx, DEDUP, "Hello");
-                if (runSize < 32768) {
-                    result
-                        .assertNormalExit("Hello World")
-                        .assertNormalExit(out -> {
-                            out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP);
-                            out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE);
-                        });
-                } else {
-                    result.assertAbnormalExit(CDSTestUtils.MSG_COMPRESSION_MUST_BE_USED);
-                }
-            }
-        }
-
-        // Test various settings of -XX:HeapBaseMinAddress that would trigger
-        // "CDS heap data need to be relocated because the desired range ... is outside of the heap"
-        long default_base = WhiteBox.getWhiteBox().getSizeTVMFlag("HeapBaseMinAddress").longValue();
-        long M = 1024 * 1024;
-        long bases[] = new long[] {
-            /* dump xmx */   /* run xmx */   /* dump base */             /* run base */
-            128 * M,         128 * M,        default_base,               default_base + 256L * 1024 * 1024,
-            128 * M,         16376 * M,      0x0000000119200000L,        -1,
-        };
-
-        for (int i = 0; i < bases.length; i += 4) {
-            String dump_xmx  = getXmx(bases[i+0]);
-            String run_xmx   = getXmx(bases[i+1]);
-            String dump_base = getHeapBaseMinAddress(bases[i+2]);
-            String run_base  = getHeapBaseMinAddress(bases[i+3]);
-
-            TestCommon.dump(appJar, appClasses, dump_xmx, dump_base);
-            TestCommon.run("-cp", appJar, "-showversion", "-Xlog:cds", run_xmx, run_base, DEDUP, "Hello")
-                .assertNormalExit("Hello World")
-                .assertNormalExit(out -> {
-                        out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP);
-                        out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE);
-                    });
-        }
-    }
-
-    static String getXmx(long value) {
-        if (value < 0) {
-            return "-showversion"; // This is a harmless command line arg
-        } else {
-            return "-Xmx" + (value / 1024 / 1024) + "m";
-        }
-    }
-    static String getHeapBaseMinAddress(long value) {
-        if (value < 0) {
-            return "-showversion"; // This is a harmless command line arg
-        } else {
-            return "-XX:HeapBaseMinAddress=0x" + Long.toHexString(value);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.config.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-26: shared_string_from_MyInner
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Dump time should not crash if any class with shared strings fails verification due to missing dependencies.
- * @bug 8186789
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @compile MyOuter.java MyException.java
- * @run driver DumpTimeVerifyFailure
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class DumpTimeVerifyFailure {
-    public static void main(String[] args) throws Exception {
-        // App classes (see MyOuter.java):
-        //   MyOuter
-        //   MyInnder$MyOuter extends MyOuter
-        //   MyException
-        //
-        // MyOuter$MyInner.test() throws MyException.
-        // The missingMyException.jar file only includes MyOuter and
-        // MyOuter$MyInner classes, but not the MyException class.
-        // At dump time, MyOuter and MyOuter$MyInner classes fail
-        // verification due to missing MyException class.
-        String[] ARCHIVE_CLASSES = {"MyOuter", "MyOuter$MyInner"};
-        String appJar = JarBuilder.build("missingMyException", ARCHIVE_CLASSES);
-
-        OutputAnalyzer dumpOutput = TestCommon.dump(
-                appJar, ARCHIVE_CLASSES,
-                "-Xlog:verification",
-                "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("DumpTimeVerifyFailure.config.txt"));
-        TestCommon.checkDump(dumpOutput, "Loading classes to share");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/GCStress.config.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-25: GCStressApp_shared_string
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import java.io.*;
-import java.util.*;
-import sun.hotspot.WhiteBox;
-
-// All strings in archived classes are shared
-public class GCStressApp {
-    static WhiteBox wb = WhiteBox.getWhiteBox();
-    static int[] arr;
-
-    static String get_shared_string() {
-        String shared_str = "GCStressApp_shared_string";
-        return shared_str;
-    }
-
-    static String get_shared_string1() {
-        String shared_str1 = "GCStressApp_shared_string1";
-        return shared_str1;
-    }
-
-    static void allocAlot() {
-        try {
-            Random random = new Random();
-            for (int i = 0; i < 1024 * 1024; i++) {
-                int len = random.nextInt(10000);
-                arr = new int[len];
-            }
-        } catch (java.lang.OutOfMemoryError e) { }
-    }
-
-    static void runGC() {
-        wb.fullGC();
-    }
-
-    public static void main(String args[]) throws Exception {
-        if (!wb.isSharedClass(GCStressApp.class)) {
-           System.out.println("GCStressApp is not shared. Possibly there was a mapping failure.");
-           return;
-        }
-
-        if (wb.areSharedStringsIgnored()) {
-          System.out.println("Shared strings are ignored.");
-          return;
-        }
-
-        Object refs = wb.getResolvedReferences(GCStressApp.class);
-        if (wb.isShared(refs)) {
-            String shared_str = get_shared_string();
-            String shared_str1 = get_shared_string1();
-
-            if (!wb.isShared(shared_str)) {
-                throw new RuntimeException("FAILED. GCStressApp_shared_string is not shared");
-            }
-
-            if (!wb.isShared(shared_str1)) {
-                throw new RuntimeException("FAILED. GCStressApp_shared_string1 is not shared");
-            }
-
-            allocAlot();
-            runGC();
-            runGC();
-            runGC();
-
-            System.out.println("Passed");
-        } else {
-            System.out.println(
-                "No cached resolved references. Open archive heap data is not used.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile GCStressApp.java
- * @run driver ClassFileInstaller -jar gcstress.jar GCStressApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver GCStressTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class GCStressTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("gcstress.jar");
-        String appClasses[] = TestCommon.list("GCStressApp");
-
-        OutputAnalyzer output = TestCommon.dump(appJar, appClasses,
-                                                use_whitebox_jar,
-                                                "-Xms20M", "-Xmx20M");
-        output = TestCommon.exec(appJar, use_whitebox_jar,
-                                 "-Xlog:cds=info",
-                                 "-Xms20M", "-Xmx20M",
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI","GCStressApp");
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/InstrumentationAgent.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: InstrumentationRegisterClassFileTransformer
-Agent-Class: InstrumentationRegisterClassFileTransformer
-Can-Retransform-Classes: true
-Can-Redefine-Classes: true
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/MirrorWithReferenceFieldsApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import sun.hotspot.WhiteBox;
-
-//
-// - Test static final String field with initial value in cached mirror should be also archived.
-// - GC should not crash when reference fields in cached mirror are updated at runtime
-//     - Reference fields are updated to point to runtime created objects
-//     - Reference fields are nullified
-//
-public class MirrorWithReferenceFieldsApp {
-
-    // Static String field with initial value
-    static final String archived_field = "abc";
-
-    // Static object field
-    static Object non_archived_field_1;
-
-    // Instance field
-    Integer non_archived_field_2;
-
-    public MirrorWithReferenceFieldsApp() {
-        non_archived_field_1 = new Object();
-        non_archived_field_2 = new Integer(1);
-    }
-
-    public static void main(String args[]) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("Archived open_archive_heap objects are not mapped.");
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        MirrorWithReferenceFieldsApp m = new MirrorWithReferenceFieldsApp();
-        m.test(wb);
-    }
-
-    public void test(WhiteBox wb) {
-        Class c = MirrorWithReferenceFieldsApp.class;
-        if (wb.isSharedClass(c)) {
-            // Check if the Class object is cached
-            if (wb.isShared(c)) {
-                System.out.println(c + " mirror is cached. Expected.");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. " + c + " mirror should be cached.");
-            }
-
-            // Check fields
-
-            if (wb.isShared(archived_field)) {
-                System.out.println("archived_field is archived as excepted");
-            } else {
-                throw new RuntimeException(
-                    "FAILED. archived_field is not archived.");
-            }
-
-            // GC should not crash
-            System.gc();
-            System.gc();
-            System.gc();
-
-            non_archived_field_1 = null;
-            non_archived_field_2 = null;
-
-            System.gc();
-            System.gc();
-            System.gc();
-
-            System.out.println("Done.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/MirrorWithReferenceFieldsTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test archived mirror with reference fields
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile MirrorWithReferenceFieldsApp.java
- * @run driver ClassFileInstaller -jar app.jar MirrorWithReferenceFieldsApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver MirrorWithReferenceFieldsTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class MirrorWithReferenceFieldsTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-
-        String classlist[] = new String[] {
-            "MirrorWithReferenceFieldsApp",
-        };
-
-        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
-        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
-                                                "-XX:+UnlockDiagnosticVMOptions",
-                                                "-XX:+WhiteBoxAPI",
-                                                "-XX:+VerifyAfterGC",
-                                                "MirrorWithReferenceFieldsApp");
-        try {
-            TestCommon.checkExec(output, "Done");
-        } catch (Exception e) {
-            output.shouldContain("Archived open_archive_heap objects are not mapped");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/MyException.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-public class MyException extends Exception {
-    public MyException(String msg) {
-        super(msg);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/MyOuter.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-public class MyOuter {
-   public void exp() throws MyException {
-       throw new MyException("MyOuter exception");
-   }
-
-   public void test() throws Exception {
-       System.out.println("MyOuter");
-       try {
-          exp();
-       } catch (MyException e) {
-       }
-   }
-
-   public static final class MyInner extends MyOuter {
-       static String myString = "shared_string_from_MyInner";
-       public void test() {
-           System.out.println("MyInner");
-       }
-   }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/OpenArchiveRegion.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test open archive heap regions
- * @requires vm.cds.archived.java.heap
- * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
- * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
- * vm options.
- * @requires (vm.gc=="null")
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @run driver OpenArchiveRegion
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class OpenArchiveRegion {
-    public static void main(String[] args) throws Exception {
-        JarBuilder.getOrCreateHelloJar();
-        String appJar = TestCommon.getTestJar("hello.jar");
-        String appClasses[] = TestCommon.list("Hello");
-
-        // Dump with open archive heap region, requires G1 GC
-        OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
-        TestCommon.checkDump(output, "oa0 space:");
-        output.shouldNotContain("oa0 space:         0 [");
-        output = TestCommon.exec(appJar, "Hello");
-        TestCommon.checkExec(output, "Hello World");
-        output = TestCommon.exec(appJar, "-XX:+UseSerialGC", "Hello");
-        TestCommon.checkExec(output, "Hello World");
-
-        // Dump with open archive heap region disabled when G1 GC is not in use
-        output = TestCommon.dump(appJar, appClasses, "-XX:+UseParallelGC");
-        TestCommon.checkDump(output);
-        output.shouldNotContain("oa0 space:");
-        output = TestCommon.exec(appJar, "Hello");
-        TestCommon.checkExec(output, "Hello World");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/PrimitiveTypesApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.lang.reflect.Field;
-import sun.hotspot.WhiteBox;
-
-//
-// Test primitive type class mirror objects are cached when open archive heap
-// objects are mapped.
-//
-public class PrimitiveTypesApp {
-    public static void main(String[] args) {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (!wb.areOpenArchiveHeapObjectsMapped()) {
-            System.out.println("Archived open_archive_heap objects are not mapped.");
-            System.out.println("This may happen during normal operation. Test Skipped.");
-            return;
-        }
-
-        FieldsTest ft = new FieldsTest();
-        ft.testBoolean(wb);
-        ft.testByte(wb);
-        ft.testChar(wb);
-        ft.testInt(wb);
-        ft.testShort(wb);
-        ft.testLong(wb);
-        ft.testFloat(wb);
-        ft.testDouble(wb);
-    }
-}
-
-class FieldsTest {
-    public boolean f_boolean;
-    public byte f_byte;
-    public char f_char;
-    public int f_int;
-    public short f_short;
-    public long f_long;
-    public float f_float;
-    public double f_double;
-
-    FieldsTest() {
-        f_byte = 1;
-        f_boolean = false;
-        f_char = 'a';
-        f_int = 1;
-        f_short = 100;
-        f_long = 2018L;
-        f_float = 1.0f;
-        f_double = 2.5;
-    }
-
-    void testBoolean(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_boolean");
-            f.setBoolean(this, true);
-            if (!f_boolean) {
-                throw new RuntimeException("FAILED. Field f_boolean has unexpected value: " + f_boolean);
-            }
-            checkPrimitiveType(wb, f, Boolean.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testByte(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_byte");
-            f.setByte(this, (byte)9);
-            if (f_byte != (byte)9) {
-                throw new RuntimeException("FAILED. Field f_byte has unexpected value: " + f_byte);
-            }
-            checkPrimitiveType(wb, f, Byte.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testChar(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_char");
-            f.setChar(this, 'b');
-            if (f_char != 'b') {
-                throw new RuntimeException("FAILED. Field f_char has unexpected value: " + f_char);
-            }
-            checkPrimitiveType(wb, f, Character.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testInt(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_int");
-            f.setInt(this, 9999);
-            if (f_int != 9999) {
-                throw new RuntimeException("FAILED. Field f_int has unexpected value: " + f_int);
-            }
-            checkPrimitiveType(wb, f, Integer.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testShort(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_short");
-            f.setShort(this, (short)99);
-            if (f_short != 99) {
-                throw new RuntimeException("FAILED. Field f_short has unexpected value: " + f_short);
-            }
-            checkPrimitiveType(wb, f, Short.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testLong(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_long");
-            f.setLong(this, 99L);
-            if (f_long != 99L) {
-                throw new RuntimeException("FAILED. Field f_long has unexpected value: " + f_long);
-            }
-            checkPrimitiveType(wb, f, Long.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testFloat(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_float");
-            f.setFloat(this, 9.9f);
-            if (f_float != 9.9f) {
-                throw new RuntimeException("FAILED. Field f_float has unexpected value: " + f_float);
-            }
-            checkPrimitiveType(wb, f, Float.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void testDouble(WhiteBox wb) {
-        try {
-            Field f = this.getClass().getDeclaredField("f_double");
-            f.setDouble(this, 9.9);
-            if (f_double != 9.9) {
-                throw new RuntimeException("FAILED. Field f_double has unexpected value: " + f_double);
-            }
-            checkPrimitiveType(wb, f, Double.TYPE);
-        } catch (NoSuchFieldException nsfe) {
-            throw new RuntimeException(nsfe);
-        } catch (IllegalAccessException iae) {
-            throw new RuntimeException(iae);
-        }
-    }
-
-    void checkPrimitiveType(WhiteBox wb, Field f, Class t) {
-        Class c = f.getType();
-        if (!(c.isPrimitive() && c == t)) {
-            throw new RuntimeException("FAILED. " + c + " is not primitive type " + t);
-        }
-        if (wb.isShared(c)) {
-            System.out.println(c + " is cached, expected");
-        } else {
-            throw new RuntimeException("FAILED. " + c + " is not cached.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/PrimitiveTypesTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test archived primitive type mirrors
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @compile PrimitiveTypesApp.java
- * @run driver ClassFileInstaller -jar app.jar PrimitiveTypesApp FieldsTest
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver PrimitiveTypesTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class PrimitiveTypesTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("app.jar");
-
-        String classlist[] = new String[] {
-            "PrimitiveTypesApp",
-            "FieldsTest"
-        };
-
-        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
-        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
-                                                "-XX:+UnlockDiagnosticVMOptions",
-                                                "-XX:+WhiteBoxAPI",
-                                                "-XX:+VerifyAfterGC",
-                                                "PrimitiveTypesApp");
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/PrintSystemModulesApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-//
-// Print the system module names
-//
-public class PrintSystemModulesApp {
-    public static void main(String args[]) throws Exception {
-        String modules = ModuleLayer.boot().toString();
-        System.out.println(modules + ", ");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-import java.lang.instrument.ClassDefinition;
-import java.lang.instrument.Instrumentation;
-import java.lang.instrument.UnmodifiableClassException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.io.File;
-import java.security.CodeSigner;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-import sun.hotspot.WhiteBox;
-
-public class RedefineClassApp {
-    static WhiteBox wb = WhiteBox.getWhiteBox();
-
-    public static interface Intf {            // Loaded from Boot class loader (-Xbootclasspath/a).
-        public String get();
-    }
-    public static class Bar implements Intf { // Loaded from Boot class loader.
-        public String get() {
-            return "buzz";
-        }
-    }
-    public static class Foo implements Intf { // Loaded from AppClassLoader
-        public String get() {
-            return "buzz";
-        }
-    }
-
-    static int numTests = 0;
-    static int failed = 0;
-    static Instrumentation instrumentation;
-
-    public static void main(String args[]) throws Throwable {
-        if (wb.areSharedStringsIgnored()) {
-          System.out.println("Shared strings are ignored.");
-          return;
-        }
-
-        File bootJar = new File(args[0]);
-        File appJar  = new File(args[1]);
-
-        instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
-        System.out.println("INFO: instrumentation = " + instrumentation);
-
-        testBootstrapCDS("Bootstrap Loader", bootJar);
-        testAppCDSv1("Application Loader", appJar);
-
-        if (failed > 0) {
-            throw new RuntimeException("FINAL RESULT: " + failed + " out of " + numTests + " test case(s) have failed");
-        } else {
-            System.out.println("FINAL RESULT: All " + numTests + " test case(s) have passed!");
-        }
-
-        // Full GC. The cached objects in adjustable archive heap regions are
-        // scanned. The archive regions are verified. No error should be
-        // reported.
-        wb.fullGC();
-    }
-
-    static void testBootstrapCDS(String group, File jar) throws Throwable {
-        doTest(group, new Bar(), jar);
-    }
-
-    static void testAppCDSv1(String group, File jar) throws Throwable {
-        doTest(group, new Foo(), jar);
-    }
-
-    static void checkArchivedMirrorObject(Class klass) {
-        if (wb.areOpenArchiveHeapObjectsMapped()) {
-            if (!wb.isShared(klass)) {
-                failed ++;
-                System.out.println("FAILED. " + klass + " mirror object is not archived");
-                return;
-            }
-        }
-    }
-
-    static void doTest(String group, Intf object, File jar) throws Throwable {
-        numTests ++;
-
-        Class klass = object.getClass();
-        System.out.println();
-        System.out.println("++++++++++++++++++++++++++");
-        System.out.println("Test group: " + group);
-        System.out.println("Testing with classloader = " + klass.getClassLoader());
-        System.out.println("Testing with class       = " + klass);
-        System.out.println("Test is shared           = " + wb.isSharedClass(klass));
-        System.out.println("++++++++++++++++++++++++++");
-
-        // Check archived mirror object before redefine
-        checkArchivedMirrorObject(klass);
-
-        // Call get() before redefine. All strings in archived classes are shared.
-        String res = object.get();
-        System.out.println("get() returns " + res);
-        if (res.equals("buzz") && wb.isShared(res)) {
-            System.out.println("get() returns " + res + ", string is shared");
-        } else {
-            if (!res.equals("buzz")) {
-                System.out.println("FAILED. buzz is expected but got " + res);
-            } else {
-                System.out.println("FAILED. " + res + " is not shared");
-            }
-            failed ++;
-            return;
-        }
-        res = null; // release the local reference to the string
-
-        // Run GC
-        System.gc();
-        System.gc();
-        System.gc();
-
-        // Redefine the shared class
-        byte[] buff = Util.getClassFileFromJar(jar, klass.getName());
-        Util.replace(buff, "buzz", "huzz");
-        String f = "(failed)";
-        try {
-            instrumentation.redefineClasses(new ClassDefinition(klass, buff));
-            f = object.get();
-        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
-            e.printStackTrace();
-        }
-        if (f.equals("huzz")) {
-            System.out.println("PASSED: object.get() after redefinition returns " + f);
-        } else {
-            System.out.println("FAILED: object.get() after redefinition returns " + f);
-            failed ++;
-        }
-
-        // Run GC. Should not crash.
-        System.gc();
-        System.gc();
-        System.gc();
-
-        // Check archived mirror object after redefine and GC
-        checkArchivedMirrorObject(klass);
-
-        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++ (done)\n\n");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Redefine shared class. GC should not cause crash with cached resolved_references.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes /test/hotspot/jtreg/runtime/appcds/jvmti
- * @requires vm.cds.archived.java.heap
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- * @build sun.hotspot.WhiteBox
- *        RedefineClassApp
- *        InstrumentationClassFileTransformer
- *        InstrumentationRegisterClassFileTransformer
- * @run driver RedefineClassTest
- */
-
-import com.sun.tools.attach.VirtualMachine;
-import com.sun.tools.attach.VirtualMachineDescriptor;
-import java.io.File;
-import java.util.List;
-import jdk.test.lib.Asserts;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class RedefineClassTest {
-    public static String bootClasses[] = {
-        "RedefineClassApp$Intf",
-        "RedefineClassApp$Bar",
-        "sun.hotspot.WhiteBox",
-    };
-    public static String appClasses[] = {
-        "RedefineClassApp",
-        "RedefineClassApp$Foo",
-    };
-    public static String sharedClasses[] = TestCommon.concat(bootClasses, appClasses);
-
-    public static String agentClasses[] = {
-        "InstrumentationClassFileTransformer",
-        "InstrumentationRegisterClassFileTransformer",
-        "Util",
-    };
-
-    public static void main(String[] args) throws Throwable {
-        runTest();
-    }
-
-    public static void runTest() throws Throwable {
-        String bootJar =
-            ClassFileInstaller.writeJar("RedefineClassBoot.jar", bootClasses);
-        String appJar =
-            ClassFileInstaller.writeJar("RedefineClassApp.jar", appClasses);
-        String agentJar =
-            ClassFileInstaller.writeJar("InstrumentationAgent.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("InstrumentationAgent.mf"),
-                                        agentClasses);
-
-        String bootCP = "-Xbootclasspath/a:" + bootJar;
-
-        String agentCmdArg;
-        agentCmdArg = "-javaagent:" + agentJar;
-
-        TestCommon.testDump(appJar, sharedClasses, bootCP, "-Xlog:gc+region=trace");
-
-        OutputAnalyzer out = TestCommon.execAuto("-cp", appJar,
-                bootCP,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "-Xlog:cds=info",
-                agentCmdArg,
-               "RedefineClassApp", bootJar, appJar);
-        out.reportDiagnosticSummary();
-
-        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
-        TestCommon.checkExec(out, opts);
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/jdk/test/Test.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/**
- * Copyright (c) 2018, 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.
- */
-
-package jdk.test;
-
-public class Test {
-    public static void main(String[] args) {
-        ClassLoader scl = ClassLoader.getSystemClassLoader();
-        ClassLoader cl1 = Test.class.getClassLoader();
-        Module testModule = Test.class.getModule();
-        ClassLoader cl2 = ModuleLayer.boot().findLoader(testModule.getName());
-
-        if (cl1 != scl)
-            throw new RuntimeException("Not loaded by system class loader");
-        if (cl2 != scl)
-            throw new RuntimeException("Not associated with system class loader");
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2014, 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.
- */
-
-module test {
-}
--- a/test/hotspot/jtreg/runtime/appcds/cdsutils/DynamicDumpHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-package cdsutils;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-
-/**
- * This class is used to simulate -Xshare:dump with -XX:ArchiveClassesAtExit.
- * It loads all classes specified in a classlist file. See patchJarForDynamicDump()
- * in ../TestCommon.java for details.
- */
-public class DynamicDumpHelper {
-    public static void main(String args[]) throws Throwable {
-        File file = new File(args[0]);
-
-        System.out.println("Loading classes to share...");
-        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
-            String line;
-            while ((line = br.readLine()) != null) {
-                //System.out.println("Loading class: " + line);
-                line = line.replace('/', '.');
-                try {
-                    Class.forName(line);
-                } catch (java.lang.ClassNotFoundException ex) {
-                    try {
-                        Class.forName(line, true, null);
-                    } catch (java.lang.ClassNotFoundException cnfe) {
-                        System.out.println("Preload Warning: Cannot find " + line.replace('.', '/'));
-                    }
-                } catch (Throwable t) {
-                    System.out.println("Error: failed to load \"" + line + "\": " + t);
-                }
-            }
-        }
-        System.out.println("Loading classes to share: done.");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/condy/CondyHello.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-/*
- * This test uses ldc to load an integer value via a condy bootstrap method.
- */
-
-class CondyHello
-        version 55:0
-{
-
-public static Method condyBSM:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;"
-        throws java/lang/Throwable
-        stack 4 locals 6
-{
-                sipush          12345;
-                invokestatic    Method java/lang/Integer.valueOf:"(I)Ljava/lang/Integer;";
-                areturn;
-}
-
-public static Method I:"()I"
-        stack 1 locals 0
-{
-                ldc             Dynamic REF_invokeStatic:CondyHello.condyBSM:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;":I:"I";
-                ireturn;
-}
-
-public static Method doit:"()I"
-        stack 4 locals 1
-{
-                invokestatic    Method I:"()I";
-                ireturn;
-}
-
-} // end Class CondyHello 
--- a/test/hotspot/jtreg/runtime/appcds/condy/CondyHelloApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-import sun.hotspot.WhiteBox;
-
-public class CondyHelloApp {
-    public static void main(String[] args) throws Throwable {
-        int n;
-        if ((n = CondyHello.doit()) != 12345) {
-            throw new java.lang.RuntimeException("Expected 12345 but got " + n);
-        } else {
-            System.out.println("n = " + n + " (as expected)");
-        }
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(CondyHelloApp.class)) {
-            if (!wb.isSharedClass(CondyHello.class)) {
-                throw new java.lang.RuntimeException("CondyHello should be in shared space but is not.");
-            } else {
-                System.out.println("CondyHello.class is shared (as expected)");
-            }
-        }
-   }
-}
--- a/test/hotspot/jtreg/runtime/appcds/condy/CondyHelloTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-/*
- * @test
- * @summary Make sure CDS works with a minimal test case that uses a CONSTANT_Dynamic constant-pool entry
- * @requires (vm.cds)
- * @modules java.base/jdk.internal.misc
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @build CondyHello
- * @build sun.hotspot.WhiteBox CondyHelloTest CondyHelloApp
- * @run driver ClassFileInstaller -jar condy_hello.jar CondyHello CondyHelloApp
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver CondyHelloTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CondyHelloTest {
-
-    static String classes[] = {
-        "CondyHello",
-        "CondyHelloApp",
-    };
-
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("condy_hello.jar");
-
-        TestCommon.dump(appJar, TestCommon.list(classes), use_whitebox_jar);
-
-        TestCommon.run("-XX:+UnlockDiagnosticVMOptions",
-                       "-XX:+WhiteBoxAPI",
-                       "-cp", appJar,
-                       use_whitebox_jar,
-                       "CondyHelloApp")
-          .assertNormalExit();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatA.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests the format checking of class list format.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- * @run driver ClassListFormatA
- */
-
-public class ClassListFormatA extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE A1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ClassListFormatA", "CustomLoadee",
-                                            "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib");
-        //----------------------------------------------------------------------
-        // TESTGROUP A: general bad input
-        //----------------------------------------------------------------------
-        dumpShouldFail(
-            "TESTCASE A1: bad input - interface: instead of interfaces:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee interface: 1"
-            ),
-            "Unknown input:");
-
-        dumpShouldFail(
-            "TESTCASE A2: bad input - negative IDs not allowed",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: -1"
-            ),
-            "Error: negative integers not allowed");
-
-        dumpShouldFail(
-            "TESTCASE A3: bad input - bad ID (not an integer)",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: xyz"
-            ),
-            "Error: expected integer");
-
-        if (false) {
-              // FIXME - classFileParser.cpp needs fixing.
-            dumpShouldFail(
-                "TESTCASE A4: bad input - bad ID (integer too big)",
-                appJar, classlist(
-                    "Hello",
-                    "java/lang/Object id: 2147483648" // <- this is 0x80000000
-                ),
-                "Error: expected integer");
-
-              // FIXME
-            dumpShouldFail(
-                "TESTCASE A5: bad input - bad ID (integer too big)",
-                appJar, classlist(
-                    "Hello",
-                    "java/lang/Object id: 21474836489" // bigger than 32-bit!
-                ),
-                "Error: expected integer");
-        }
-
-        // Good input:
-        dumpShouldPass(
-            "TESTCASE A6: extraneous spaces, tab characters and trailing new line characters",
-            appJar, classlist(
-                "Hello   ",                   // trailing spaces
-                "java/lang/Object\tid:\t1",   // \t instead of ' '
-                "CustomLoadee id: 2 super: 1 source: " + customJarPath,
-                "CustomInterface2_ia id: 3 super: 1 source: " + customJarPath + " ",
-                "CustomInterface2_ib id: 4 super: 1 source: " + customJarPath + "\t\t\r" ,
-                "CustomLoadee2 id: 5 super: 1 interfaces: 3 4 source: " + customJarPath      // preceding spaces
-            ));
-
-        int _max_allowed_line = 4096; // Must match ClassListParser::_max_allowed_line in C code.
-        int _line_buf_extra = 10;     // Must match ClassListParser::_line_buf_extra in C code.
-        StringBuffer sbuf = new StringBuffer();
-        for (int i=0; i<_max_allowed_line+1; i++) {
-          sbuf.append("x");
-        }
-
-        dumpShouldFail(
-            "TESTCASE A7: bad input - line too long",
-            appJar, classlist(
-                sbuf.toString()
-            ),
-            "input line too long (must be no longer than " + _max_allowed_line + " chars");
-
-        for (int i=0; i<_line_buf_extra + 1000; i++) {
-          sbuf.append("X");
-        }
-
-        dumpShouldFail(
-            "TESTCASE A8: bad input - line too long: try to overflow C buffer",
-            appJar, classlist(
-                sbuf.toString()
-            ),
-            "input line too long (must be no longer than " + _max_allowed_line + " chars");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatB.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- * @run driver ClassListFormatB
- */
-
-public class ClassListFormatB extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE B1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ClassListFormatB", "CustomLoadee",
-                                            "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib");
-        //----------------------------------------------------------------------
-        // TESTGROUP B if source IS specified
-        //----------------------------------------------------------------------
-        dumpShouldFail(
-            "TESTCASE B1: if source: is specified, must specify super:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee id: 2 source: " + customJarPath
-            ),
-            "If source location is specified, super class must be also specified");
-
-        dumpShouldFail(
-            "TESTCASE B2: if source: is specified, must specify id:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee super: 1 source: " + customJarPath
-            ),
-            "If source location is specified, id must be also specified");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatBase.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-/**
- * Base class for ClassListFormat[A,B,C...].java
- */
-public class ClassListFormatBase {
-    protected static String RUN_ONLY_TEST = null;
-
-    static void dumpShouldFail(String caseHelp, String appJar, String[] appClasses,
-                               String... expected_errors) throws Throwable {
-        if (RUN_ONLY_TEST != null && !caseHelp.startsWith(RUN_ONLY_TEST)) {
-            System.out.println("Skipped via RUN_ONLY_TEST: " + caseHelp);
-            return;
-        }
-        System.out.println("------------------------------");
-        System.out.println(caseHelp);
-        System.out.println("------------------------------");
-
-        try {
-            OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
-            output.shouldHaveExitValue(1);
-            for (String s : expected_errors) {
-                output.shouldContain(s);
-            }
-        } catch (Throwable t) {
-            System.out.println("FAILED CASE: " + caseHelp);
-            throw t;
-        }
-    }
-
-    static void dumpShouldPass(String caseHelp, String appJar, String[] appClasses,
-                               String... expected_msgs) throws Throwable {
-        if (RUN_ONLY_TEST != null && !caseHelp.startsWith(RUN_ONLY_TEST)) {
-            System.out.println("Skipped via RUN_ONLY_TEST: " + caseHelp);
-            return;
-        }
-        System.out.println("------------------------------");
-        System.out.println(caseHelp);
-        System.out.println("------------------------------");
-
-        try {
-            OutputAnalyzer output = TestCommon.dump(appJar, appClasses, "-Xlog:cds");
-            output.shouldHaveExitValue(0);
-            output.shouldContain("Dumping");
-            for (String s : expected_msgs) {
-                output.shouldContain(s);
-            }
-        } catch (Throwable t) {
-            System.out.println("FAILED CASE: " + caseHelp);
-            throw t;
-        }
-    }
-
-    static String[] classlist(String... args) {
-        return TestCommon.list(args);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatC.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- * @run driver ClassListFormatC
- */
-
-public class ClassListFormatC extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE C1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ClassListFormatC", "CustomLoadee",
-                                                "CustomLoadee2", "CustomInterface2_ia",
-                                                "CustomInterface2_ib");
-
-        //----------------------------------------------------------------------
-        // TESTGROUP C: if source IS NOT specified
-        //----------------------------------------------------------------------
-        dumpShouldFail(
-            "TESTCASE C1: if source: is NOT specified, must NOT specify super:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee super: 1"
-            ),
-            "If source location is not specified, super class must not be specified");
-
-        dumpShouldFail(
-            "TESTCASE C2: if source: is NOT specified, must NOT specify interface:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee interfaces: 1"
-            ),
-            "If source location is not specified, interface(s) must not be specified");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatD.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- * @run driver ClassListFormatD
- */
-
-public class ClassListFormatD extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE D1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ClassListFormatD", "CustomLoadee",
-                                                "CustomLoadee2", "CustomInterface2_ia",
-                                                "CustomInterface2_ib");
-
-        //----------------------------------------------------------------------
-        // TESTGROUP D: bad use of IDs
-        //----------------------------------------------------------------------
-        dumpShouldFail(
-            "TESTCASE D1: duplicated id:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee id: 1 super: 1 source: " + customJarPath
-            ),
-            "Duplicated ID 1 for class CustomLoadee");
-
-        dumpShouldFail(
-            "TESTCASE D2: bad ID for super:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee id: 2 super: 2 source: " + customJarPath
-            ),
-            "Super class id 2 is not yet loaded");
-
-        dumpShouldFail(
-            "TESTCASE D3: bad ID in interfaces:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee id: 2 super: 1 interfaces: 2 source: " + customJarPath
-            ),
-            "Interface id 2 is not yet loaded");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatE.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- * @run driver ClassListFormatE
- */
-
-public class ClassListFormatE extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE E1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ClassListFormatE", "CustomLoadee",
-                                                "CustomLoadee2", "CustomInterface2_ia",
-                                                "CustomInterface2_ib");
-
-        //----------------------------------------------------------------------
-        // TESTGROUP E: super class and interfaces
-        //----------------------------------------------------------------------
-        dumpShouldFail(
-            "TESTCASE E1: missing interfaces: keyword",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomLoadee2 id: 1 super: 1 source: " + customJarPath
-            ),
-            "Class CustomLoadee2 implements the interface CustomInterface2_ia, but no interface has been specified in the input line");
-
-        dumpShouldFail(
-            "TESTCASE E2: missing one interface",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
-                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
-                "CustomLoadee2 id: 4 super: 1 interfaces: 2 source: " + customJarPath
-            ),
-            "The interface CustomInterface2_ib implemented by class CustomLoadee2 does not match any of the specified interface IDs");
-
-        dumpShouldFail(
-            "TESTCASE E3: specifying an interface that's not implemented by the class",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
-                "CustomLoadee id: 2 super: 1 interfaces: 2 source: " + customJarPath
-            ),
-            "The number of interfaces (1) specified in class list does not match the class file (0)");
-
-        dumpShouldFail(
-            "TESTCASE E4: repeating an ID in the interfaces: keyword",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
-                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
-                "CustomLoadee2 id: 4 super: 1 interfaces: 2 2 3 source: " + customJarPath
-            ),
-            "The number of interfaces (3) specified in class list does not match the class file (2)");
-
-        dumpShouldFail(
-            "TESTCASE E5: wrong super class",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
-                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
-                "CustomLoadee id: 4 super: 1 source: " + customJarPath,
-                "CustomLoadee2 id: 5 super: 4 interfaces: 2 3 source: " + customJarPath
-            ),
-            "The specified super class CustomLoadee (id 4) does not match actual super class java.lang.Object");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/CustomLoaderApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-// This is a utlitity test class for loading classes-under-test
-// by means of custom class loader.
-// See AppCDS/jvmti/transformRelatedClasses/TransformRelatedClasses.java
-// for an example.
-// Use this test app in conjunction with other tests
-// to load and exercise classes using custom class loader(s).
-// This class is intended to be called by the "main test driver"
-// inside a child process, normally with sharing enabled.
-//
-// Arguments: customJarPath, loaderType, testClass
-//     customJarPath - a path to jar file containing classes for
-//         loading via this custom class loader, including the
-//         testClass
-//     loaderType - Currently only "unregistered"
-//         (Fingerprint verification method) is allowed
-//     testClass - the class to be loader; the test method with
-//         signature 'public static void test()' will be called
-//         on this class, so class must contain such method
-
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.logging.Logger;
-
-public class CustomLoaderApp {
-    public static void ping() {};
-
-    private static void log(String msg) {
-        System.out.println("CustomLoaderApp: " + msg);
-    }
-
-    public static void main(String[] args) throws Exception {
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-
-        String loaderType = args[1];
-        log("loaderType = " + loaderType);
-
-        String testClass = args[2];
-        log("testClass = " + testClass);
-
-        switch(loaderType) {
-        case "unregistered":
-            loadAndUseWithUnregisteredLoader(urls, testClass);
-            break;
-        default:
-            throw new IllegalArgumentException("loader type is wrong: " + loaderType);
-        }
-    }
-
-
-    // Load the test classes using unregistered loader
-    // (i.e. loader that is not using AppCDS API)
-    private static void loadAndUseWithUnregisteredLoader(URL[] urls, String testClass)
-        throws Exception {
-        URLClassLoader urlClassLoader = new URLClassLoader(urls);
-        callTestMethod(loadAndCheck(urlClassLoader, testClass));
-    }
-
-    private static Class loadAndCheck(ClassLoader loader, String className)
-        throws ClassNotFoundException {
-        Class c = loader.loadClass(className);
-        log("class =" + c);
-        log("loader = " + c.getClassLoader());
-
-        // Check that c is defined by the correct loader
-        if (c.getClassLoader() != loader) {
-            String msg = String.format("c.getClassLoader() equals to <%s>, expected <%s>",
-                                       c.getClassLoader(), loader);
-            throw new RuntimeException(msg);
-        }
-        return c;
-    }
-
-    private static void callTestMethod(Class c) throws Exception {
-        Method[] methods = c.getDeclaredMethods();
-        for (Method m : methods) {
-            log("method = " + m.getName());
-            if (m.getName().equals("test"))
-                m.invoke(null);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Hello World test for AppCDS custom loader support
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /runtime/testlibrary
- * @modules java.base/jdk.internal.misc
- *          java.management
- * @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
- * @build sun.hotspot.WhiteBox ClassUnloadCommon
- * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
- * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver HelloCustom
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class HelloCustom {
-    public static void main(String[] args) throws Exception {
-        run();
-    }
-    public static void run(String... extra_runtime_args) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
-
-        // Dump the archive
-        String classlist[] = new String[] {
-            "HelloUnload",
-            "java/lang/Object id: 1",
-            "CustomLoadee id: 2 super: 1 source: " + customJarPath
-        };
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, classlist,
-                            // command-line arguments ...
-                            use_whitebox_jar);
-
-        output = TestCommon.exec(appJar,
-                                 TestCommon.concat(extra_runtime_args,
-                                     // command-line arguments ...
-                                     use_whitebox_jar,
-                                     "-XX:+UnlockDiagnosticVMOptions",
-                                     "-XX:+WhiteBoxAPI",
-                                     "HelloUnload", customJarPath, "true", "true"));
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom_JFR.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Same as HelloCustom, but add -XX:StartFlightRecording=dumponexit=true to the runtime
- *          options. This makes sure that the shared classes are compatible with both
- *          JFR and JVMTI ClassFileLoadHook.
- * @requires vm.hasJFR
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /runtime/testlibrary
- * @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
- * @build sun.hotspot.WhiteBox ClassUnloadCommon
- * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
- * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver HelloCustom_JFR
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class HelloCustom_JFR {
-    public static void main(String[] args) throws Exception {
-        HelloCustom.run("-XX:StartFlightRecording=dumponexit=true", "-Xlog:cds+jvmti=debug");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/LoaderSegregationTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Check that during dumping, the classes for BOOT/EXT/APP loaders are segregated from the
- *          custom loader classes.
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/LoaderSegregation.java
- *          test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
- *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
- *          test-classes/CustomLoadee3.java test-classes/CustomLoadee3Child.java
- *          test-classes/OnlyBuiltin.java
- *          test-classes/OnlyUnregistered.java
- *          ../test-classes/Util.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver LoaderSegregationTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-/**
- * See "Handling of the classes in the AppCDS archive" at the top of
- * systemDicrionatyShared.hpp.
- *
- * This test ensure that the 2 types of archived classes (BUILTIN and UNREGISTERED)
- * are segregated at both dump-time and run time:
- *
- * [A] An archived BUILTIN class cannot be a subclass of a non-BUILTIN class.
- * [B] An archived BUILTIN class cannot implement a non-BUILTIN interface.
- * [C] BUILTIN and UNREGISTERED classes can be loaded only by their corresponding
- *     type of loaders.
- *
- */
-public class LoaderSegregationTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        String appJar = JarBuilder.build("LoaderSegregation_app", "LoaderSegregation",
-                                         "CustomLoadee", "CustomLoadee2", "CustomLoadee3Child", "CustomInterface2_ia",
-                                         "OnlyBuiltin", "Util");
-
-        String app2Jar = JarBuilder.build("LoaderSegregation_app2", "CustomLoadee3", "CustomInterface2_ib");
-
-        String customJarPath = JarBuilder.build("LoaderSegregation_custom", "CustomLoadee",
-                                                "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib",
-                                                "CustomLoadee3", "CustomLoadee3Child",
-                                                "OnlyBuiltin", "OnlyUnregistered");
-
-        // Dump the archive
-        String classlist[] = new String[] {
-            "LoaderSegregation",
-            "java/lang/Object id: 1",
-
-            // These are the UNREGISTERED classes: they have "source:"
-            // but they don't have "loader:".
-            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
-
-            "CustomInterface2_ia id: 3 super: 1 source: " + customJarPath,
-            "CustomInterface2_ib id: 4 super: 1 source: " + customJarPath,
-            "CustomLoadee2 id: 5 super: 1 interfaces: 3 4 source: " + customJarPath,
-
-            "CustomLoadee3 id: 6 super: 1 source: " + customJarPath,
-            "CustomLoadee3Child id: 7 super: 6 source: " + customJarPath,
-
-            // At dump time, the following BUILTIN classes are loaded after the UNREGISTERED
-            // classes from above. However, at dump time, they cannot use the UNREGISTERED classes are their
-            // super or interface.
-            "CustomLoadee",          // can be loaded at dump time
-            "CustomLoadee2",         // cannot be loaded at dump time (interface missing)
-            "CustomLoadee3Child",    // cannot be loaded at dump time (super missing)
-
-            // Check that BUILTIN and UNREGISTERED classes can be loaded only by their
-            // corresponding type of loaders.
-            "OnlyBuiltin",
-            "OnlyUnregistered id: 9 super: 1 source: " + customJarPath,
-        };
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, classlist,
-                            // command-line arguments ...
-                            use_whitebox_jar);
-
-        output = TestCommon.exec(TestCommon.concatPaths(appJar, app2Jar),
-                                 // command-line arguments ...
-                                 "--add-opens=java.base/java.lang=ALL-UNNAMED",
-                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
-                                 use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "LoaderSegregation", customJarPath);
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestBase.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-/*
- * This is a base class for the following test cases:
- *   ParallelTestMultiFP.java
- *   ParallelTestSingleFP.java
- */
-public class ParallelTestBase {
-    public static final int MAX_CLASSES = 40; // must match ../test-classes/ParallelLoad.java
-    public static int NUM_THREADS = 4;        // must match ../test-classes/ParallelLoad.java
-
-    public static final int SINGLE_CUSTOM_LOADER = 1;
-    public static final int MULTI_CUSTOM_LOADER  = 2;
-
-    public static final int FINGERPRINT_MODE = 1;
-
-    public static void run(String[] args, int loaderType, int mode) throws Exception {
-        String[] cust_classes = new String[MAX_CLASSES];
-        String[] cust_list;
-
-        if (mode == FINGERPRINT_MODE) {
-            cust_list = new String[MAX_CLASSES];
-        } else {
-            cust_list = new String[MAX_CLASSES * NUM_THREADS];
-        }
-
-        for (int i = 0; i<MAX_CLASSES; i++) {
-            cust_classes[i] = "ParallelClass" + i;
-        }
-        String customJarPath = JarBuilder.build("ParallelTestBase", cust_classes);
-
-        for (int i = 0, n=0; i<MAX_CLASSES; i++) {
-            int super_id = 1;
-            if (mode == FINGERPRINT_MODE) {
-                // fingerprint mode -- no need to use the "loader:" option.
-                int id = i + 2;
-                cust_list[i] = cust_classes[i] + " id: " + id + " super: " + super_id + " source: " + customJarPath;
-            } else {
-                throw new RuntimeException("Only FINGERPRINT_MODE is supported");
-            }
-        }
-
-        String app_list[];
-        String mainClass;
-        String appJar;
-
-        if (mode == FINGERPRINT_MODE) {
-            appJar = JarBuilder.build("parallel_fp",
-                                      "ParallelLoad",
-                                      "ParallelLoadThread",
-                                      "ParallelLoadWatchdog");
-            app_list = new String[] {
-                "java/lang/Object id: 1",
-                "ParallelLoad",
-                "ParallelLoadThread",
-                "ParallelLoadWatchdog"
-            };
-            mainClass = "ParallelLoad";
-        } else {
-            throw new RuntimeException("Currently only FINGERPRINT_MODE is supported");
-        }
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, TestCommon.concat(app_list, cust_list));
-
-        String loaderTypeArg = (loaderType == SINGLE_CUSTOM_LOADER) ? "SINGLE_CUSTOM_LOADER" : "MULTI_CUSTOM_LOADER";
-        String modeArg = "FINGERPRINT_MODE";
-
-        output = TestCommon.exec(appJar,
-                                 // command-line arguments ...
-                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
-                                 mainClass, loaderTypeArg, modeArg, customJarPath);
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestMultiFP.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Load classes from CDS archive into multiple custom loader using parallel threads
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/ParallelLoad.java ../test-classes/ParallelClasses.java
- * @run driver ParallelTestMultiFP
- */
-
-public class ParallelTestMultiFP extends ParallelTestBase {
-    public static void main(String[] args) throws Exception {
-        ParallelTestBase.run(args, MULTI_CUSTOM_LOADER, FINGERPRINT_MODE);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestSingleFP.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Load classes from CDS archive into a single custom loader using parallel threads (finger print)
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/ParallelLoad.java ../test-classes/ParallelClasses.java
- * @run driver ParallelTestSingleFP
- */
-
-public class ParallelTestSingleFP extends ParallelTestBase {
-    public static void main(String[] args) throws Exception {
-        ParallelTestBase.run(args, SINGLE_CUSTOM_LOADER, FINGERPRINT_MODE);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ProhibitedPackageNamesTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Make sure prohibited packages cannot be stored into archive for custom loaders.
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ClassListFormatBase.java ../test-classes/Hello.java test-classes/InProhibitedPkg.java
- * @run driver ProhibitedPackageNamesTest
- */
-
-public class ProhibitedPackageNamesTest extends ClassListFormatBase {
-    static {
-        // Uncomment the following line to run only one of the test cases
-        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE PPN1";
-    }
-
-    public static void main(String[] args) throws Throwable {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String customJarPath = JarBuilder.build("ProhibitedPackageNames_custom", "java/InProhibitedPkg");
-
-        dumpShouldPass(
-            "TESTCASE PPN1: prohibited package name without loader:",
-            appJar, classlist(
-                "Hello",
-                "java/lang/Object id: 1",
-                // Without "loader:" keyword.
-                "java/InProhibitedPkg id: 2 super: 1 source: " + customJarPath
-            ),
-            "Prohibited package for non-bootstrap classes: java/InProhibitedPkg.class");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ProtectionDomain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary AppCDS handling of protection domain in custom loaders.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- *
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/ProtDomain.java
- * @run driver ProtectionDomain
- */
-
-public class ProtectionDomain {
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.build("ProtectionDomain-app", "ProtDomain");
-
-        String customJar = JarBuilder.build("ProtectionDomain-custom",
-            "ProtDomainClassForArchive", "ProtDomainNotForArchive");
-        String[] classlist = new String[] {
-            "java/lang/Object id: 1",
-            "ProtDomain id: 2 super: 1 source: " + appJar,
-            "ProtDomainClassForArchive id: 3 super: 1 source: " + customJar
-        };
-
-        TestCommon.testDump(appJar, classlist);
-
-        // First class is loaded from CDS, second class is loaded from JAR
-        TestCommon.checkExec(TestCommon.exec(appJar, "-verbose:class", "ProtDomain", customJar),
-            "[class,load] ProtDomainClassForArchive source: shared objects file",
-            "[class,load] ProtDomainNotForArchive source: file");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/SameNameInTwoLoadersTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Testing the loading of a class with the same name in two different class loaders.
- *
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- *
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/CustomLoadee.java
- *     test-classes/CustomLoadee3.java
- *     test-classes/SameNameUnrelatedLoaders.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver SameNameInTwoLoadersTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-
-public class SameNameInTwoLoadersTest {
-    private static String appJar;
-    private static String customJar;
-    private static String useWbParam;
-
-    public static void main(String[] args) throws Exception {
-        appJar = JarBuilder.build("SameNameInTwoLoadersTest",
-            "SameNameUnrelatedLoaders");
-
-        customJar = JarBuilder.build("SameNameInTwoLoadersTest_custom", "CustomLoadee", "CustomLoadee3");
-
-        useWbParam = "-Xbootclasspath/a:" +
-            JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");;
-
-        // ====== unrelated loaders
-        executeTestCase(getClassList_FP(),
-            "SameNameUnrelatedLoaders", "FpBoth");
-    }
-
-    private static void executeTestCase(String[] classlist,
-        String testClass, String testCaseId) throws Exception {
-        classlist[0] = testClass;
-
-        TestCommon.testDump(appJar, classlist, useWbParam);
-
-        OutputAnalyzer output = TestCommon.exec(appJar,
-                                 // command-line arguments ...
-                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
-                                 useWbParam,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 testClass,
-                                 customJar, testCaseId);
-        TestCommon.checkExec(output);
-    }
-
-    // Single entry, no loader specified (FP method)
-    private static String[] getClassList_FP() {
-        return new String[] {
-            "SameNameUnrelatedLoaders",
-            "java/lang/Object id: 1",
-            "CustomLoadee id: 10 super: 1 source: " + customJar,
-        };
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnintendedLoadersTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Make sure classes intended for custom loaders cannot be loaded by BOOT/EXT/APP loaders
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/UnintendedLoaders.java test-classes/CustomLoadee.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver UnintendedLoadersTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class UnintendedLoadersTest {
-    public static void main(String[] args) throws Exception {
-        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        String appJar = JarBuilder.build("UnintendedLoaders_app", "UnintendedLoaders");
-        String customJarPath = JarBuilder.build("UnintendedLoaders_custom", "CustomLoadee");
-
-        // Dump the archive
-        String classlist[] = new String[] {
-            "UnintendedLoadersTest",
-            "java/lang/Object id: 1",
-
-            // Without "loader:" keyword.
-            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
-        };
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, classlist,
-                            // command-line arguments ...
-                            use_whitebox_jar);
-
-        output = TestCommon.exec(appJar,
-                                 // command-line arguments ...
-                                 use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "UnintendedLoaders");
-        TestCommon.checkExec(output);
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnloadUnregisteredLoaderTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test the behavior when shared classes loaded by custom loaders are
- *          unloaded.
- * @requires vm.cds
- * @requires vm.cds.custom.loaders
- * @requires vm.opt.final.ClassUnloading
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/testlibrary
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox ClassUnloadCommon
- * @compile test-classes/UnloadUnregisteredLoader.java test-classes/CustomLoadee.java
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller ClassUnloadCommon
- * @run driver ClassFileInstaller ClassUnloadCommon$1
- * @run driver ClassFileInstaller ClassUnloadCommon$TestFailure
- * @run driver UnloadUnregisteredLoaderTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class UnloadUnregisteredLoaderTest {
-    public static void main(String[] args) throws Exception {
-        String appJar1 = JarBuilder.build("UnloadUnregisteredLoader_app1", "UnloadUnregisteredLoader");
-        String appJar2 = JarBuilder.build(true, "UnloadUnregisteredLoader_app2",
-                                          "ClassUnloadCommon", "ClassUnloadCommon$1", "ClassUnloadCommon$TestFailure");
-        String customJarPath = JarBuilder.build("UnloadUnregisteredLoader_custom", "CustomLoadee");
-        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        String classpath = TestCommon.concatPaths(appJar1, appJar2);
-        String classlist[] = new String[] {
-            "UnloadUnregisteredLoader",
-            "ClassUnloadCommon",
-            "ClassUnloadCommon$1",
-            "ClassUnloadCommon$TestFailure",
-            "java/lang/Object id: 1",
-            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
-        };
-
-        OutputAnalyzer output;
-        TestCommon.testDump(classpath, classlist,
-                            // command-line arguments ...
-                            use_whitebox_jar);
-
-        output = TestCommon.exec(classpath,
-                                 // command-line arguments ...
-                                 use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "UnloadUnregisteredLoader",
-                                 customJarPath);
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnsupportedPlatforms.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Ensure that support for AppCDS custom class loaders are not enabled on unsupported platforms.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile test-classes/SimpleHello.java
- * @run driver UnsupportedPlatforms
- */
-
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class UnsupportedPlatforms {
-    public static String PLATFORM_NOT_SUPPORTED_WARNING =
-        "AppCDS custom class loaders not supported on this platform";
-
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.build("UnsupportedPlatforms", "SimpleHello");
-
-        // Dump the archive
-        String classlist[] = new String[] {
-            "SimpleHello",
-            "java/lang/Object id: 1",
-            "CustomLoadee id: 2 super: 1 source: " + appJar
-        };
-
-        OutputAnalyzer out = TestCommon.dump(appJar, classlist);
-
-        if (Platform.areCustomLoadersSupportedForCDS()) {
-            out.shouldNotContain(PLATFORM_NOT_SUPPORTED_WARNING);
-            out.shouldHaveExitValue(0);
-        } else {
-            out.shouldContain(PLATFORM_NOT_SUPPORTED_WARNING);
-            out.shouldHaveExitValue(1);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomInterface2_ia.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-interface CustomInterface2_ia {}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomInterface2_ib.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-interface CustomInterface2_ib {}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class CustomLoadee {
-    public String toString() {
-        return "this is CustomLoadee";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee2.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class CustomLoadee2 implements CustomInterface2_ia, CustomInterface2_ib {
-    public String toString() {
-        return "this is CustomLoadee";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee3.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class CustomLoadee3 {
-    public String toString() {
-        return "this is CustomLoadee3";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/CustomLoadee3Child.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class CustomLoadee3Child extends CustomLoadee3 {
-    public String toString() {
-        return "this is CustomLoadee3Child";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/Hello.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.*;
-import java.net.*;
-import sun.hotspot.WhiteBox;
-
-public class Hello {
-    public static void main(String args[]) throws Exception {
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-        System.out.println(path);
-        System.out.println(url);
-
-        URLClassLoader urlClassLoader = new URLClassLoader(urls);
-        Class c = urlClassLoader.loadClass("CustomLoadee");
-        System.out.println(c);
-        System.out.println(c.getClassLoader());
-
-        // [1] Check that CustomLoadee is defined by the correct loader
-        if (c.getClassLoader() != urlClassLoader) {
-            throw new RuntimeException("c.getClassLoader() == " + c.getClassLoader() +
-                                       ", expected == " + urlClassLoader);
-        }
-
-        // [2] Check that CustomLoadee is loaded from shared archive.
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(Hello.class)) {
-            if (!wb.isSharedClass(c)) {
-                throw new RuntimeException("wb.isSharedClass(c) should be true");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/HelloUnload.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import sun.hotspot.WhiteBox;
-
-public class HelloUnload {
-    private static String className = "CustomLoadee";
-
-    public static void main(String args[]) throws Exception {
-        if (args.length != 3) {
-            throw new RuntimeException("Unexpected number of arguments: expected 3, actual " + args.length);
-        }
-
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-        System.out.println(path);
-        System.out.println(url);
-
-        // unload the custom class loader
-        boolean doUnload = false;
-        if (args[1].equals("true")) {
-            doUnload = true;
-        } else if (args[1].equals("false")) {
-            doUnload = false;
-        } else {
-            throw new RuntimeException("args[1] can only be either \"true\" or \"false\", actual " + args[1]);
-        }
-
-        // should the CustomLoadee class be in the shared archive
-        boolean inArchive = false;
-        if (args[2].equals("true")) {
-            inArchive = true;
-        } else if (args[2].equals("false")) {
-            inArchive = false;
-        } else {
-            throw new RuntimeException("args[2] can only be either \"true\" or \"false\", actual " + args[1]);
-        }
-
-        URLClassLoader urlClassLoader =
-            new URLClassLoader("HelloClassLoader", urls, null);
-        Class c = Class.forName(className, true, urlClassLoader);
-        System.out.println(c);
-        System.out.println(c.getClassLoader());
-        Object o = c.newInstance();
-
-        // [1] Check that CustomLoadee is defined by the correct loader
-        if (c.getClassLoader() != urlClassLoader) {
-            throw new RuntimeException("c.getClassLoader() == " + c.getClassLoader() +
-                                       ", expected == " + urlClassLoader);
-        }
-
-        // [2] Check that CustomLoadee is loaded from shared archive.
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if(wb.isSharedClass(HelloUnload.class)) {
-            if (inArchive && !wb.isSharedClass(c)) {
-                throw new RuntimeException("wb.isSharedClass(c) should be true");
-            }
-        }
-
-        ClassUnloadCommon.failIf(!wb.isClassAlive(className), "should be live here");
-
-        if (doUnload) {
-            String loaderName = urlClassLoader.getName();
-            int loadedRefcount = wb.getSymbolRefcount(loaderName);
-            System.out.println("Refcount of symbol " + loaderName + " is " + loadedRefcount);
-
-            urlClassLoader = null; c = null; o = null;
-            ClassUnloadCommon.triggerUnloading();
-            System.out.println("Is CustomLoadee alive? " + wb.isClassAlive(className));
-            ClassUnloadCommon.failIf(wb.isClassAlive(className), "should have been unloaded");
-
-            int unloadedRefcount = wb.getSymbolRefcount(loaderName);
-            System.out.println("Refcount of symbol " + loaderName + " is " + unloadedRefcount);
-
-            // refcount of a permanent symbol will not be decremented
-            if (loadedRefcount != 65535) {
-                ClassUnloadCommon.failIf(unloadedRefcount != (loadedRefcount - 1), "Refcount must be decremented");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/InProhibitedPkg.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-package java;
-
-public class InProhibitedPkg {
-    static {
-        if (true) {
-            throw new RuntimeException("This class shouldn't be loaded by any loader other than BOOT");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/LoaderAPI.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Created-By: 1.9.0-internal (Oracle Corporation)
-Specification-Title: My Specification Title
-Specification-Version: 1.0
-Specification-Vendor: My Specification Vendor
-Implementation-Title: My Implementation Title
-Implementation-Version: 1.0
-Implementation-Vendor: My Implementation Vendor
-
-Name: pkg1/
-Implementation-Version: 2.0
-Sealed: true
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/LoaderSegregation.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.*;
-import java.net.*;
-import sun.hotspot.WhiteBox;
-
-public class LoaderSegregation {
-    // Use these definitions instead of literal strings, to avoid typos.
-    static final String ONLY_BUILTIN      = "OnlyBuiltin";
-    static final String ONLY_UNREGISTERED = "OnlyUnregistered";
-
-    public static void main(String args[]) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        // [A] An archived BUILTIN class cannot be a subclass of a non-BUILTIN class.
-        // [B] An archived BUILTIN class cannot implement a non-BUILTIN interface.
-        if (wb.isSharedClass(LoaderSegregation.class)) {
-            // [1] check that CustomLoadee is loadable from archive
-            if (!wb.isSharedClass(CustomLoadee.class)) {
-                throw new RuntimeException("wb.isSharedClass(CustomLoadee.class) should be true");
-            }
-
-            // [2] CustomInterface2_ia should be archived, even though it was not specified in the classlist.
-            //     It was successfully dumped as a side effect of attempting to load CustomLoadee2
-            //     during dump time. Note that CustomLoadee2 failed to dump because one of its interfaces,
-            //     CustomInterface2_ib, was not loadable from the BOOT/EXT/APP classpath. during dump time.
-            if (!wb.isSharedClass(CustomInterface2_ia.class)) {
-                throw new RuntimeException("wb.isSharedClass(CustomInterface2_ia.class) should be true");
-            }
-
-            // [3] Check that the BUILTIN versions of CustomLoadee2 and CustomLoadee3Child are loadable
-            //     at run time (since we have append LoaderSegregation_app2.jar the classpath),
-            //     but these classes must be loaded from the JAR file.
-            if (wb.isSharedClass(CustomLoadee2.class)) {
-                throw new RuntimeException("wb.isSharedClass(CustomLoadee2.class) should be false");
-            }
-            if (wb.isSharedClass(CustomLoadee3.class)) {
-                throw new RuntimeException("wb.isSharedClass(CustomLoadee3.class) should be false");
-            }
-            if (wb.isSharedClass(CustomLoadee3Child.class)) {
-                throw new RuntimeException("wb.isSharedClass(CustomLoadee3Child.class) should be false");
-            }
-        }
-
-        // [C] BUILTIN and UNREGISTERED classes can be loaded only by their corresponding
-        //     type of loaders.
-
-        String path = args[0];
-        File jarFile = new File(path);
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-        ClassLoader appLoader = LoaderSegregation.class.getClassLoader();
-
-        { // BUILTIN LOADER
-            try {
-                appLoader.loadClass(ONLY_UNREGISTERED);
-                throw new RuntimeException("BUILTIN loader cannot load archived UNREGISTERED class");
-            } catch (ClassNotFoundException expected) {}
-        }
-
-        { // UNREGISTERED LOADER
-            URLClassLoader urlClassLoader = new URLClassLoader(urls);
-            Class c2 = Util.defineClassFromJAR(urlClassLoader, jarFile, ONLY_BUILTIN);
-
-            if (c2.getClassLoader() != urlClassLoader) {
-                throw new RuntimeException("Error in test");
-            }
-
-            if (wb.isSharedClass(LoaderSegregation.class)) {
-                if (wb.isSharedClass(c2)) {
-                    throw new RuntimeException("wb.isSharedClass(c2) should be false - " +
-                                               "unregistered loader cannot load an archived BUILTIN class");
-                }
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/OnlyBuiltin.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-// See ../LoaderSegregationTest.java for details.
-//
-// This class is archived only as a BUILTIN class.
-public class OnlyBuiltin {}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/OnlyUnregistered.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-// See ../LoaderSegregationTest.java for details.
-//
-// This class is archived only as a UNREGISTERED class.
-public class OnlyUnregistered {}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/ProtDomain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.security.ProtectionDomain;
-import java.net.URLClassLoader;
-import java.net.URL;
-import java.io.File;
-
-// Intended to be called from test ProtectionDomain.java
-//
-// ProtDomainClassForArchive is     stored in CDS archive.
-// ProtDomainNotForArchive   is NOT stored in CDS archive.
-//
-// However, they should have the same ProtectionDomain instance.
-public class ProtDomain {
-    public static void main(String args[]) throws Exception {
-        String customLdrPath = args[0];
-
-        URL[] urls = new URL[] {new File(customLdrPath).toURI().toURL()};
-        URLClassLoader ldr = new URLClassLoader(urls);
-        ProtectionDomain domain1 = ldr.loadClass("ProtDomainClassForArchive").getProtectionDomain();
-        ProtectionDomain domain2 = ldr.loadClass("ProtDomainNotForArchive").getProtectionDomain();
-
-        System.out.println("domain1 = " + domain1);
-        System.out.println("domain2  = " + domain2);
-
-        if (domain1 != domain2)
-            throw new RuntimeException("Protection Domains do not match!");
-    }
-}
-
-class ProtDomainClassForArchive {}
-
-class ProtDomainNotForArchive {}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/SameNameUnrelatedLoaders.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import sun.hotspot.WhiteBox;
-
-public class SameNameUnrelatedLoaders {
-    public static void main(String args[]) throws Exception {
-        String path = args[0];
-        String testCase = args[1];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-
-        ClassLoader appLoader = SameNameUnrelatedLoaders.class.getClassLoader();
-        URLClassLoader ldr01 = null;
-        URLClassLoader ldr02 = null;
-
-        switch (testCase) {
-            case "FpBoth":
-                ldr01 = new URLClassLoader(urls);
-                ldr02 = new URLClassLoader(urls);
-            break;
-
-            default:
-                throw new IllegalArgumentException("Invalid testCase ID");
-        }
-
-
-        Class class01 = ldr01.loadClass("CustomLoadee");
-        Class class02  = ldr02.loadClass("CustomLoadee");
-
-        System.out.println("class01 = " + class01);
-        System.out.println("class02 = " + class02);
-
-        if (class01.getClassLoader() != ldr01) {
-            throw new RuntimeException("class01 loaded by wrong loader");
-        }
-        if (class02.getClassLoader() != ldr02) {
-            throw new RuntimeException("class02 loaded by wrong loader");
-        }
-
-        if (true) {
-            if (class01.isAssignableFrom(class02)) {
-                throw new RuntimeException("assignable condition failed");
-            }
-
-            Object obj01 = class01.newInstance();
-            Object obj02 = class02.newInstance();
-
-            if (class01.isInstance(obj02)) {
-                throw new RuntimeException("instance relationship condition 01 failed");
-            }
-            if (class02.isInstance(obj01)) {
-                throw new RuntimeException("instance relationship condition 02 failed");
-            }
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(SameNameUnrelatedLoaders.class)) {
-            boolean class1Shared = wb.isSharedClass(class01);
-            boolean class2Shared = wb.isSharedClass(class02);
-
-            if (testCase.equals("FpBoth")) {
-                if (!class1Shared) {
-                    throw new RuntimeException("first class is not shared");
-                }
-
-                if (class2Shared) {
-                    throw new RuntimeException("second class is shared, " +
-                    "and it should not be - first come first serve violation");
-                }
-            } else {
-                if (! (class1Shared && class2Shared) )
-                    throw new RuntimeException("both classes expected to be shared, but are not");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/SimpleHello.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class SimpleHello {
-    public static void main(String[] args) {
-        System.out.println("Simple Hello");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/UnintendedLoaders.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class UnintendedLoaders {
-    public static void main(String[] args) throws Exception {
-        ClassLoader loaders[] = new ClassLoader[2];
-        loaders[0] = UnintendedLoaders.class.getClassLoader(); // app loader
-        loaders[1] = loaders[0].getParent();                   // platform loader
-
-        String[] names = {
-            "CustomLoadee",
-        };
-
-
-        for (int i=0; i<3; i++) {
-            for (String s : names) {
-                try {
-                    if (i <= 1) {
-                        System.out.println(loaders[i].loadClass(s));
-                    } else {
-                        System.out.println(Class.forName(s));
-                    }
-                } catch (ClassNotFoundException e) {
-                    System.out.println("Expected exception:" + e);
-                    continue;
-                }
-                throw new RuntimeException("The class \"" + s + "\" should not be resolved by the application or platform class loader");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/test-classes/UnloadUnregisteredLoader.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import sun.hotspot.WhiteBox;
-
-public class UnloadUnregisteredLoader {
-    public static void main(String args[]) throws Exception {
-        String path = args[0];
-        URL url = new File(path).toURI().toURL();
-        URL[] urls = new URL[] {url};
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        String className = "CustomLoadee";
-
-        for (int i=0; i<5; i++) {
-            doit(urls, className, (i == 0));
-
-            ClassUnloadCommon.triggerUnloading();
-            ClassUnloadCommon.failIf(wb.isClassAlive(className), "should have been unloaded");
-        }
-    }
-
-  public static void doit(URL urls[], String className, boolean isFirstTime) throws Exception {
-        ClassLoader appLoader = UnloadUnregisteredLoader.class.getClassLoader();
-        URLClassLoader custLoader = new URLClassLoader(urls, appLoader);
-
-        Class klass = custLoader.loadClass(className);
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(UnloadUnregisteredLoader.class)) {
-            if (isFirstTime) {
-                // First time: we should be able to load the class from the CDS archive
-                if (!wb.isSharedClass(klass)) {
-                    throw new RuntimeException("wb.isSharedClass(klass) should be true for first time");
-                }
-            } else {
-                // Second time:  the class in the CDS archive is not available, because it has not been cleaned
-                // up (see bug 8140287), so we must load the class dynamically.
-                //
-                // FIXME: after 8140287 is fixed, class should be shard regardless of isFirstTime.
-                if (wb.isSharedClass(klass)) {
-                    throw new RuntimeException("wb.isSharedClass(klass) should be false for second time");
-                }
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/AppendClasspath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary At run time, it is OK to append new elements to the classpath that was used at dump time.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @compile ../test-classes/HelloMore.java
- * @run driver AppendClasspath
- */
-
-import java.io.File;
-
-public class AppendClasspath extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(AppendClasspath::testDefaultBase);
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
-
-        // Dump an archive with a specified JAR file in -classpath
-        dump(topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-cp", appJar, "Hello")
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-
-        // runtime with classpath containing the one used in dump time,
-        // i.e. the dump time classpath is a prefix of the runtime classpath.
-        run(topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar + File.pathSeparator + appJar2,
-            "HelloMore")
-            .assertNormalExit(output -> {
-                    output.shouldContain("Hello source: shared objects file")
-                          .shouldContain("Hello World ... More")
-                          .shouldHaveExitValue(0);
-                });
-
-        // reverse the order of the 2 jar files so that the dump time classpath
-        // is no longer a prefix of the runtime classpath. The Hello class
-        // should be loaded from the jar file.
-        run(topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar2 + File.pathSeparator + appJar,
-            "HelloMore")
-            .assertAbnormalExit(output -> {
-                    output.shouldContain("shared class paths mismatch")
-                          .shouldHaveExitValue(1);
-                });
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/ArchiveConsistency.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Corrupt the header CRC fields of the top archive. VM should exit with an error.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @build Hello sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar hello.jar Hello
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI ArchiveConsistency
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.channels.FileChannel;
-import java.nio.file.StandardOpenOption;
-import static java.nio.file.StandardOpenOption.READ;
-import static java.nio.file.StandardOpenOption.WRITE;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import sun.hotspot.WhiteBox;
-
-public class ArchiveConsistency extends DynamicArchiveTestBase {
-    public static WhiteBox wb;
-    public static int int_size;        // size of int
-    public static String[] shared_region_name = {"MiscCode", "ReadWrite", "ReadOnly", "MiscData"};
-    public static int num_regions = shared_region_name.length;
-
-    public static void main(String[] args) throws Exception {
-        runTest(ArchiveConsistency::testCustomBase);
-    }
-
-    // Test with custom base archive + top archive
-    static void testCustomBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top2");
-        String baseArchiveName = getNewArchiveName("base");
-        dumpBaseArchive(baseArchiveName);
-        doTest(baseArchiveName, topArchiveName);
-    }
-
-    public static void setReadWritePermission(File file) throws Exception {
-        if (!file.canRead()) {
-            if (!file.setReadable(true)) {
-                throw new IOException("Cannot modify file " + file + " as readable");
-            }
-        }
-        if (!file.canWrite()) {
-            if (!file.setWritable(true)) {
-                throw new IOException("Cannot modify file " + file + " as writable");
-            }
-        }
-    }
-
-    public static long readInt(FileChannel fc, long offset, int nbytes) throws Exception {
-        ByteBuffer bb = ByteBuffer.allocate(nbytes);
-        bb.order(ByteOrder.nativeOrder());
-        fc.position(offset);
-        fc.read(bb);
-        return  (nbytes > 4 ? bb.getLong(0) : bb.getInt(0));
-    }
-
-    public static long align_up_page(long l) throws Exception {
-        // wb is obtained in getFileOffsetInfo() which is called first in main() else we should call
-        // WhiteBox.getWhiteBox() here first.
-        int pageSize = wb.getVMPageSize();
-        return (l + pageSize -1) & (~ (pageSize - 1));
-    }
-
-    public static void writeData(FileChannel fc, long offset, ByteBuffer bb) throws Exception {
-        fc.position(offset);
-        fc.write(bb);
-        fc.force(true);
-    }
-
-    public static FileChannel getFileChannel(File jsa) throws Exception {
-        List<StandardOpenOption> arry = new ArrayList<StandardOpenOption>();
-        arry.add(READ);
-        arry.add(WRITE);
-        return FileChannel.open(jsa.toPath(), new HashSet<StandardOpenOption>(arry));
-    }
-
-   public static void modifyJsaHeaderCRC(File jsa) throws Exception {
-        FileChannel fc = getFileChannel(jsa);
-        int_size = wb.getOffsetForName("int_size");
-        System.out.println("    int_size " + int_size);
-        ByteBuffer bbuf = ByteBuffer.allocateDirect(int_size);
-        for (int i = 0; i < int_size; i++) {
-            bbuf.put((byte)0);
-        }
-
-        int baseArchiveCRCOffset = wb.getOffsetForName("DynamicArchiveHeader::_base_archive_crc");
-        int crc = 0;
-        System.out.printf("%-12s%-12s\n", "Space name", "CRC");
-        for (int i = 0; i < 4; i++) {
-            baseArchiveCRCOffset += int_size * i;
-            System.out.println("    baseArchiveCRCOffset " + baseArchiveCRCOffset);
-            crc = (int)readInt(fc, baseArchiveCRCOffset, int_size );
-            System.out.printf("%-11s%-12d\n", shared_region_name[i], crc);
-            bbuf.rewind();
-            writeData(fc, baseArchiveCRCOffset, bbuf);
-        }
-        fc.force(true);
-        if (fc.isOpen()) {
-            fc.close();
-        }
-    }
-
-    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String mainClass = "Hello";
-        dump2(baseArchiveName, topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                          .shouldContain("Written dynamic archive 0x");
-                });
-
-        File jsa = new File(topArchiveName);
-        if (!jsa.exists()) {
-            throw new IOException(jsa + " does not exist!");
-        }
-
-        // Modify the CRC values in the header of the top archive.
-        wb = WhiteBox.getWhiteBox();
-        setReadWritePermission(jsa);
-        modifyJsaHeaderCRC(jsa);
-
-        run2(baseArchiveName, topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-XX:+VerifySharedSpaces",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain("Header checksum verification failed")
-                          .shouldContain("Unable to use shared archive")
-                          .shouldHaveExitValue(1);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/ArrayKlasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary handling of the existence of InstanceKlass::array_klasses()
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- *          /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build ArrayKlassesApp
- * @run driver ClassFileInstaller -jar ArrayKlasses.jar
- *             ArrayKlassesApp
- * @run driver ArrayKlasses
- */
-
-public class ArrayKlasses extends DynamicArchiveTestBase {
-    public static void main(String[] args) throws Exception {
-        runTest(ArrayKlasses::test);
-    }
-
-    static void test() throws Exception {
-        String topArchiveName = getNewArchiveName();
-        String appJar = ClassFileInstaller.getJarPath("ArrayKlasses.jar");
-        String mainClass = "ArrayKlassesApp";
-
-        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/ClassResolutionFailure.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test with a jar file which contains only the main class but not the dependent class.
- *          The main class should be archived. During run time, the main class
- *          should be loaded from the archive.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build StrConcatApp
- * @build MissingDependent
- * @run driver ClassFileInstaller -jar missingDependent.jar MissingDependent
- * @run driver ClassResolutionFailure
- */
-
-public class ClassResolutionFailure extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(ClassResolutionFailure::testDefaultBase);
-    }
-
-    // Test with default base archive + top archive
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("missingDependent.jar");
-        String mainClass = "MissingDependent";
-
-        dump(topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-Xlog:class+load=trace",
-             "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-
-        run(topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("MissingDependent source: shared objects file")
-                          .shouldHaveExitValue(0);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicArchiveTestBase.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.cds.CDSTestUtils.Result;
-
-/**
- * Base class for test cases in test/hotspot/jtreg/runtime/appcds/dynamicArchive/
- */
-class DynamicArchiveTestBase {
-    private static boolean executedIn_run = false;
-
-    public static interface DynamicArchiveTest {
-        public void run() throws Exception;
-    }
-
-    public static interface DynamicArchiveTestWithArgs {
-        public void run(String args[]) throws Exception;
-    }
-
-
-    /*
-     * Tests for dynamic archives should be written using this pattern:
-     *
-     * public class HelloDynamic extends DynamicArchiveTestBase {
-     *     public static void main(String[] args) throws Exception {
-     *        runTest(HelloDynamic::testDefaultBase); // launch one test case
-     *     }
-     *
-     *     // the body of a test case
-     *     static void testDefaultBase() throws Exception {
-     *         String topArchiveName = getNewArchiveName("top");
-     *         doTest(null, topArchiveName);
-     *     }
-     * }
-     *
-     * The reason for this is so that we can clean up the archive files
-     * created by prior test cases. Otherwise tests with lots of
-     * test cases may fill up the scratch directory.
-     */
-    public static void runTest(DynamicArchiveTest t) throws Exception {
-        executedIn_run = true;
-        try {
-            TestCommon.deletePriorArchives();
-            t.run();
-        } finally {
-            executedIn_run = false;
-        }
-    }
-
-    public static void runTest(DynamicArchiveTestWithArgs t, String... args) throws Exception {
-        executedIn_run = true;
-        try {
-            TestCommon.deletePriorArchives();
-            t.run(args);
-        } finally {
-            executedIn_run = false;
-        }
-    }
-
-    public static String getNewArchiveName() {
-        return TestCommon.getNewArchiveName();
-    }
-    public static String getNewArchiveName(String stem) {
-        return TestCommon.getNewArchiveName(stem);
-    }
-
-    /**
-     * Execute a JVM using the base archive (given by baseArchiveName) with the command line
-     * (given by cmdLineSuffix). At JVM exit, dump all eligible classes into the top archive
-     * (give by topArchiveName).
-     *
-     * If baseArchiveName is null, use the JDK's default archive as the base archive.
-     */
-    public static Result dump2(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        String[] cmdLine = TestCommon.concat(
-            "-XX:ArchiveClassesAtExit=" + topArchiveName);
-        // to allow dynamic archive tests to be run in the "rt-non-cds-mode"
-        cmdLine = TestCommon.concat(cmdLine, "-Xshare:auto");
-        if (baseArchiveName != null) {
-            cmdLine = TestCommon.concat(cmdLine, "-XX:SharedArchiveFile=" + baseArchiveName);
-        }
-        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
-        return execProcess("dump", null, cmdLine);
-    }
-
-    public static Result dump2_WB(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        return dump2(baseArchiveName, topArchiveName,
-                     TestCommon.concat(wbRuntimeArgs(), cmdLineSuffix));
-    }
-
-    /**
-     * A convenience method similar to dump2, but always use the JDK's default archive
-     * as the base archive.
-     *
-     * Most dynamicArchive/*.java test cases should be using this method instead of run2.
-     */
-    public static Result dump(String topArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        return dump2(null, topArchiveName, cmdLineSuffix);
-    }
-
-    /**
-     * Dump the base archive. The JDK's default class list is used (unless otherwise specified
-     * in cmdLineSuffix).
-     */
-    public static void dumpBaseArchive(String baseArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        CDSOptions opts = new CDSOptions();
-        opts.setArchiveName(baseArchiveName);
-        opts.addSuffix(cmdLineSuffix);
-        opts.addSuffix("-Djava.class.path=");
-        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
-        CDSTestUtils.checkDump(out);
-    }
-
-    /**
-     * Same as dumpBaseArchive, but also add WhiteBox to the bootcp
-     */
-    public static void dumpBaseArchive_WB(String baseArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        dumpBaseArchive(baseArchiveName,
-                        TestCommon.concat("-Xbootclasspath/a:" + getWhiteBoxJar(), cmdLineSuffix));
-    }
-
-    private static String getWhiteBoxJar() {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        if (!(new File(wbJar)).exists()) {
-            throw new RuntimeException("Test error: your test must have " +
-                                       "'@run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox'");
-        }
-        return wbJar;
-    }
-
-    private static String[] wbRuntimeArgs() {
-        return TestCommon.concat("-Xbootclasspath/a:" + getWhiteBoxJar(),
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI");
-    }
-
-    /**
-     * Execute a JVM using the base archive (given by baseArchiveName) and the top archive
-     * (give by topArchiveName), using the command line (given by cmdLineSuffix).
-     *
-     * If baseArchiveName is null, use the JDK's default archive as the base archive.
-     */
-    public static Result run2(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
-        throws Exception {
-        if (baseArchiveName == null && topArchiveName == null) {
-            throw new RuntimeException("Both baseArchiveName and topArchiveName cannot be null at the same time.");
-        }
-        String archiveFiles = (baseArchiveName == null) ? topArchiveName :
-            (topArchiveName == null) ? baseArchiveName :
-            baseArchiveName + File.pathSeparator + topArchiveName;
-        String[] cmdLine = TestCommon.concat(
-            "-Xshare:on",
-            "-XX:SharedArchiveFile=" + archiveFiles);
-        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
-        return execProcess("exec", null, cmdLine);
-    }
-
-    public static Result runWithRelativePath(String baseArchiveName, String topArchiveName,
-                              String jarDir, String ... cmdLineSuffix)
-        throws Exception {
-        if (baseArchiveName == null && topArchiveName == null) {
-            throw new RuntimeException("Both baseArchiveName and topArchiveName cannot be null at the same time.");
-        }
-        String archiveFiles = (baseArchiveName == null) ? topArchiveName :
-            (topArchiveName == null) ? baseArchiveName :
-            baseArchiveName + File.pathSeparator + topArchiveName;
-        String[] cmdLine = TestCommon.concat(
-            "-Xshare:on",
-            "-XX:SharedArchiveFile=" + archiveFiles);
-        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
-        return execProcess("exec", jarDir, cmdLine);
-    }
-
-    public static Result run2_WB(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        return run2(baseArchiveName, topArchiveName,
-                    TestCommon.concat(wbRuntimeArgs(), cmdLineSuffix));
-    }
-
-    /**
-     * A convenience method similar to run2, but always use the JDK's default archive
-     * as the base archive.
-     *
-     * Most dynamicArchive/*.java test cases should be using this method instead of run2.
-     */
-    public static Result run(String topArchiveName, String ... cmdLineSuffix)
-        throws Exception
-    {
-        return run2(null, topArchiveName, cmdLineSuffix);
-    }
-
-    private static String getXshareMode(String[] cmdLine) {
-        for (int i = 0; i <= cmdLine.length - 1; i++) {
-            int j = cmdLine[i].indexOf("-Xshare:");
-            if (j != -1) {
-                return (cmdLine[i].substring(j));
-            }
-        }
-        return null;
-   }
-
-
-    private static Result execProcess(String mode, String jarDir, String[] cmdLine) throws Exception {
-        if (!executedIn_run) {
-            throw new Exception("Test error: dynamic archive tests must be executed via DynamicArchiveTestBase.run()");
-        }
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
-        if (jarDir != null) {
-            pb.directory(new File(jarDir));
-        }
-        OutputAnalyzer output = TestCommon.executeAndLog(pb, mode);
-        CDSOptions opts = new CDSOptions();
-        String xShareMode = getXshareMode(cmdLine);
-        if (xShareMode != null) {
-            opts.setXShareMode(xShareMode);
-        }
-        return new Result(opts, output);
-    }
-
-    /**
-     * A convenience method for dumping and running, using the default CDS archive from the
-     * JDK. Both dumping and running should exit normally.
-     */
-    public static void dumpAndRun(String topArchiveName, String ... cmdLineSuffix) throws Exception {
-        dump(topArchiveName, cmdLineSuffix).assertNormalExit();
-        run(topArchiveName,  cmdLineSuffix).assertNormalExit();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicFlag.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary The DynamicDumpShareSpaces flag is internal, setting it at the command line should have no effect.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @run driver DynamicFlag
- */
-
-public class DynamicFlag {
-  public static void main(String[] args) throws Exception {
-      TestCommon.test(JarBuilder.getOrCreateHelloJar(),
-          TestCommon.list("Hello"), "-XX:+DynamicDumpSharedSpaces", "Hello");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/DynamicLotsOfClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.ArrayList;
-
-/*
- * @test
- * @summary Try to archive lots of classes by searching for classes from the jrt:/ file system. With JDK 12
- *          this will produce an archive with over 30,000 classes.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build LoadClasses
- * @build sun.hotspot.WhiteBox
- * @modules jdk.jartool/sun.tools.jar
- * @run driver ClassFileInstaller -jar loadclasses.jar LoadClasses
- * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
- * @run driver/timeout=500 DynamicLotsOfClasses
- */
-
-public class DynamicLotsOfClasses extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Throwable {
-        runTest(DynamicLotsOfClasses::testDefaultBase);
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        try {
-            doTest(topArchiveName);
-         } catch (Throwable th) {
-             System.out.println(th.toString());
-             Exception ex = new Exception(th);
-             throw ex;
-         }
-    }
-
-    private static void doTest(String topArchiveName) throws Throwable {
-        ArrayList<String> list = new ArrayList<>();
-        TestCommon.findAllClasses(list);
-
-        String classList = System.getProperty("user.dir") + File.separator +
-                           "LotsOfClasses.list";
-        List<String> lines = list;
-        Path file = Paths.get(classList);
-        Files.write(file, lines, Charset.forName("UTF-8"));
-
-        String appJar = ClassFileInstaller.getJarPath("loadclasses.jar");
-        String mainClass = "LoadClasses";
-
-        String whiteBoxJar = ClassFileInstaller.getJarPath("whitebox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
-        dump(topArchiveName,
-             "--add-modules",
-             "ALL-SYSTEM",
-             "-Xlog:hashtables",
-             "-Xmx500m",
-             "-Xlog:cds,cds+dynamic",
-             bootClassPath,
-             "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-             "-cp", appJar, mainClass, classList)
-             .assertNormalExit(output -> {
-                 output.shouldContain("Buffer-space to target-space delta")
-                        .shouldContain("Written dynamic archive 0x");
-             });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/ExcludedClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Unreferenced app classes during dump time should not be included in the archive.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- *          /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build ExcludedClassesApp
- * @run driver ClassFileInstaller -jar ExcludedClasses.jar
- *             ExcludedClassesApp
- *             ExcludedClassesApp$NotLinkedSuper
- *             ExcludedClassesApp$NotLinkedChild
- *             ExcludedClassesApp$NotLinkedInterface
- * @run driver ExcludedClasses
- */
-
-public class ExcludedClasses extends DynamicArchiveTestBase {
-    public static void main(String[] args) throws Exception {
-        runTest(ExcludedClasses::test);
-    }
-
-    static void test() throws Exception {
-        String topArchiveName = getNewArchiveName();
-        String appJar = ClassFileInstaller.getJarPath("ExcludedClasses.jar");
-        String mainClass = "ExcludedClassesApp";
-
-        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamic.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Hello World test for dynamic archive
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @build Hello
- * @run driver ClassFileInstaller -jar hello.jar Hello
- * @run driver HelloDynamic
- */
-
-public class HelloDynamic extends DynamicArchiveTestBase {
-    public static void main(String[] args) throws Exception {
-        runTest(HelloDynamic::testDefaultBase);
-        runTest(HelloDynamic::testCustomBase);
-    }
-
-    // (1) Test with default base archive + top archive
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(null, topArchiveName);
-    }
-
-    // (2) Test with custom base archive + top archive
-    static void testCustomBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top2");
-        String baseArchiveName = getNewArchiveName("base");
-        dumpBaseArchive(baseArchiveName);
-        doTest(baseArchiveName, topArchiveName);
-    }
-
-    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String mainClass = "Hello";
-        dump2(baseArchiveName, topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-        run2(baseArchiveName, topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Hello source: shared objects file")
-                          .shouldHaveExitValue(0);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamicCustom.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Hello World test for dynamic archive with custom loader
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes /runtime/testlibrary
- * @build HelloUnload CustomLoadee ClassUnloadCommon
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
- * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver HelloDynamicCustom
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class HelloDynamicCustom extends DynamicArchiveTestBase {
-    private static final String ARCHIVE_NAME =
-        System.getProperty("test.classes") + File.separator + "HelloDynamicCustom-top.jsa";
-
-    public static void main(String[] args) throws Exception {
-        runTest(HelloDynamicCustom::testDefaultBase);
-    }
-
-    private static void testDefaultBase() throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
-        String mainAppClass = "HelloUnload";
-
-        dump(ARCHIVE_NAME,
-            use_whitebox_jar,
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-XX:+WhiteBoxAPI",
-            "-Xlog:cds",
-            "-Xlog:cds+dynamic=debug",
-            "-cp", appJar,
-            mainAppClass, customJarPath, "false", "false")
-            .assertNormalExit(output -> {
-                output.shouldContain("Buffer-space to target-space delta")
-                      .shouldContain("Written dynamic archive 0x")
-                      .shouldNotContain("klasses.*=.*CustomLoadee")
-                      .shouldHaveExitValue(0);
-                });
-
-        run(ARCHIVE_NAME,
-            use_whitebox_jar,
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-XX:+WhiteBoxAPI",
-            "-Xlog:class+load",
-            "-Xlog:cds=debug",
-            "-Xlog:cds+dynamic=info",
-            "-cp", appJar,
-            mainAppClass, customJarPath, "false", "true")
-            .assertNormalExit(output -> {
-                output.shouldContain("HelloUnload source: shared objects file")
-                      .shouldContain("CustomLoadee source: shared objects file")
-                      .shouldHaveExitValue(0);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/HelloDynamicCustomUnload.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Hello World test for dynamic archive with custom loader.
- *          Attempt will be made to unload the custom loader during
- *          dump time and run time. The custom loader will be unloaded
- *          during dump time.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes /runtime/testlibrary
- * @build HelloUnload CustomLoadee ClassUnloadCommon
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
- * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver HelloDynamicCustomUnload
- */
-
-import java.io.File;
-
-public class HelloDynamicCustomUnload extends DynamicArchiveTestBase {
-    private static final String ARCHIVE_NAME =
-        System.getProperty("test.classes") + File.separator + "HelloDynamicCustomUnload.jsa";
-
-    public static void main(String[] args) throws Exception {
-        runTest(HelloDynamicCustomUnload::testDefaultBase);
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("HelloDynamicCustomUnload-top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
-        String mainAppClass = "HelloUnload";
-
-        dump(topArchiveName,
-            use_whitebox_jar,
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-XX:+WhiteBoxAPI",
-            "-Xmn8m",
-            "-Xlog:cds,cds+dynamic=debug,class+unload=debug",
-            "-XX:ArchiveClassesAtExit=" + ARCHIVE_NAME,
-            "-cp", appJar,
-            mainAppClass, customJarPath, "true", "false")
-            .assertNormalExit(output -> {
-                output.shouldContain("Buffer-space to target-space delta")
-                      .shouldContain("Written dynamic archive 0x")
-                      .shouldNotContain("klasses.*=.*CustomLoadee")   // Fixme -- use a better way to decide if a class has been archived
-                      .shouldHaveExitValue(0);
-                });
-
-        run(topArchiveName,
-            use_whitebox_jar,
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-XX:+WhiteBoxAPI",
-            "-Xlog:class+load,cds=debug,class+unload=debug",
-            "-XX:SharedArchiveFile=" + ARCHIVE_NAME,
-            "-cp", appJar,
-            mainAppClass, customJarPath, "true", "false")
-            .assertNormalExit(output -> {
-                output.shouldContain("HelloUnload source: shared objects file")
-                      .shouldMatch(".class.load. CustomLoadee source:.*hello_custom.jar")
-                      .shouldHaveExitValue(0);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/JITInteraction.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test interaction with JIT threads during vm exit.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build TestJIT
- * @modules jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar testjit.jar TestJIT
- * @run driver JITInteraction
- */
-
-public class JITInteraction extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(JITInteraction::testDefaultBase);
-    }
-
-    // Test with default base archive + top archive
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("testjit.jar");
-        String mainClass = "TestJIT";
-
-        dump2_WB(null, topArchiveName,
-                 "-Xlog:cds",
-                 "-Xlog:cds+dynamic",
-                 "-XX:-UseOnStackReplacement",
-                 "-XX:+PrintCompilation",
-                 "-cp", appJar, mainClass)
-                .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/MainModuleOnly.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver MainModuleOnly
- * @summary Test some scenarios with a main modular jar specified in the --module-path and -cp options in the command line.
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Platform;
-
-public class MainModuleOnly extends DynamicArchiveTestBase {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String FS = File.separator;
-    private static final String TEST_SRC = System.getProperty("test.src") +
-        FS + ".." + FS + "jigsaw" + FS + "modulepath";
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE1 = "com.simple";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.simple.Main";
-
-    private static Path moduleDir = null;
-    private static Path moduleDir2 = null;
-    private static Path destJar = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.toString());
-
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
-
-        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
-        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
-        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
-        Files.copy(srcJar, destJar);
-
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    public static void main(String... args) throws Exception {
-        runTest(MainModuleOnly::testDefaultBase);
-    }
-
-    public static void doTest(String topArchiveName) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        // create an archive with both -cp and --module-path in the command line.
-        // Only the class in the modular jar in the --module-path will be archived;
-        // the class in the modular jar in the -cp won't be archived.
-        dump2(null, topArchiveName,
-              "-Xlog:cds+dynamic=debug,cds=debug",
-              "-cp", destJar.toString(),
-              "--module-path", moduleDir.toString(),
-              "-m", TEST_MODULE1)
-              .assertNormalExit(output -> {
-                      output.shouldContain("Buffer-space to target-space delta")
-                            .shouldContain("Written dynamic archive 0x");
-                  });
-
-        // run with the archive using the same command line as in dump time.
-        // The main class should be loaded from the archive.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--module-path", moduleDir.toString(),
-             "-m", TEST_MODULE1)
-            .assertNormalExit(output -> {
-                    output.shouldContain("[class,load] com.simple.Main source: shared objects file")
-                          .shouldHaveExitValue(0);
-                });
-
-        // run with the archive with the main class name inserted before the -m.
-        // The main class name will be picked up before the module name. So the
-        // main class should be loaded from the jar in the -cp.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--module-path", moduleDir.toString(),
-             MAIN_CLASS, "-m", TEST_MODULE1)
-            .assertNormalExit(out ->
-                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar"));
-
-        // run with the archive with exploded module. Since during dump time, we
-        // only archive classes from the modular jar in the --module-path, the
-        // main class should be loaded from the exploded module directory.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--module-path", MODS_DIR.toString(),
-             "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
-            .assertNormalExit(out -> {
-                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple")
-                   .shouldContain(MODS_DIR.toString());
-            });
-
-        // run with the archive with the --upgrade-module-path option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--upgrade-module-path", moduleDir.toString(),
-             "--module-path", moduleDir.toString(),
-             "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // run with the archive with the --limit-modules option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--limit-modules", "java.base," + TEST_MODULE1,
-             "--module-path", moduleDir.toString(),
-             "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // run with the archive with the --patch-module option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--patch-module", TEST_MODULE1 + "=" + MODS_DIR.toString(),
-             "--module-path", moduleDir.toString(),
-             "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // modify the timestamp of the jar file
-        (new File(destJar.toString())).setLastModified(System.currentTimeMillis() + 2000);
-        // run with the archive and the jar with modified timestamp.
-        // It should fail due to timestamp of the jar doesn't match the one
-        // used during dump time.
-        run2(null, topArchiveName,
-             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
-             "-cp", destJar.toString(),
-             "--module-path", moduleDir.toString(),
-             "-m", TEST_MODULE1)
-            .assertAbnormalExit(
-                "A jar file is not the one used while building the shared archive file:");
-        // create an archive with a non-empty directory in the --module-path.
-        // The dumping process will exit with an error due to non-empty directory
-        // in the --module-path.
-        dump2(null, topArchiveName,
-              "-Xlog:cds+dynamic=debug,cds=debug",
-              "-cp", destJar.toString(),
-              "--module-path", MODS_DIR.toString(),
-              "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
-            .assertAbnormalExit(output -> {
-                output.shouldMatch("Error: non-empty directory.*com.simple");
-                });
-
-        // test module path with very long length
-        //
-        // This test can't be run on the windows platform due to an existing
-        // issue in ClassLoader::get_canonical_path() (JDK-8190737).
-        if (Platform.isWindows()) {
-            System.out.println("Long module path test cannot be tested on the Windows platform.");
-            return;
-        }
-        Path longDir = USER_DIR;
-        int pathLen = longDir.toString().length();
-        int PATH_LEN = 2034;
-        int MAX_DIR_LEN = 250;
-        while (pathLen < PATH_LEN) {
-            int remaining = PATH_LEN - pathLen;
-            int subPathLen = remaining > MAX_DIR_LEN ? MAX_DIR_LEN : remaining;
-            char[] chars = new char[subPathLen];
-            Arrays.fill(chars, 'x');
-            String subPath = new String(chars);
-            longDir = Paths.get(longDir.toString(), subPath);
-            pathLen = longDir.toString().length();
-        }
-        File longDirFile = new File(longDir.toString());
-        try {
-            longDirFile.mkdirs();
-        } catch (Exception e) {
-            throw e;
-        }
-        Path longDirJar = longDir.resolve(TEST_MODULE1 + ".jar");
-        // IOException results from the Files.copy() call on platform
-        // such as MacOS X. Test can't be proceeded further with the
-        // exception.
-        try {
-            Files.copy(destJar, longDirJar);
-        } catch (java.io.IOException ioe) {
-            System.out.println("Caught IOException from Files.copy(). Cannot continue.");
-            return;
-        }
-        dump2(null, topArchiveName,
-              "-Xlog:cds+dynamic=debug,cds=debug",
-              "-cp", destJar.toString(),
-              "-Xlog:exceptions=trace",
-              "--module-path", longDirJar.toString(),
-              "-m", TEST_MODULE1)
-            .ifAbnormalExit(output -> {
-                output.shouldMatch("os::stat error.*CDS dump aborted");
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/MethodSorting.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary When HelloA and HelloB are copied into the dynamic archive, the Symbols
- *          for their method's names will have a different sorting order. This requires
- *          that the dumped InstanceKlass to re-sort their "methods" array and re-layout the vtables/itables.
- *          A regression test for an earlier bug in DynamicArchiveBuilder::relocate_buffer_to_target().
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- *          /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build MethodSortingApp
- * @run driver ClassFileInstaller -jar method_sorting.jar
- *             MethodSortingApp
- *             MethodSortingApp$HelloA
- *             MethodSortingApp$HelloA1
- *             MethodSortingApp$HelloB
- *             MethodSortingApp$HelloB1
- *             MethodSortingApp$InterfaceA
- *             MethodSortingApp$InterfaceB
- *             MethodSortingApp$ImplementorA
- *             MethodSortingApp$ImplementorA1
- *             MethodSortingApp$ImplementorB
- *             MethodSortingApp$ImplementorB1
- * @run driver MethodSorting
- */
-
-public class MethodSorting extends DynamicArchiveTestBase {
-    public static void main(String[] args) throws Exception {
-        runTest(MethodSorting::test);
-    }
-
-    static void test() throws Exception {
-        String topArchiveName = getNewArchiveName();
-        String appJar = ClassFileInstaller.getJarPath("method_sorting.jar");
-        String mainClass = "MethodSortingApp";
-
-        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/MissingArchive.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-
-/*
- * @test
- * @summary error handling when either (or both) of the base/top archives are missing.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @build GenericTestApp sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar GenericTestApp.jar GenericTestApp
- * @run driver MissingArchive
- */
-
-public class MissingArchive extends DynamicArchiveTestBase {
-    private static final String TOP  = "top";
-    private static final String BASE = "base";
-    private static final String BOTH = "base/top";
-    private static final String NONE = "none";
-
-    public static void main(String[] args) throws Exception {
-        runTest(MissingArchive::test, TOP);
-        runTest(MissingArchive::test, BASE);
-        runTest(MissingArchive::test, BOTH);
-        runTest(MissingArchive::test, NONE);
-    }
-
-    static void delete(String fileName) {
-        File f = new File(fileName);
-        f.delete();
-    }
-
-    static void test(String args[]) throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        String baseArchiveName = getNewArchiveName("base");
-        dumpBaseArchive(baseArchiveName);
-
-        String appJar = ClassFileInstaller.getJarPath("GenericTestApp.jar");
-        String mainClass = "GenericTestApp";
-        dump2_WB(baseArchiveName, topArchiveName,
-                 "-Xlog:cds",
-                 "-Xlog:cds+dynamic=debug",
-                 "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-
-        // Use -Xshare:auto so top archive can fail after base archive has succeeded,
-        // but the app will continue to run.
-        String[] cmdline = TestCommon.concat(
-            "-Xlog:cds*",
-            "-Xshare:auto",
-            "-cp", appJar, mainClass);
-
-
-        String mode = args[0];
-
-        if (mode.contains(BASE)) {
-            delete(baseArchiveName);
-            cmdline = TestCommon.concat(cmdline, "assertNotShared:java.lang.Object");
-        } else {
-            cmdline = TestCommon.concat(cmdline, "assertShared:java.lang.Object");
-        }
-
-        if (mode.contains(TOP)) {
-            delete(topArchiveName);
-        }
-
-        if (mode.equals(NONE)) {
-            cmdline = TestCommon.concat(cmdline, "assertShared:GenericTestApp");
-        } else {
-            cmdline = TestCommon.concat(cmdline, "assertNotShared:GenericTestApp");
-        }
-
-        run2_WB(baseArchiveName, topArchiveName, cmdline).assertNormalExit();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/NoClassToArchive.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary A few edge cases where there's no class to be included in the dynamic archive.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes
- * @build StrConcatApp
- * @run driver ClassFileInstaller -jar strConcatApp.jar StrConcatApp
- * @run driver NoClassToArchive
- */
-
-import java.io.File;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class NoClassToArchive extends DynamicArchiveTestBase {
-    static final String warningMessage =
-        "There is no class to be included in the dynamic archive";
-    static final String classList = System.getProperty("test.classes") +
-        File.separator + "NoClassToArchive.list";
-    static final String appClass = "StrConcatApp";
-
-    public static void main(String[] args) throws Exception {
-        runTest(NoClassToArchive::testDefaultBase);
-        runTest(NoClassToArchive::testCustomBase);
-    }
-
-    // (1) Test with default base archive + top archive
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(null, topArchiveName);
-    }
-
-    // (2) Test with custom base archive + top archive
-    static void testCustomBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top2");
-        String baseArchiveName = getNewArchiveName("base");
-        doTestCustomBase(baseArchiveName, topArchiveName);
-    }
-
-    private static void checkWarning(OutputAnalyzer output) throws Exception {
-        if (output.getStdout().contains("jrt:/") || output.getStdout().contains("unsafe anonymous")) {
-            System.out.println("test skipped: this platform uses non-archived classes when running -version");
-        } else {
-            output.shouldContain(warningMessage);
-        }
-    }
-
-    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
-        dump2(baseArchiveName, topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-Xlog:class+load=trace",
-             "-version")
-            .assertNormalExit(output -> checkWarning(output));
-
-        dump2(baseArchiveName, topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             "-Xlog:class+load=trace",
-             "-help")
-            .assertNormalExit(output -> {
-                    // some classes will be loaded from the java.base module
-                    output.shouldContain("java.text.MessageFormat source: jrt:/java.base");
-                });
-    }
-
-    private static void doTestCustomBase(String baseArchiveName, String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("strConcatApp.jar");
-        // dump class list by running the StrConcatApp
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-            true,
-            "-XX:DumpLoadedClassList=" + classList,
-            "-cp",
-            appJar,
-            appClass);
-        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dumpClassList");
-        TestCommon.checkExecReturn(output, 0, true, "length = 0");
-
-        // create a custom base archive based on the class list
-        dumpBaseArchive(baseArchiveName, "-XX:SharedClassListFile=" + classList);
-
-        // create a dynamic archive with the custom base archive
-        // no class should be included in the dynamic archive
-        dump2(baseArchiveName, topArchiveName,
-              "-Xlog:cds",
-              "-Xlog:cds+dynamic=debug",
-              "-Xlog:class+load=trace",
-              "-version")
-            .assertNormalExit(out -> checkWarning(out));
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/RelativePath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test relative paths specified in the -cp.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @compile ../test-classes/HelloMore.java
- * @run driver RelativePath
- */
-
-import java.io.File;
-
-public class RelativePath extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(AppendClasspath::testDefaultBase);
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
-
-        int idx = appJar.lastIndexOf(File.separator);
-        String jarName = appJar.substring(idx + 1);
-        String jarDir = appJar.substring(0, idx);
-        // relative path starting with "."
-        runWithRelativePath(null, topArchiveName, jarDir,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", "." + File.separator + "hello.jar" + File.pathSeparator + appJar2,
-            "HelloMore")
-            .assertNormalExit(output -> {
-                    output.shouldContain("Hello source: shared objects file")
-                          .shouldContain("Hello World ... More")
-                          .shouldHaveExitValue(0);
-                });
-
-        // relative path starting with ".."
-        idx = jarDir.lastIndexOf(File.separator);
-        String jarSubDir = jarDir.substring(idx + 1);
-        runWithRelativePath(null, topArchiveName, jarDir,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp",
-            ".." + File.separator + jarSubDir + File.separator + "hello.jar" + File.pathSeparator + appJar2,
-            "HelloMore")
-            .assertNormalExit(output -> {
-                    output.shouldContain("Hello source: shared objects file")
-                          .shouldContain("Hello World ... More")
-                          .shouldHaveExitValue(0);
-                });
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/SharedArchiveFileOption.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Some negative tests for the SharedArchiveFile option
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @build Hello
- * @run driver ClassFileInstaller -jar hello.jar Hello
- * @run driver SharedArchiveFileOption
- */
-
-import java.io.File;
-
-public class SharedArchiveFileOption extends DynamicArchiveTestBase {
-    public static void main(String[] args) throws Exception {
-        runTest(SharedArchiveFileOption::testCustomBase);
-    }
-
-    static String baseArchiveName2;
-    static void testCustomBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        String baseArchiveName = getNewArchiveName("base");
-        baseArchiveName2 = getNewArchiveName("base2");
-        dumpBaseArchive(baseArchiveName);
-        dumpBaseArchive(baseArchiveName2);
-        doTest(baseArchiveName, topArchiveName);
-    }
-
-    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
-        String appJar = ClassFileInstaller.getJarPath("hello.jar");
-        String mainClass = "Hello";
-        String dummyArchiveName = getNewArchiveName("dummy");
-
-        // -Xshare:dump specified with -XX:ArchiveClassesAtExit
-        dump2(dummyArchiveName, dummyArchiveName,
-            "-Xlog:cds",
-            "-Xlog:cds+dynamic=debug",
-            "-Xshare:dump",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain("-XX:ArchiveClassesAtExit cannot be used with -Xshare:dump");
-                });
-
-        // more than 1 archive file specified in -XX:SharedArchiveFile during
-        // dynamic dumpgin
-        String dummyArchives = dummyArchiveName + File.pathSeparator + dummyArchiveName;
-        dump2(dummyArchives, dummyArchiveName,
-            "-Xlog:cds",
-            "-Xlog:cds+dynamic=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain("Cannot have more than 1 archive file specified in -XX:SharedArchiveFile during CDS dumping");
-                });
-
-        // normal dynamic archive dumping
-        dump2(baseArchiveName, topArchiveName,
-            "-Xlog:cds",
-            "-Xlog:cds+dynamic=debug",
-            "-cp", appJar, mainClass)
-            .assertNormalExit(output -> {
-                    output.shouldContain("Buffer-space to target-space delta")
-                           .shouldContain("Written dynamic archive 0x");
-                });
-
-        // same archive file specified for -XX:SharedArchiveFile and -XX:ArchiveClassesAtExit
-        dump2(baseArchiveName, baseArchiveName,
-            "-Xlog:cds",
-            "-Xlog:cds+dynamic=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain("Cannot have the same archive file specified for -XX:SharedArchiveFile and -XX:ArchiveClassesAtExit: "
-                        + baseArchiveName);
-                });
-
-
-        // a top archive specified in the base archive position
-        run2(topArchiveName, baseArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldMatch("Not a base shared archive:.*top.*.jsa");
-                });
-
-        // a base archive specified in the top archive position
-        run2(baseArchiveName, baseArchiveName2,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldMatch("Not a top shared archive:.*base.*.jsa");
-                });
-
-        // more than 2 archives specified in the -XX:ShareArchiveFile option
-        String baseArchives = baseArchiveName + File.pathSeparator + baseArchiveName2;
-        run2(baseArchives, topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain(
-                        "Cannot have more than 2 archive files specified in the -XX:SharedArchiveFile option");
-                });
-
-        // base archive not specified
-        final String topArchive = File.pathSeparator + topArchiveName;
-        run2(topArchive, null,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain(
-                        "Base archive was not specified: " + topArchive);
-                });
-
-        // top archive not specified
-        final String baseArchive = baseArchiveName + File.pathSeparator;
-        run2(baseArchive, null,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-            "-cp", appJar, mainClass)
-            .assertAbnormalExit(output -> {
-                    output.shouldContain(
-                        "Top archive was not specified: " + baseArchive);
-                });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/UnsupportedBaseArchive.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-/*
- * @test
- * @summary unsupported base archive tests
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @modules jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver UnsupportedBaseArchive
- */
-
-public class UnsupportedBaseArchive extends DynamicArchiveTestBase {
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String FS = File.separator;
-    private static final String TEST_SRC = System.getProperty("test.src") +
-        FS + ".." + FS + "jigsaw" + FS + "modulepath";
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE = "com.simple";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.simple.Main";
-
-    private static Path moduleDir = null;
-    private static Path srcJar = null;
-
-    private static final String warningBCP =
-        "Dynamic archiving is disabled because base layer archive has appended boot classpath";
-
-    private static final String warningModulePath =
-        "Dynamic archiving is disabled because base layer archive has module path";
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE),
-                                 MODS_DIR.resolve(TEST_MODULE),
-                                 MODS_DIR.toString());
-
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        srcJar = moduleDir.resolve(TEST_MODULE + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE).toString();
-        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
-    }
-
-    public static void main(String[] args) throws Exception {
-        runTest(UnsupportedBaseArchive::test);
-    }
-
-    static void test(String args[]) throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        String baseArchiveName = getNewArchiveName("base");
-
-        // create a base archive with -Xbootclasspath/a:whitebox.jar
-        dumpBaseArchive_WB(baseArchiveName);
-
-        String appJar    = JarBuilder.getOrCreateHelloJar();
-        String mainClass = "Hello";
-
-        // dumping of dynamic archive should be disabled with a warning message
-        // if the base archive contains -Xbootclasspath/a entries.
-        dump2_WB(baseArchiveName, topArchiveName,
-             "-Xlog:cds*",
-             "-Xlog:cds+dynamic=debug",
-             "-Xlog:class+path=info",
-             "-cp", appJar, mainClass)
-            .assertNormalExit(warningBCP);
-
-        // create a base archive with the --module-path option
-        buildTestModule();
-        baseArchiveName = getNewArchiveName("base-with-module");
-        dumpBaseArchive(baseArchiveName,
-                        "-cp", srcJar.toString(),
-                        "--module-path", moduleDir.toString(),
-                        "-m", TEST_MODULE);
-
-        // dumping of dynamic archive should be disabled with a warning message
-        // if the base archive contains --module-path entries.
-        topArchiveName = getNewArchiveName("top-with-module");
-        dump2(baseArchiveName, topArchiveName,
-              "-Xlog:cds*",
-              "-Xlog:cds+dynamic=debug",
-              "-Xlog:class+path=info",
-              "-cp", srcJar.toString(),
-              "--module-path", moduleDir.toString(),
-              "-m", TEST_MODULE)
-            .assertNormalExit(warningModulePath);
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/UnusedCPDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary non-empty dir in -cp should be fine during dump time if only classes
- *          from the system modules are being loaded even though some are
- *          defined to the PlatformClassLoader and AppClassLoader.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @compile ../test-classes/Hello.java
- * @run main/othervm -Dtest.cds.copy.child.stdout=false UnusedCPDuringDump
- */
-
-import java.io.File;
-
-public class UnusedCPDuringDump extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(UnusedCPDuringDump::testDefaultBase);
-    }
-
-    static void testDefaultBase() throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        doTest(topArchiveName);
-    }
-
-    private static void doTest(String topArchiveName) throws Exception {
-        File dir = new File(System.getProperty("user.dir"));
-        File emptydir = new File(dir, "emptydir");
-        emptydir.mkdir();
-        String appJar = JarBuilder.getOrCreateHelloJar();
-        String bootClassPath = "-Xbootclasspath/a:" + appJar;
-
-        // Dumping with a non-empty directory in the -cp.
-        // It should be fine because the app class won't be loaded from the
-        // -cp, it is being loaded from the bootclasspath.
-        dump(topArchiveName,
-             "-Xlog:cds",
-             "-Xlog:cds+dynamic=debug",
-             bootClassPath,
-             "-cp", dir.getPath(),
-             "Hello")
-            .assertNormalExit(output -> {
-                 output.shouldContain("Buffer-space to target-space delta")
-                        .shouldContain("Written dynamic archive 0x");
-                });
-
-        // Running with -cp different from dumping. It should be fine because
-        // the runtime classpath won't be checked against unused classpath
-        // during dump time.
-        run(topArchiveName,
-            "-Xlog:class+load",
-            "-Xlog:cds+dynamic=debug,cds=debug",
-             bootClassPath,
-            "-cp", appJar, "Hello")
-            .assertNormalExit(output -> {
-                    output.shouldContain("Hello World")
-                          .shouldHaveExitValue(0);
-                });
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/WrongTopClasspath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.io.File;
-
-/*
- * @test
- * @summary correct classpath for bottom archive, but bad classpath for top archive
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @build GenericTestApp sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller -jar GenericTestApp.jar GenericTestApp
- * @run driver ClassFileInstaller -jar WrongJar.jar GenericTestApp
- * @run driver WrongTopClasspath
- */
-
-public class WrongTopClasspath extends DynamicArchiveTestBase {
-
-    public static void main(String[] args) throws Exception {
-        runTest(WrongTopClasspath::test);
-    }
-
-    static void test(String args[]) throws Exception {
-        String topArchiveName = getNewArchiveName("top");
-        String baseArchiveName = getNewArchiveName("base");
-        dumpBaseArchive(baseArchiveName);
-
-        String appJar    = ClassFileInstaller.getJarPath("GenericTestApp.jar");
-        String wrongJar  = ClassFileInstaller.getJarPath("WrongJar.jar");
-        String mainClass = "GenericTestApp";
-
-        // Dump the top archive using "-cp GenericTestApp.jar" ...
-        dump2_WB(baseArchiveName, topArchiveName,
-                 "-Xlog:cds*",
-                 "-Xlog:cds+dynamic=debug",
-                 "-cp", appJar, mainClass)
-            .assertNormalExit();
-
-        // ... but try to load the top archive using "-cp WrongJar.jar".
-        // Use -Xshare:auto so top archive can fail after base archive has succeeded,
-        // but the app will continue to run.
-        run2_WB(baseArchiveName, topArchiveName,
-                "-Xlog:cds*",
-                "-Xlog:cds+dynamic=debug",
-                "-Xlog:class+path=info",
-                "-Xshare:auto",
-                "-cp", wrongJar, mainClass,
-                "assertShared:java.lang.Object",  // base archive still useable
-                "assertNotShared:GenericTestApp") // but top archive is not useable
-          .assertNormalExit("The top archive failed to load");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/ArrayKlassesApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-public class ArrayKlassesApp {
-    public static void main(String args[]) {
-        ArrayKlassesApp[][] array = new ArrayKlassesApp[1][2];
-        for (int i=0; i<1; i++) {
-            for (int j=0; j<2; j++) {
-                array[i][j] = new ArrayKlassesApp();
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/ExcludedClassesApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-public class ExcludedClassesApp {
-    interface NotLinkedInterface {}
-    static class NotLinkedSuper {
-
-    }
-
-    static class NotLinkedChild extends NotLinkedSuper implements NotLinkedInterface {
-
-    }
-
-    public static NotLinkedSuper notUsedMethod() {
-        return new NotLinkedChild();
-    }
-
-    public static void main(String args[]) {
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/LoadClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- */
-import java.io.File;
-import java.util.List;
-import java.util.Scanner;
-import sun.hotspot.WhiteBox;
-
-public class LoadClasses {
-
-    public static void main (String[] args) throws Throwable {
-        String classList = args[0];
-        Scanner sc = new Scanner(new File(classList));
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        int count = 0;
-        while (sc.hasNextLine()) {
-            String cn = sc.nextLine().replace('/', '.');
-            try {
-                Class<?> cls = Class.forName(cn, false, LoadClasses.class.getClassLoader());
-                wb.linkClass(cls);
-                count++;
-            } catch (Throwable ex) {
-                System.out.println("Loading failed: " + cn);
-                System.out.println(ex.toString());
-            }
-        }
-        System.out.println("Loaded classes = " + count);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/MethodSortingApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.SynchronousQueue;
-
-public class MethodSortingApp {
-    static class HelloA {
-        String aaaa() { return "aaaa"; }
-        String bbbb() { return "bbbb"; }
-        String dddd() { return "dddd"; }
-        String eeee() { return "eeee"; }
-        String gggg() { return "gggg"; }
-    }
-
-    static class HelloA1 extends HelloA {
-        String aaaa() { return "aaa-"; }
-        String dddd() { return "ddd-"; }
-        String gggg() { return "ggg-"; }
-    }
-
-    static class HelloB {
-        String aaaa() { return "aaaa"; }
-        String cccc() { return "cccc"; }
-        String dddd() { return "dddd"; }
-        String ffff() { return "ffff"; }
-        String gggg() { return "gggg"; }
-    }
-
-    static class HelloB1 extends HelloB {
-        String aaaa() { return "aaa-"; }
-        String dddd() { return "ddd-"; }
-        String gggg() { return "ggg-"; }
-    }
-
-    // Default methods in interfaces must be sorted
-    static interface InterfaceA {
-        default public String aaa() { return "aaa";}
-        default public String bbb() { return "bbb";}
-        default public String ddd() { return "ddd";}
-        default public String eee() { return "eee";}
-        default public String ggg() { return "ggg";}
-    }
-
-    static class ImplementorA implements InterfaceA {
-        public String aaa() { return "aa-";}
-    }
-
-    static class ImplementorA1 extends ImplementorA {
-        public String bbb() { return "bb-";}
-    }
-
-    static interface InterfaceB {
-        default public String aaa() { return "aaa"; }
-        default public String ccc() { return "ccc"; }
-        default public String ddd() { return "ddd"; }
-        default public String fff() { return "fff"; }
-        default public String ggg() { return "ggg"; }
-    }
-
-    static class ImplementorB implements InterfaceB {
-        public String ggg() { return "gg-";}
-    }
-
-    static class ImplementorB1 extends ImplementorB {
-        public String fff() { return "ff-";}
-    }
-
-
-    public static void main(String args[]) {
-        testSimpleMethods();
-        testDefaultMethods();
-        testMixedInterfaces();
-    }
-
-    static void testSimpleMethods() {
-        // When HelloA and HelloB are copied into the dynamic archive, the Symbols
-        // for their method's names will have a different sorting order. This requires
-        // that the dumped InstanceKlass to re-sort their "methods" array and re-layout
-        // the vtables/itables.
-        HelloA1 a1 = new HelloA1();
-        HelloA a = new HelloA();
-        assertEqual(a.aaaa(), "aaaa");
-        assertEqual(a.bbbb(), "bbbb");
-        assertEqual(a.dddd(), "dddd");
-        assertEqual(a.eeee(), "eeee");
-        assertEqual(a.gggg(), "gggg");
-
-        assertEqual(a1.aaaa(), "aaa-");
-        assertEqual(a1.bbbb(), "bbbb");
-        assertEqual(a1.dddd(), "ddd-");
-        assertEqual(a1.eeee(), "eeee");
-        assertEqual(a1.gggg(), "ggg-");
-
-        HelloB b = new HelloB();
-        assertEqual(b.aaaa(), "aaaa");
-        assertEqual(b.cccc(), "cccc");
-        assertEqual(b.dddd(), "dddd");
-        assertEqual(b.ffff(), "ffff");
-        assertEqual(b.gggg(), "gggg");
-
-        HelloB b1 = new HelloB1();
-        assertEqual(b1.aaaa(), "aaa-");
-        assertEqual(b1.cccc(), "cccc");
-        assertEqual(b1.dddd(), "ddd-");
-        assertEqual(b1.ffff(), "ffff");
-        assertEqual(b1.gggg(), "ggg-");
-    }
-
-    static void testDefaultMethods() {
-        InterfaceA a1 = new ImplementorA1();
-        InterfaceA a = new ImplementorA();
-
-        assertEqual(a.aaa(), "aa-");
-        assertEqual(a.bbb(), "bbb");
-        assertEqual(a.ddd(), "ddd");
-        assertEqual(a.eee(), "eee");
-        assertEqual(a.ggg(), "ggg");
-
-        assertEqual(a1.aaa(), "aa-");
-        assertEqual(a1.bbb(), "bb-");
-        assertEqual(a1.ddd(), "ddd");
-        assertEqual(a1.eee(), "eee");
-        assertEqual(a1.ggg(), "ggg");
-
-        InterfaceB b = new ImplementorB();
-        InterfaceB b1 = new ImplementorB1();
-
-        assertEqual(b.aaa(), "aaa");
-        assertEqual(b.ccc(), "ccc");
-        assertEqual(b.ddd(), "ddd");
-        assertEqual(b.fff(), "fff");
-        assertEqual(b.ggg(), "gg-");
-
-        assertEqual(b1.aaa(), "aaa");
-        assertEqual(b1.ccc(), "ccc");
-        assertEqual(b1.ddd(), "ddd");
-        assertEqual(b1.fff(), "ff-");
-        assertEqual(b1.ggg(), "gg-");
-    }
-
-    // This is a regression test for an earlier bug in
-    // DynamicArchiveBuilder::relocate_buffer_to_target()
-    static void testMixedInterfaces() {
-        Object xx = new SynchronousQueue();
-        BlockingQueue yy = (BlockingQueue)xx;
-    }
-
-    static private void assertEqual(String a, String b) {
-        if (!a.equals(b)) {
-            throw new RuntimeException(a + " is not equal to " + b);
-        } else {
-            System.out.println("Expected: " + a + ", got: " + b);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/MissingDependent.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-public class MissingDependent {
-    public static void main(String args[]) throws Exception {
-        try {
-            Object obj = new StrConcatApp();
-        } catch (Throwable e) {
-            String cause = e.getCause().toString();
-            if (cause.equals("java.lang.ClassNotFoundException: StrConcatApp")) {
-                e.printStackTrace();
-            } else {
-                throw e;
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/StrConcatApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-public class StrConcatApp {
-  public static void main(String args[]) {
-    System.out.println("length = " + args.length);
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/dynamicArchive/test-classes/TestJIT.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- */
-
-import sun.hotspot.WhiteBox;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-public class TestJIT {
-
-    private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
-
-    static void doSomething() {
-        HashMap<String,String> map = new HashMap<>();
-        for (int i=0; i<400; i++) {
-            // Call these methods so that the class/field/method references used
-            // by these methods are resolved. This allows C2 to compile more code.
-            String x = "Hello" + i;
-            map.put(x, x);
-            map.get(x);
-        }
-    }
-
-    static public void main(String[] args) throws NoSuchMethodException {
-        Method put_method = HashMap.class.getDeclaredMethod("put", Object.class, Object.class);
-        Method get_method = HashMap.class.getDeclaredMethod("get", Object.class);
-        Method test_method = TestJIT.class.getDeclaredMethod("doSomething");
-
-        doSomething();
-
-        // 4 == CompilerWhiteBoxTest.COMP_LEVEL_FULL_OPTIMIZATION => C2
-        WHITE_BOX.enqueueMethodForCompilation(get_method, 4);
-        WHITE_BOX.enqueueMethodForCompilation(put_method, 4);
-        WHITE_BOX.enqueueMethodForCompilation(test_method, 4);
-
-        // Try to start dynamic dumping while the above compilations are still in progesss
-        System.exit(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary When dumping the CDS archive, try to load VM anonymous classes to make sure they
- *          are handled properly. Note: these are not "anonymous inner classes" in the Java source code,
- *          but rather classes that are not recorded in any ClassLoaderData::dictionary(),
- *          such as classes that are generated for Lambda expressions.
- *          See https://blogs.oracle.com/jrose/anonymous-classes-in-the-vm.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- * @build AnonVmClassesDuringDumpTransformer Hello
- * @run main/othervm AnonVmClassesDuringDump
- */
-
-public class AnonVmClassesDuringDump {
-    public static String appClasses[] = {
-        "Hello",
-    };
-    public static String agentClasses[] = {
-        "AnonVmClassesDuringDumpTransformer",
-    };
-
-    public static String cdsDiagnosticOption = "-XX:+AllowArchivingWithJavaAgent";
-
-    public static void main(String[] args) throws Throwable {
-        String agentJar =
-            ClassFileInstaller.writeJar("AnonVmClassesDuringDumpTransformer.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("AnonVmClassesDuringDumpTransformer.mf"),
-                                        agentClasses);
-
-        String appJar =
-            ClassFileInstaller.writeJar("AnonVmClassesDuringDumpApp.jar", appClasses);
-
-        TestCommon.testDump(appJar, TestCommon.list("Hello"),
-                            "-javaagent:" + agentJar,
-                            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption,
-                            // Set the following property to see logs for dynamically generated classes
-                            // in STDOUT
-                            "-Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES=true");
-
-        String prefix = ".class.load. ";
-        // class name pattern like the following:
-        // jdk.internal.loader.BuiltinClassLoader$$Lambda$1/1816757085
-        // java.lang.invoke.LambdaForm$MH/1585787493
-        String class_pattern = ".*Lambda([a-z0-9$]+)/([0-9]+).*";
-        String suffix = ".*source: shared objects file.*";
-        String pattern = prefix + class_pattern + suffix;
-        // during run time, anonymous classes shouldn't be loaded from the archive
-        TestCommon.run("-cp", appJar,
-            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption, "Hello")
-            .assertNormalExit(output -> output.shouldNotMatch(pattern));
-
-        // inspect the archive and make sure no anonymous class is in there
-        TestCommon.run("-cp", appJar,
-            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption,
-            "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary", "Hello")
-            .assertNormalExit(output -> output.shouldNotMatch(class_pattern));
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDumpTransformer.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.Instrumentation;
-import java.lang.instrument.IllegalClassFormatException;
-import java.security.ProtectionDomain;
-
-public class AnonVmClassesDuringDumpTransformer implements ClassFileTransformer {
-    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
-                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
-        return null;
-    }
-
-    private static Instrumentation savedInstrumentation;
-
-    public static void premain(String agentArguments, Instrumentation instrumentation) {
-        System.out.println("ClassFileTransformer.premain() is called");
-        instrumentation.addTransformer(new AnonVmClassesDuringDumpTransformer(), /*canRetransform=*/true);
-        savedInstrumentation = instrumentation;
-
-        // This will create a Lambda, which will result in some Anonymous VM Classes
-        // being generated.
-        //
-        // Look for something like these in the STDOUT:
-        // ----------------
-        // ClassFileTransformer.premain() is called
-        // Dumping class files to DUMP_CLASS_FILES/...
-        // dump: DUMP_CLASS_FILES/java/lang/invoke/LambdaForm$MH000.class
-        // dump: DUMP_CLASS_FILES/java/lang/invoke/LambdaForm$MH001.class
-        // Invoked inside a Lambda
-        // ----------------
-        Runnable r = () -> {
-            System.out.println("Invoked inside a Lambda");
-        };
-        r.run();
-    }
-
-    public static Instrumentation getInstrumentation() {
-        return savedInstrumentation;
-    }
-
-    public static void agentmain(String args, Instrumentation inst) throws Exception {
-        premain(args, inst);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/AnonVmClassesDuringDumpTransformer.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: AnonVmClassesDuringDumpTransformer
-Agent-Class: AnonVmClassesDuringDumpTransformer
-Can-Retransform-Classes: true
-Can-Redefine-Classes: true
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary test the ability to archive array classes and load them from the archive
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @compile ArrayTestHelper.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver ArrayTest
- */
-
-import java.util.List;
-import java.util.ArrayList;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ArrayTest {
-
-    static String arrayClasses[] = {
-        "ArrayTestHelper",
-        "[Ljava/lang/Comparable;",
-        "[I",
-        "[[[Ljava/lang/Object;",
-        "[[B"
-    };
-
-    public static void main(String[] args) throws Exception {
-        JarBuilder.build("arrayTestHelper", "ArrayTestHelper");
-
-        String appJar = TestCommon.getTestJar("arrayTestHelper.jar");
-        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
-
-        // create an archive containing array classes
-        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list(arrayClasses), bootClassPath);
-        // we currently don't support array classes during CDS dump
-        output.shouldContain("Preload Warning: Cannot find [Ljava/lang/Comparable;")
-              .shouldContain("Preload Warning: Cannot find [I")
-              .shouldContain("Preload Warning: Cannot find [[[Ljava/lang/Object;")
-              .shouldContain("Preload Warning: Cannot find [[B");
-
-        List<String> argsList = new ArrayList<String>();
-        argsList.add("-XX:+UnlockDiagnosticVMOptions");
-        argsList.add("-XX:+WhiteBoxAPI");
-        argsList.add("-cp");
-        argsList.add(appJar);
-        argsList.add(bootClassPath);
-        argsList.add("ArrayTestHelper");
-        // the following are input args to the ArrayTestHelper.
-        // skip checking array classes during run time
-        for (int i = 0; i < 1; i++) {
-            argsList.add(arrayClasses[i]);
-        }
-        String[] opts = new String[argsList.size()];
-        opts = argsList.toArray(opts);
-        TestCommon.run(opts).assertNormalExit();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTestHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class ArrayTestHelper {
-    public static void main(String[] args) throws Throwable {
-
-        // load the classes one by one and ensure each one is from
-        // the shared archive
-        for (int i = 0; i < args.length; i++) {
-
-            String cn = args[i].replace('/', '.');
-            Class cls = Class.forName(cn);
-
-            WhiteBox wb = WhiteBox.getWhiteBox();
-            if (wb.isSharedClass(cls)) {
-                System.out.println("As expected, " + args[i] + " is in shared space.");
-            } else {
-                throw new java.lang.RuntimeException(args[i] + " is not in shared space.");
-            }
-        }
-   }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary When dumping the CDS archive, try to cause garbage collection while classes are being loaded.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- * @build GCDuringDumpTransformer Hello
- * @run main/othervm GCDuringDump
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class GCDuringDump {
-    public static String appClasses[] = {
-        "Hello",
-    };
-    public static String agentClasses[] = {
-        "GCDuringDumpTransformer",
-    };
-
-    public static void main(String[] args) throws Throwable {
-        String agentJar =
-            ClassFileInstaller.writeJar("GCDuringDumpTransformer.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("GCDuringDumpTransformer.mf"),
-                                        agentClasses);
-
-        String appJar =
-            ClassFileInstaller.writeJar("GCDuringDumpApp.jar", appClasses);
-
-        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
-            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
-
-        for (int i=0; i<2; i++) {
-            // i = 0 -- run without agent = no extra GCs
-            // i = 1 -- run with agent = cause extra GCs
-
-            String extraArg = (i == 0) ? "-showversion" : "-javaagent:" + agentJar;
-            String extraOption = (i == 0) ? "-showversion" : "-XX:+AllowArchivingWithJavaAgent";
-
-            TestCommon.testDump(appJar, TestCommon.list("Hello"),
-                                "-XX:+UnlockDiagnosticVMOptions", extraOption,
-                                extraArg, "-Xmx32m", gcLog);
-
-            TestCommon.run(
-                "-cp", appJar,
-                "-Xmx32m",
-                "-XX:+PrintSharedSpaces",
-                "-XX:+UnlockDiagnosticVMOptions", extraOption,
-                gcLog,
-                "Hello")
-              .assertNormalExit();
-        }
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDumpTransformer.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.Instrumentation;
-import java.lang.instrument.IllegalClassFormatException;
-import java.security.ProtectionDomain;
-
-public class GCDuringDumpTransformer implements ClassFileTransformer {
-    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
-                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
-        try {
-            makeGarbage();
-        } catch (Throwable t) {
-            t.printStackTrace();
-            try {
-                Thread.sleep(200); // let GC to have a chance to run
-            } catch (Throwable t2) {}
-        }
-
-        return null;
-    }
-
-    private static Instrumentation savedInstrumentation;
-
-    public static void premain(String agentArguments, Instrumentation instrumentation) {
-        System.out.println("ClassFileTransformer.premain() is called");
-        instrumentation.addTransformer(new GCDuringDumpTransformer(), /*canRetransform=*/true);
-        savedInstrumentation = instrumentation;
-    }
-
-    public static Instrumentation getInstrumentation() {
-        return savedInstrumentation;
-    }
-
-    public static void agentmain(String args, Instrumentation inst) throws Exception {
-        premain(args, inst);
-    }
-
-    public static void makeGarbage() {
-        for (int x=0; x<10; x++) {
-            Object[] a = new Object[10000];
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDumpTransformer.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: GCDuringDumpTransformer
-Agent-Class: GCDuringDumpTransformer
-Can-Retransform-Classes: true
-Can-Redefine-Classes: true
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Similar to GCDuringDumping.java, this test adds the -XX:SharedArchiveConfigFile
- *          option for testing the interaction with GC and shared strings.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds.archived.java.heap
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- * @build sun.hotspot.WhiteBox GCDuringDumpTransformer GCSharedStringsDuringDumpWb
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=480 GCSharedStringsDuringDump
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-import sun.hotspot.WhiteBox;
-
-public class GCSharedStringsDuringDump {
-    public static String appClasses[] = {
-        "GCSharedStringsDuringDumpWb",
-    };
-    public static String agentClasses[] = {
-        "GCDuringDumpTransformer",
-    };
-
-    public static void main(String[] args) throws Throwable {
-        String agentJar =
-            ClassFileInstaller.writeJar("GCDuringDumpTransformer.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("GCDuringDumpTransformer.mf"),
-                                        agentClasses);
-
-        String appJar =
-            ClassFileInstaller.writeJar("GCSharedStringsDuringDumpApp.jar", appClasses);
-
-        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
-            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
-
-        String sharedArchiveCfgFile =
-            System.getProperty("user.dir") + File.separator + "GCSharedStringDuringDump_gen.txt";
-        try (FileOutputStream fos = new FileOutputStream(sharedArchiveCfgFile)) {
-            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
-            out.println("VERSION: 1.0");
-            out.println("@SECTION: String");
-            out.println("31: shared_test_string_unique_14325");
-            for (int i=0; i<100000; i++) {
-                String s = "generated_string " + i;
-                out.println(s.length() + ": " + s);
-            }
-            out.close();
-        }
-
-        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
-
-        for (int i=0; i<2; i++) {
-            // i = 0 -- run without agent = no extra GCs
-            // i = 1 -- run with agent = cause extra GCs
-
-            String extraArg = (i == 0) ? "-showversion" : "-javaagent:" + agentJar;
-            String extraOption = (i == 0) ? "-showversion" : "-XX:+AllowArchivingWithJavaAgent";
-            OutputAnalyzer output = TestCommon.dump(
-                                appJar, TestCommon.list("GCSharedStringsDuringDumpWb"),
-                                bootClassPath, extraArg, "-Xmx32m", gcLog,
-                                "-XX:SharedArchiveConfigFile=" + sharedArchiveCfgFile,
-                                "-XX:+UnlockDiagnosticVMOptions", extraOption);
-
-            if (output.getStdout().contains("Too many string space regions") ||
-                output.getStderr().contains("Unable to write archive heap memory regions") ||
-                output.getStdout().contains("Try increasing NewSize") ||
-                !output.getStdout().contains("oa0 space:") ||
-                output.getExitValue() != 0) {
-                // Try again with larger heap and NewSize, this should increase the
-                // G1 heap region size to 2M
-                TestCommon.testDump(
-                    appJar, TestCommon.list("GCSharedStringsDuringDumpWb"),
-                    bootClassPath, extraArg, "-Xmx8g", "-XX:NewSize=8m", gcLog,
-                    "-XX:SharedArchiveConfigFile=" + sharedArchiveCfgFile,
-                    "-XX:+UnlockDiagnosticVMOptions", extraOption);
-            }
-
-            TestCommon.run(
-                "-cp", appJar,
-                bootClassPath,
-                extraArg,
-                "-Xlog:cds=info,class+path=info",
-                "-Xmx32m",
-                "-XX:+PrintSharedSpaces",
-                "-XX:+UnlockDiagnosticVMOptions",
-                extraOption,
-                "-XX:+WhiteBoxAPI",
-                "-XX:SharedReadOnlySize=30m",
-                gcLog,
-                "GCSharedStringsDuringDumpWb")
-              .assertNormalExit();
-        }
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDumpWb.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class GCSharedStringsDuringDumpWb {
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        String s = "shared_test_string_unique_14325";
-        s = s.intern();
-        CheckString(wb, s);
-        for (int i=0; i<100000; i++) {
-            s = "generated_string " + i;
-            s = s.intern();
-            CheckString(wb, s);
-        }
-    }
-
-    public static void CheckString(WhiteBox wb, String s) {
-        if (!wb.areSharedStringsIgnored() && !wb.isShared(s)) {
-            throw new RuntimeException("String is not shared.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDump.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test how CDS dumping handles the existence of humongous G1 regions.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds.archived.java.heap
- * @requires vm.flavor != "minimal"
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- * @build HumongousDuringDumpTransformer Hello
- * @run main/othervm/timeout=240 HumongousDuringDump
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class HumongousDuringDump {
-    public static String appClasses[] = {
-        "Hello",
-    };
-    public static String agentClasses[] = {
-        "HumongousDuringDumpTransformer",
-    };
-
-    public static void main(String[] args) throws Throwable {
-        String agentJar =
-            ClassFileInstaller.writeJar("HumongousDuringDumpTransformer.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("HumongousDuringDumpTransformer.mf"),
-                                        agentClasses);
-
-        String appJar =
-            ClassFileInstaller.writeJar("HumongousDuringDumpApp.jar", appClasses);
-
-        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
-            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
-
-        String extraArg = "-javaagent:" + agentJar;
-        String extraOption = "-XX:+AllowArchivingWithJavaAgent";
-
-        OutputAnalyzer out =
-          TestCommon.testDump(appJar, TestCommon.list("Hello"),
-                              "-XX:+UnlockDiagnosticVMOptions", extraOption,
-                              "-Xlog:gc+region+cds",
-                              "-Xlog:gc+region=trace",
-                              extraArg, "-Xmx64m", gcLog);
-        out.shouldContain("(Unmovable) humongous regions have been found and may lead to fragmentation");
-        out.shouldContain("All free regions should be at the top end of the heap, but we found holes.");
-        out.shouldMatch("gc,region,cds. HeapRegion .* HUM. hole");
-        String pattern = "gc,region,cds. HeapRegion .*hole";
-        out.shouldMatch(pattern);
-        out.shouldNotMatch(pattern + ".*unexpected");
-
-        TestCommon.run(
-                "-cp", appJar,
-                "-verbose",
-                "-Xmx64m",
-                "-XX:+PrintSharedSpaces",
-                "-XX:+UnlockDiagnosticVMOptions", extraOption,
-                gcLog,
-                "Hello")
-              .assertNormalExit();
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDumpTransformer.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.Instrumentation;
-import java.lang.instrument.IllegalClassFormatException;
-import java.security.ProtectionDomain;
-
-// This test is sensitive to -Xmx. It must be run with -xmx64m.
-// Running with a different -Xmx requires changing the parameters and careful re-testing.
-public class HumongousDuringDumpTransformer implements ClassFileTransformer {
-    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
-                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
-        if (name.equals("Hello")) {
-            try {
-                makeHumongousRegions();
-            } catch (Throwable t) {
-                array = null;
-                humon = null;
-                System.out.println("Unexpected error: " + t);
-                t.printStackTrace();
-            }
-        }
-        array = null;
-        return null;
-    }
-
-    private static Instrumentation savedInstrumentation;
-
-    public static void premain(String agentArguments, Instrumentation instrumentation) {
-        long xmx = Runtime.getRuntime().maxMemory();
-        if (xmx < 60 * 1024 * 1024 || xmx > 80 * 1024 * 1024) {
-            System.out.println("Running with incorrect heap size: " + xmx);
-            System.exit(1);
-        }
-
-        System.out.println("ClassFileTransformer.premain() is called");
-        instrumentation.addTransformer(new HumongousDuringDumpTransformer(), /*canRetransform=*/true);
-        savedInstrumentation = instrumentation;
-    }
-
-    public static Instrumentation getInstrumentation() {
-        return savedInstrumentation;
-    }
-
-    public static void agentmain(String args, Instrumentation inst) throws Exception {
-        premain(args, inst);
-    }
-
-    Object[] array;
-
-    static final int DUMMY_SIZE = 4096 - 16 - 8;
-    static final int HUMON_SIZE = 4 * 1024 * 1024 - 16 - 8;
-    static final int SKIP = 13;
-
-    byte humon[] = null;
-    boolean first = true;
-
-    public synchronized void makeHumongousRegions() {
-        if (!first) {
-            return;
-        }
-        System.out.println("===============================================================================");
-        first = false;
-
-        int total = 0;
-        array = new Object[100000];
-        System.out.println(array);
-
-        // (1) Allocate about 8MB of old objects.
-        for (int n=0, i=0; total < 8 * 1024 * 1024; n++) {
-            // Make enough allocations to cause a GC (for 64MB heap) to create
-            // old regions.
-            //
-            // But don't completely fill up the heap. That would cause OOM and
-            // may not be handled gracefully inside class transformation!
-            Object x = new byte[DUMMY_SIZE];
-            if ((n  % SKIP) == 0) {
-                array[i++] = x;
-                total += DUMMY_SIZE;
-            }
-        }
-
-        System.gc();
-
-        // (2) Now allocate a humongous array. It will sit above the 8MB of old regions.
-        humon = new byte[HUMON_SIZE];
-        array = null;
-        System.gc();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/HumongousDuringDumpTransformer.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: HumongousDuringDumpTransformer
-Agent-Class: HumongousDuringDumpTransformer
-Can-Retransform-Classes: true
-Can-Redefine-Classes: true
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/CheckUnsupportedDumpingOptions.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Abort dumping if any of the new jigsaw vm options is specified.
- * @requires vm.cds
- * @library /test/lib ..
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile ../test-classes/Hello.java
- * @run driver CheckUnsupportedDumpingOptions
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CheckUnsupportedDumpingOptions {
-    private static final String[] jigsawOptions = {
-        "--limit-modules",
-        "--upgrade-module-path",
-        "--patch-module"
-    };
-    private static final String[] optionValues = {
-        "mymod",
-        ".",
-        "java.naming=javax.naming.spi.NamingManger"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-            InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-            "mods/java.naming");
-
-        JarBuilder.build("hello", "Hello");
-        String appJar = TestCommon.getTestJar("hello.jar");
-        String appClasses[] = {"Hello"};
-        for (int i = 0; i < jigsawOptions.length; i++) {
-            OutputAnalyzer output;
-            output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
-                                     jigsawOptions[i], optionValues[i]);
-            output.shouldContain("Cannot use the following option " +
-                "when dumping the shared archive: " + jigsawOptions[i])
-                  .shouldHaveExitValue(1);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test combinations of jigsaw options that affect the use of AppCDS
- *
- * @requires vm.cds & !vm.graal.enabled
- * @library /test/lib ..
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile ../test-classes/Hello.java ../test-classes/HelloMore.java
- * @run driver JigsawOptionsCombo
- */
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-import java.util.ArrayList;
-
-
-// Remaining WORK: TODO:
-// 1. test with -m initial-module; waiting for changes from Chris will provide
-//    utils to build modules
-// 2. Loading classes from Jmod files - waiting on utils
-// 3. Loading classes from exploded module dir"
-
-public class JigsawOptionsCombo {
-
-    public static void main(String[] args) throws Exception {
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-            InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-            "mods/java.naming");
-
-        JarBuilder.build("hello", "Hello");
-        JarBuilder.build("hello_more", "HelloMore");
-
-        (new JigsawOptionsCombo()).runTests();
-    }
-
-
-    private ArrayList<TestCase> testCaseTable = new ArrayList<TestCase>();
-
-    public static String infoDuringDump(String option) {
-        return "Cannot use the following option when dumping the shared archive: " + option;
-    }
-
-    public void runTests() throws Exception {
-
-        testCaseTable.add(new TestCase(
-            "basic: Basic dump and execute, to verify the test plumbing works",
-            "", "", 0,
-            "", "", 0, true) );
-
-        String bcpArg = "-Xbootclasspath/a:" +
-        TestCommon.getTestJar("hello_more.jar");
-
-        testCaseTable.add(new TestCase(
-            "Xbootclasspath/a: is OK for both dump and run time",
-            bcpArg, "", 0,
-            bcpArg, "", 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "module-path-01: --module-path is ignored for dump time",
-            "--module-path mods", "", 0,
-            null, null, 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "module-path-02: --module-path is ok for run time",
-            "", "", 0,
-            "--module-path mods", "", 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "add-modules-01: --add-modules is ok at dump time",
-            "--add-modules java.management",
-            "", 0,
-            null, null, 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "add-modules-02: --add-modules is ok at run time",
-            "", "", 0,
-            "--add-modules java.management", "", 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "limit-modules-01: --limit-modules is ignored at dump time",
-            "--limit-modules java.base",
-            infoDuringDump("--limit-modules"), 1,
-            null, null, 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "limit-modules-02: --limit-modules is ok at run time",
-            "", "", 0,
-            "--limit-modules java.base", "", 0, false) );
-
-        testCaseTable.add(new TestCase(
-            "upgrade-module-path-01: --upgrade-module-path is ignored at dump time",
-            "--upgrade-module-path mods",
-            infoDuringDump("--upgrade-module-path"), 1,
-            null, null, 0, true) );
-
-        testCaseTable.add(new TestCase(
-            "-upgrade-module-path-module-path-02: --upgrade-module-path is ok at run time",
-            "", "", 0,
-            "--upgrade-module-path mods", "", 0, false) );
-
-        for (TestCase tc : testCaseTable) tc.execute();
-    }
-
-
-    // class representing a singe test case
-    public class TestCase {
-        String description;
-        String dumpTimeArgs;
-        String dumpTimeExpectedOutput;
-        int    dumpTimeExpectedExitValue;
-        String runTimeArgs;
-        String runTimeExpectedOutput;
-        int    runTimeExpectedExitValue;
-        boolean sharingOn;
-
-        private String appJar = TestCommon.getTestJar("hello.jar");
-        private String appClasses[] = {"Hello"};
-
-
-        public TestCase(String description,
-            String dumpTimeArgs, String dumpTimeExpectedOutput, int dumpTimeExpectedExitValue,
-            String runTimeArgs, String runTimeExpectedOutput, int runTimeExpectedExitValue,
-            boolean sharingOn) {
-
-            this.description = description;
-            this.dumpTimeArgs = dumpTimeArgs;
-            this.dumpTimeExpectedOutput = dumpTimeExpectedOutput;
-            this.dumpTimeExpectedExitValue = dumpTimeExpectedExitValue;
-            this.runTimeArgs = runTimeArgs;
-            this.runTimeExpectedOutput = runTimeExpectedOutput;
-            this.runTimeExpectedExitValue = runTimeExpectedExitValue;
-            this.sharingOn = sharingOn;
-        }
-
-
-        public void execute() throws Exception {
-            System.out.println("Description: " + description);
-
-            // ===== dump step - create the archive
-            OutputAnalyzer dumpOutput = TestCommon.dump(
-                appJar, appClasses, getDumpOptions());
-
-            if (dumpTimeExpectedExitValue == 0) {
-                TestCommon.checkDump(dumpOutput, dumpTimeExpectedOutput);
-            } else {
-                dumpOutput.shouldMatch(dumpTimeExpectedOutput);
-                dumpOutput.shouldHaveExitValue(dumpTimeExpectedExitValue);
-            }
-
-            // ===== exec step - use the archive
-            if (runTimeArgs != null) {
-                OutputAnalyzer execOutput = TestCommon.exec(appJar, getRunOptions());
-
-                if (runTimeExpectedExitValue == 0) {
-                    if (sharingOn) {
-                        TestCommon.checkExec(execOutput, runTimeExpectedOutput, "Hello World");
-                    } else {
-                        execOutput.shouldHaveExitValue(0)
-                                  .shouldContain(runTimeExpectedOutput)
-                                  .shouldContain("Hello World");
-                    }
-                } else {
-                    execOutput.shouldMatch(dumpTimeExpectedOutput);
-                    execOutput.shouldHaveExitValue(dumpTimeExpectedExitValue);
-                }
-            }
-        }
-
-
-        // dump command line options can be separated by a space
-        private String[] getDumpOptions() {
-            return dumpTimeArgs.split(" ");
-        }
-
-
-        // run command line options can be separated by a space
-        private String[] getRunOptions() {
-            ArrayList<String> result = new ArrayList<>();
-
-            if (runTimeArgs != "") {
-                String splitArgs[] = runTimeArgs.split(" ");
-                for (String arg : splitArgs)
-                    result.add(arg);
-            }
-
-            result.add("Hello");
-            return result.toArray(new String[1]);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/AppClassInCP.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary a test to demonstrate that an application class in the -cp
- *          will be archived although --patch-module is specified. The class in
- *          the -cp has no dependencies on the class in the --patch-module.
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver AppClassInCP
- */
-
-import java.io.File;
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class AppClassInCP {
-    private static String moduleJar;
-    private static String appJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        String classDir = System.getProperty("test.classes");
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-             classDir);
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        String source2 = "package mypackage; "                +
-                        "public class Hello { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"Hello!\"); " +
-                        "    } "                                    +
-                        "}";
-        ClassFileInstaller.writeClassToDisk("mypackage/Hello",
-             InMemoryJavaCompiler.compile("mypackage.Hello", source2),
-             classDir);
-
-        JarBuilder.build("hello", "mypackage/Hello");
-        appJar = TestCommon.getTestJar("hello.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        OutputAnalyzer output =
-            TestCommon.dump(appJar,
-                TestCommon.list("javax/naming/spi/NamingManager", "mypackage/Hello"),
-                "--patch-module=java.naming=" + moduleJar,
-                "-Xlog:class+load",
-                "PatchMain", "javax.naming.spi.NamingManager", "mypackage.Hello");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        String classPath = appJar + File.pathSeparator + classDir;
-        System.out.println("classPath: " + classPath);
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-cp", classPath,
-            "--patch-module=java.naming=" + moduleJar,
-            "-Xlog:class+load",
-            "PatchMain", "javax.naming.spi.NamingManager", "mypackage.Hello")
-            .assertSilentlyDisabledCDS(0, "I pass!", "Hello!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/CustomPackage.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary if a class is defined to a package which is not defined to any
- *          module in the jimage, the class will not be found during dump
- *          time but it will be used during run time.
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver CustomPackage
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class CustomPackage {
-    private static String moduleJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.myspi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/myspi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.myspi.NamingManager", source, "--patch-module=java.naming"),
-             System.getProperty("test.classes"));
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/myspi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        OutputAnalyzer output =
-            TestCommon.dump(null,
-                TestCommon.list("javax/naming/myspi/NamingManager"),
-                "--patch-module=java.naming=" + moduleJar,
-                "-Xlog:class+load",
-                "-Xlog:class+path=info",
-                "PatchMain", "javax.naming.myspi.NamingManager");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "--patch-module=java.naming=" + moduleJar,
-            "-Xlog:class+load",
-            "-Xlog:class+path=info",
-            "PatchMain", "javax.naming.myspi.NamingManager")
-            .assertSilentlyDisabledCDS(0, "I pass!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/MismatchedPatchModule.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary different settings of --patch-module at dump time and runtime are
- *          acceptable. The class found in runtime --patch-module entry should
- *          be used.
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver MismatchedPatchModule
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class MismatchedPatchModule {
-    private static String moduleJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-             System.getProperty("test.classes"));
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        // Case 1: --patch-module specified for dump time
-        System.out.println("Case 1: --patch-module specified for dump time and run time");
-        OutputAnalyzer output =
-            TestCommon.dump(null,
-                TestCommon.list("javax/naming/spi/NamingManager"),
-                "--patch-module=java.naming=" + moduleJar,
-                "PatchMain", "javax.naming.spi.NamingManager");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        // Case 2: --patch-module specified for run time but not for dump time
-        System.out.println("Case 2: --patch-module specified for run time but not for dump time");
-        String appJar = JarBuilder.build("PatchMain-app", "PatchMain");
-        output =
-            TestCommon.dump(appJar,
-                TestCommon.list("javax/naming/spi/NamingManager"),
-                "PatchMain", "javax.naming.spi.NamingManager");
-        TestCommon.checkDump(output);
-
-        // javax.naming.spi.NamingManager is patched at runtime
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "--patch-module=java.naming=" + moduleJar,
-            "--patch-module=java.naming2=" + moduleJar,
-            "-Xlog:class+path=info",
-            "PatchMain", "javax.naming.spi.NamingManager")
-            .assertSilentlyDisabledCDS(0, "I pass!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchDir.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary a simple test to ensure that a directory in the --patch-module
- *          option does not affect dump process
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver PatchDir
- */
-
-import java.io.File;
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-
-public class PatchDir {
-    private static String moduleJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        String classDir = System.getProperty("test.classes");
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-             classDir);
-
-        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        TestCommon.dump(null,
-            TestCommon.list("javax/naming/spi/NamingManager"),
-            "--patch-module=java.naming=" + moduleJar,
-            "-Xlog:class+load",
-            "PatchMain", "javax.naming.spi.NamingManager")
-            .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module")
-            .shouldHaveExitValue(1);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchJavaBase.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary sharing is disabled if java.base is patch at runtime
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver PatchJavaBase
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class PatchJavaBase {
-    private static String moduleJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        String source = "package java.lang; "                       +
-                        "public class NewClass { "                  +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("java/lang/NewClass",
-             InMemoryJavaCompiler.compile("java.lang.NewClass", source, "--patch-module=java.base"),
-             System.getProperty("test.classes"));
-
-        JarBuilder.build("javabase", "java/lang/NewClass");
-        moduleJar = TestCommon.getTestJar("javabase.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        String runError = "Unable to use shared archive: CDS is disabled when java.base module is patched";
-        String dumpingError = "Cannot use the following option when dumping the shared archive: --patch-module";
-        String errMsg;
-        if (TestCommon.isDynamicArchive()) {
-            errMsg = runError;
-        } else {
-            errMsg = dumpingError;
-        }
-        OutputAnalyzer output =
-            TestCommon.dump(null, null,
-                "--patch-module=java.base=" + moduleJar,
-                "PatchMain", "java.lang.NewClass");
-        output.shouldHaveExitValue(1)
-              .shouldContain(errMsg);
-
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "--patch-module=java.base=" + moduleJar,
-            "PatchMain", "java.lang.NewClass")
-          .assertAbnormalExit(runError);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchMain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-// This loads the class affected by the --patch-module option.  For the test to pass
-// it must load the class from the --patch-module directory, not the jimage file.
-public class PatchMain {
-    public static void main(String[] args) throws Exception {
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("cdsutils.DynamicDumpHelper")) {
-                break;
-            }
-            Class.forName(args[i]);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/Simple.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary a simple test to ensure that class is loaded from jar file in --patch-module at runtime
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver Simple
- */
-
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class Simple {
-    private static String moduleJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-             System.getProperty("test.classes"));
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        OutputAnalyzer output =
-            TestCommon.dump(null,
-                TestCommon.list("javax/naming/spi/NamingManager"),
-                "--patch-module=java.naming=" + moduleJar,
-                "-Xlog:class+load",
-                "-Xlog:class+path=info",
-                "PatchMain", "javax.naming.spi.NamingManager");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "--patch-module=java.naming=" + moduleJar,
-            "-Xlog:class+load",
-            "-Xlog:class+path=info",
-            "PatchMain", "javax.naming.spi.NamingManager")
-            .assertSilentlyDisabledCDS(0, "I pass!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary the class in the -cp is a subclass of the class in --patch-module. The
- *          patched class should be used at runtime.
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver SubClassOfPatchedClass
- */
-
-import java.io.File;
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class SubClassOfPatchedClass {
-    private static String moduleJar;
-    private static String appJar;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming; "                +
-                        "public class Reference { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        String classDir = System.getProperty("test.classes");
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/Reference",
-             InMemoryJavaCompiler.compile("javax.naming.Reference", source, "--patch-module=java.naming"),
-             classDir);
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/Reference");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        String source2 = "package mypackage; "                +
-                        "public class MyReference extends javax.naming.Reference { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"MyReference!\"); " +
-                        "    } "                                    +
-                        "    public MyReference(String mystring) { " +
-                        "        super(mystring); " +
-                        "    } " +
-                        "}";
-        ClassFileInstaller.writeClassToDisk("mypackage/MyReference",
-             InMemoryJavaCompiler.compile("mypackage.MyReference", source2),
-             classDir);
-
-        JarBuilder.build("myjavanaming", "mypackage/MyReference");
-        appJar = TestCommon.getTestJar("myjavanaming.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        OutputAnalyzer output =
-            TestCommon.dump(appJar,
-                TestCommon.list("javax/naming/Reference", "mypackage/MyReference"),
-                "--patch-module=java.naming=" + moduleJar,
-                "-Xlog:class+load",
-                "PatchMain", "javax.naming.Reference", "mypackage.MyReference");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        String classPath = appJar + File.pathSeparator + classDir;
-        System.out.println("classPath: " + classPath);
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "-cp", classPath,
-            "--patch-module=java.naming=" + moduleJar,
-            "-Xlog:class+load",
-            "PatchMain", "javax.naming.Reference", "mypackage.MyReference")
-            .assertSilentlyDisabledCDS(0, "MyReference source: file:", "I pass!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/TwoJars.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @requires vm.cds
- * @summary a patched class found in --patch-module should be used at runtime
- * @library ../..
- * @library /test/hotspot/jtreg/testlibrary
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @build PatchMain
- * @run driver TwoJars
- */
-
-import java.io.File;
-import jdk.test.lib.compiler.InMemoryJavaCompiler;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class TwoJars {
-    private static String moduleJar;
-    private static String moduleJar2;
-
-    public static void main(String args[]) throws Throwable {
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming.jar file.
-        String source = "package javax.naming.spi; "                +
-                        "public class NamingManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I pass!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        // Create a class file in the module java.naming. This class file
-        // will be put in the javanaming2.jar file.
-        String source2 = "package javax.naming.spi; "                +
-                        "public class DirectoryManager { "             +
-                        "    static { "                             +
-                        "        System.out.println(\"I fail!\"); " +
-                        "    } "                                    +
-                        "}";
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
-             System.getProperty("test.classes"));
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
-        moduleJar = TestCommon.getTestJar("javanaming.jar");
-
-        ClassFileInstaller.writeClassToDisk("javax/naming/spi/DirectoryManager",
-             InMemoryJavaCompiler.compile("javax.naming.spi.DirectoryManager", source2, "--patch-module=java.naming"),
-             System.getProperty("test.classes"));
-
-        // Build the jar file that will be used for the module "java.naming".
-        JarBuilder.build("javanaming2", "javax/naming/spi/DirectoryManager");
-        moduleJar2 = TestCommon.getTestJar("javanaming2.jar");
-
-        System.out.println("Test dumping with --patch-module");
-        OutputAnalyzer output =
-            TestCommon.dump(null,
-                TestCommon.list("javax/naming/spi/NamingManager"),
-                "--patch-module=java.naming=" + moduleJar2 + File.pathSeparator + moduleJar,
-                "-Xlog:class+load",
-                "-Xlog:class+path=info",
-                "PatchMain", "javax.naming.spi.NamingManager");
-        output.shouldHaveExitValue(1)
-              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
-
-        TestCommon.run(
-            "-XX:+UnlockDiagnosticVMOptions",
-            "--patch-module=java.naming=" + moduleJar2 + File.pathSeparator + moduleJar,
-            "-Xlog:class+load",
-            "-Xlog:class+path=info",
-            "PatchMain", "javax.naming.spi.NamingManager")
-            .assertSilentlyDisabledCDS(0, "I pass!");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/**
- * @test
- * @summary AppCDS tests for testing -Xbootclasspath/a
- * @requires vm.cds & !vm.graal.enabled
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile src/jdk/test/Main.java
- * @compile src/com/sun/tools/javac/MyMain.jasm
- * @compile src/sun/nio/cs/ext/MyClass.java
- * @compile src/sun/nio/cs/ext1/MyClass.java
- * @run driver BootAppendTests
- */
-
-import java.io.File;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class BootAppendTests {
-    private static final String TEST_SRC = System.getProperty("test.src");
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path CLASSES_DIR = Paths.get("classes");
-
-    private static final String MAIN_CLASS = "jdk.test.Main";
-    private static final String APP_MODULE_CLASS = "com/sun/tools/javac/MyMain";
-    private static final String BOOT_APPEND_MODULE_CLASS = "sun/nio/cs/ext/MyClass";
-    private static final String BOOT_APPEND_CLASS = "sun/nio/cs/ext1/MyClass";
-    private static final String[] ARCHIVE_CLASSES =
-         {APP_MODULE_CLASS, BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_CLASS};
-
-    private static String appJar;
-    private static String bootAppendJar;
-    private static String testArchiveName;
-
-    public static void main(String... args) throws Exception {
-        dumpArchive();
-
-        System.out.println("TESTCASE: 1: testBootAppendModuleClassWithoutAppCDS");
-        testBootAppendModuleClassWithoutAppCDS();
-
-        System.out.println("TESTCASE: 2" );
-        testBootAppendModuleClassWithAppCDS();
-
-        System.out.println("TESTCASE: 3" );
-        testBootAppendExcludedModuleClassWithoutAppCDS();
-
-        System.out.println("TESTCASE: 4" );
-        testBootAppendExcludedModuleClassWithAppCDS();
-
-        System.out.println("TESTCASE: 5" );
-        testBootAppendClassWithoutAppCDS();
-
-        System.out.println("TESTCASE: 6" );
-        testBootAppendClassWithAppCDS();
-
-        System.out.println("TESTCASE: 7" );
-        testBootAppendAppModuleClassWithoutAppCDS();
-
-        System.out.println("TESTCASE: 9" );
-        testBootAppendAppModuleClassWithAppCDS();
-
-        System.out.println("TESTCASE: 9" );
-        testBootAppendAppExcludeModuleClassWithoutAppCDS();
-
-        System.out.println("TESTCASE: 10" );
-        testBootAppendAppExcludeModuleClassAppCDS();
-    }
-
-    static void dumpArchive() throws Exception {
-        JarBuilder.build("classpathtests", "jdk/test/Main");
-        appJar = TestCommon.getTestJar("classpathtests.jar");
-
-        JarBuilder.build("bootAppend",
-                         APP_MODULE_CLASS, BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_CLASS);
-        bootAppendJar = TestCommon.getTestJar("bootAppend.jar");
-
-        OutputAnalyzer output1  = TestCommon.dump(
-            appJar, TestCommon.list(ARCHIVE_CLASSES), "-Xbootclasspath/a:" + bootAppendJar);
-        TestCommon.checkDump(output1);
-
-        if (!TestCommon.isUnableToMap(output1)) {
-            // Make sure all the classes were successfully archived.
-            for (String archiveClass : ARCHIVE_CLASSES) {
-                output1.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
-            }
-        }
-
-        testArchiveName = TestCommon.getCurrentArchiveName();
-    }
-
-    // Test #1: A class in package defined in boot module
-    //    - should not be loaded from the -Xbootclasspath/a without AppCDS
-    public static void testBootAppendModuleClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #1", BOOT_APPEND_MODULE_CLASS, "false");
-
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-    // Test #2: A shared class in package defined in boot module that's archived
-    //          from -Xbootclasspath/a
-    //     - should not be loaded by AppCDS
-    public static void testBootAppendModuleClassWithAppCDS() throws Exception {
-        OutputAnalyzer output = TestCommon.exec(
-            appJar,
-            "-Xbootclasspath/a:" + bootAppendJar,
-            MAIN_CLASS,
-            "Test #2", BOOT_APPEND_MODULE_CLASS, "false");
-        TestCommon.checkExec(output);
-    }
-
-
-    // Test #3: A class in excluded package defined in boot module
-    //     - should be loaded from the -Xbootclasspath/a by the boot classloader
-    public static void testBootAppendExcludedModuleClassWithoutAppCDS() throws Exception {
-        TestCommon.run(
-            "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
-            "-Xlog:class+load=info",
-            "--limit-modules", "java.base",
-            MAIN_CLASS, "Test #3", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
-            });
-    }
-
-    // Test #4: A shared class in excluded package that's archived from
-    //          -Xbootclasspath/a
-    //     - should be loaded from the jar since AppCDS will be disabled with
-    //       the --limit-modules option
-    public static void testBootAppendExcludedModuleClassWithAppCDS() throws Exception {
-        TestCommon.run(
-            "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
-            "-Xlog:class+load=info",
-            "--limit-modules", "java.base",
-            MAIN_CLASS,
-            "Test #4", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
-            });
-    }
-
-
-    // Test #5: A class not in package defined in boot module
-    //    - should be loaded from the -Xbootclasspath/a without AppCDS
-    public static void testBootAppendClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #5", BOOT_APPEND_CLASS, "true", "BOOT");
-
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-
-    // Test #6: A shared class not in package defined in boot module that's
-    //          archived from -Xbootclasspath/a
-    //    - should be loaded from the archive by the bootstrap class loader
-    public static void testBootAppendClassWithAppCDS() throws Exception {
-        OutputAnalyzer output = TestCommon.exec(
-            appJar,
-            "-Xbootclasspath/a:" + bootAppendJar,
-            "-XX:+TraceClassLoading",
-            MAIN_CLASS,
-            "Test #6", BOOT_APPEND_CLASS, "true", "BOOT");
-        TestCommon.checkExec(output);
-        if (!TestCommon.isUnableToMap(output))
-            output.shouldContain("[class,load] sun.nio.cs.ext1.MyClass source: shared objects file");
-    }
-
-
-    // Test #7: A class in package defined in jimage app module
-    //    - should not be loaded from the -Xbootclasspath/a without AppCDS
-    public static void testBootAppendAppModuleClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #7", APP_MODULE_CLASS, "false");
-
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-
-    // Test #8: A shared class in package defined in jimage app module that's
-    //          archived from -Xbootclasspath/a
-    //    - should not be loaded from the archive
-    public static void testBootAppendAppModuleClassWithAppCDS() throws Exception {
-        OutputAnalyzer output = TestCommon.exec(
-            appJar,
-            "-Xbootclasspath/a:" + bootAppendJar,
-            MAIN_CLASS,
-            "Test #8", APP_MODULE_CLASS, "false");
-        TestCommon.checkExec(output);
-    }
-
-
-    // Test #9: A class in excluded package defined in jimage app module
-    //    - should be loaded from the -Xbootclasspath/a without AppCDS
-    public static void testBootAppendAppExcludeModuleClassWithoutAppCDS()
-        throws Exception {
-
-        TestCommon.run(
-            "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
-            "-Xlog:class+load=info",
-            "--limit-modules", "java.base",
-            MAIN_CLASS, "Test #9", APP_MODULE_CLASS, "true", "BOOT")
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch(".class.load. com.sun.tools.javac.MyMain source:.*bootAppend.jar");
-            });
-    }
-
-    // Test #10: A shared class in excluded package defined in jimage app module
-    //    - should be loaded from the -Xbootclasspath/a with AppCDS
-    public static void testBootAppendAppExcludeModuleClassAppCDS() throws Exception {
-        TestCommon.run(
-            "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
-            "-Xlog:class+load=info",
-            "--limit-modules", "java.base",
-            MAIN_CLASS, "Test #10", APP_MODULE_CLASS, "true", "BOOT")
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch(".class.load. com.sun.tools.javac.MyMain source:.*bootAppend.jar");
-            });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds & !vm.graal.enabled
- * @library ../..
- * @library /test/lib
- * @modules java.compiler
- *          java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @compile src/jdk/test/Main.java
- * @compile src/com/sun/tools/javac/Main.jasm
- * @compile src/com/sun/tools/javac/MyMain.jasm
- * @compile ../../../SharedArchiveFile/javax/annotation/processing/FilerException.jasm
- * @run driver ClassPathTests
- * @summary AppCDS tests for testing classpath/package conflicts
- */
-
-/*
- * These tests will verify that AppCDS will correctly handle archived classes
- * on the classpath that are in a package that is also exported by the jimage.
- * These classes should fail to load unless --limit-modules is used to hide the
- * package exported by the jimage. There are 8 variants of this test:
- *   - With a jimage app package and with a jimage ext package
- *   - With --limit-modules and without --limit-modules
- *   - With AppCDS and without AppCDS (to verify behaviour is the same for both).
- *
- * There is also a 9th test to verify that when --limit-modules is used, a jimage
- * class in the archive can be replaced by a classpath class with the
- * same name and package.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.Asserts;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-
-import jtreg.SkippedException;
-
-
-public class ClassPathTests {
-    private static final String TEST_SRC = System.getProperty("test.src");
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path CLASSES_DIR = Paths.get("classes");
-
-    // the test module
-    private static final String MAIN_CLASS = "jdk.test.Main";
-    private static final String LIMITMODS_MAIN_CLASS = "jdk.test.LimitModsMain";
-
-    // test classes to archive. These are both in UPGRADED_MODULES
-    private static final String JIMAGE_CLASS      = "com/sun/tools/javac/Main";
-    private static final String APP_ARCHIVE_CLASS = "com/sun/tools/javac/MyMain";
-    private static final String PLATFORM_ARCHIVE_CLASS = "javax/annotation/processing/FilerException";
-    private static final String[] ARCHIVE_CLASSES = {APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS, JIMAGE_CLASS};
-    private static final int NUMBER_OF_TEST_CASES = 10;
-
-    private static String appJar;
-    private static String testArchiveName;
-
-
-    public static void main(String[] args) throws Throwable {
-        ClassPathTests tests = new ClassPathTests();
-        tests.dumpArchive();
-
-        Method[] methods = tests.getClass().getDeclaredMethods();
-        int numOfTestMethodsRun = 0;
-        for (Method m : methods) {
-            if (m.getName().startsWith("test")) {
-                System.out.println("About to run test method: " + m.getName());
-                try {
-                    m.invoke(tests);
-                } catch (InvocationTargetException ite) {
-                    Throwable throwable = ite.getCause();
-                    if (throwable instanceof SkippedException) {
-                        throw throwable;
-                    } else {
-                        throw ite;
-                    }
-                }
-                numOfTestMethodsRun++;
-            }
-        }
-
-        Asserts.assertTrue((numOfTestMethodsRun == NUMBER_OF_TEST_CASES),
-            "Expected " + NUMBER_OF_TEST_CASES + " test methods to run, actual number is "
-            + numOfTestMethodsRun);
-    }
-
-    private void dumpArchive() throws Exception {
-        // Create a jar file with all the classes related to this test.
-        JarBuilder.build( "classpathtests",
-                          APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS, JIMAGE_CLASS,
-                          "jdk/test/Main");
-        appJar = TestCommon.getTestJar("classpathtests.jar");
-
-        // dump the archive with altnernate jdk.comiler and jdk.activation classes in the class list
-        OutputAnalyzer output1  = TestCommon.dump(appJar, TestCommon.list(ARCHIVE_CLASSES));
-        TestCommon.checkDump(output1);
-        // The PLATFORM_ARCHIVE_CLASS belongs to the java.compiler
-        // module will be found from the module during dumping.
-        // The JIMAGE_CLASS will be found from the jdk.compiler module during
-        // dumping.
-        // The APP_ARCHIVE_CLASS, which belongs to a package within the
-        // jdk.compiler module, will not be found during dump time.
-        for (String archiveClass : ARCHIVE_CLASSES) {
-            if (archiveClass.equals(APP_ARCHIVE_CLASS)) {
-                output1.shouldContain("Preload Warning: Cannot find " + archiveClass);
-            } else {
-                output1.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
-            }
-        }
-
-        testArchiveName = TestCommon.getCurrentArchiveName();
-    }
-
-    // #1: Archived classpath class in same package as jimage app class. With AppCDS.
-    // Should fail to load.
-    public void testAppClassWithAppCDS() throws Exception {
-        OutputAnalyzer output = TestCommon.exec(
-            appJar, MAIN_CLASS,
-            "Test #1", APP_ARCHIVE_CLASS, "false"); // last 3 args passed to test
-        TestCommon.checkExec(output);
-    }
-
-    // #2: Archived classpath class in same package as jimage app class. Without AppCDS.
-    // Should fail to load.
-    public void testAppClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-cp", appJar)
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #2", APP_ARCHIVE_CLASS, "false");
-
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-    // #3: Archived classpath class in same package as jimage ext class. With AppCDS.
-    // The class should be loaded from the module.
-    public void testExtClassWithAppCDS() throws Exception {
-        OutputAnalyzer output = TestCommon.exec(
-            appJar, MAIN_CLASS,
-            "Test #3", PLATFORM_ARCHIVE_CLASS, "true", "EXT"); // last 4 args passed to test
-        TestCommon.checkExec(output);
-    }
-
-    // #4: Archived classpath class in same package as jimage ext class. Without AppCDS.
-    // The class should be loaded from the module.
-    public void testExtClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-cp", appJar)
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #4", PLATFORM_ARCHIVE_CLASS, "true", "EXT");
-
-        CDSTestUtils.runWithArchiveAndCheck(opts);
-    }
-
-    // #5: Archived classpath class in same package as jimage app class. With AppCDS.
-    // Should load with CDS disabled because --limit-modules is used.
-    public void testAppClassWithLimitModsWithAppCDS() throws Exception {
-        TestCommon.run("-cp", appJar,
-                       "--limit-modules", "java.base",
-                       MAIN_CLASS,
-                       "Test #5", APP_ARCHIVE_CLASS, "true") // last 3 args passed to test
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-
-    // #6: Archived classpath class in same package as jimage app class. Without AppCDS.
-    // Should load with CDS disabled because --limit-modules is used.
-    public void testAppClassWithLimitModsWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #6", APP_ARCHIVE_CLASS, "true");
-        CDSTestUtils.run(opts)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-
-    // #7: Archived classpath class in same package as jimage ext class. With AppCDS.
-    // Should load with CDS disabled because --limit-modules is used.
-    public void testExtClassWithLimitModsWithAppCDS() throws Exception {
-        TestCommon.run("-cp", appJar,
-                       "--limit-modules", "java.base",
-                       MAIN_CLASS,
-                       "Test #7", PLATFORM_ARCHIVE_CLASS, "true") // last 3 args passed to test
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-
-    // #8: Archived classpath class in same package as jimage ext class. Without AppCDS.
-    // Should load with CDS disabled because --limit-modules is used.
-    public void testExtClassWithLimitModsWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #8", PLATFORM_ARCHIVE_CLASS, "true");
-        CDSTestUtils.run(opts)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-
-    // #9: Archived classpath class with same name as jimage app class. With AppCDS.
-    // Should load with CDS disabled because --limit-modules is used.
-    public void testReplacingJImageClassWithAppCDS() throws Exception {
-        TestCommon.run("-cp", appJar,
-                       "--limit-modules", "java.base",
-                       MAIN_CLASS,
-                       "Test #9", JIMAGE_CLASS, "true") // last 3 args passed to test
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-
-    // #10: Archived classpath class with same name as jimage app class. Without AppCDS.
-    // Should load because --limit-modules is used. Note the archive will actually contain
-    // the original jimage version of the class, but AppCDS should refuse to load it
-    // since --limit-modules is used. This should result in the -cp version being used.
-    public void testReplacingJImageClassWithoutAppCDS() throws Exception {
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
-            .setArchiveName(testArchiveName)
-            .addSuffix(MAIN_CLASS, "Test #10", JIMAGE_CLASS, "true");
-        CDSTestUtils.run(opts)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0);
-            });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Ensure that classes found in jimage takes precedence over classes found in -Xbootclasspath/a.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.compiler
- *          jdk.jartool/sun.tools.jar
- * @compile ../../test-classes/DummyClassHelper.java
- * @compile ../../test-classes/java/net/HttpCookie.jasm
- * @compile ../../../SharedArchiveFile/javax/annotation/processing/FilerException.jasm
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver DummyClassesInBootClassPath
- */
-
-import java.io.File;
-import java.util.List;
-import java.util.ArrayList;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class DummyClassesInBootClassPath {
-    private static final String METHOD_NAME = "thisClassIsDummy()";
-
-    static void checkOutput(OutputAnalyzer output, String[] classNames) throws Exception {
-        for (int i = 0; i < classNames.length; i++) {
-            String cn = classNames[i].replace('/', '.');
-            TestCommon.checkExec(output,
-                "java.lang.NoSuchMethodException: " + cn + "." +
-                METHOD_NAME);
-            output.shouldNotContain(cn + ".class should be in shared space.");
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        String classNames[] = { "java/net/HttpCookie",
-                                "javax/annotation/processing/FilerException"};
-        JarBuilder.build("dummyClasses", classNames[0], classNames[1]);
-
-        String appJar = TestCommon.getTestJar("dummyClasses.jar");
-        OutputAnalyzer dumpOutput = TestCommon.dump(
-            appJar, classNames, "-Xbootclasspath/a:" + appJar);
-        TestCommon.checkDump(dumpOutput);
-
-        List<String> argsList = new ArrayList<String>();
-        for (int i = 0; i < classNames.length; i++) {
-            argsList.add(classNames[i].replace('/', '.'));
-        }
-        String[] arguments = new String[argsList.size()];
-        arguments = argsList.toArray(arguments);
-        TestCommon.run(
-            "-Xbootclasspath/a:" + appJar,
-            "DummyClassHelper", arguments[0], arguments[1])
-          .assertNormalExit(output -> checkOutput(output, classNames));
-
-        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
-        String bootClassPath = "-Xbootclasspath/a:" + appJar +
-            File.pathSeparator + whiteBoxJar;
-        dumpOutput = TestCommon.dump(
-            appJar, classNames, bootClassPath);
-        argsList.add("testWithWhiteBox");
-        arguments = new String[argsList.size()];
-        arguments = argsList.toArray(arguments);
-        String[] opts = {"-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
-            bootClassPath, "-Xlog:class+path=trace",
-            "DummyClassHelper", arguments[0], arguments[1], arguments[2]};
-        TestCommon.run(opts)
-          .assertNormalExit(output -> checkOutput(output, classNames));
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test a few scenarios if an empty class, which has the same name as the one in the jimage, is specified in the -Xbootclasspath/a
- *     1) boot loader will always load the class from the bootclasspath
- *     2) app loader will load the class from the jimage by default;
- *        app loader will load the class from the bootclasspath if the
- *        "--limit-modules java.base" option is specified
- * @requires vm.cds & !vm.graal.enabled
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.access
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          jdk.internal.jvmstat/sun.jvmstat.monitor
- * @compile ../../test-classes/EmptyClassHelper.java
- * @compile ../../test-classes/com/sun/tools/javac/Main.jasm
- * @run driver EmptyClassInBootClassPath
- */
-
-import java.io.File;
-import java.lang.*;
-import java.lang.reflect.*;
-import java.util.List;
-import java.util.ArrayList;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class EmptyClassInBootClassPath {
-    static final String EXPECTED_EXCEPTION =
-        "java.lang.NoSuchMethodException: com.sun.tools.javac.Main.main([Ljava.lang.String;)";
-    public static void main(String[] args) throws Exception {
-        String[] className = {"com/sun/tools/javac/Main"};
-        JarBuilder.build("emptyClass", className);
-        String appJar = TestCommon.getTestJar("emptyClass.jar");
-        JarBuilder.build("EmptyClassHelper", "EmptyClassHelper");
-        String helperJar = TestCommon.getTestJar("EmptyClassHelper.jar");
-        OutputAnalyzer dumpOutput = TestCommon.dump(
-            appJar, className, "-Xbootclasspath/a:" + appJar);
-        TestCommon.checkDump(dumpOutput);
-        dumpOutput.shouldNotContain("Preload Warning: skipping class from -Xbootclasspath/a " + className[0]);
-
-        String bootclasspath = "-Xbootclasspath/a:" + appJar;
-        String classPath = "-Djava.class.path=" + appJar + File.pathSeparator + helperJar;
-        List<String> argsList = new ArrayList<String>();
-        argsList.add(classPath);
-        argsList.add(bootclasspath);
-        argsList.add("--add-exports=java.base/jdk.internal.access=ALL-UNNAMED");
-        argsList.add("EmptyClassHelper");
-
-        // case 1: load class in bootclasspath using app loader
-        argsList.add("useAppLoader");
-        String[] opts = new String[argsList.size()];
-        opts = argsList.toArray(opts);
-        TestCommon.run(opts).assertNormalExit("appLoader found method main");
-
-        // case 2: load class in bootclasspath using boot loader
-        argsList.remove(argsList.size() - 1);
-        argsList.add("useBootLoader");
-        opts = new String[argsList.size()];
-        opts = argsList.toArray(opts);
-        TestCommon.run(opts).assertNormalExit(EXPECTED_EXCEPTION);
-
-        // case 3: load class in bootclasspath using app loader with '--limit-modules java.base'
-        argsList.add(0, "--limit-modules");
-        argsList.add(1, "java.base");
-        argsList.remove(argsList.size() - 1);
-        argsList.add("useAppLoader");
-        opts = new String[argsList.size()];
-        opts = argsList.toArray(opts);
-        TestCommon.run(opts)
-            .assertSilentlyDisabledCDS(0, EXPECTED_EXCEPTION);
-
-        // case 4: load class in bootclasspath using boot loader with '--limit-modules java.base'
-        argsList.remove(argsList.size() - 1);
-        argsList.add("useBootLoader");
-        opts = new String[argsList.size()];
-        opts = argsList.toArray(opts);
-        TestCommon.run(opts)
-            .assertSilentlyDisabledCDS(0, EXPECTED_EXCEPTION);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/Main.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-package com/sun/tools/javac;
-
-public class Main
-    version 51:0
-{
-
-public Method "<init>":"()V"
-    stack 1 locals 1
-{
-    aload_0;
-    invokespecial   Method java/lang/Object."<init>":"()V";
-    return;
-}
-
-public Method toString:"()Ljava/lang/String;"
-    stack 1 locals 1
-{
-    ldc String "hi";
-    areturn;
-}
-
-} // end class Main
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/MyMain.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-package com/sun/tools/javac;
-
-public class MyMain
-    version 51:0
-{
-
-public Method "<init>":"()V"
-    stack 1 locals 1
-{
-    aload_0;
-    invokespecial   Method java/lang/Object."<init>":"()V";
-    return;
-}
-
-public Method toString:"()Ljava/lang/String;"
-    stack 1 locals 1
-{
-    ldc String "hi";
-    areturn;
-}
-
-} // end class Main2
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/jdk/test/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/**
- * Tests loading an archived class that has the same class name as one in the
- * jimage. The class should normally fail to load since a classpath class is not
- * allowed to have the same package name as a module in the jimage. However,
- * if --limit-modules was used then archived class should be loaded.
- */
-
-package jdk.test;
-
-public class Main {
-    static final ClassLoader BOOT_LOADER     = null;
-    static final ClassLoader PLATFORM_LOADER = ClassLoader.getPlatformClassLoader();
-    static final ClassLoader SYS_LOADER      = ClassLoader.getSystemClassLoader();
-
-    public static void main(String[] args) throws Exception {
-        boolean shouldLoad = false;
-        ClassLoader expectedLoader = SYS_LOADER;
-
-        /*
-         * 3 Arguments are passed to this test:
-         *   1. testName: Name of the test being run.
-         *   2. className: Name of the class to load and instantiate.
-         *   3. shouldLoad: Either "true" or "false" to indicate whether the class should
-         *      successfully load ("true" indicates --limit-modules was used.)
-         * The 4th argument is optional. It specifies the classloader.
-         */
-
-        assertTrue(args.length <= 4);
-        String testName = args[0];
-        String className = args[1].replace('/', '.');
-        String shouldLoadName = args[2];  // "true" or "false"
-        String loaderName = "SYS";
-        if (args.length == 4) {
-            loaderName = args[3];
-        }
-
-        if (shouldLoadName.equals("true")) {
-            shouldLoad = true;
-        } else if (shouldLoadName.equals("false")) {
-            shouldLoad = false;
-        } else {
-            assertTrue(false);
-        }
-
-        if (loaderName.equals("SYS")) {
-            expectedLoader = SYS_LOADER;
-        } else if (loaderName.equals("EXT")) {
-            expectedLoader = PLATFORM_LOADER;
-        } else if (loaderName.equals("BOOT")) {
-            expectedLoader = BOOT_LOADER;
-        }
-
-        System.out.println(testName + ": class=" + className + " shouldLoad=" +
-                           shouldLoadName + " by loader:" + expectedLoader);
-
-        // Try to load the specified class with the default ClassLoader.
-        Class<?> clazz = null;
-        try {
-            clazz = Class.forName(className);
-        } catch (ClassNotFoundException e) {
-            System.out.println(e);
-        }
-
-        if (clazz != null) {
-            // class loaded
-            if (shouldLoad) {
-                // Make sure we got the expected defining ClassLoader
-                ClassLoader actualLoader = clazz.getClassLoader();
-                if (actualLoader != expectedLoader) {
-                    throw new RuntimeException(testName + " FAILED: " + clazz + " loaded by " + actualLoader +
-                                               ", expected " + expectedLoader);
-                }
-                // Make sure we got the right version of the class. toString() of an instance
-                // of the overridden version of the class should return "hi".
-                if (actualLoader == SYS_LOADER) {
-                    String s = clazz.newInstance().toString();
-                    if (!s.equals("hi")) {
-                        throw new RuntimeException(testName + " FAILED: toString() returned \"" + s
-                                                   + "\" instead of \"hi\"" );
-                    }
-                }
-                System.out.println(testName + " PASSED: class loaded as expected.");
-            } else {
-                throw new RuntimeException(testName + " FAILED: class loaded, but should have failed to load.");
-            }
-        } else {
-            // class did not load
-            if (shouldLoad) {
-                throw new RuntimeException(testName + " FAILED: class failed to load.");
-            } else {
-                System.out.println(testName + " PASSED: ClassNotFoundException thrown as expected");
-            }
-        }
-    }
-
-    static void assertTrue(boolean expr) {
-        if (!expr)
-            throw new RuntimeException("assertion failed");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext/MyClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-package sun.nio.cs.ext;
-
-public class MyClass {
-    public String toString() {
-        return "hi";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext1/MyClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-package sun.nio.cs.ext1;
-
-public class MyClass {
-    public String toString() {
-        return "hi";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @compile ../../test-classes/Hello.java
- * @run driver AddModules
- * @summary sanity test the --add-modules option
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class AddModules {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String MAIN_MODULE1 = "com.greetings";
-    private static final String MAIN_MODULE2 = "com.hello";
-    private static final String SUB_MODULE = "org.astro";
-
-    // the module main class
-    private static final String MAIN_CLASS1 = "com.greetings.Main";
-    private static final String MAIN_CLASS2 = "com.hello.Main";
-    private static final String APP_CLASS = "org.astro.World";
-
-    private static Path moduleDir = null;
-    private static Path subJar = null;
-    private static Path mainJar1 = null;
-    private static Path mainJar2 = null;
-    private static String appJar;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(SUB_MODULE),
-                                 MODS_DIR.resolve(SUB_MODULE),
-                                 null);
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE1),
-                                 MODS_DIR.resolve(MAIN_MODULE1),
-                                 MODS_DIR.toString());
-
-        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE2),
-                                 MODS_DIR.resolve(MAIN_MODULE2),
-                                 MODS_DIR.toString());
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        subJar = moduleDir.resolve(SUB_MODULE + ".jar");
-        String classes = MODS_DIR.resolve(SUB_MODULE).toString();
-        JarBuilder.createModularJar(subJar.toString(), classes, null);
-
-        mainJar1 = moduleDir.resolve(MAIN_MODULE1 + ".jar");
-        classes = MODS_DIR.resolve(MAIN_MODULE1).toString();
-        JarBuilder.createModularJar(mainJar1.toString(), classes, MAIN_CLASS1);
-
-        mainJar2 = moduleDir.resolve(MAIN_MODULE2 + ".jar");
-        classes = MODS_DIR.resolve(MAIN_MODULE2).toString();
-        JarBuilder.createModularJar(mainJar2.toString(), classes, MAIN_CLASS2);
-
-    }
-
-    public static void main(String... args) throws Exception {
-        appJar = JarBuilder.getOrCreateHelloJar();
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS1, MAIN_CLASS2, APP_CLASS};
-        // create an archive with the classes in the modules built in the
-        // previous step
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        appJar, appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "--add-modules",
-                                        MAIN_MODULE1 + "," + MAIN_MODULE2);
-        TestCommon.checkDump(output);
-        String prefix[] = {"-Djava.class.path=" + appJar, "-Xlog:class+load=trace"};
-
-        // run the com.greetings module with the archive with the --module-path
-        // the same as the one during dump time.
-        // The classes should be loaded from the archive.
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  moduleDir.toString(), // --module-path
-                                  MAIN_MODULE1) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
-                   .shouldContain("[class,load] org.astro.World source: shared objects file");
-            });
-
-        // run the com.hello module with the archive with the --module-path
-        // the same as the one during dump time.
-        // The classes should be loaded from the archive.
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  moduleDir.toString(), // --module-path
-                                  MAIN_MODULE2) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.hello.Main source: shared objects file")
-                   .shouldContain("[class,load] org.astro.World source: shared objects file");
-            });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddOpens.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver AddOpens
- * @summary sanity test the --add-opens option
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class AddOpens {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE1 = "com.simple";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.simple.Main";
-
-    private static Path moduleDir = null;
-    private static Path moduleDir2 = null;
-    private static Path destJar = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.toString());
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
-
-        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
-        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
-        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
-        Files.copy(srcJar, destJar);
-
-    }
-
-    public static void main(String... args) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS};
-        // create an archive with both -cp and --module-path in the command line.
-        // Only the class in the modular jar in the --module-path will be archived;
-        // the class in the modular jar in the -cp won't be archived.
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        destJar.toString(), appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "-m", TEST_MODULE1);
-        TestCommon.checkDump(output);
-
-        // run with the archive using the same command line as in dump time
-        // plus the "--add-opens java.base/java.lang=com.simple" option.
-        // The main class should be loaded from the archive.
-        // The setaccessible(true) on the ClassLoader.defineClass method should
-        // be successful.
-        TestCommon.run( "-Xlog:class+load=trace",
-                        "-cp", destJar.toString(),
-                        "--add-opens", "java.base/java.lang=" + TEST_MODULE1,
-                        "--module-path", moduleDir.toString(),
-                        "-m", TEST_MODULE1, "with_add_opens")
-            .assertNormalExit(
-                "[class,load] com.simple.Main source: shared objects file",
-                "method.setAccessible succeeded!");
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver AddReads
- * @summary sanity test the --add-reads option
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Asserts;
-
-public class AddReads {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String MAIN_MODULE = "com.norequires";
-    private static final String SUB_MODULE = "org.astro";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.norequires.Main";
-    private static final String APP_CLASS = "org.astro.World";
-
-    private static Path moduleDir = null;
-    private static Path subJar = null;
-    private static Path mainJar = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(SUB_MODULE),
-                                       MODS_DIR.resolve(SUB_MODULE),
-                                       null);
-
-        Asserts.assertTrue(CompilerUtils
-            .compile(SRC_DIR.resolve(MAIN_MODULE),
-                     MODS_DIR.resolve(MAIN_MODULE),
-                     "-cp", MODS_DIR.resolve(SUB_MODULE).toString(),
-                     "--add-reads", "com.norequires=ALL-UNNAMED"));
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        subJar = moduleDir.resolve(SUB_MODULE + ".jar");
-        String classes = MODS_DIR.resolve(SUB_MODULE).toString();
-        JarBuilder.createModularJar(subJar.toString(), classes, null);
-
-        mainJar = moduleDir.resolve(MAIN_MODULE + ".jar");
-        classes = MODS_DIR.resolve(MAIN_MODULE).toString();
-        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
-    }
-
-    public static void main(String... args) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS, APP_CLASS};
-        // create an archive with the classes in the modules built in the
-        // previous step
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        null, appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "--add-modules", SUB_MODULE,
-                                        "--add-reads", "com.norequires=org.astro",
-                                        "-m", MAIN_MODULE);
-        TestCommon.checkDump(output);
-        String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace",
-                           "--add-modules", SUB_MODULE,
-                           "--add-reads", "com.norequires=org.astro"};
-
-        // run the com.norequires module with the archive with the same args
-        // used during dump time.
-        // The classes should be loaded from the archive.
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  moduleDir.toString(), // --module-path
-                                  MAIN_MODULE) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.norequires.Main source: shared objects file")
-                   .shouldContain("[class,load] org.astro.World source: shared objects file");
-            });
-
-        // create an archive with -cp pointing to the jar file containing the
-        // org.astro module and --module-path pointing to the main module
-        output = TestCommon.createArchive(
-                                        subJar.toString(), appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "--add-modules", SUB_MODULE,
-                                        "--add-reads", "com.norequires=org.astro",
-                                        "-m", MAIN_MODULE);
-        TestCommon.checkDump(output);
-        // run the com.norequires module with the archive with the sub-module
-        // in the -cp and with -add-reads=com.norequires=ALL-UNNAMED
-        // The main class should be loaded from the archive.
-        // The org.astro.World should be loaded from the jar.
-        String prefix2[] = {"-cp", subJar.toString(), "-Xlog:class+load=trace",
-                           "--add-reads", "com.norequires=ALL-UNNAMED"};
-        TestCommon.runWithModules(prefix2,
-                                  null, // --upgrade-module-path
-                                  moduleDir.toString(), // --module-path
-                                  MAIN_MODULE) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.norequires.Main source: shared objects file")
-                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
-            });
-
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ExportModule.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver ExportModule
- * @summary Tests involve exporting a module from the module path to a jar in the -cp.
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.compiler.CompilerUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Asserts;
-
-public class ExportModule {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE1 = "com.greetings";
-    private static final String TEST_MODULE2 = "org.astro";
-
-    // unnamed module package name
-    private static final String PKG_NAME = "com.nomodule";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.greetings.Main";
-    private static final String APP_CLASS = "org.astro.World";
-
-    // unnamed module main class
-    private static final String UNNAMED_MAIN = "com.nomodule.Main";
-
-    private static Path moduleDir = null;
-    private static Path moduleDir2 = null;
-    private static Path appJar = null;
-    private static Path appJar2 = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE2),
-                                 MODS_DIR.resolve(TEST_MODULE2),
-                                 null);
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.toString());
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        Path jar = moduleDir.resolve(TEST_MODULE2 + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE2).toString();
-        JarBuilder.createModularJar(jar.toString(), classes, null);
-
-        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
-        appJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
-        classes = MODS_DIR.resolve(TEST_MODULE1).toString();
-        JarBuilder.createModularJar(appJar.toString(), classes, MAIN_CLASS);
-
-        // build a non-modular jar containing the main class which
-        // requires the org.astro package
-        boolean compiled
-            = CompilerUtils.compile(SRC_DIR.resolve(PKG_NAME),
-                                    MODS_DIR.resolve(PKG_NAME),
-                                    "--module-path", MODS_DIR.toString(),
-                                    "--add-modules", TEST_MODULE2,
-                                    "--add-exports", "org.astro/org.astro=ALL-UNNAMED");
-        Asserts.assertTrue(compiled, "test package did not compile");
-
-        appJar2 = moduleDir2.resolve(PKG_NAME + ".jar");
-        classes = MODS_DIR.resolve(PKG_NAME).toString();
-        JarBuilder.createModularJar(appJar2.toString(), classes, null);
-    }
-
-    public static void main(String... args) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS, APP_CLASS};
-        // create an archive with the class in the org.astro module built in the
-        // previous step and the main class from the modular jar in the -cp
-        // note: the main class is in the modular jar in the -cp which requires
-        // the module in the --module-path
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        appJar.toString(), appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "--add-modules", TEST_MODULE2, MAIN_CLASS);
-        TestCommon.checkDump(output);
-
-        // run it using the archive
-        // both the main class and the class from the org.astro module should
-        // be loaded from the archive
-        TestCommon.run("-Xlog:class+load=trace",
-                              "-cp", appJar.toString(),
-                              "--module-path", moduleDir.toString(),
-                              "--add-modules", TEST_MODULE2, MAIN_CLASS)
-            .assertNormalExit(
-                "[class,load] org.astro.World source: shared objects file",
-                "[class,load] com.greetings.Main source: shared objects file");
-
-        String appClasses2[] = {UNNAMED_MAIN, APP_CLASS};
-        // create an archive with the main class from a non-modular jar in the
-        // -cp and the class from the org.astro module
-        // note: the org.astro package needs to be exported to "ALL-UNNAMED"
-        // module since the jar in the -cp is a non-modular jar and thus it is
-        // unnmaed.
-        output = TestCommon.createArchive(
-                                        appJar2.toString(), appClasses2,
-                                        "--module-path", moduleDir.toString(),
-                                        "--add-modules", TEST_MODULE2,
-                                        "--add-exports", "org.astro/org.astro=ALL-UNNAMED",
-                                        UNNAMED_MAIN);
-        TestCommon.checkDump(output);
-
-        // both the main class and the class from the org.astro module should
-        // be loaded from the archive
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", appJar2.toString(),
-                       "--module-path", moduleDir.toString(),
-                       "--add-modules", TEST_MODULE2,
-                       "--add-exports", "org.astro/org.astro=ALL-UNNAMED",
-                       UNNAMED_MAIN)
-            .assertNormalExit(
-                "[class,load] org.astro.World source: shared objects file",
-                "[class,load] com.nomodule.Main source: shared objects file");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/JvmtiAddPath.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary JvmtiEnv::AddToBootstrapClassLoaderSearch and JvmtiEnv::AddToSystemClassLoaderSearch should disable AppCDS
- * @requires vm.cds
- * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @compile ../../test-classes/JvmtiApp.java
- * @run driver/timeout=240 JvmtiAddPath
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.process.OutputAnalyzer;
-import sun.hotspot.WhiteBox;
-
-public class JvmtiAddPath {
-    static String use_whitebox_jar;
-    static String[] no_extra_matches = {};
-    static String[] check_appcds_enabled = {
-        "[class,load] ExtraClass source: shared object"
-    };
-    static String[] check_appcds_disabled = {
-        "[class,load] ExtraClass source: file:"
-    };
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE1 = "com.simple";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.simple.Main";
-
-    private static Path moduleDir = null;
-    private static Path mainJar = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.toString());
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-
-        mainJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
-        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
-    }
-
-    static void run(String cp, String... args) throws Exception {
-        run(no_extra_matches, cp, args);
-    }
-
-    static void run(String[] extra_matches, String cp, String... args) throws Exception {
-        String[] opts = {"-cp", cp, "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", use_whitebox_jar};
-        opts = TestCommon.concat(opts, args);
-        TestCommon.run(opts).assertNormalExit(extra_matches);
-    }
-
-    public static void main(String[] args) throws Exception {
-        buildTestModule();
-        JarBuilder.build("jvmti_app", "JvmtiApp", "ExtraClass");
-        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
-
-        // In all the test cases below, appJar does not contain Hello.class. Instead, we
-        // append JAR file(s) that contain Hello.class to the boot classpath, the app
-        // classpath, or both, and verify that Hello.class is loaded by the expected ClassLoader.
-        String appJar = TestCommon.getTestJar("jvmti_app.jar");         // contains JvmtiApp.class
-        String addappJar = mainJar.toString();  // contains Main.class
-        String addbootJar = mainJar.toString(); // contains Main.class
-        String twoAppJars = appJar + File.pathSeparator + addappJar;
-        String modulePath = "--module-path=" + moduleDir.toString();
-        String wbJar = TestCommon.getTestJar("WhiteBox.jar");
-        use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        OutputAnalyzer output = TestCommon.createArchive(
-                                    appJar,
-                                    TestCommon.list("JvmtiApp", "ExtraClass", MAIN_CLASS),
-                                    use_whitebox_jar,
-                                    modulePath);
-        TestCommon.checkDump(output);
-
-        System.out.println("Test case 1: not adding module path - Hello.class should not be found");
-        run(check_appcds_enabled, appJar,
-            "-Xlog:class+load", "JvmtiApp", "noadd", MAIN_CLASS); // appcds should be enabled
-
-        System.out.println("Test case 2: add to boot classpath only - should find Hello.class in boot loader");
-        String[] toCheck = TestCommon.isDynamicArchive() ? check_appcds_enabled :
-                           check_appcds_disabled;
-        run(toCheck, appJar,
-            "-Xlog:class+load=trace",
-            modulePath,
-            "JvmtiApp", "bootonly", addbootJar, MAIN_CLASS); // appcds should be disabled
-
-        System.out.println("Test case 3: add to app classpath only - should find Hello.class in app loader");
-        run(appJar, modulePath,
-            "JvmtiApp", "apponly", addappJar, MAIN_CLASS);
-
-        System.out.println("Test case 4: add to boot and app paths - should find Hello.class in boot loader");
-        run(appJar, modulePath,
-            "JvmtiApp", "appandboot", addbootJar, addappJar, MAIN_CLASS);
-
-        System.out.println("Test case 5: add to app using -cp, but add to boot using JVMTI - should find Hello.class in boot loader");
-        run(appJar, modulePath,
-            "JvmtiApp", "bootonly", addappJar, MAIN_CLASS);
-
-        System.out.println("Test case 6: add to app using AppCDS, but add to boot using JVMTI - should find Hello.class in boot loader");
-        output = TestCommon.createArchive(
-                     appJar, TestCommon.list("JvmtiApp", "ExtraClass"),
-                     use_whitebox_jar,
-                     modulePath);
-        TestCommon.checkDump(output);
-        run(twoAppJars, modulePath,
-            "JvmtiApp", "bootonly", addappJar, MAIN_CLASS);
-
-        System.out.println("Test case 7: add to app using AppCDS, no JVMTI calls - should find Hello.class in app loader");
-        run(twoAppJars, modulePath,
-            "JvmtiApp", "noadd-appcds", MAIN_CLASS);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/MainModuleOnly.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run main/othervm MainModuleOnly
- * @summary Test some scenarios with a main modular jar specified in the --module-path and -cp options in the command line.
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-
-import jdk.test.lib.cds.CDSTestUtils.Result;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Platform;
-
-public class MainModuleOnly {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String TEST_MODULE1 = "com.simple";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.simple.Main";
-
-    private static Path moduleDir = null;
-    private static Path moduleDir2 = null;
-    private static Path destJar = null;
-
-    private static final String jarFileError = "A jar file is not the one used while building the shared archive file:";
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.resolve(TEST_MODULE1),
-                                 MODS_DIR.toString());
-
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
-
-        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
-        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
-        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
-        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
-        Files.copy(srcJar, destJar);
-
-    }
-
-    public static void main(String... args) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS};
-        // create an archive with both -cp and --module-path in the command line.
-        // Only the class in the modular jar in the --module-path will be archived;
-        // the class in the modular jar in the -cp won't be archived.
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        destJar.toString(), appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "-m", TEST_MODULE1);
-        TestCommon.checkDump(output);
-
-        // run with the archive using the same command line as in dump time.
-        // The main class should be loaded from the archive.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--module-path", moduleDir.toString(),
-                       "-m", TEST_MODULE1)
-            .assertNormalExit("[class,load] com.simple.Main source: shared objects file");
-
-        // run with the archive with the main class name inserted before the -m.
-        // The main class name will be picked up before the module name. So the
-        // main class should be loaded from the jar in the -cp.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--module-path", moduleDir.toString(),
-                       MAIN_CLASS, "-m", TEST_MODULE1)
-            .assertNormalExit(out ->
-                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar"));
-
-        // run with the archive with exploded module. Since during dump time, we
-        // only archive classes from the modular jar in the --module-path, the
-        // main class should be loaded from the exploded module directory.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--module-path", MODS_DIR.toString(),
-                       "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
-            .assertNormalExit(out -> {
-                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple")
-                   .shouldContain(MODS_DIR.toString());
-            });
-
-        // run with the archive with the --upgrade-module-path option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--upgrade-module-path", moduleDir.toString(),
-                       "--module-path", moduleDir.toString(),
-                       "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // run with the archive with the --limit-modules option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--limit-modules", "java.base," + TEST_MODULE1,
-                       "--module-path", moduleDir.toString(),
-                       "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // run with the archive with the --patch-module option.
-        // CDS will be disabled with this options and the main class will be
-        // loaded from the modular jar.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", destJar.toString(),
-                       "--patch-module", TEST_MODULE1 + "=" + MODS_DIR.toString(),
-                       "--module-path", moduleDir.toString(),
-                       "-m", TEST_MODULE1)
-            .assertSilentlyDisabledCDS(out -> {
-                out.shouldHaveExitValue(0)
-                   .shouldMatch("CDS is disabled when the.*option is specified")
-                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
-            });
-        // modify the timestamp of the jar file
-        (new File(destJar.toString())).setLastModified(System.currentTimeMillis() + 2000);
-        // run with the archive and the jar with modified timestamp.
-        // It should fail due to timestamp of the jar doesn't match the one
-        // used during dump time.
-        Result res = TestCommon.run("-cp", destJar.toString(),
-                       "-Xlog:cds",
-                       "--module-path", moduleDir.toString(),
-                       "-m", TEST_MODULE1);
-        res.assertAbnormalExit(jarFileError);
-        // create an archive with a non-empty directory in the --module-path.
-        // The dumping process will exit with an error due to non-empty directory
-        // in the --module-path.
-        String mainModule = TEST_MODULE1;
-        if (TestCommon.isDynamicArchive()) {
-            mainModule += "/" + MAIN_CLASS;
-        }
-        output = TestCommon.createArchive(destJar.toString(), appClasses,
-                                          "--module-path", MODS_DIR.toString(),
-                                          "-m", mainModule);
-        output.shouldHaveExitValue(1)
-              .shouldMatch("Error: non-empty directory.*com.simple");
-
-        // test module path with very long length
-        //
-        // This test can't be run on the windows platform due to an existing
-        // issue in ClassLoader::get_canonical_path() (JDK-8190737).
-        if (Platform.isWindows()) {
-            System.out.println("Long module path test cannot be tested on the Windows platform.");
-            return;
-        }
-        Path longDir = USER_DIR;
-        int pathLen = longDir.toString().length();
-        int PATH_LEN = 2034;
-        int MAX_DIR_LEN = 250;
-        while (pathLen < PATH_LEN) {
-            int remaining = PATH_LEN - pathLen;
-            int subPathLen = remaining > MAX_DIR_LEN ? MAX_DIR_LEN : remaining;
-            char[] chars = new char[subPathLen];
-            Arrays.fill(chars, 'x');
-            String subPath = new String(chars);
-            longDir = Paths.get(longDir.toString(), subPath);
-            pathLen = longDir.toString().length();
-        }
-        File longDirFile = new File(longDir.toString());
-        try {
-            longDirFile.mkdirs();
-        } catch (Exception e) {
-            throw e;
-        }
-        Path longDirJar = longDir.resolve(TEST_MODULE1 + ".jar");
-        // IOException results from the Files.copy() call on platform
-        // such as MacOS X. Test can't be proceeded further with the
-        // exception.
-        try {
-            Files.copy(destJar, longDirJar);
-        } catch (java.io.IOException ioe) {
-            System.out.println("Caught IOException from Files.copy(). Cannot continue.");
-            return;
-        }
-        output = TestCommon.createArchive(destJar.toString(), appClasses,
-                                          "-Xlog:exceptions=trace",
-                                          "--module-path", longDirJar.toString(),
-                                          "-m", TEST_MODULE1);
-        if (output.getExitValue() != 0) {
-            output.shouldMatch("os::stat error.*CDS dump aborted");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver ModulePathAndCP
- * @summary 2 sets of tests: one with only --module-path in the command line;
- *          another with both -cp and --module-path in the command line.
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class ModulePathAndCP {
-
-    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
-
-    private static final String TEST_SRC = System.getProperty("test.src");
-
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-
-    // the module name of the test module
-    private static final String MAIN_MODULE = "com.greetings";
-    private static final String APP_MODULE = "org.astro";
-
-    // the module main class
-    private static final String MAIN_CLASS = "com.greetings.Main";
-    private static final String APP_CLASS = "org.astro.World";
-
-    private static Path moduleDir = null;
-    private static Path moduleDir2 = null;
-    private static Path subJar = null;
-    private static Path mainJar = null;
-    private static Path destJar = null;
-
-    public static void buildTestModule() throws Exception {
-
-        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(APP_MODULE),
-                                 MODS_DIR.resolve(APP_MODULE),
-                                 null);
-
-        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
-        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE),
-                                 MODS_DIR.resolve(MAIN_MODULE),
-                                 MODS_DIR.toString());
-
-        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
-        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
-        subJar = moduleDir.resolve(APP_MODULE + ".jar");
-        destJar = moduleDir2.resolve(APP_MODULE + ".jar");
-        String classes = MODS_DIR.resolve(APP_MODULE).toString();
-        JarBuilder.createModularJar(subJar.toString(), classes, null);
-        Files.copy(subJar, destJar);
-
-        mainJar = moduleDir.resolve(MAIN_MODULE + ".jar");
-        Path mainJar2 = moduleDir2.resolve(MAIN_MODULE + ".jar");
-        classes = MODS_DIR.resolve(MAIN_MODULE).toString();
-        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
-        Files.copy(mainJar, mainJar2);
-
-    }
-
-    public static void main(String... args) throws Exception {
-        run();
-    }
-
-    public static void run(String... extra_runtime_args) throws Exception {
-        // compile the modules and create the modular jar files
-        buildTestModule();
-        String appClasses[] = {MAIN_CLASS, APP_CLASS};
-        // create an archive with the classes in the modules built in the
-        // previous step
-        OutputAnalyzer output = TestCommon.createArchive(
-                                        null, appClasses,
-                                        "--module-path", moduleDir.toString(),
-                                        "-m", MAIN_MODULE);
-        TestCommon.checkDump(output);
-        String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace"};
-        prefix = TestCommon.concat(prefix, extra_runtime_args);
-
-        // run with the archive with the --module-path the same as the one during
-        // dump time. The classes should be loaded from the archive.
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  moduleDir.toString(), // --module-path
-                                  MAIN_MODULE) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
-                   .shouldContain("[class,load] org.astro.World source: shared objects file");
-            });
-
-        // run with the archive with the --module-path different from the one during
-        // dump time. The classes should be loaded from the jar files.
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  moduleDir2.toString(), // --module-path
-                                  MAIN_MODULE) // -m
-            .assertNormalExit(out -> {
-                out.shouldMatch(".class.load. com.greetings.Main source:.*com.greetings.jar")
-                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
-            });
-
-        // create an archive with modular jar files in both -cp and --module-path
-        String jars = subJar.toString() + System.getProperty("path.separator") +
-                      mainJar.toString();
-        output = TestCommon.createArchive( jars, appClasses,
-                                           "-Xlog:class+load=trace",
-                                           "--module-path", moduleDir.toString(),
-                                           "-m", MAIN_MODULE);
-        TestCommon.checkDump(output);
-
-        // run with archive with the main class name specified before
-        // the module name with the -m option. Since the -m option was specified
-        // during dump time, the classes in the jar files after the -cp won't be
-        // archived. Therefore, the classes won't be loaded from the archive but
-        // will be loaded from the jar files.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", jars,
-                       "--module-path", moduleDir.toString(),
-                       MAIN_CLASS, "-m", MAIN_MODULE)
-            .assertNormalExit(out -> {
-                out.shouldMatch(".class.load. com.greetings.Main source:.*com.greetings.jar")
-                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
-            });
-
-        // similar to the above case but without the main class name. The classes
-        // should be loaded from the archive.
-        TestCommon.run("-Xlog:class+load=trace",
-                       "-cp", jars,
-                       "--module-path", moduleDir.toString(),
-                       "-m", MAIN_MODULE)
-            .assertNormalExit(
-              "[class,load] com.greetings.Main source: shared objects file",
-              "[class,load] org.astro.World source: shared objects file");
-
-        // create an archive with two modular jars in the --module-path
-        output = TestCommon.createArchive(
-                                        null, appClasses,
-                                        "--module-path", jars,
-                                        "-m", MAIN_MODULE);
-        TestCommon.checkDump(output);
-
-        // run with the above archive but with the modular jar containing the
-        // org.astro module in a different location.
-        // The org.astro.World class should be loaded from the jar.
-        // The Main class should still be loaded from the archive.
-        jars = destJar.toString() + System.getProperty("path.separator") +
-                      mainJar.toString();
-        TestCommon.runWithModules(prefix,
-                                  null, // --upgrade-module-path
-                                  jars, // --module-path
-                                  MAIN_MODULE) // -m
-            .assertNormalExit(out -> {
-                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
-                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
-            });
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.hasJFR & vm.cds
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.compiler
- *          jdk.jartool/sun.tools.jar
- *          jdk.jlink
- * @run driver ModulePathAndCP_JFR
- * @summary Same as ModulePathAndCP, but add -XX:StartFlightRecording=dumponexit=true to the runtime
- *          options. This makes sure that the shared classes are compatible with both
- *          JFR and JVMTI ClassFileLoadHook.
- */
-
-public class ModulePathAndCP_JFR {
-    public static void main(String... args) throws Exception {
-        ModulePathAndCP.run("-XX:StartFlightRecording=dumponexit=true", "-Xlog:cds+jvmti=debug");
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.greetings/com/greetings/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package com.greetings;
-import org.astro.World;
-public class Main {
-    public static void main(String[] args) {
-        System.out.format("Greetings %s!\n", World.name());
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.greetings/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-module com.greetings {
-    requires org.astro;
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.hello/com/hello/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package com.hello;
-import org.astro.World;
-public class Main {
-    public static void main(String[] args) {
-        System.out.format("Hello %s!\n", World.name());
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.hello/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-module com.hello {
-    requires org.astro;
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.nomodule/com/nomodule/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package com.nomodule;
-import org.astro.World;
-public class Main {
-    public static void main(String[] args) {
-        System.out.format("Greetings %s!\n", World.name());
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.norequires/com/norequires/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package com.norequires;
-import org.astro.World;
-public class Main {
-    public static void main(String[] args) {
-        System.out.format("Hello %s!\n", World.name());
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.norequires/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-module com.norequires { }
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.simple/com/simple/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package com.simple;
-
-import java.lang.reflect.Method;
-
-public class Main {
-    public static void main(String[] args) throws Exception {
-        System.out.println("Hello World!");
-        if (args.length > 0 && args[0].equals("with_add_opens")) {
-            Method method = ClassLoader.class.getDeclaredMethod("defineClass",
-                byte[].class, int.class, int.class);
-            method.setAccessible(true);
-            System.out.println("method.setAccessible succeeded!");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/com.simple/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-module com.simple {
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/org.astro/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-module org.astro {
-    exports org.astro;
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/src/org.astro/org/astro/World.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package org.astro;
-public class World {
-    public static String name() {
-        return "world";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/**
- * @test
- * @requires vm.cds
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- * @library ../..
- * @library /test/lib
- * @compile ../../test-classes/Hello.java
- * @run driver OverrideTests
- * @summary AppCDS tests for overriding archived classes with -p and --upgrade-module-path
- */
-
-/*
- * This test consists of 4 tests:
- *   1. Archive PLATFORM class and override with --upgrade-module-path.
- *   2. Archive PLATFORM class and override with -p.
- *   3. Archive APP class and override with --upgrade-module-path.
- *   4. Archive App class and override with -p.
- * For all 4 tests, the class is instantiatied and toString() is called
- * to check whether the archived version or the override version was instantiatied.
- * For tests 1 and 3, the overridden version should be instantiatied.
- * For tests 2 and 4, the archived version should be instantiated.
- *
- * This test uses the same test helper class in all 4 cases. It is located in
- * src/test/jdk/test/Main.java. It will be invoked once for each test cases,
- * with parameters to the test determining how it is run and what the
- * expected result is. See Main.java for a description of these 3 arguments.
- */
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import jdk.test.lib.Asserts;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-
-public class OverrideTests {
-    private static final String TEST_SRC = System.getProperty("test.src");
-    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
-    private static final Path MODS_DIR = Paths.get("mods");
-    private static String appJar;
-    // the module that is upgraded
-    private static final String[] UPGRADED_MODULES = {"jdk.compiler", "java.net.http"};
-    private static final Path[] UPGRADEDMODS_DIR = {Paths.get("upgradedmod1"), Paths.get("upgradedmod2")};
-
-    // the test module
-    private static final String TEST_MODULE = "test";
-    private static final String MAIN_CLASS = "jdk.test.Main";
-
-    // test classes to archive. These are both in UPGRADED_MODULES
-    private static final String APP_ARCHIVE_CLASS = "com/sun/tools/javac/Main";
-    private static final String PLATFORM_ARCHIVE_CLASS = "java/net/http/HttpTimeoutException";
-    private static final String[] ARCHIVE_CLASSES = {APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS};
-    private static String testArchiveName;
-
-
-    public static void main(String[] args) throws Exception {
-        appJar = JarBuilder.getOrCreateHelloJar();
-        OverrideTests tests = new OverrideTests();
-        tests.compileModulesAndDumpArchive();
-        tests.testAppClassOverriding();
-        tests.testPlatformClassOverriding();
-    }
-
-    void compileModulesAndDumpArchive() throws Exception {
-        boolean compiled;
-        // javac -d upgradedmods/$upgradedMod src/$upgradedMod/**
-        int i = 0;
-        for (String upgradedMod : UPGRADED_MODULES) {
-            compiled = CompilerUtils.compile(
-                SRC_DIR.resolve(UPGRADED_MODULES[i]),
-                UPGRADEDMODS_DIR[i].resolve(UPGRADED_MODULES[i])
-            );
-            Asserts.assertTrue(compiled, UPGRADED_MODULES[i] + " did not compile");
-            i++;
-        }
-
-        // javac -d mods/test --upgrade-module-path upgradedmods ...
-        compiled = CompilerUtils.compile(
-            SRC_DIR.resolve(TEST_MODULE),
-            MODS_DIR.resolve(TEST_MODULE),
-            "--upgrade-module-path", UPGRADEDMODS_DIR[0].toString() +
-             System.getProperty("path.separator") + UPGRADEDMODS_DIR[1].toString()
-        );
-        Asserts.assertTrue(compiled, TEST_MODULE + " did not compile");
-
-        // dump the archive with jdk.compiler and java.net.http classes in the class list
-        OutputAnalyzer output  = TestCommon.dump(appJar, TestCommon.list(ARCHIVE_CLASSES));
-        TestCommon.checkDump(output);
-        // Make sure all the classes where successfully archived.
-        for (String archiveClass : ARCHIVE_CLASSES) {
-            output.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
-        }
-
-        testArchiveName = TestCommon.getCurrentArchiveName();
-    }
-
-    /**
-     * APP Class Overriding Tests
-     *
-     * Archive APP class com.sun.tools.javac.Main from module jdk.compiler.
-     *  -At run time, upgrade module jdk.compiler using --upgrade-module-path.
-     *   Class.forname(Main) MUST NOT load the archived Main.
-     *  -At run time, module jdk.compiler also exists in --module-path.
-     *   Class.forname(Main) MUST load the archived Main.
-     */
-    public void testAppClassOverriding() throws Exception {
-        testClassOverriding(APP_ARCHIVE_CLASS, "app");
-    }
-
-    /**
-     * PLATFORM Class Overriding Tests
-     *
-     * Archive PLATFORM class java.net.http.HttpTimeoutException from module java.net.http.
-     *  -At run time, upgrade module java.net.http using --upgrade-module-path.
-     *   Class.forname(HttpTimeoutException) MUST NOT load the archived HttpTimeoutException.
-     *  -At run time, module java.net.http also exists in --module-path.
-     *   Class.forname(HttpTimeoutException) MUST load the archived HttpTimeoutException.
-     */
-    public void testPlatformClassOverriding() throws Exception {
-        testClassOverriding(PLATFORM_ARCHIVE_CLASS, "platform");
-    }
-
-    /**
-     * Run the test twice. Once with upgrade module on --upgrade-module-path and once with it on -p.
-     * Only modules defined to the PlatformClassLoader are upgradeable.
-     * Modules defined to the AppClassLoader are not upgradeble; we expect the
-     * FindException to be thrown.
-     */
-    void testClassOverriding(String archiveClass, String loaderName) throws Exception {
-        String mid = TEST_MODULE + "/" + MAIN_CLASS;
-        OutputAnalyzer output;
-        boolean isAppLoader = loaderName.equals("app");
-        int upgradeModIdx = isAppLoader ? 0 : 1;
-        String expectedException = "java.lang.module.FindException: Unable to compute the hash";
-        String prefix[] = new String[3];
-        prefix[0] = "-Djava.class.path=" + appJar;
-        prefix[1] = "--add-modules";
-        prefix[2] = "java.net.http";
-
-        // Run the test with --upgrade-module-path set to alternate location of archiveClass
-        // The alternate version of archiveClass SHOULD be found.
-        TestCommon.runWithModules(prefix,
-                                  UPGRADEDMODS_DIR[upgradeModIdx].toString(),
-                                  MODS_DIR.toString(),
-                                  mid,
-                                  archiveClass, loaderName, "true") // last 3 args passed to test
-            .ifNoMappingFailure(out -> out.shouldContain(expectedException));
-
-        // Now run this same test again, but this time without AppCDS. Behavior should be the same.
-        CDSOptions opts = (new CDSOptions())
-            .addPrefix(prefix)
-            .setArchiveName(testArchiveName).setUseVersion(false)
-            .addSuffix("--upgrade-module-path", UPGRADEDMODS_DIR[upgradeModIdx].toString(),
-                       "-p", MODS_DIR.toString(), "-m", mid)
-            .addSuffix(archiveClass, loaderName, "true");
-
-        output = CDSTestUtils.runWithArchive(opts);
-
-        try {
-            output.shouldContain(expectedException);
-        } catch (Exception e) {
-            TestCommon.checkCommonExecExceptions(output, e);
-        }
-
-        // Run the test with -p set to alternate location of archiveClass.
-        // The alternate version of archiveClass SHOULD NOT be found.
-        TestCommon.runWithModules(
-            prefix,
-            null,
-            UPGRADEDMODS_DIR[upgradeModIdx].toString() + java.io.File.pathSeparator + MODS_DIR.toString(),
-            mid,
-            archiveClass, loaderName, "false") // last 3 args passed to test
-            .assertNormalExit();
-
-        // Now  run this same test again, but this time without AppCDS. Behavior should be the same.
-        opts = (new CDSOptions())
-            .addPrefix(prefix)
-            .setArchiveName(testArchiveName).setUseVersion(false)
-            .addSuffix("-p", MODS_DIR.toString(), "-m", mid)
-            .addSuffix(archiveClass, loaderName, "false"); // params to the test class
-
-        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
-        if (!CDSTestUtils.isUnableToMap(out))
-            out.shouldHaveExitValue(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/java.net.http/java/net/http/HttpTimeoutException.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-package java.net.http;
-
-public class HttpTimeoutException {
-    public String toString() {
-        return "hi";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/java.net.http/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-module java.net.http {
-    exports java.net.http;
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/jdk.compiler/com/sun/tools/javac/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-package com.sun.tools.javac;
-
-public class Main {
-    public String toString() {
-        return "hi";
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/jdk.compiler/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-module jdk.compiler {
-    exports com.sun.tools.javac;
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/test/jdk/test/Main.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/**
- * Used with -p or --upgrade-module-path to exercise the replacement
- * of classes in modules that are linked into the runtime image.
- */
-
-package jdk.test;
-
-public class Main {
-    static final ClassLoader PLATFORM_LOADER = ClassLoader.getPlatformClassLoader();
-    static final ClassLoader SYS_LOADER      = ClassLoader.getSystemClassLoader();
-
-    public static void main(String[] args) throws Exception {
-        ClassLoader loader = null;
-        boolean shouldOverride = false;
-
-        /*
-         * 3 Arguments are passed to this test:
-         *   1. className: Name of the class to load.
-         *   2. loaderName: Either "platform" or "app", which specifies which ClassLoader is expected
-         *      to be the defining ClassLoader once the class is loaded. The initiating
-         *      ClassLoader is always the default ClassLoader (which should be the
-         *      app (system) ClassLoader.
-         *   3. shouldOverride: Either "true" or "false" to indicate whether the loaded class
-         *      should be the one we are attempting to override with (not the archived version).
-         */
-
-        assertTrue(args.length == 3, "Unexpected number of arguments: expected 3, actual " + args.length);
-        String className = args[0].replace('/', '.');
-        String loaderName = args[1]; // "platform" or "app"
-        String shouldOverrideName = args[2];  // "true" or "false"
-
-        if (loaderName.equals("app")) {
-            loader = SYS_LOADER;
-        } else if (loaderName.equals("platform")) {
-            loader = PLATFORM_LOADER;
-        } else {
-            assertTrue(false);
-        }
-
-        if (shouldOverrideName.equals("true")) {
-            shouldOverride = true;
-        } else if (shouldOverrideName.equals("false")) {
-            shouldOverride = false;
-        } else {
-            assertTrue(false);
-        }
-
-        // Load the class with the default ClassLoader.
-        Class<?> clazz = Class.forName(className, true, loader);
-        // Make sure we got the expected defining ClassLoader
-        testLoader(clazz, loader);
-
-        String s = null;
-        if (shouldOverride) {
-          // Create an instance and see what toString() returns
-          clazz.newInstance().toString();
-        }
-        // The overridden version of the class should return "hi". Make sure
-        // it does only if we are expecting to have loaded the overridden version.
-        assertTrue("hi".equals(s) == shouldOverride);
-    }
-
-    /**
-     * Asserts that given class has the expected defining loader.
-     */
-    static void testLoader(Class<?> clazz, ClassLoader expected) {
-        ClassLoader loader = clazz.getClassLoader();
-        if (loader != expected) {
-            throw new RuntimeException(clazz + " loaded by " + loader + ", expected " + expected);
-        }
-    }
-
-    static void assertTrue(boolean expr) {
-        assertTrue(expr, "");
-    }
-
-    static void assertTrue(boolean expr, String msg) {
-        if (!expr)
-            throw new RuntimeException("assertion failed: " + msg);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/src/test/module-info.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-module test {
-    requires jdk.compiler;
-    requires java.compiler;
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHook.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-class LoadMe {
-    static String getValue() {
-        return "beforeHook";
-    }
-    static String getOtherValue() {
-        return "abc-beforeHook-xyz";
-    }
-}
-
-public class ClassFileLoadHook {
-    public enum TestCaseId {
-        SHARING_OFF_CFLH_ON,   // test case to establish a baseline
-        SHARING_ON_CFLH_OFF,
-        SHARING_AUTO_CFLH_ON,
-        SHARING_ON_CFLH_ON
-    }
-
-    public static void main(String args[]) throws Exception {
-        TestCaseId testCase = TestCaseId.valueOf(args[0]);
-        test1(testCase);
-        test2(testCase);
-    }
-
-    // Test rewriting the classfile data using CFLH
-    static void test1(TestCaseId testCase) {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        System.out.println("====== ClassFileLoadHook.main():testCase = " + testCase);
-        System.out.println("getValue():" + LoadMe.getValue());
-        System.out.println("getOtherValue():" + LoadMe.getOtherValue());
-
-        switch (testCase) {
-            case SHARING_OFF_CFLH_ON:
-                assertTrue("after_Hook".equals(LoadMe.getValue()) &&
-                           "abc-after_Hook-xyz".equals(LoadMe.getOtherValue()),
-                           "Not sharing, this test should replace beforeHook " +
-                           "with after_Hook");
-            break;
-
-            case SHARING_ON_CFLH_OFF:
-                assertTrue(wb.isSharedClass(LoadMe.class),
-                    "LoadMe should be shared, but is not");
-                assertTrue("beforeHook".equals(LoadMe.getValue()) &&
-                           "abc-beforeHook-xyz".equals(LoadMe.getOtherValue()),
-                           "CFLH off, bug values are redefined");
-            break;
-
-            case SHARING_AUTO_CFLH_ON:
-            case SHARING_ON_CFLH_ON:
-                // LoadMe is rewritten on CFLH
-                assertFalse(wb.isSharedClass(LoadMe.class),
-                    "LoadMe should not be shared if CFLH has modified the class");
-                assertFalse("beforeHook".equals(LoadMe.getValue()) &&
-                           "abc-beforeHook-xyz".equals(LoadMe.getOtherValue()),
-                           "Class contents should be changed if CFLH is enabled");
-             break;
-
-             default:
-                 throw new RuntimeException("Invalid testcase");
-
-        }
-    }
-
-    // Test the loading of classfile data for non-boot shared classes from jrt:/xxx.
-    // See JDK-8221351.
-    static void test2(TestCaseId testCase) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        Class c = Class.forName("java.sql.SQLException"); // defined by platform class loader.
-
-        switch (testCase) {
-            case SHARING_ON_CFLH_OFF:
-            case SHARING_ON_CFLH_ON:
-                assertTrue(wb.isSharedClass(c), "must be shared");
-                break;
-            case SHARING_AUTO_CFLH_ON:
-                // With -Xshare:auto, the test continues to run with mapping failure.
-                // In case of mapping failure, java/lang/Object and the app class
-                // won't be loaded from the archive.
-                Class objClass = Class.forName("java.lang.Object");
-                if (wb.isSharedClass(objClass)) {
-                    assertTrue(wb.isSharedClass(c), "must be shared");
-                } else {
-                    assertFalse(wb.isSharedClass(c), "must not be shared");
-                }
-                break;
-            default:
-                // this test is not applicable to -Xshare:off
-                if (testCase != TestCaseId.SHARING_OFF_CFLH_ON) {
-                    throw new RuntimeException("Invalid testcase");
-                }
-        }
-    }
-
-    private static void assertTrue(boolean expr, String msg) {
-        if (!expr)
-            throw new RuntimeException(msg);
-    }
-
-    private static void assertFalse(boolean expr, String msg) {
-        if (expr)
-            throw new RuntimeException(msg);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHookTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Test jvmti class file loader hook interaction with AppCDS
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @requires vm.cds
- * @build ClassFileLoadHook
- * @run main/othervm/native ClassFileLoadHookTest
- */
-
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-
-public class ClassFileLoadHookTest {
-    public static String sharedClasses[] = {
-        "ClassFileLoadHook",
-        "ClassFileLoadHook$TestCaseId",
-        "ClassFileLoadHook$1",
-        "LoadMe",
-        "java/sql/SQLException"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String wbJar =
-            ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
-        String appJar =
-            ClassFileInstaller.writeJar("ClassFileLoadHook.jar", sharedClasses);
-        String useWb = "-Xbootclasspath/a:" + wbJar;
-
-        // First, run the test class directly, w/o sharing, as a baseline reference
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                useWb,
-                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
-                "ClassFileLoadHook",
-                "" + ClassFileLoadHook.TestCaseId.SHARING_OFF_CFLH_ON);
-        TestCommon.executeAndLog(pb, "no-sharing").shouldHaveExitValue(0);
-
-        // Run with AppCDS, but w/o CFLH - second baseline
-        TestCommon.testDump(appJar, sharedClasses, useWb);
-        OutputAnalyzer out = TestCommon.exec(appJar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI", useWb,
-                "ClassFileLoadHook",
-                "" + ClassFileLoadHook.TestCaseId.SHARING_ON_CFLH_OFF);
-
-        TestCommon.checkExec(out);
-
-
-        // Now, run with AppCDS with -Xshare:auto and CFLH
-        out = TestCommon.execAuto("-cp", appJar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI", useWb,
-                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
-                "ClassFileLoadHook",
-                "" + ClassFileLoadHook.TestCaseId.SHARING_AUTO_CFLH_ON);
-
-        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
-        TestCommon.checkExec(out, opts);
-
-        // Now, run with AppCDS -Xshare:on and CFLH
-        out = TestCommon.exec(appJar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI", useWb,
-                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
-                "ClassFileLoadHook",
-                "" + ClassFileLoadHook.TestCaseId.SHARING_ON_CFLH_ON);
-        TestCommon.checkExec(out);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationAgent.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: InstrumentationRegisterClassFileTransformer
-Agent-Class: InstrumentationRegisterClassFileTransformer
-Can-Retransform-Classes: true
-Can-Redefine-Classes: true
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-import java.lang.instrument.ClassDefinition;
-import java.lang.instrument.Instrumentation;
-import java.lang.instrument.UnmodifiableClassException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.io.File;
-import java.io.FileWriter;
-import java.security.CodeSigner;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-import sun.hotspot.WhiteBox;
-
-public class InstrumentationApp {
-    static WhiteBox wb = WhiteBox.getWhiteBox();
-
-    public static final String COO_CLASS_NAME = "InstrumentationApp$Coo";
-
-    public static interface Intf {            // Loaded from Boot class loader (-Xbootclasspath/a).
-        public String get();
-    }
-    public static class Bar implements Intf { // Loaded from Boot class loader.
-        public String get() {
-            // The initial transform:
-            //      change "buzz" -> "fuzz"
-            // The re-transform:
-            //      change "buzz" -> "guzz"
-            return "buzz";
-        }
-    }
-    public static class Foo implements Intf { // Loaded from AppClassLoader, or from a custom loader
-        public String get() {
-            // The initial transform:
-            //      change "buzz" -> "fuzz"
-            // The re-transform:
-            //      change "buzz" -> "guzz"
-            return "buzz";
-        }
-    }
-    public static class Coo implements Intf { // Loaded from custom class loader.
-        public String get() {
-            // The initial transform:
-            //      change "buzz" -> "fuzz"
-            // The re-transform:
-            //      change "buzz" -> "guzz"
-            return "buzz";
-        }
-    }
-
-    // This class file should be archived if AppCDSv2 is enabled on this platform. See
-    // the comments around the call to TestCommon.dump in InstrumentationTest.java.
-    public static class ArchivedIfAppCDSv2Enabled {}
-
-    public static boolean isAppCDSV2Enabled() {
-        return wb.isSharedClass(ArchivedIfAppCDSv2Enabled.class);
-    }
-
-    public static class MyLoader extends URLClassLoader {
-        public MyLoader(URL[] urls, ClassLoader parent, File jar) {
-            super(urls, parent);
-            this.jar = jar;
-        }
-        File jar;
-
-        @Override
-        protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
-            synchronized (getClassLoadingLock(name)) {
-                // First, check if the class has already been loaded
-                Class<?> clz = findLoadedClass(name);
-                if (clz != null) {
-                    return clz;
-                }
-
-                if (name.equals(COO_CLASS_NAME)) {
-                    try {
-                        byte[] buff = Util.getClassFileFromJar(jar, name);
-                        return defineClass(name, buff, 0, buff.length);
-                    } catch (Throwable t) {
-                        t.printStackTrace();
-                        throw new RuntimeException("Unexpected", t);
-                    }
-                }
-            }
-            return super.loadClass(name, resolve);
-        }
-    }
-
-    static int numTests = 0;
-    static int failed = 0;
-    static boolean isAttachingAgent = false;
-    static Instrumentation instrumentation;
-
-    public static void main(String args[]) throws Throwable {
-        System.out.println("INFO: AppCDSv1 " + (wb.isSharedClass(InstrumentationApp.class) ? "enabled" :"disabled"));
-        System.out.println("INFO: AppCDSv2 " + (isAppCDSV2Enabled()                        ? "enabled" : "disabled"));
-
-        String flagFile = args[0];
-        File bootJar = new File(args[1]);
-        File appJar  = new File(args[2]);
-        File custJar = new File(args[3]);
-        waitAttach(flagFile);
-
-        instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
-        System.out.println("INFO: instrumentation = " + instrumentation);
-
-        testBootstrapCDS("Bootstrap Loader", bootJar);
-        testAppCDSv1("Application Loader", appJar);
-
-        if (isAppCDSV2Enabled()) {
-          testAppCDSv2("Custom Loader (unregistered)", custJar);
-        }
-
-        if (failed > 0) {
-            throw new RuntimeException("FINAL RESULT: " + failed + " out of " + numTests + " test case(s) have failed");
-        } else {
-            System.out.println("FINAL RESULT: All " + numTests + " test case(s) have passed!");
-        }
-    }
-
-    static void waitAttach(String flagFile) throws Throwable {
-        // See InstrumentationTest.java for the hand-shake protocol.
-        if (!flagFile.equals("noattach")) {
-            File f = new File(flagFile);
-            try (FileWriter fw = new FileWriter(f)) {
-                long pid = ProcessHandle.current().pid();
-                System.out.println("my pid = " + pid);
-                fw.write(Long.toString(pid));
-                fw.write("\n");
-                for (int i=0; i<10; i++) {
-                  // Parent process waits until we have written more than 100 bytes, so it won't
-                  // read a partial pid
-                  fw.write("==========");
-                }
-                fw.close();
-            }
-
-            long start = System.currentTimeMillis();
-            while (f.exists()) {
-                long elapsed = System.currentTimeMillis() - start;
-                System.out.println(".... (" + elapsed + ") waiting for deletion of " + f);
-                Thread.sleep(1000);
-            }
-            System.out.println("Attach succeeded (child)");
-            isAttachingAgent = true;
-        }
-    }
-
-    static void testBootstrapCDS(String group, File jar) throws Throwable {
-        doTest(group, new Bar(), jar);
-    }
-
-    static void testAppCDSv1(String group, File jar) throws Throwable {
-        doTest(group, new Foo(), jar);
-    }
-
-    static void testAppCDSv2(String group, File jar) throws Throwable {
-        URL[] urls = new URL[] {jar.toURI().toURL()};
-        MyLoader loader = new MyLoader(urls, InstrumentationApp.class.getClassLoader(), jar);
-        Class klass = loader.loadClass(COO_CLASS_NAME);
-        doTest(group, (Intf)klass.newInstance(), jar);
-    }
-
-    static void doTest(String group, Intf object, File jar) throws Throwable {
-        Class klass = object.getClass();
-        System.out.println();
-        System.out.println("++++++++++++++++++++++++++");
-        System.out.println("Test group: " + group);
-        System.out.println("Testing with classloader = " + klass.getClassLoader());
-        System.out.println("Testing with class       = " + klass);
-        System.out.println("++++++++++++++++++++++++++");
-
-        // Initial transform
-        String f = object.get();
-        assertTrue(f.equals("fuzz"), "object.get(): Initial transform should give 'fuzz'", f);
-
-        // Retransform
-        f = "(failed)";
-        try {
-            instrumentation.retransformClasses(klass);
-            f = object.get();
-        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
-            e.printStackTrace();
-        }
-        assertTrue(f.equals("guzz"), "object.get(): retransformation should give 'guzz'", f);
-
-        // Redefine
-        byte[] buff = Util.getClassFileFromJar(jar, klass.getName());
-        Util.replace(buff, "buzz", "huzz");
-        f = "(failed)";
-        try {
-            instrumentation.redefineClasses(new ClassDefinition(klass, buff));
-            f = object.get();
-        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
-            e.printStackTrace();
-        }
-        assertTrue(f.equals("quzz"), "object.get(): redefinition should give 'quzz'", f);
-
-        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++ (done)\n\n");
-    }
-
-    private static void assertTrue(boolean expr, String msg, String string) {
-        numTests ++;
-        System.out.printf("Test case %2d ", numTests);
-
-        if (expr) {
-            System.out.println("PASSED: " + msg + " and we got '" + string + "'");
-        } else {
-            failed ++;
-            System.out.println("FAILED: " + msg + " but we got '" + string + "'");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationClassFileTransformer.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.IllegalClassFormatException;
-import java.security.ProtectionDomain;
-
-// Note: Util is from /test/hotspot/jtreg/runtime/appcds/test-classes/TestCommon.java
-
-public class InstrumentationClassFileTransformer implements ClassFileTransformer {
-    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
-                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
-
-        if (name.startsWith("InstrumentationApp$") && !name.equals("InstrumentationApp$NotTransformed")) {
-            System.out.println("Transforming: " + name + " class = " + classBeingRedefined);
-            try {
-                if (classBeingRedefined == null) {
-                    // Initial transform
-                    replace(buffer, "buzz", "fuzz");
-                } else {
-                    replace(buffer, "buzz", "guzz"); // Retransform
-                    replace(buffer, "huzz", "quzz"); // Redefine
-                }
-            } catch (Throwable t) {
-                t.printStackTrace();
-            }
-            return buffer;
-        }
-        return null;
-    }
-
-    static void replace(byte[] buffer, String from, String to) {
-        int n = Util.replace(buffer, from, to);
-        System.out.println("..... replaced " + n + " occurrence(s) of '" + from + "' to '" + to + "'");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationRegisterClassFileTransformer.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.Instrumentation;
-
-// This class is available on the classpath so it can be accessed by InstrumentationApp
-public class InstrumentationRegisterClassFileTransformer {
-    private static Instrumentation savedInstrumentation;
-
-    public static void premain(String agentArguments, Instrumentation instrumentation) {
-        System.out.println("InstrumentationRegisterClassFileTransformer.premain() is called");
-        instrumentation.addTransformer(new InstrumentationClassFileTransformer(), /*canRetransform=*/true);
-        savedInstrumentation = instrumentation;
-    }
-
-    public static Instrumentation getInstrumentation() {
-        return savedInstrumentation;
-    }
-
-    public static void agentmain(String args, Instrumentation inst) throws Exception {
-        premain(args, inst);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2014, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Exercise the java.lang.instrument.Instrumentation APIs on classes archived
- *          using CDS/AppCDSv1/AppCDSv2.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @build sun.hotspot.WhiteBox
- *        InstrumentationApp
- *        InstrumentationClassFileTransformer
- *        InstrumentationRegisterClassFileTransformer
- * @run main/othervm InstrumentationTest
- */
-
-// Note: TestCommon is from /test/hotspot/jtreg/runtime/appcds/TestCommon.java
-// Note: Util       is from /test/hotspot/jtreg/runtime/appcds/test-classes/TestCommon.java
-
-import com.sun.tools.attach.VirtualMachine;
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.Scanner;
-import jdk.test.lib.Asserts;
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class InstrumentationTest {
-    public static String bootClasses[] = {
-        "InstrumentationApp$Intf",
-        "InstrumentationApp$Bar",
-        "sun.hotspot.WhiteBox",
-    };
-    public static String appClasses[] = {
-        "InstrumentationApp",
-        "InstrumentationApp$Foo",
-        "InstrumentationApp$MyLoader",
-    };
-    public static String custClasses[] = {
-        "InstrumentationApp$Coo",
-    };
-    public static String sharedClasses[] = TestCommon.concat(bootClasses, appClasses);
-
-    public static String agentClasses[] = {
-        "InstrumentationClassFileTransformer",
-        "InstrumentationRegisterClassFileTransformer",
-        "Util",
-    };
-
-    public static void main(String[] args) throws Throwable {
-        runTest(false);
-        runTest(true);
-    }
-
-    public static void runTest(boolean attachAgent) throws Throwable {
-        String bootJar =
-            ClassFileInstaller.writeJar("InstrumentationBoot.jar", bootClasses);
-        String appJar =
-            ClassFileInstaller.writeJar("InstrumentationApp.jar",
-                                        TestCommon.concat(appClasses,
-                                                          "InstrumentationApp$ArchivedIfAppCDSv2Enabled"));
-        String custJar =
-            ClassFileInstaller.writeJar("InstrumentationCust.jar", custClasses);
-        String agentJar =
-            ClassFileInstaller.writeJar("InstrumentationAgent.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("InstrumentationAgent.mf"),
-                                        agentClasses);
-
-        String bootCP = "-Xbootclasspath/a:" + bootJar;
-
-        System.out.println("");
-        System.out.println("============================================================");
-        System.out.println("CDS: NO, attachAgent: " + (attachAgent ? "YES" : "NO"));
-        System.out.println("============================================================");
-        System.out.println("");
-
-        String agentCmdArg, flagFile;
-        if (attachAgent) {
-            // we will attach the agent, so don't specify -javaagent in the command line. We'll use
-            // something harmless like -showversion to make it easier to construct the command line
-            agentCmdArg = "-showversion";
-        } else {
-            agentCmdArg = "-javaagent:" + agentJar;
-        }
-
-        // First, run the test class directly, w/o sharing, as a baseline reference
-        flagFile = getFlagFile(attachAgent);
-        AgentAttachThread t = doAttach(attachAgent, flagFile, agentJar);
-        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
-                bootCP,
-                "-cp", appJar,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                "-Xshare:off",
-                agentCmdArg,
-                "InstrumentationApp", flagFile, bootJar, appJar, custJar);
-        TestCommon.executeAndLog(pb, "no-sharing").shouldHaveExitValue(0);
-        checkAttach(t);
-
-        // Dump the AppCDS archive. On some platforms AppCDSv2 may not be enabled, so we
-        // first try the v2 classlist, and if that fails, revert to the v1 classlist.
-        // Note that the InstrumentationApp$ArchivedIfAppCDSv2Enabled class is archived
-        // only if V2 is enabled. This is tested by InstrumentationApp.isAppCDSV2Enabled().
-        String[] v2Classes = {
-            "InstrumentationApp$ArchivedIfAppCDSv2Enabled",
-            "java/lang/Object id: 0",
-            "InstrumentationApp$Intf id: 1",
-            "InstrumentationApp$Coo  id: 2 super: 0 interfaces: 1 source: " + custJar,
-        };
-        String[] sharedClassesWithV2 = TestCommon.concat(v2Classes, sharedClasses);
-        OutputAnalyzer out = TestCommon.dump(appJar, sharedClassesWithV2, bootCP);
-        if (out.getExitValue() != 0) {
-            System.out.println("Redumping with AppCDSv2 disabled");
-                TestCommon.testDump(appJar, sharedClasses, bootCP);
-        }
-
-        // Run with AppCDS.
-        System.out.println("");
-        System.out.println("============================================================");
-        System.out.println("CDS: YES, attachAgent: " + (attachAgent ? "YES" : "NO"));
-        System.out.println("============================================================");
-        System.out.println("");
-
-        flagFile = getFlagFile(attachAgent);
-        t = doAttach(attachAgent, flagFile, agentJar);
-        out = TestCommon.execAuto("-cp", appJar,
-                bootCP,
-                "-XX:+UnlockDiagnosticVMOptions",
-                "-XX:+WhiteBoxAPI",
-                agentCmdArg,
-               "InstrumentationApp", flagFile, bootJar, appJar, custJar);
-
-        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
-        TestCommon.checkExec(out, opts);
-        checkAttach(t);
-    }
-
-    static int flagFileSerial = 1;
-    static private String getFlagFile(boolean attachAgent) {
-        if (attachAgent) {
-            // Do not reuse the same file name as Windows may fail to
-            // delete the file.
-            return "attach.flag." + ProcessHandle.current().pid() +
-                    "." + (flagFileSerial++) + "." + System.currentTimeMillis();
-        } else {
-            return "noattach";
-        }
-    }
-
-    static AgentAttachThread doAttach(boolean attachAgent, String flagFile, String agentJar) throws Throwable {
-        if (!attachAgent) {
-            return null;
-        }
-
-        // Hand-shake protocol with the child process
-        // [1] Parent process (this process) launches child process (InstrumentationApp)
-        //     and then waits until child process writes its pid into the flagFile.
-        // [2] Child process process starts up, writes its pid into the flagFile,
-        //     and waits for the flagFile to be deleted.
-        // [3] When parent process gets the pid, it attaches to the child process
-        //     (if we attempt to attach to a process too early, the SIGQUIT
-        //     may cause the child to die) and deletes the flagFile.
-        // [4] Child process resumes execution.
-
-        File f = new File(flagFile);
-        f.delete();
-        if (f.exists()) {
-            throw new RuntimeException("Flag file should not exist: " + f);
-        }
-
-        // At this point, the child process is not yet launched. Note that
-        // TestCommon.exec() and OutputAnalyzer.OutputAnalyzer() both block
-        // until the child process has finished.
-        //
-        // So, we will launch a AgentAttachThread which will poll the flagFile
-        // until the child process is launched.
-        AgentAttachThread t = new AgentAttachThread(flagFile, agentJar);
-        t.start();
-        return t;
-    }
-
-    static void checkAttach(AgentAttachThread thread) throws Throwable {
-        if (thread != null) {
-            thread.check();
-        }
-    }
-
-    static class AgentAttachThread extends Thread {
-        String flagFile;
-        String agentJar;
-        volatile boolean succeeded;
-
-        AgentAttachThread(String flagFile, String agentJar) {
-            this.flagFile = flagFile;
-            this.agentJar = agentJar;
-            this.succeeded = false;
-        }
-
-        static String getPid(String flagFile) throws Throwable {
-            while (true) {
-                // Keep polling until the child process has been launched. If for some
-                // reason the child process fails to launch, this test will be terminated
-                // by JTREG's time-out mechanism.
-                Thread.sleep(100);
-                File f = new File(flagFile);
-                if (f.exists() && f.length() > 100) {
-                    try (FileInputStream in = new FileInputStream(f)) {
-                        Scanner scanner = new Scanner(in);
-                        return Long.toString(scanner.nextLong());
-                    } catch (Throwable t) {
-                        // This may happen on Windows if the child process has not
-                        // fully closed the output stream to the flagFile
-                        System.out.println("Ignored: " + t);
-                        t.printStackTrace(System.out);
-                        continue;
-                    }
-                }
-            }
-        }
-
-        public void run() {
-            try {
-                String pid = getPid(flagFile);
-                System.out.println("child pid = " + pid);
-                VirtualMachine vm = VirtualMachine.attach(pid);
-                System.out.println(agentJar);
-                vm.loadAgent(agentJar);
-            } catch (Throwable t) {
-                t.printStackTrace();
-                throw new RuntimeException(t);
-            }
-
-            // Delete the flagFile to indicate to the child process that we
-            // have attached to it, so it should proceed.
-            File f = new File(flagFile);
-            for (int i=0; i<5; i++) {
-                // The detele may fail on Windows if the child JVM is checking
-                // f.exists() at exactly the same time?? Let's do a little
-                // dance.
-                f.delete();
-                try {
-                    Thread.sleep(10);
-                } catch (Throwable t) {;}
-            }
-            if (f.exists()) {
-                throw new RuntimeException("Failed to delete " + f);
-            }
-            System.out.println("Attach succeeded (parent)");
-            succeeded = true;
-        }
-
-        void check() throws Throwable {
-            super.join();
-            if (!succeeded) {
-                throw new RuntimeException("Attaching agent to child VM failed");
-            }
-        }
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/DumpingWithJavaAgent.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary CDS dumping with java agent.
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @modules jdk.jartool/sun.tools.jar
- * @build SimpleAgent Hello
- * @run main/othervm DumpingWithJavaAgent
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class DumpingWithJavaAgent {
-    public static String appClasses[] = {
-        "Hello",
-    };
-    public static String agentClasses[] = {
-        "SimpleAgent",
-    };
-
-    public static String warningMessages[] = {
-        "This archive was created with AllowArchivingWithJavaAgent",
-        "It should be used for testing purposes only and should not be used in a production environment",
-    };
-
-    public static String errorMessage =
-        "The setting of the AllowArchivingWithJavaAgent is different from the setting in the shared archive.";
-
-
-    public static String diagnosticOption = "-XX:+AllowArchivingWithJavaAgent";
-
-    public static void main(String[] args) throws Throwable {
-        String agentJar =
-            ClassFileInstaller.writeJar("SimpleAgent.jar",
-                                        ClassFileInstaller.Manifest.fromSourceFile("SimpleAgent.mf"),
-                                        agentClasses);
-
-        String appJar =
-            ClassFileInstaller.writeJar("DumpingWithJavaAgent.jar", appClasses);
-
-        // CDS dumping with a java agent with the AllowArchvingWithJavaAgent diagnostic option.
-        OutputAnalyzer output = TestCommon.testDump(appJar, TestCommon.list("Hello"),
-            "-XX:+UnlockDiagnosticVMOptions", diagnosticOption,
-            "-javaagent:" + agentJar);
-        TestCommon.checkDump(output);
-        output.shouldContain(warningMessages[0]);
-        output.shouldContain(warningMessages[1]);
-        output.shouldContain("inside SimpleAgent");
-
-        // Using the archive with the AllowArchvingWithJavaAgent diagnostic option.
-        output = TestCommon.exec(
-            appJar,
-            "-Xlog:class+load=trace",
-            "-XX:+UnlockDiagnosticVMOptions", diagnosticOption,
-            "Hello");
-        if (!TestCommon.isUnableToMap(output)) {
-            output.shouldHaveExitValue(0);
-            output.shouldContain(warningMessages[0]);
-            output.shouldContain(warningMessages[1]);
-            output.shouldContain("[class,load] Hello source: shared objects file");
-        }
-
-        // Using the archive with -Xshare:on without the diagnostic option.
-        // VM should exit with an error message.
-        output = TestCommon.exec(
-            appJar,
-            "Hello");
-        output.shouldHaveExitValue(1);
-        output.shouldContain(errorMessage);
-
-        // Using the archive with -Xshare:auto without the diagnostic option.
-        // VM should continue execution with a warning message. The archive
-        // will not be used.
-        output = TestCommon.execAuto(
-            "-cp", appJar,
-            "-Xlog:class+load=trace,cds=info",
-            "Hello");
-        if (!TestCommon.isUnableToMap(output)) {
-            output.shouldHaveExitValue(0);
-            output.shouldContain(errorMessage);
-            output.shouldMatch(".class.load.* Hello source:.*DumpingWithJavaAgent.jar");
-
-        // CDS dumping with a java agent without the AllowArchvingWithJavaAgent diagnostic option.
-        // VM will exit with an error message.
-        output = TestCommon.dump(appJar, TestCommon.list("Hello"),
-            "-javaagent:" + agentJar);
-        }
-        output.shouldContain("Must enable AllowArchivingWithJavaAgent in order to run Java agent during CDS dumping")
-            .shouldHaveExitValue(1);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/DumpingWithJvmtiAgent.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-/**
- * @test
- * @summary CDS dumping with JVMTI agent.
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @compile ../../test-classes/Hello.java
- * @run main/othervm/native DumpingWithJvmtiAgent
- */
-
-import java.io.File;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class DumpingWithJvmtiAgent {
-    private static final String AGENT_LIB_ONLOAD = "AddToSystemCLSearchOnLoad";
-
-    public static void main(String[] args) throws Exception {
-        String appJar = JarBuilder.getOrCreateHelloJar();
-
-        // CDS dump with a JVMTI agent with the AllowArchivingWithJavaAgent option.
-        // vm should exit with an error message.
-        OutputAnalyzer out = TestCommon.dump(
-           appJar,
-           TestCommon.list("Hello"),
-           "-XX:+UnlockDiagnosticVMOptions", "-XX:+AllowArchivingWithJavaAgent",
-           "-agentlib:" + AGENT_LIB_ONLOAD + "=" + appJar,
-           "-Djava.library.path=" + System.getProperty("java.library.path"));
-        out.shouldContain("CDS dumping does not support native JVMTI agent, name: " + AGENT_LIB_ONLOAD)
-           .shouldHaveExitValue(1);
-
-        // CDS dump with a JVMTI agent without the AllowArchivingWithJavaAgent option.
-        // vm should exit with an error message.
-        out = TestCommon.dump(
-           appJar,
-           TestCommon.list("Hello"),
-           "-agentlib:" + AGENT_LIB_ONLOAD + "=" + appJar,
-           "-Djava.library.path=" + System.getProperty("java.library.path"));
-        out.shouldContain("CDS dumping does not support native JVMTI agent, name: " + AGENT_LIB_ONLOAD)
-           .shouldHaveExitValue(1);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/SimpleAgent.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-import java.lang.instrument.Instrumentation;
-
-public class SimpleAgent {
-    public static void premain(String agentArg, Instrumentation instrumentation) {
-        System.out.println("inside SimpleAgent");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/SimpleAgent.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Premain-Class: SimpleAgent
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/dumpingWithAgent/libAddToSystemCLSearchOnLoad.c	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2018, 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 <stdio.h>
-#include <string.h>
-#include <jvmti.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    static jvmtiEnv *jvmti = NULL;
-
-    JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved) {
-        int err = (*jvm)->GetEnv(jvm, (void**) &jvmti, JVMTI_VERSION_9);
-        if (err != JNI_OK) {
-            return JNI_ERR;
-        }
-        err = (*jvmti)->AddToSystemClassLoaderSearch(jvmti, (const char*)options);
-        if (err != JVMTI_ERROR_NONE) {
-            return JNI_ERR;
-        }
-        return JNI_OK;
-    }
-
-#ifdef __cplusplus
-}
-#endif
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelClassesTransform.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-class ParallelClassTr0  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr1  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr2  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr3  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr4  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr5  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr6  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr7  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr8  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr9  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr10 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr11 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr12 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr13 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr14 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr15 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr16 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr17 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr18 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr19 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr20 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr21 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr22 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr23 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr24 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr25 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr26 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr27 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr28 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr29 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr30 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr31 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr32 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr33 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr34 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr35 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr36 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr37 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr38 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-class ParallelClassTr39 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
-
-class ParallelClassesTransform {
-    public static final int NUMBER_OF_CLASSES = 40;
-    public static final String BEFORE_PATTERN = "class-transform-check: this-should-be-transformed";
-    public static final String AFTER_PATTERN =  "class-transform-check: this-has-been--transformed";
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Load app classes from CDS archive in parallel threads,
- * use initial transformation (CFLH)
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- *     /test/hotspot/jtreg/runtime/appcds/test-classes /test/hotspot/jtreg/runtime/appcds/jvmti
- *     /test/hotspot/jtreg/testlibrary/jvmti
- * @requires vm.cds
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          java.management
- *          jdk.jartool/sun.tools.jar
- *          java.instrument
- * @build TransformUtil TransformerAgent ParallelLoad
- * @run driver ParallelLoadAndTransformTest
- */
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-public class ParallelLoadAndTransformTest {
-
-    public static void main(String[] args) throws Exception {
-        String prop = "-Dappcds.parallel.transform.mode=cflh";
-        String appJar = ClassFileInstaller.writeJar("parallel_load.jar",
-                            getClassList(true));
-        String agentJar = prepareAgent();
-
-        TestCommon.test(appJar, getClassList(false),
-                        "-javaagent:" + agentJar + "=ParallelClassTr.*",
-                        prop, "ParallelLoad");
-    }
-
-
-    private static String[] getClassList(boolean includeWatchdog) {
-        List<String> classList =
-            IntStream.range(0, ParallelClassesTransform.NUMBER_OF_CLASSES)
-            .mapToObj(i -> "ParallelClassTr" + i)
-            .collect(Collectors.toList());
-
-        classList.add("ParallelLoad");
-        classList.add("ParallelLoadThread");
-        if (includeWatchdog)
-            classList.add("ParallelLoadWatchdog");
-
-        return classList.toArray(new String[0]);
-    }
-
-
-    // Agent is the same for all test cases
-    private static String prepareAgent() throws Exception {
-        String agentClasses[] = {
-            "TransformerAgent",
-            "TransformerAgent$SimpleTransformer",
-            "TransformUtil"
-        };
-
-        String manifest = "../../../../testlibrary/jvmti/TransformerAgent.mf";
-
-        return ClassFileInstaller.writeJar("TransformerAgent.jar",
-            ClassFileInstaller.Manifest.fromSourceFile(manifest),
-                                        agentClasses);
-    }
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Exercise initial transformation (class file loader hook)
- *  with CDS/AppCDS with Interface/Implementor pair
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- *     /test/hotspot/jtreg/runtime/appcds/jvmti /test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability
- *     /test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses
- *     /test/hotspot/jtreg/runtime/SharedArchiveFile /test/hotspot/jtreg/testlibrary/jvmti
- *     /test/hotspot/jtreg/runtime/appcds/customLoader
- *     /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- *          java.instrument
- * @build TransformUtil TransformerAgent Interface Implementor
- * @run main/othervm TransformRelatedClassesAppCDS Interface Implementor
- */
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformRelatedClassesAppCDS.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-// Structure of the test:
-// TransformRelatedClassesAppCDS -- common main test driver
-// Invoked from test driver classes:
-//     TransformInterfaceAndImplementor, TransformSuperAndSubClasses.java
-//     prepares test artifacts, launches tests, checks results
-// SuperClazz, SubClass -- classes under test
-// Interface, Implementor -- classes under test
-// TransformerAgent -- an agent that is used when JVM-under-test is executed
-//     to transform specific strings inside specified classes
-// TransformerAgent.mf - accompanies transformer agent
-// CustomLoaderApp -- a test "application" that is used to load
-//     classes-under-test (Parent, Child) via custom class loader, using
-//     AppCDS-v2 mechanism (unregistered custom loaders, aka FP)
-//     This "app" is launched in a child process by this driver with sharing on.
-
-import java.io.File;
-import java.util.ArrayList;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-// This class is intended to test 2 parent-child relationships:
-// 1. Base Class (parent) and Derived Class (child)
-// 2. Interface (parent) and Implementor (child)
-//    Parameters to main(): parent, child
-
-public class TransformRelatedClassesAppCDS extends TransformRelatedClasses {
-    private static void log(String msg, Object... args) {
-        String msg0 = String.format(msg, args);
-        System.out.println("TransformRelatedClassesAppCDS: " + msg0);
-    }
-
-    // Initial Test Matrix:
-    // (ParentTransformed = true/false, ChildTransformed = true/false) x
-    // (BootCDS - see open tests, AppCDS-v1, AppCDS-v2-unregistered)
-    // Total cases: 2 x 4 = 8
-    public static void main(String args[]) throws Exception {
-        TransformRelatedClassesAppCDS test =
-            new TransformRelatedClassesAppCDS(args[0], args[1]);
-
-        test.prepareAgent(agentClasses);
-
-        // Test Table
-        // testCaseId |  transformParent | tranformChild | isParentExpectedShared | isChildExpectedShared
-        ArrayList<TestEntry> testTable = new ArrayList<>();
-
-        // base case - no tranformation - all expected to be shared
-        testTable.add(new TestEntry(0, false, false, true, true));
-
-        // transform parent only - both parent and child should not be shared
-        testTable.add(new TestEntry(1, true, false, false, false));
-
-        // transform parent and child - both parent and child should not be shared
-        testTable.add(new TestEntry(2, true, true, false, false));
-
-        // transform child only - parent should still be shared, but not child
-        testTable.add(new TestEntry(3, false, true, true, false));
-
-        // run the tests
-        test.runWithAppLoader(testTable);
-        test.runWithCustomLoader(testTable);
-    }
-
-
-    public TransformRelatedClassesAppCDS(String parent, String child) {
-        super(parent, child);
-
-        // a trick to get it compiled by jtreg
-        CustomLoaderApp.ping();
-    }
-
-
-    private void prepareAgent(String[] agentClasses) throws Exception {
-        String manifest = "../../../../testlibrary/jvmti/TransformerAgent.mf";
-        agentJar = ClassFileInstaller.writeJar("TransformerAgent.jar",
-                   ClassFileInstaller.Manifest.fromSourceFile(manifest),
-                                           agentClasses);
-    }
-
-
-    private void runWithAppLoader(ArrayList<TestEntry> testTable) throws Exception {
-        String appJar = writeJar("app", testClasses);
-
-        // create an archive
-        OutputAnalyzer out = TestCommon.dump(appJar, testClasses);
-        TestCommon.checkDump(out);
-
-        // execute with archive
-        for (TestEntry entry : testTable) {
-            log("runTestWithAppLoader(): testCaseId = %d", entry.testCaseId);
-            String params = TransformTestCommon.getAgentParams(entry, parent, child);
-            String agentParam = String.format("-javaagent:%s=%s", agentJar, params);
-            TestCommon.run("-Xlog:class+load=info", "-cp", appJar,
-                           agentParam, child)
-              .assertNormalExit(output -> TransformTestCommon.checkResults(entry, output, parent, child));
-        }
-    }
-
-
-    private String[] getCustomClassList(String loaderType, String customJar) {
-        String type = child + "-" + loaderType;
-
-        switch (type) {
-
-        case "SubClass-unregistered":
-            return new String[] {
-                "CustomLoaderApp",
-                "java/lang/Object id: 0",
-                parent + " id: 1 super: 0 source: " + customJar,
-                child +  " id: 2 super: 1 source: " + customJar,
-            };
-
-        case "Implementor-unregistered":
-            return new String[] {
-                "CustomLoaderApp",
-                "java/lang/Object id: 0",
-                parent + " id: 1 super: 0 source: " + customJar,
-                child +  " id: 2 super: 0 interfaces: 1 source: " + customJar,
-            };
-
-        default:
-            throw new IllegalArgumentException("getCustomClassList - wrong type: " + type);
-        }
-    }
-
-
-    private void runWithCustomLoader(ArrayList<TestEntry> testTable) throws Exception {
-        if (!Platform.areCustomLoadersSupportedForCDS()) {
-            log("custom loader not supported for this platform" +
-                " - skipping test case for custom loader");
-            return;
-        }
-
-        if (TestCommon.isDynamicArchive()) {
-            log("custom loader class list not applicable to dynamic archive" +
-                " - skipping test case for custom loader");
-            return;
-        }
-
-        String appClasses[] = {
-            "CustomLoaderApp",
-        };
-
-        String customClasses[] = { parent, child };
-
-        // create jar files: appJar, customJar (for custom loaders to load classes from)
-        String appJar = writeJar("custldr-app", appClasses);
-        String customJar = writeJar("custldr-custom", customClasses);
-
-        for (TestEntry entry : testTable) {
-            log("runTestWithCustomLoader(): testCaseId = %d", entry.testCaseId);
-            // unregistered (aka FP) case
-            String[] classList = getCustomClassList("unregistered",customJar);
-            execAndCheckWithCustomLoader(entry, "unregistered", classList,
-                                         appJar, agentJar, customJar);
-        }
-    }
-
-
-    private void
-        execAndCheckWithCustomLoader(TestEntry entry, String loaderType,
-                                     String[] classList, String appJar,
-                                     String agentJar, String customJar)
-        throws Exception {
-
-        OutputAnalyzer out = TestCommon.dump(appJar, classList);
-        TestCommon.checkDump(out);
-
-        String agentParam = "-javaagent:" + agentJar + "=" +
-            TransformTestCommon.getAgentParams(entry, parent, child);
-
-        TestCommon.run("-Xlog:class+load=info",
-                       "-cp", appJar,
-                       agentParam,
-                       "CustomLoaderApp",
-                       customJar, loaderType, child)
-          .assertNormalExit(output -> TransformTestCommon.checkResults(entry, output, parent, child));
-    }
-
-
-    private String writeJar(String type, String[] classes)
-        throws Exception {
-        String jarName = String.format("%s-%s.jar", child, type);
-        return ClassFileInstaller.writeJar(jarName, classes);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-/*
- * @test
- * @summary Exercise initial transformation (class file loader hook)
- *  with CDS/AppCDS with SubClass and SuperClass
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- *     /test/hotspot/jtreg/runtime/appcds/jvmti /test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability
- *     /test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses
- *     /test/hotspot/jtreg/runtime/SharedArchiveFile /test/hotspot/jtreg/testlibrary/jvmti
- *     /test/hotspot/jtreg/runtime/appcds/customLoader
- *     /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes
- * @requires vm.cds
- * @requires vm.flavor != "minimal"
- * @requires !vm.graal.enabled
- * @modules java.base/jdk.internal.misc
- *          jdk.jartool/sun.tools.jar
- *          java.management
- *          java.instrument
- * @build TransformUtil TransformerAgent SubClass SuperClazz
- * @run main/othervm TransformRelatedClassesAppCDS SuperClazz SubClass
- */
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasic.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-// package access top-level class to avoid problem with RedefineClassHelper
-// and nested types.
-class RedefineBasic_B {
-    public static void okToCallBeforeRedefine() {
-        System.out.println("okToCallBeforeRedefine");
-    }
-    public static void okToCallAfterRedefine() {
-        throw new RuntimeException("okToCallAfterRedefine is called before redefinition, test failed");
-    }
-}
-
-public class RedefineBasic {
-
-    public static String newB =
-        " class RedefineBasic_B { " +
-        " public static void okToCallBeforeRedefine() { " +
-        "    throw new RuntimeException(\"newB: okToCallBeforeRedefine is " +
-        "    called after redefinition, test failed\"); }" +
-        " public static void okToCallAfterRedefine() { " +
-        "     System.out.println(\"newB: okToCallAfterRedefine\"); } " +
-        " } ";
-
-
-
-    static class SubclassOfB extends RedefineBasic_B {
-        public static void testAfterRedefine() {
-            RedefineBasic_B.okToCallAfterRedefine();
-        }
-    }
-
-    class Subclass2OfB extends RedefineBasic_B {
-        public void testAfterRedefine() {
-            super.okToCallAfterRedefine();
-        }
-    }
-
-    // verify that a given class is shared, report error if necessary
-    public static void
-    verifyClassIsShared(WhiteBox wb, Class c) throws Exception {
-        if (!wb.isSharedClass(c)) {
-            throw new RuntimeException(
-            "This class should be shared but isn't: " + c.getName());
-        } else {
-            System.out.println("The class is shared as expected: " +
-                c.getName());
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        verifyClassIsShared(wb, RedefineBasic.class);
-        verifyClassIsShared(wb, RedefineBasic_B.class);
-        verifyClassIsShared(wb, SubclassOfB.class);
-        verifyClassIsShared(wb, Subclass2OfB.class);
-
-        // (1) Test case: verify that original B works as expected
-        // and that redefined B is shared and works as expected,
-        // with new behavior
-        RedefineBasic_B.okToCallBeforeRedefine();
-        RedefineClassHelper.redefineClass(RedefineBasic_B.class, newB);
-        verifyClassIsShared(wb, RedefineBasic_B.class);
-        RedefineBasic_B.okToCallAfterRedefine();
-
-        // Static subclass of the super:
-        // 1. Make sure it is still shared
-        // 2. and it calls the correct super (the redefined one)
-        verifyClassIsShared(wb, SubclassOfB.class);
-        SubclassOfB.testAfterRedefine();
-
-        // Same as above, but for non-static class
-        verifyClassIsShared(wb, Subclass2OfB.class);
-        RedefineBasic thisTest = new RedefineBasic();
-        thisTest.testSubclass2OfB();
-    }
-
-    public void testSubclass2OfB() {
-        Subclass2OfB sub = new Subclass2OfB();
-        sub.testAfterRedefine();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasicTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Run /serviceability/jvmti/RedefineClasses/RedefineRunningMethods in AppCDS mode to
- *          make sure class redefinition works with CDS.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/serviceability/jvmti/RedefineClasses /test/hotspot/jtreg/runtime/appcds
- * @modules java.compiler
- *          java.instrument
- *          jdk.jartool/sun.tools.jar
- *          java.base/jdk.internal.misc
- *          java.management
- * @run driver RedefineClassHelper
- * @build sun.hotspot.WhiteBox RedefineBasic
- * @run driver RedefineBasicTest
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class RedefineBasicTest {
-    public static String sharedClasses[] = {
-        "RedefineBasic",
-        "RedefineBasic_B",
-        "RedefineBasic$SubclassOfB",
-        "RedefineBasic$Subclass2OfB",
-        "RedefineClassHelper",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper$1",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$MemoryJavaFileObject"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String wbJar =
-            ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
-        String appJar =
-            ClassFileInstaller.writeJar("RedefineBasic.jar", sharedClasses);
-        String useWb = "-Xbootclasspath/a:" + wbJar;
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, sharedClasses, useWb);
-
-        // redefineagent.jar is created by executing "@run driver RedefineClassHelper"
-        // which should be called before executing RedefineBasicTest
-        output = TestCommon.exec(appJar, useWb,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 "-javaagent:redefineagent.jar",
-                                 "RedefineBasic");
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_Shared.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2016, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Run /serviceability/jvmti/RedefineClasses/RedefineRunningMethods in AppCDS mode to
- *          make sure class redefinition works with CDS.
- * @requires vm.cds
- * @library /test/lib /test/hotspot/jtreg/serviceability/jvmti/RedefineClasses /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.compiler
- *          java.instrument
- *          jdk.jartool/sun.tools.jar
- * @run driver RedefineClassHelper
- * @build sun.hotspot.WhiteBox RedefineRunningMethods_SharedHelper
- * @run driver RedefineRunningMethods_Shared
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-
-public class RedefineRunningMethods_Shared {
-    public static String shared_classes[] = {
-        "RedefineRunningMethods_Shared",
-        "RedefineRunningMethods_SharedHelper",
-        "RedefineRunningMethods",
-        "RedefineRunningMethods$1",
-        "RedefineRunningMethods$2",
-        "RedefineRunningMethods$3",
-        "RedefineRunningMethods_B",
-        "RedefineClassHelper",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper$1",
-        "jdk/test/lib/compiler/InMemoryJavaCompiler$MemoryJavaFileObject"
-    };
-
-    public static void main(String[] args) throws Exception {
-        String wbJar = ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
-        String appJar = ClassFileInstaller.writeJar("RedefineRunningMethods_Shared.jar", shared_classes);
-        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-
-        OutputAnalyzer output;
-        TestCommon.testDump(appJar, shared_classes,
-                            // command-line arguments ...
-                            use_whitebox_jar);
-
-        // RedefineRunningMethods.java contained this:
-        // @run main/othervm -javaagent:redefineagent.jar -Xlog:redefine+class+iklass+add=trace,redefine+class+iklass+purge=trace RedefineRunningMethods
-        output = TestCommon.exec(appJar,
-                                 // command-line arguments ...
-                                 use_whitebox_jar,
-                                 "-XX:+UnlockDiagnosticVMOptions",
-                                 "-XX:+WhiteBoxAPI",
-                                 // These arguments are expected by RedefineRunningMethods
-                                 "-javaagent:redefineagent.jar",
-                                 "-Xlog:redefine+class+iklass+add=trace,redefine+class+iklass+purge=trace",
-                                 "RedefineRunningMethods_SharedHelper");
-        TestCommon.checkExec(output);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_SharedHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-/**
- * This class is executed by RedefineRunningMethods_Shared.java in
- * a sub-process.
- */
-public class RedefineRunningMethods_SharedHelper {
-    public static void main(String[] args) throws Exception {
-        // (1) Validate that all classes used by RedefineRunningMethods are all shared.
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        for (String name : RedefineRunningMethods_Shared.shared_classes) {
-            name = name.replace('/', '.');
-            Class c = Class.forName(name);
-            if (!wb.isSharedClass(c)) {
-                throw new RuntimeException("Test set-up problem. " +
-                           "This class should be shared but isn't: " + name);
-            } else {
-                System.out.println("The class is shared as expected: " + name);
-            }
-        }
-
-        // (2) Run the class redefinition test.
-        RedefineRunningMethods.main(args);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Exercise GC with shared strings
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloStringGC sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver ExerciseGC
- */
-public class ExerciseGC {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, ExerciseGC::test);
-    }
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJarAndWhiteBox("HelloStringGC");
-
-        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("HelloStringGC"),
-            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
-
-        SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringGC",
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+VerifyBeforeGC");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExtraSharedInput.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-VERSION: 1.0
-@SECTION: Symbol
-0 -1: 
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-11 -1: linkMethod 
-18 -1: type can't be null
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/**
- * @test
- * @summary Test relevant combinations of command line flags with shared strings
- * @requires vm.cds.archived.java.heap & vm.hasJFR
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver FlagCombo
- */
-
-/**
- * @test
- * @summary Test relevant combinations of command line flags with shared strings
- * @comment A special test excluding the case that requires JFR
- * @requires vm.cds.archived.java.heap & !vm.hasJFR
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules java.base/jdk.internal.misc
- * @modules java.management
- *          jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver FlagCombo noJfr
- */
-
-import jdk.test.lib.BuildHelper;
-import jdk.test.lib.Platform;
-
-public class FlagCombo {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.buildJar("HelloString");
-
-        SharedStringsUtils.dump(TestCommon.list("HelloString"),
-            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
-
-        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseG1GC");
-
-        if (args.length == 0) {
-            SharedStringsUtils.runWithArchiveAuto("HelloString",
-                "-XX:StartFlightRecording=dumponexit=true");
-        }
-
-        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UnlockDiagnosticVMOptions",
-           "-XX:NativeMemoryTracking=detail", "-XX:+PrintNMTStatistics");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloString.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class HelloString {
-    public static void main(String args[]) {
-        // Let's reference the string that is in the archive
-        // Make sure the string below is in the shared string data file (string list)
-        String testString = "shared_test_string_unique_14325";
-        System.out.println("Hello String: " + testString);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloStringGC.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class HelloStringGC {
-    public static String[] array01 = new String[1000];
-    public static String[] array02 = new String[1000];
-
-    public static void main(String args[]) throws RuntimeException {
-        String testString1 = "shared_test_string_unique_14325";
-        String testString2 = "test123";
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (!wb.isShared(testString1) && !wb.areSharedStringsIgnored()) {
-            throw new RuntimeException("testString1 is not shared");
-        }
-
-        for (int i=0; i<5; i++) {
-            allocSomeStrings(testString1, testString2);
-            array01 = null;
-            array02 = null;
-            System.gc();
-            sleep(300);
-            array01 = new String[1000];
-            array02 = new String[1000];
-        }
-
-        wb.fullGC();
-
-        System.out.println("HelloStringGC: PASS");
-    }
-
-    private static void allocSomeStrings(String s1, String s2) {
-        for (int i = 0; i < 1000; i ++) {
-            array01[i] = new String(s1);
-            array02[i] = new String(s2);
-        }
-    }
-
-    private static void sleep(int ms) {
-        try {
-            Thread.sleep(ms);
-        } catch (InterruptedException e) {
-        }
-    }
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/HelloStringPlus.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-// A test class to be launched in AppCDS mode, has basic+
-// coverage of string operations
-
-import sun.hotspot.WhiteBox;
-
-public class HelloStringPlus {
-    public static void main(String args[]) {
-        // Let's reference the string that is in archive
-        String testString1 = "shared_test_string_unique_14325";
-        System.out.println("Hello String: " + testString1);
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (!wb.isShared(testString1) && !wb.areSharedStringsIgnored()) {
-            throw new RuntimeException("testString1 is not shared");
-        }
-
-        // Check other basic string operations
-        // Interning and equality
-        String[] testArray = new String[] {"shared_", "test_", "string_", "intern_", "12345"};
-        String toBeInterned = "";
-
-        StringBuilder sb = new StringBuilder();
-        for (String s : testArray) {
-            sb.append(s);
-        }
-        toBeInterned = sb.toString();
-
-        System.out.println("About to intern a string: " + toBeInterned);
-        toBeInterned.intern();
-
-        // check equality
-        if (testString1.equals(toBeInterned))
-            throw new RuntimeException("Equality test 1 failed");
-
-        if (!testString1.equals("shared_test_string" + '_' + "unique_14325"))
-            throw new RuntimeException("Equality test 2 failed");
-
-        // Chech the hash code functionality; no special assertions, just make sure
-        // no crashe or exception occurs
-        System.out.println("testString1.hashCode() = " + testString1.hashCode());
-
-        // Check intern() method for "" string
-        String empty = "";
-        String empty_interned = empty.intern();
-        if (!wb.isShared(empty)) {
-           throw new RuntimeException("Empty string should be shared");
-        }
-        if (empty_interned != empty) {
-            throw new RuntimeException("Different string is returned from intern() for empty string");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-// NOTE: the test takes a long time for each VM option combination, so we split
-// it into 3 @test parts, so that they can be executed in parallel. If you make a
-// change, please ensure all @test blocks are in sync.
-
-
-/*
- * @test
- * @summary Test options that are incompatible with use of shared strings
- *          Also test mismatch in oops encoding between dump time and run time
- * @requires vm.cds.archived.java.heap
- * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
- * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
- * vm options.
- * @requires (vm.gc=="null")
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
- * @build HelloString
- * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 0
- */
-
-
-/*
- * @test
- * @requires vm.cds.archived.java.heap
- * @requires (vm.gc=="null")
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
- * @build HelloString
- * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 1
- */
-
-/*
- * @test
- * @requires vm.cds.archived.java.heap
- * @requires (vm.gc=="null")
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
- * @build HelloString
- * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 2
- */
-
-
-import jdk.test.lib.Asserts;
-import jdk.test.lib.Platform;
-import jdk.test.lib.process.OutputAnalyzer;
-
-import sun.hotspot.code.Compiler;
-import sun.hotspot.gc.GC;
-
-public class IncompatibleOptions {
-    static final String COOPS_DUMP_WARNING =
-        "Cannot dump shared archive when UseCompressedOops or UseCompressedClassPointers is off";
-    static final String COOPS_EXEC_WARNING =
-        "UseCompressedOops and UseCompressedClassPointers must be on for UseSharedSpaces";
-    static final String GC_WARNING =
-        "Archived java heap is not supported";
-    static final String OBJ_ALIGNMENT_MISMATCH =
-        "The shared archive file's ObjectAlignmentInBytes of .* does not equal the current ObjectAlignmentInBytes of";
-    static final String COMPACT_STRING_MISMATCH =
-        "The shared archive file's CompactStrings setting .* does not equal the current CompactStrings setting";
-
-    static String appJar;
-    static String[] vmOptionsPrefix = {};
-
-    public static void main(String[] args) throws Exception {
-        String[] noargs = {};
-        SharedStringsUtils.run(Integer.parseInt(args[0]), 3, noargs, IncompatibleOptions::test);
-        // Add a new @test block if you get an assert ----^ about this number. See
-        // SharedStringsUtils.java for details.
-    }
-
-    public static void test(String[] args_ignored) throws Exception {
-        vmOptionsPrefix = SharedStringsUtils.getChildVMOptionsPrefix();
-        appJar = JarBuilder.build("IncompatibleOptions", "HelloString");
-
-        // Uncompressed OOPs
-        testDump(1, "-XX:+UseG1GC", "-XX:-UseCompressedOops", COOPS_DUMP_WARNING, true);
-        if (GC.Z.isSupported()) { // ZGC is included in build.
-            testDump(1, "-XX:+UnlockExperimentalVMOptions", "-XX:+UseZGC", COOPS_DUMP_WARNING, true);
-        }
-
-        // incompatible GCs
-        testDump(2, "-XX:+UseParallelGC", "", GC_WARNING, false);
-        testDump(3, "-XX:+UseSerialGC", "", GC_WARNING, false);
-        if (!Compiler.isGraalEnabled()) { // Graal does not support CMS
-            testDump(4, "-XX:+UseConcMarkSweepGC", "", GC_WARNING, false);
-        }
-
-        // ======= archive with compressed oops, run w/o
-        testDump(5, "-XX:+UseG1GC", "-XX:+UseCompressedOops", null, false);
-        testExec(5, "-XX:+UseG1GC", "-XX:-UseCompressedOops",
-                 COOPS_EXEC_WARNING, true);
-
-        // NOTE: No warning is displayed, by design
-        // Still run, to ensure no crash or exception
-        testExec(6, "-XX:+UseParallelGC", "", "", false);
-        testExec(7, "-XX:+UseSerialGC", "", "", false);
-        if (!Compiler.isGraalEnabled()) { // Graal does not support CMS
-            testExec(8, "-XX:+UseConcMarkSweepGC", "", "", false);
-        }
-
-        // Test various oops encodings, by varying ObjectAlignmentInBytes and heap sizes
-        testDump(9, "-XX:+UseG1GC", "-XX:ObjectAlignmentInBytes=8", null, false);
-        testExec(9, "-XX:+UseG1GC", "-XX:ObjectAlignmentInBytes=16",
-                 OBJ_ALIGNMENT_MISMATCH, true);
-
-        // See JDK-8081416 - Oops encoding mismatch with shared strings
-        // produces unclear or incorrect warning
-        // Correct the test case once the above is fixed
-        // @ignore JDK-8081416 - for tracking purposes
-        // for now, run test as is until the proper behavior is determined
-        testDump(10, "-XX:+UseG1GC", "-Xmx1g", null, false);
-        testExec(10, "-XX:+UseG1GC", "-Xmx32g", null, true);
-
-        // CompactStrings must match between dump time and run time
-        testDump(11, "-XX:+UseG1GC", "-XX:-CompactStrings", null, false);
-        testExec(11, "-XX:+UseG1GC", "-XX:+CompactStrings",
-                 COMPACT_STRING_MISMATCH, true);
-        testDump(12, "-XX:+UseG1GC", "-XX:+CompactStrings", null, false);
-        testExec(12, "-XX:+UseG1GC", "-XX:-CompactStrings",
-                 COMPACT_STRING_MISMATCH, true);
-    }
-
-    static void testDump(int testCaseNr, String collectorOption, String extraOption,
-        String expectedWarning, boolean expectedToFail) throws Exception {
-
-        System.out.println("Testcase: " + testCaseNr);
-        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"),
-            TestCommon.concat(vmOptionsPrefix,
-                "-XX:+UseCompressedOops",
-                collectorOption,
-                "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("SharedStringsBasic.txt"),
-                "-Xlog:cds,cds+hashtables",
-                extraOption));
-
-        if (expectedWarning != null) {
-            output.shouldContain(expectedWarning);
-        }
-
-        if (expectedToFail) {
-            Asserts.assertNE(output.getExitValue(), 0,
-            "JVM is expected to fail, but did not");
-        }
-    }
-
-    static void testExec(int testCaseNr, String collectorOption, String extraOption,
-        String expectedWarning, boolean expectedToFail) throws Exception {
-
-        OutputAnalyzer output;
-        System.out.println("Testcase: " + testCaseNr);
-
-        // needed, otherwise system considers empty extra option as a
-        // main class param, and fails with "Could not find or load main class"
-        if (!extraOption.isEmpty()) {
-            output = TestCommon.exec(appJar,
-                TestCommon.concat(vmOptionsPrefix,
-                    "-XX:+UseCompressedOops",
-                    collectorOption, "-Xlog:cds", extraOption, "HelloString"));
-        } else {
-            output = TestCommon.exec(appJar,
-                TestCommon.concat(vmOptionsPrefix,
-                    "-XX:+UseCompressedOops",
-                    collectorOption, "-Xlog:cds", "HelloString"));
-        }
-
-        if (expectedWarning != null) {
-            output.shouldMatch(expectedWarning);
-        }
-
-        if (expectedToFail) {
-            Asserts.assertNE(output.getExitValue(), 0);
-        } else {
-            SharedStringsUtils.checkExec(output);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test shared strings together with string intern operation
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile InternStringTest.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver InternSharedString
- */
-
-public class InternSharedString {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, InternSharedString::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJarAndWhiteBox("InternStringTest");
-
-        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("InternStringTest"),
-            "ExtraSharedInput.txt", "-Xlog:cds,cds+hashtables");
-
-        String[] extraMatches = new String[]   {
-            InternStringTest.passed_output1,
-            InternStringTest.passed_output2,
-            InternStringTest.passed_output3  };
-
-        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatches, "InternStringTest");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternStringTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class InternStringTest {
-    public static String passed_output1 = "Found shared string.";
-    public static String passed_output2 = "Shared strings are equal.";
-    public static String passed_output3 = "Found shared string containing latin1 supplement chars.";
-    public static String passed_output4 = "Found shared string containing non-western chars.";
-    public static final String latin1Sup  = "XXXX \u00a3 YYYY"; // \u00a3 = The pound sign
-    public static final String nonWestern = "XXXX \u5678 YYYY"; // \u5678 = Unicode Han Character 'ton (metric or English)'
-
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        // All string literals are shared.
-        String shared1 = "LiveOak";
-        String interned1 = shared1.intern();
-        if (wb.areSharedStringsIgnored() || wb.isShared(interned1)) {
-            System.out.println(passed_output1);
-        } else {
-            throw new RuntimeException("Failed: String is not shared.");
-        }
-
-        // Test 2: shared_string1.intern() == shared_string2.intern()
-        String shared2 = "LiveOak";
-        String interned2 = shared2.intern();
-        if (interned1 == interned2) {
-            System.out.println(passed_output2);
-        } else {
-            throw new RuntimeException("Not equal!");
-        }
-
-        // Test 3: interned strings with a char in latin1 supplement block [\u0080-\u00ff]
-        {
-            String a = "X" + latin1Sup.substring(1);
-            String b = a.intern();
-
-            if (wb.areSharedStringsIgnored() || wb.isShared(b)) {
-                System.out.println(passed_output3);
-            } else {
-                throw new RuntimeException("Failed: expected shared string with latin1-supplement chars.");
-            }
-        }
-
-        // Test 5: interned strings with non-western characters
-        {
-            String a = "X" + nonWestern.substring(1);
-            String b = a.intern();
-            if (wb.areSharedStringsIgnored() || wb.isShared(b)) {
-                System.out.println(passed_output4);
-            } else {
-                throw new RuntimeException("Failed: expected shared string with non-western chars.");
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Check most common errors in file format
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver InvalidFileFormat
- */
-
-import java.io.File;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.OutputAnalyzer;
-
-// Checking most common error use cases
-// This file is not an exhastive test of various shared data file corruption
-// Note on usability intent: the shared data file is created and handled by
-// the previledge person in the server environment.
-public class InvalidFileFormat {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, InvalidFileFormat::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJar("HelloString");
-
-        test("NonExistentFile.txt", "Unable to get hashtable dump file size");
-        test("InvalidHeader.txt", "wrong version of hashtable dump file");
-        test("InvalidVersion.txt", "wrong version of hashtable dump file");
-        test("CorruptDataLine.txt", "Unknown data type. Corrupted at line 2");
-        test("InvalidSymbol.txt", "Unexpected character. Corrupted at line 2");
-        test("InvalidSymbolFormat.txt", "Unrecognized format. Corrupted at line 9");
-        test("OverflowPrefix.txt", "Num overflow. Corrupted at line 4");
-        test("UnrecognizedPrefix.txt", "Unrecognized format. Corrupted at line 5");
-        test("TruncatedString.txt", "Truncated. Corrupted at line 3");
-        test("LengthOverflow.txt", "string length too large: 2147483647");
-    }
-
-    private static void
-        test(String dataFileName, String expectedWarning) throws Exception {
-        System.out.println("Filename for testcase: " + dataFileName);
-
-        OutputAnalyzer out = SharedStringsUtils.dumpWithoutChecks(TestCommon.list("HelloString"),
-                                 "invalidFormat" + File.separator + dataFileName);
-
-        CDSTestUtils.checkMappingFailure(out);
-        out.shouldContain(expectedWarning).shouldHaveExitValue(1);
-    }
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Basic shared string test with large pages
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver LargePages
- */
-public class LargePages {
-    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
-
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, LargePages::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJar("HelloString");
-
-        SharedStringsUtils.dump(TestCommon.list("HelloString"),
-            "SharedStringsBasic.txt", "-XX:+UseLargePages", CDS_LOGGING);
-        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseLargePages");
-
-        SharedStringsUtils.dump(TestCommon.list("HelloString"),
-            "SharedStringsBasic.txt", CDS_LOGGING,
-            "-XX:+UseLargePages", "-XX:+UseLargePagesInMetaspace");
-        SharedStringsUtils.runWithArchive("HelloString",
-            "-XX:+UseLargePages", "-XX:+UseLargePagesInMetaspace");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Test locking on shared strings
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @compile LockStringTest.java LockStringValueTest.java
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver LockSharedStrings
- */
-
-public class LockSharedStrings {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, LockSharedStrings::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJarAndWhiteBox("LockStringTest", "LockStringValueTest");
-
-        SharedStringsUtils.dumpWithWhiteBox(
-            TestCommon.list("LockStringTest", "LockStringValueTest"),
-            "ExtraSharedInput.txt", "-Xlog:cds,cds+hashtables");
-
-        String[] extraMatch = new String[] {"LockStringTest: PASS"};
-        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatch, "LockStringTest");
-
-        extraMatch = new String[] {"LockStringValueTest: PASS"};
-        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatch, "LockStringValueTest",
-            "--add-opens=java.base/java.lang=ALL-UNNAMED");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockStringTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class LockStringTest extends Thread {
-    static String lock;
-    static boolean done;
-    static WhiteBox wb = WhiteBox.getWhiteBox();
-
-    public static void main(String[] args) throws Exception {
-
-        if (wb.areSharedStringsIgnored()) {
-            System.out.println("The shared strings are ignored");
-            System.out.println("LockStringTest: PASS");
-            return;
-        }
-
-        if (!wb.isShared(LockStringTest.class)) {
-            throw new RuntimeException("Failed: LockStringTest class is not shared.");
-        }
-
-        // Note: This class is archived. All string literals (including the ones used in this class)
-        // in all archived classes are interned into the CDS shared string table.
-
-        doTest("StringLock", false);
-        doTest("", true);
-
-        // The following string has a 0 hashCode. Calling String.hashCode() could cause
-        // the String.hash field to be written into, if so make sure we don't functionally
-        // break.
-        doTest("\u0121\u0151\u00a2\u0001\u0001\udbb2", true);
-    }
-
-    private static void doTest(String s, boolean hasZeroHashCode) throws Exception {
-        lock = s;
-        done = false;
-
-        if (!wb.isShared(lock)) {
-            throw new RuntimeException("Failed: String \"" + lock + "\" is not shared.");
-        }
-
-        if (hasZeroHashCode && lock.hashCode() != 0) {
-            throw new RuntimeException("Shared string \"" + lock + "\" should have 0 hashCode, but is instead " + lock.hashCode());
-        }
-
-        String copy = new String(lock);
-        if (lock.hashCode() != copy.hashCode()) {
-            throw new RuntimeException("Shared string \"" + lock + "\" does not have the same hashCode as its non-shared copy");
-        }
-
-        new LockStringTest().start();
-
-        synchronized(lock) {
-            while (!done) {
-                lock.wait();
-            }
-        }
-        System.gc();
-        System.out.println("LockStringTest: PASS");
-    }
-
-    public void run() {
-        String shared = "LiveOak";
-        synchronized (lock) {
-            for (int i = 0; i < 100; i++) {
-                new String(shared);
-                System.gc();
-                try {
-                    sleep(5);
-                } catch (InterruptedException e) {}
-            }
-            done = true;
-            lock.notify();
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockStringValueTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.lang.reflect.*;
-import sun.hotspot.WhiteBox;
-
-/*
- * Lock the 'value' field of a known shared string, java.lang.Object
- */
-public class LockStringValueTest {
-    public static void main(String args[]) {
-        String s = "LiveOak";
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (wb.areSharedStringsIgnored()) {
-            System.out.println("The shared strings are ignored");
-            System.out.println("LockStringValueTest: PASS");
-            return;
-        }
-
-        if (!wb.isShared(s)) {
-            throw new RuntimeException("LockStringValueTest Failed: String is not shared.");
-        }
-
-        Class c = s.getClass();
-        try {
-            Field f = c.getDeclaredField("value");
-            f.setAccessible(true);
-            Object v = f.get(s);
-            lock(v);
-        } catch (NoSuchFieldException nfe) {
-        } catch (IllegalAccessException iae) {}
-    }
-
-    public static void lock(Object o) {
-        synchronized (o) {
-            System.out.println("LockStringValueTest: PASS");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Basic test for shared strings
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver SharedStringsBasic
- */
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-// This test does not use SharedStringsUtils.dumpXXX()
-// and SharedStringsUtils.runWithXXX() intentionally:
-// - in order to demonstrate the basic use of the functionality
-// - to provide sanity check and catch potential problems in the utils
-public class SharedStringsBasic {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, SharedStringsBasic::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
-
-        String appJar = JarBuilder.build("SharedStringsBasic", "HelloString");
-
-        String sharedArchiveConfigFile =
-            TestCommon.getSourceFile("SharedStringsBasic.txt").toString();
-
-        ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
-          TestCommon.concat(vmOptionsPrefix,
-            "-cp", appJar,
-            "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
-            "-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
-            "-Xshare:dump",
-            "-Xlog:cds,cds+hashtables"));
-
-        TestCommon.executeAndLog(dumpPb, "dump")
-            .shouldContain("Shared string table stats")
-            .shouldHaveExitValue(0);
-
-        ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
-          TestCommon.concat(vmOptionsPrefix,
-            "-cp", appJar,
-            "-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
-            "-Xshare:auto",
-            "-showversion",
-            "HelloString"));
-
-        TestCommon.executeAndLog(runPb, "run").shouldHaveExitValue(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-@SECTION: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Basic plus test for shared strings
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloStringPlus sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver SharedStringsBasicPlus
- */
-
-public class SharedStringsBasicPlus {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, SharedStringsBasicPlus::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJarAndWhiteBox("HelloStringPlus");
-
-        SharedStringsUtils.dumpWithWhiteBox( TestCommon.list("HelloStringPlus"),
-            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
-
-        SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringPlus");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsHumongous.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Use a shared string allocated in a humongous G1 region.
- * @comment -- the following implies that G1 is used (by command-line or by default)
- * @requires vm.cds.archived.java.heap
- *
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloString
- * @build sun.hotspot.WhiteBox
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
- * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. SharedStringsHumongous
- */
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import sun.hotspot.WhiteBox;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.Asserts;
-
-public class SharedStringsHumongous {
-    static String sharedArchiveConfigFile = System.getProperty("user.dir") + File.separator + "SharedStringsHumongous_gen.txt";
-
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        try (FileOutputStream fos = new FileOutputStream(sharedArchiveConfigFile)) {
-            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
-            out.println("VERSION: 1.0");
-            out.println("@SECTION: String");
-            out.println("31: shared_test_string_unique_14325");
-            int region_size = wb.g1RegionSize();
-            char body[] = new char[region_size + region_size / 2];
-            for (int i = 0; i < body.length; i++) {
-              body[i] = 'x';
-            }
-            Asserts.assertTrue(wb.g1IsHumongous(body));
-            String prefix = "generated_string (followed by " + body.length + " 'x') ";
-
-            System.out.println("G1 region size: " + region_size);
-            System.out.println("Using a humongous string: " + prefix);
-
-            String s = prefix + new String(body);
-            out.println(s.length() + ": " + s);
-            out.close();
-        }
-
-        SharedStringsUtils.run(args, SharedStringsHumongous::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
-        String appJar = JarBuilder.build("SharedStringsHumongous", "HelloString");
-
-        OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
-                TestCommon.concat(vmOptionsPrefix,
-                    "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
-                    "-Xlog:gc+region+cds",
-                    "-Xlog:gc+region=trace"));
-        TestCommon.checkDump(dumpOutput, "extra interned string ignored; size too large");
-        // Extra strings that are humongous are not kelp alive, so they should be GC'ed
-        // before dumping the string table. That means the heap should contain no
-        // humongous regions.
-        dumpOutput.shouldNotMatch("gc,region,cds. HeapRegion 0x[0-9a-f]* HUM");
-
-        OutputAnalyzer execOutput = TestCommon.exec(appJar,
-            TestCommon.concat(vmOptionsPrefix, "HelloString"));
-        TestCommon.checkExec(execOutput);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary Write a lots of shared strings.
- * @requires vm.cds.archived.java.heap
- * @library /test/hotspot/jtreg/runtime/appcds /test/lib
- * @modules jdk.jartool/sun.tools.jar
- * @build HelloString
- * @run driver/timeout=500 SharedStringsStress
- */
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class SharedStringsStress {
-    static String sharedArchiveConfigFile = System.getProperty("user.dir") + File.separator + "SharedStringsStress_gen.txt";
-
-    public static void main(String[] args) throws Exception {
-        try (FileOutputStream fos = new FileOutputStream(sharedArchiveConfigFile)) {
-            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
-            out.println("VERSION: 1.0");
-            out.println("@SECTION: String");
-            out.println("31: shared_test_string_unique_14325");
-            for (int i=0; i<200000; i++) {
-                String s = "generated_string " + i;
-                out.println(s.length() + ": " + s);
-            }
-            out.close();
-        }
-
-        SharedStringsUtils.run(args, SharedStringsStress::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
-        String appJar = JarBuilder.build("SharedStringsStress", "HelloString");
-
-        String test_cases[][] = {
-            // default heap size
-            {},
-
-            // Test for handling of heap fragmentation. With sharedArchiveConfigFile, we will dump about
-            // 18MB of shared objects on 64 bit VM (smaller on 32-bit).
-            //
-            // During dump time, an extra copy of these objects are allocated,
-            // so we need about 36MB, plus a few MB for other system data. So 64MB total heap
-            // should be enough.
-            //
-            // The VM should executed a full GC to maximize contiguous free space and
-            // avoid fragmentation.
-            {"-Xmx64m"},
-        };
-
-        for (String[] extra_opts: test_cases) {
-            vmOptionsPrefix = TestCommon.concat(vmOptionsPrefix, extra_opts);
-
-            OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
-                TestCommon.concat(vmOptionsPrefix,
-                    "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
-                    "-Xlog:gc+region+cds",
-                    "-Xlog:gc+region=trace"));
-            TestCommon.checkDump(dumpOutput);
-            OutputAnalyzer execOutput = TestCommon.exec(appJar,
-                TestCommon.concat(vmOptionsPrefix, "HelloString"));
-            TestCommon.checkExec(execOutput);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsUtils.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import jdk.test.lib.cds.CDSOptions;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.Asserts;
-
-// A helper/utility class for testing shared strings
-public class SharedStringsUtils {
-    public static final String TEST_JAR_NAME =      "test";
-    public static final String TEST_JAR_NAME_FULL = "test.jar";
-    public static final String WHITEBOX_JAR_NAME =  "whitebox";
-
-    public static interface Test {
-        public void dotest(String args[]) throws Exception ;
-    }
-
-    private static String[][] vmOptionCombos = {
-        {},
-        {"-XX:+UseStringDeduplication"},
-        {"-XX:-CompactStrings"}
-    };
-
-    private static String childVMOptionsPrefix[] = {};
-
-    // SharedStringsUtils.run() is for running the main test body multiple times, each with a different
-    // set of extra VM options that are passed to the child processes.
-    //
-    // See ./ExerciseGC.java for an example.
-    public static void run(String args[], Test t) throws Exception {
-        int numSetOfChildVMOptions = vmOptionCombos.length;
-        for (int i=0; i< numSetOfChildVMOptions; i++) {
-            run(i, numSetOfChildVMOptions, args, t);
-        }
-    }
-
-    public static void run(int i, int numSetOfChildVMOptions, String args[], Test t) throws Exception {
-        // When you add a new set of options to vmOptionCombos, we make sure all
-        // callers of this method (i.e., IncompatibleOptions.java) knows about it and will
-        // add new @test blocks accordingly.
-        Asserts.assertEQ(numSetOfChildVMOptions, vmOptionCombos.length);
-        String opts[] = vmOptionCombos[i];
-
-        System.out.print("Running with extra VM option prefix for child processes [" + opts.length + "] =");
-        for (String o : opts) {
-            System.out.print(" " + o);
-        }
-        System.out.println();
-        childVMOptionsPrefix = opts;
-        t.dotest(args);
-    }
-
-    public static String[] getChildVMOptionsPrefix() {
-        return childVMOptionsPrefix;
-    }
-
-    public static String getWbParam() {
-        return "-Xbootclasspath/a:" + TestCommon.getTestJar(WHITEBOX_JAR_NAME + ".jar");
-    }
-
-    // build the test jar
-    public static void buildJar(String... classes) throws Exception {
-        JarBuilder.build(TEST_JAR_NAME, classes);
-    }
-
-    // build the test jar and a whitebox jar
-    public static void buildJarAndWhiteBox(String... classes) throws Exception {
-        JarBuilder.build(true, WHITEBOX_JAR_NAME, "sun/hotspot/WhiteBox");
-        buildJar(classes);
-    }
-
-    // execute the "dump" operation, but do not check the output
-    public static OutputAnalyzer dumpWithoutChecks(String appClasses[],
-        String sharedDataFile, String... extraOptions) throws Exception {
-
-        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
-        String[] args =
-            TestCommon.concat(extraOptions, "-XX:+UseCompressedOops", "-XX:+UseG1GC",
-            "-XX:SharedArchiveConfigFile=" +
-            TestCommon.getSourceFile(sharedDataFile));
-        args = TestCommon.concat(childVMOptionsPrefix, args);
-
-        return TestCommon.dump(appJar, appClasses, args);
-    }
-
-    // execute the dump operation and check the output
-    public static OutputAnalyzer dump(String appClasses[],
-        String sharedDataFile, String... extraOptions) throws Exception {
-        OutputAnalyzer output = dumpWithoutChecks(appClasses, sharedDataFile, extraOptions);
-        checkDump(output);
-        return output;
-    }
-
-    public static OutputAnalyzer dumpWithWhiteBox(String appClasses[],
-        String sharedDataFile, String... extraOptions) throws Exception {
-        return dump(appClasses, sharedDataFile,
-            TestCommon.concat(extraOptions, getWbParam()) );
-    }
-
-    // execute/run test with shared archive
-    public static OutputAnalyzer runWithArchiveAuto(String className,
-        String... extraOptions) throws Exception {
-
-        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
-        String[] args = TestCommon.concat(extraOptions,
-            "-cp", appJar, "-XX:+UseCompressedOops", "-XX:+UseG1GC", className);
-        args = TestCommon.concat(childVMOptionsPrefix, args);
-
-        OutputAnalyzer output = TestCommon.execAuto(args);
-        checkExecAuto(output);
-        return output;
-    }
-
-    public static OutputAnalyzer runWithArchive(String className,
-        String... extraOptions) throws Exception {
-
-        return runWithArchive(new String[0], className, extraOptions);
-    }
-
-    public static OutputAnalyzer runWithArchive(String[] extraMatches,
-        String className, String... extraOptions) throws Exception {
-
-        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
-        String[] args = TestCommon.concat(extraOptions,
-            "-XX:+UseCompressedOops", "-XX:+UseG1GC", className);
-        args = TestCommon.concat(childVMOptionsPrefix, args);
-
-        OutputAnalyzer output = TestCommon.exec(appJar, args);
-        checkExec(output, extraMatches);
-        return output;
-    }
-
-
-    // execute/run test with shared archive and white box
-    public static OutputAnalyzer runWithArchiveAndWhiteBox(String className,
-        String... extraOptions) throws Exception {
-
-        return runWithArchive(className,
-            TestCommon.concat(extraOptions, getWbParam(),
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI") );
-    }
-
-    public static OutputAnalyzer runWithArchiveAndWhiteBox(String[] extraMatches,
-        String className, String... extraOptions) throws Exception {
-
-        return runWithArchive(extraMatches, className,
-            TestCommon.concat(extraOptions, getWbParam(),
-            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI") );
-    }
-
-
-    public static void checkDump(OutputAnalyzer output) throws Exception {
-        output.shouldContain("Shared string table stats");
-        TestCommon.checkDump(output);
-    }
-
-    public static void checkExec(OutputAnalyzer output) throws Exception {
-        TestCommon.checkExec(output, new String[0]);
-    }
-
-    public static void checkExecAuto(OutputAnalyzer output) throws Exception {
-        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
-        TestCommon.checkExec(output, opts);
-    }
-
-    public static void checkExec(OutputAnalyzer output, String[] extraMatches) throws Exception {
-        TestCommon.checkExec(output, extraMatches);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWb.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class SharedStringsWb {
-    public static void main(String[] args) throws Exception {
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        String s = "shared_test_string_unique_14325";
-        s = s.intern();
-        if (wb.areSharedStringsIgnored() || wb.isShared(s)) {
-            System.out.println("Found shared string.");
-        } else {
-            throw new RuntimeException("String is not shared.");
-        }
-    }
-}
-
-
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-/*
- * @test
- * @summary White box test for shared strings
- * @requires vm.cds.archived.java.heap
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @modules jdk.jartool/sun.tools.jar
- * @build sun.hotspot.WhiteBox SharedStringsWb
- * @run driver ClassFileInstaller sun.hotspot.WhiteBox
- * @run driver SharedStringsWbTest
- */
-
-import java.io.*;
-import sun.hotspot.WhiteBox;
-
-public class SharedStringsWbTest {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, SharedStringsWbTest::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        SharedStringsUtils.buildJarAndWhiteBox("SharedStringsWb");
-
-        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("SharedStringsWb"),
-            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
-
-        SharedStringsUtils.runWithArchiveAndWhiteBox("SharedStringsWb");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-/*
- * @test
- * @summary Regression test for JDK-8098821
- * @bug 8098821
- * @requires vm.cds.archived.java.heap
- * @modules jdk.jartool/sun.tools.jar
- * @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @run driver SysDictCrash
- */
-
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
-
-public class SysDictCrash {
-    public static void main(String[] args) throws Exception {
-        SharedStringsUtils.run(args, SysDictCrash::test);
-    }
-
-    public static void test(String[] args) throws Exception {
-        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
-
-        // SharedBaseAddress=0 puts the archive at a very high address on solaris,
-        // which provokes the crash.
-        ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
-          TestCommon.concat(vmOptionsPrefix,
-            "-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
-            "-cp", ".",
-            "-XX:SharedBaseAddress=0", "-XX:SharedArchiveFile=./SysDictCrash.jsa",
-            "-Xshare:dump",
-            "-showversion", "-Xlog:cds,cds+hashtables"));
-
-        boolean continueTest = true;
-        OutputAnalyzer output = TestCommon.executeAndLog(dumpPb, "dump");
-        try {
-            TestCommon.checkDump(output);
-        } catch (java.lang.RuntimeException re) {
-            if (!output.getStdout().contains("UseCompressedOops and UseCompressedClassPointers have been disabled due to")) {
-                throw re;
-            } else {
-                System.out.println("Shared archive was not created due to UseCompressedOops and UseCompressedClassPointers have been disabled.");
-                continueTest = false;
-            }
-        }
-
-        if (!continueTest) {
-            return;
-        }
-
-        ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
-          TestCommon.concat(vmOptionsPrefix,
-            "-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
-            "-XX:SharedArchiveFile=./SysDictCrash.jsa",
-            "-Xshare:on",
-            "-version"));
-
-        TestCommon.checkExec(TestCommon.executeAndLog(runPb, "exec"));
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/CorruptDataLine.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-VERSION: 1.0
-SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-#DATATYPE: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidDataType.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-#DATATYPE: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidHeader.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-Garbage Header x0935#%0sl
-@SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-#DATATYPE: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidString.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-31: shred_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidStringFormat.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-5:: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-#DATATYPE: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidSymbol.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-VERSION: 1.0
-@SECTION:  String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-8: cyrillic
-@SECTION:  Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMet%%%hod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidSymbolFormat.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-@SECTION: Symbol
-41: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/InvalidVersion.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-VERSION: 0.0
-@SECTION: String
-0: 
-5: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-1: *
-1: -
-1: .
-1: /
-1: :
-1: C
-1: I
-1: J
-1: U
-1: Z
-1: _
-8: segments
-1: |
-5: cp850
-5: cp852
-5: cp855
-5: cp857
-5: cp858
-5: cp862
-5: cp866
-11: ISO_8859_13
-11: ISO_8859_15
-5: cp874
-47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
-7: CHECKED
-3: zip
-10: waitStatus
-33: java.lang.invoke.MethodHandleImpl
-7: .jimage
-5: cp912
-5: cp914
-5: cp915
-5: cp920
-5: cp923
-5: cp936
-5: euccn
-5: eucjp
-11: permissions
-5: euckr
-6: SIGNAL
-5: cp737
-17: java.library.path
-5: cp775
-13: classValueMap
-4: utf8
-9: PROPAGATE
-9: baseCount
-7: cskoi8r
-8: cyrillic
-#DATATYPE: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/LengthOverflow.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-2147483647: s
-5: cp819
-31: shared_test_string_intern_12345
-7: test123
-@SECTION: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/OverflowPrefix.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-2147483648: cp819
-31: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-@SECTION: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/TruncatedString.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-40000: s
-5: cp819
-31: shared_test_string_intern_12345
-7: test123
-@SECTION: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/invalidFormat/UnrecognizedPrefix.txt	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-VERSION: 1.0
-@SECTION: String
-0: 
-5: cp819
-3E: shared_test_string_unique_14325
-31: shared_test_string_intern_12345
-7: test123
-@SECTION: Symbol
-41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
-10 -1: linkMethod
-20 -1: isAlphaNumericString
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ArrayListTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-import java.util.*;
-
-// This is a test case executed by DumpClassList.java to load classes
-// from various places to ensure that they are not written to the class list.
-public class ArrayListTest {
-    public static void main(String args[]) throws Exception {
-        // The following lambda usage should generate various classes like
-        // java.lang.invoke.LambdaForm$MH/1146743572. All of them should be excluded from
-        // the class list.
-        List<String> a = new ArrayList<>();
-        a.add("hello world.");
-        a.forEach(str -> System.out.println(str));
-
-        System.out.println(Class.forName("java.lang.NewClass")); // should be excluded from the class list.
-        System.out.println(Class.forName("boot.append.Foo"));    // should be excluded from the class list.
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/BootClassPathAppendHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class BootClassPathAppendHelper {
-    public static void main(String[] args) throws ClassNotFoundException {
-        Class cls = Class.forName("Hello");
-
-        if (cls == null) {
-            throw new java.lang.RuntimeException("Cannot find Hello.class");
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (!wb.isSharedClass(cls)) {
-            System.out.println("Hello.class is not in shared space as expected.");
-        } else {
-            throw new java.lang.RuntimeException("Hello.class shouldn't be in shared space.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/C1.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-package sealed.pkg;
-
-public class C1 {
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/C2.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-package pkg;
-
-public class C2 {
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Child.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class Child extends Super {}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr1.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class CpAttr1 {
-  public static void main(String args[]) {
-    System.out.println("2"); CpAttr2.doit(); // Only the version of this class defined in CpAttr2.java will not throw exception.
-    System.out.println("3"); CpAttr3.doit(); // Only the version of this class defined in CpAttr3.java will not throw exception.
-    System.out.println("4"); CpAttr4.doit(); // Only the version of this class defined in CpAttr4.java will not throw exception.
-    System.out.println("5"); CpAttr5.doit(); // Only the version of this class defined in CpAttr5.java will not throw exception.
-    System.out.println("Test passed");
-  }
-}
-
-class CpAttr2 { static void doit() {throw new RuntimeException("");} }
-class CpAttr3 { static void doit() {throw new RuntimeException("");} }
-class CpAttr4 { static void doit() {throw new RuntimeException("");} }
-class CpAttr5 { static void doit() {throw new RuntimeException("");} }
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr2.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-class CpAttr2 { static void doit() {} }
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr3.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-class CpAttr2 { static void doit() {throw new RuntimeException("");} }
-class CpAttr3 { static void doit() {} }
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr4.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-class CpAttr2 { static void doit() {throw new RuntimeException("");} }
-class CpAttr3 { static void doit() {throw new RuntimeException("");} }
-class CpAttr4 { static void doit() {} }
-class CpAttr5 { static void doit() {throw new RuntimeException("");} }
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/CpAttr5.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-class CpAttr5 { static void doit() {} }
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/DummyClassHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2015, 2019, 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.
- *
- */
-
-import java.lang.*;
-import java.lang.reflect.*;
-import jdk.test.lib.cds.CDSTestUtils;
-import sun.hotspot.WhiteBox;
-
-public class DummyClassHelper {
-    static void checkDummyMethod(Class<?> cls, String className) {
-        Method m = null;
-        try {
-            m = cls.getMethod("thisClassIsDummy");
-            throw new java.lang.RuntimeException(className +
-                " should be loaded from the jimage and should not have the thisClassIsDummy() method.");
-        } catch(NoSuchMethodException ex) {
-            System.out.println(ex.toString());
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        String[] classNames = {args[0], args[1]};
-        Class cls = null;
-        boolean doWBCheck = (args.length == 3);
-        WhiteBox wb = null;
-        if (doWBCheck) {
-            wb = WhiteBox.getWhiteBox();
-        }
-        for (int i = 0; i < classNames.length; i++) {
-            cls = Class.forName(classNames[i]);
-            checkDummyMethod(cls, classNames[i]);
-            if (doWBCheck) {
-                // FIXME: for dynamic archive, the class loaded from the
-                // bootclasspath jar during dump time is not loaded from the
-                // archive during run time.
-                if (!CDSTestUtils.isDynamicArchive()) {
-                    if (!wb.isSharedClass(cls)) {
-                        throw new java.lang.RuntimeException(classNames[i] +
-                            ".class should be in shared space.");
-                    }
-                }
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/EmptyClassHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import java.lang.*;
-
-import java.lang.reflect.Method;
-import jdk.internal.access.JavaLangAccess;
-import jdk.internal.access.SharedSecrets;
-
-class EmptyClassHelper {
-    static final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
-    static final String USE_APP = "useAppLoader";
-    public static void main(String[] args) throws Exception {
-        Class cls = null;
-        Method m = null;
-        ClassLoader appLoader = ClassLoader.getSystemClassLoader();
-        String className = "com.sun.tools.javac.Main";
-        if (args[0].equals(USE_APP)) {
-            cls = appLoader.loadClass(className);
-            System.out.println("appLoader loaded class");
-            try {
-                m = cls.getMethod("main", String[].class);
-                System.out.println("appLoader found method main");
-            } catch(NoSuchMethodException ex) {
-                System.out.println(ex.toString());
-            }
-        } else {
-            cls = jla.findBootstrapClassOrNull(appLoader, className);
-            System.out.println("bootLoader loaded class");
-            System.out.println("cls = " + cls);
-            try {
-                m = cls.getMethod("main", String[].class);
-                System.out.println("bootLoader found method main");
-            } catch(NoSuchMethodException ex) {
-                System.out.println(ex.toString());
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/FieldAnnotationsApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-
-public class FieldAnnotationsApp {
-    @MyAnnotation(name="myField1",  value="myValue1")
-    public String myField1 = null;
-
-    @MyAnnotation(name="myField2",  value="myValue2")
-    public String myField2 = null;
-
-    public static void main(String args[]) throws Exception {
-        for (int i=1; i<=2; i++) {
-            Field field = FieldAnnotationsApp.class.getField("myField" + i);
-            Annotation[] annotations = field.getDeclaredAnnotations();
-
-            for (Annotation anno : annotations){
-                if (anno instanceof MyAnnotation){
-                    MyAnnotation myAnno = (MyAnnotation) anno;
-                    String name = myAnno.name();
-                    String value = myAnno.value();
-
-                    System.out.println("Field         : " + field.getName());
-                    System.out.println("  myAnno.name : " + name);
-                    System.out.println("  myAnno.value: " + value);
-
-                    if (!(name.equals("myField" + i) && value.equals("myValue" + i))) {
-                        throw new Exception("Unexpected annotation values: " + i + " = " + value);
-                    }
-                }
-            }
-        }
-        System.out.println("Field annotations are OK.");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ForNameTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class ForNameTest {
-    public static void main(String[] args) throws Throwable {
-        // Hello is on the bootclasspath. The defining classloader is
-        // the NULL classloader. See ../ClassLoaderTest.java
-        Class c = Class.forName("Hello");
-        ClassLoader cl = c.getClassLoader();
-        if (cl != null) {
-            throw new RuntimeException(
-                "Test Failed. Wrong classloader is used. Expect the NULL classloader.");
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(c)) {
-            System.out.println("As expected, Hello.class is in shared space.");
-        } else {
-            throw new java.lang.RuntimeException("Hello.class must be in shared space.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/GenericTestApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2019, 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.
- */
-
-import sun.hotspot.WhiteBox;
-
-/**
- * This is a generic test app for testing if classes are loaded from the CDS archive
- * or not (without having to parse -Xlog:class+load, or writing your own WhiteBox apps).
- * Usage:
- *     [1] Create an archive with WhiteBox enabled.
- *     [2] Run this app with arguments such as
- *             "assertShared:java.lang.Object"
- *             "assertNotShared:NotSharedClassName"
- *
- * We can probably add other kinds of simple tests as well ....
- *
- * FIXME: enhance WB API to check if a particular archive has failed. So you can say
- *        assertShared:0,java.lang.Object
- * to assert that java.lang.Object is shared from archive #0 (i.e., base archive).
- */
-public class GenericTestApp {
-    private static final WhiteBox wb = WhiteBox.getWhiteBox();
-
-    public static void main(String args[]) throws Exception {
-        System.out.println("GenericTestApp started. WhiteBox = " + wb);
-        System.out.println("cdsMemoryMappingFailed() = " + cdsMemoryMappingFailed());
-
-        for (String s : args) {
-            Class c;
-            if ((c = getClass(s, "assertShared:")) != null) {
-                assertShared(c);
-            }
-            else if ((c = getClass(s, "assertNotShared:")) != null) {
-                assertNotShared(c);
-            }
-            else {
-                throw new RuntimeException("Unknown option: " + s);
-            }
-            System.out.println("passed: " + s);
-        }
-    }
-
-    private static Class getClass(String s, String prefix) throws Exception {
-        if (s.startsWith(prefix)) {
-            return Class.forName(s.substring(prefix.length()));
-        } else {
-            return null;
-        }
-    }
-
-    private static boolean cdsMemoryMappingFailed() {
-        return wb.cdsMemoryMappingFailed();
-    }
-
-    private static void assertShared(Class klass) {
-        if (!cdsMemoryMappingFailed()) {
-            if (!wb.isSharedClass(klass)) {
-                throw new RuntimeException("Class should be shared but is not: " + klass);
-            }
-        } else {
-            // FIXME -- need to throw jtreg.SkippedException
-            System.out.println("Cannot test for wb.isSharedClass(" + klass + ") because CDS mapping has failed");
-        }
-    }
-
-    private static void assertNotShared(Class klass) {
-        if (wb.isSharedClass(klass)) {
-            throw new RuntimeException("Class should be shared but is not: " + klass);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/GetFlightRecorder.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.List;
-
-import jdk.jfr.Event;
-import jdk.jfr.EventType;
-import jdk.jfr.FlightRecorder;
-import jdk.jfr.Recording;
-import jdk.jfr.consumer.RecordingFile;
-import jdk.jfr.consumer.RecordedEvent;
-
-public class GetFlightRecorder {
-    private static class TestEvent extends Event {
-    }
-    private static class SimpleEvent extends Event {
-        public int id;
-    }
-    public static void main(String args[]) throws Exception {
-        EventType type = EventType.getEventType(TestEvent.class); // This class is loaded before recording has started.
-        if (type.isEnabled()) {
-            throw new RuntimeException("Expected event to be disabled before recording start");
-        }
-
-        // (1) make sure you can obtain the flight recorder without error.
-        System.out.println("jdk.jfr.FlightRecorder.getFlightRecorder() = " + FlightRecorder.getFlightRecorder());
-
-        // (2) test that the event class loaded before recording can still work.
-        Recording r = new Recording();
-        r.start();
-        if (!type.isEnabled()) {
-            throw new RuntimeException("Expected event to be enabled during recording");
-        }
-        TestEvent testEvent = new TestEvent();
-        testEvent.commit();
-        loadEventClassDuringRecording();
-        r.stop();
-        if (type.isEnabled()) {
-            throw new RuntimeException("Expected event to be disabled after recording stopped");
-        }
-        System.out.println("Checking SimpleEvent");
-        hasEvent(r, SimpleEvent.class.getName());
-        System.out.println("OK");
-
-        System.out.println("Checking TestEvent");
-        hasEvent(r, TestEvent.class.getName());
-        System.out.println("OK");
-    }
-
-    // Classes that are loaded during a recording
-    // should get instrumentation on class load
-    private static void loadEventClassDuringRecording() {
-        SimpleEvent event = new SimpleEvent();
-        event.commit();
-    }
-
-    public static List<RecordedEvent> fromRecording(Recording recording) throws IOException {
-        return RecordingFile.readAllEvents(makeCopy(recording));
-    }
-
-    private static Path makeCopy(Recording recording) throws IOException {
-        Path p = recording.getDestination();
-        if (p == null) {
-            File directory = new File(".");
-            // FIXME: Must come up with a way to give human-readable name
-            // this will at least not clash when running parallel.
-            ProcessHandle h = ProcessHandle.current();
-            p = new File(directory.getAbsolutePath(), "recording-" + recording.getId() + "-pid" + h.pid() + ".jfr").toPath();
-            recording.dump(p);
-        }
-        return p;
-    }
-
-    public static void hasEvent(Recording r, String name) throws IOException {
-        List<RecordedEvent> events = fromRecording(r);
-        hasEvents(events);
-        hasEvent(events, name);
-    }
-
-    public static void hasEvents(List<RecordedEvent> events) {
-        if (events.isEmpty()) {
-            throw new RuntimeException("No events");
-        }
-    }
-
-    public static void hasEvent(List<RecordedEvent> events, String name) throws IOException {
-        if (!containsEvent(events, name)) {
-            throw new RuntimeException("Missing event " + name  + " in recording " + events.toString());
-        }
-    }
-
-    private static boolean containsEvent(List<RecordedEvent> events, String name) {
-        for (RecordedEvent event : events) {
-            if (event.getEventType().getName().equals(name)) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Greet.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class Greet {
-
-    public String Greeting() {
-        return new String(", how are you?");
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Hello.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class Hello {
-  public static void main(String args[]) {
-    System.out.println("Hello World");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/HelloExt.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class HelloExt {
-   public static void main(String[] args) throws Throwable {
-
-       String className = "javax.annotation.processing.FilerException";
-       Class cls = Class.forName(className);
-
-       ClassLoader loader = cls.getClassLoader();
-       if (loader != ClassLoader.getPlatformClassLoader()) {
-           throw new java.lang.RuntimeException(className + " should be load by PlatformClassLoader but it is loaded by " + loader);
-       }
-
-       WhiteBox wb = WhiteBox.getWhiteBox();
-       if (wb.isSharedClass(cls)) {
-           System.out.println("As expected, " + className + " is in shared space.");
-       } else {
-           throw new java.lang.RuntimeException(className + " is not in shared space.");
-       }
-
-       className = "[Ljava.lang.Comparable;";
-       cls = Class.forName(className);
-       loader = cls.getClassLoader();
-       if (loader != null) {
-           throw new java.lang.RuntimeException(className + " should be load by the NULL class loader but it is loaded by " + loader);
-       }
-
-       if (wb.isSharedClass(cls)) {
-           System.out.println("As expected, " + className + " is in shared space.");
-       } else {
-           throw new java.lang.RuntimeException(className + " is not in shared space.");
-       }
-   }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/HelloExtApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class HelloExtApp {
-  public static void main(String args[]) {
-    System.out.println("Hello World Ext: " + HelloExtExt.class.getProtectionDomain());
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/HelloExtExt.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class HelloExtExt {
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/HelloMore.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class HelloMore {
-  public static void main(String args[]) {
-      Hello.main(args);
-      System.out.println("Hello World ... More");
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/HelloWB.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class HelloWB {
-    public static void main(String[] args) throws Throwable {
-        System.out.println("HelloWB.class.getClassLoader() = " + HelloWB.class.getClassLoader());
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (wb.isSharedClass(HelloWB.class)) {
-            System.out.println("As expected, HelloWB.class is in shared space.");
-        } else {
-            throw new java.lang.RuntimeException("HelloWB.class should be in shared space.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Hi.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class Hi extends Greet {
-    public static void main(String args[]) {
-        Greet g = new Greet();
-        MyClass.doit(g.Greeting());
-    }
-    public static class MyClass {
-        public static void doit(String greeting) {
-            System.out.println("Hi" + greeting);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Iloadw.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class Iloadw 
-    version 51: 0
-{
-    public static Method run:"()I"
-        stack 1 locals 400
-    {
-        iconst_0;
-        istore_w 300;
-        iinc_w 300,1;
-        iload_w 300;
-        ireturn;
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/IloadwMain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-public class IloadwMain {
-    public static void main(String args[]) {
-        int result = Iloadw.run();
-        if (result != 1) {
-            throw new RuntimeException(
-                "Failed. Result is " + result + ", expect 1.");
-        } else {
-            System.out.println("Passed.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/JimageClassPackage.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class JimageClassPackage {
-    public static void main(String args[]) throws Throwable {
-        // Test Package for boot/app/ext module classes from the "modules" jimage.
-        // The following classes are archived. See runtime/AppCDS/Package.java.
-        //     java.util.Dictionary (testcase 0),
-        //     sun.tools.javac.Main (testcase 1),
-        //     jdk.nio.zipfs.ZipInfo (testcase 2),
-        //     java.net.URL (testcase 3),
-        //     sun.rmi.rmic.Main (testcase 4),
-        //     com.sun.jndi.dns.DnsName (testcase 5)
-        String testcases[][] =
-            {{"Loading shared boot module class first", "java.util",
-              "java.util.Dictionary", "java.util.ServiceConfigurationError"},
-
-             {"Loading shared app module class first", "sun.tools.javac",
-              "sun.tools.javac.Main", "sun.tools.javac.BatchParser"},
-
-             {"Loading shared ext module class first", "jdk.nio.zipfs",
-              "jdk.nio.zipfs.ZipInfo", "jdk.nio.zipfs.ZipPath"},
-
-             {"Loading non-shared boot module class first", "java.net",
-              "java.net.HttpCookie", "java.net.URL"},
-
-             {"Loading non-shared app module class first", "sun.rmi.rmic",
-              "sun.rmi.rmic.RMIGenerator", "sun.rmi.rmic.Main"},
-
-             {"Loading non-shared ext module class first", "com.sun.jndi.dns",
-              "com.sun.jndi.dns.Resolver", "com.sun.jndi.dns.DnsName"}};
-
-        JimageClassPackage test = new JimageClassPackage();
-        for (int i = 0; i < testcases.length; i++) {
-            System.out.println("Testcase " + i + ": " + testcases[i][0]);
-            test.testPackage(testcases[i][1], testcases[i][2], testcases[i][3]);
-        }
-    }
-
-    private void testPackage (String pkg,
-                              String shared,
-                              String nonShared) throws Throwable {
-        Class c1 = Class.forName(shared);
-        ClassLoader cl = c1.getClassLoader();
-        Package pkg_from_loader;
-        if (cl != null) {
-            pkg_from_loader = cl.getDefinedPackage(pkg);
-        } else {
-            pkg_from_loader = Package.getPackage(pkg);
-        }
-
-        Package pkg_from_shared_class = c1.getPackage();
-
-        Class c2 = Class.forName(nonShared);
-        Package pkg_from_nonshared_class = c2.getPackage();
-
-        if (pkg_from_loader != null &&
-            pkg_from_shared_class != null &&
-            pkg_from_loader == pkg_from_shared_class &&
-            pkg_from_shared_class == pkg_from_nonshared_class &&
-            pkg_from_shared_class.getName().equals(pkg)) {
-            System.out.println("Expected package: " + pkg_from_shared_class.toString());
-        } else {
-            System.out.println("Unexpected package" + pkg_from_shared_class);
-            System.exit(1);
-        }
-        if (pkg_from_shared_class.isSealed()) {
-            System.out.println("Package is sealed");
-        } else {
-            System.out.println("Package is not sealed");
-            System.exit(1);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/JimageClassProtDomain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, 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.
- *
- */
-
-public class JimageClassProtDomain {
-    public static void main(String args[]) throws Throwable {
-        // Test ProtectionDomain for boot/app/ext module classes from the "modules" jimage.
-        // The following classes are archived. See runtime/AppCDS/ProtectionDomain.java.
-        //     java.util.Dictionary (testcase 0),
-        //     sun.tools.javac.Main (testcase 1),
-        //     jdk.nio.zipfs.ZipInfo (testcase 2),
-        //     java.net.URL (testcase 3),
-        //     sun.rmi.rmic.Main (testcase 4),
-        //     com.sun.jndi.dns.DnsName (testcase 5)
-        String testcases[][] =
-            {{"Loading shared boot module class first",
-              "java.util.Dictionary", "java.util.ServiceConfigurationError"},
-
-             {"Loading shared app module class first",
-              "com.sun.tools.javac.Main", "com.sun.tools.javac.code.Symbol"},
-
-             {"Loading shared ext module class first",
-              "jdk.nio.zipfs.ZipInfo", "jdk.nio.zipfs.ZipPath"},
-
-             {"Loading non-shared boot module class first",
-              "java.net.HttpCookie", "java.net.URL"},
-
-             {"Loading non-shared app module class first",
-              "com.sun.tools.sjavac.Util", "com.sun.tools.sjavac.Main"},
-
-             {"Loading non-shared ext module class first",
-              "com.sun.jndi.dns.Resolver", "com.sun.jndi.dns.DnsName"}};
-        for (int i = 0; i < testcases.length; i++) {
-            System.out.println("Testcase " + i + ": " + testcases[i][0]);
-            JimageClassProtDomain.testProtectionDomain(testcases[i][1], testcases[i][2]);
-        }
-    }
-
-    private static void testProtectionDomain(String shared, String nonShared)
-              throws Throwable {
-        Class c1 = Class.forName(shared);
-        Class c2 = Class.forName(nonShared);
-        if (c1.getProtectionDomain() != c2.getProtectionDomain()) {
-            System.out.println(c1.getProtectionDomain());
-            System.out.println(c1.getProtectionDomain().getCodeSource());
-            System.out.println(c2.getProtectionDomain());
-            System.out.println(c2.getProtectionDomain().getCodeSource());
-            throw new RuntimeException("Failed: Protection Domains do not match!");
-        } else {
-            System.out.println(c1.getProtectionDomain());
-            System.out.println(c1.getProtectionDomain().getCodeSource());
-            System.out.println(c2.getProtectionDomain());
-            System.out.println(c2.getProtectionDomain().getCodeSource());
-            System.out.println("Passed: Protection Domains match.");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/JvmtiApp.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-public class JvmtiApp {
-    static Class forname(String cn) {
-        try {
-            return Class.forName(cn);
-        } catch (Throwable t) {
-            return null;
-        }
-    }
-
-    static void failed(String msg) {
-        System.out.println("TEST FAILED: " + msg);
-        System.exit(1);
-    }
-
-    // See ../JvmtiAddPath.java for how the classpaths are configured.
-    public static void main(String args[]) {
-        String cn = "Hello";
-        if (args.length >= 3) {
-            cn = args[args.length - 1];
-        }
-
-        if (args[0].equals("noadd")) {
-            if (forname(cn) != null) {
-                failed(cn + " class was loaded unexpectedly");
-            }
-            // We use -verbose:class to verify that Extra.class IS loaded by AppCDS if
-            // the boot classpath HAS NOT been appended.
-            ExtraClass.doit();
-            System.exit(0);
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-
-        if (args[0].equals("bootonly")) {
-            wb.addToBootstrapClassLoaderSearch(args[1]);
-            Class cls = forname(cn);
-            if (cls == null) {
-                failed("Cannot find " + cn + " class");
-            }
-            if (cls.getClassLoader() != null) {
-                failed("Hello class not loaded by boot classloader");
-            }
-        } else if (args[0].equals("apponly")) {
-            wb.addToSystemClassLoaderSearch(args[1]);
-            Class cls = forname(cn);
-            if (cls == null) {
-                failed("Cannot find " + cn + " class");
-            }
-            if (cls.getClassLoader() != JvmtiApp.class.getClassLoader()) {
-                failed(cn + " class not loaded by app classloader");
-            }
-        } else if (args[0].equals("noadd-appcds")) {
-            cn = (args.length == 1) ? "Hello" : args[1];
-            Class cls = forname(cn);
-            if (cls == null) {
-                failed("Cannot find " + cn + " class");
-            }
-            if (cls.getClassLoader() != JvmtiApp.class.getClassLoader()) {
-                failed(cn + " class not loaded by app classloader");
-            }
-        } else if (args[0].equals("appandboot")) {
-            wb.addToBootstrapClassLoaderSearch(args[1]);
-            wb.addToSystemClassLoaderSearch(args[2]);
-            cn = (args.length == 3) ? "Hello" : args[3];
-            Class cls = forname(cn);
-            if (cls == null) {
-                failed("Cannot find " + cn + " class");
-            }
-            if (cls.getClassLoader() != null) {
-                failed(cn + " class not loaded by boot classloader");
-            }
-        } else {
-            failed("unknown option " + args[0]);
-        }
-
-        // We use -verbose:class to verify that Extra.class IS NOT loaded by AppCDS if
-        // the boot classpath HAS been appended.
-        ExtraClass.doit();
-
-        System.out.println("Test passed: " + args[0]);
-    }
-}
-
-class ExtraClass {
-    static void doit() {}
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/MethodNoReturn.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-/*
-WAS:
-
-class MethodNoReturn {
-  void badMethod() {}
-}
-*/
-
-super class MethodNoReturn
-	version 52:0
-{
-
-
-Method "<init>":"()V"
-	stack 1 locals 1
-{
-		aload_0;
-		invokespecial	Method java/lang/Object."<init>":"()V";
-		return;
-}
-
-Method badMethod:"()V"
-	stack 0 locals 1
-{
-  /*
-    should be:
-		return;
-  */
-
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		pop;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		iconst_1;
-		pop;
-		pop;
-		pop;
-		pop;
-		pop;
-		pop;
-		pop;
-		pop;
-  // no return here -- so this class will fail verification
-}
-
-} // end Class MethodNoReturn
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/MissingSuper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class MissingSuper {
-    public static void main(String args[]) {
-        try {
-            new MissingSuperSub();
-        } catch (NoClassDefFoundError e) {
-            System.out.println("Expected NoClassDefFoundError:");
-            e.printStackTrace(System.out);
-        }
-
-        try {
-            new MissingSuperImpl();
-        } catch (NoClassDefFoundError e) {
-            System.out.println("Expected NoClassDefFoundError:");
-            e.printStackTrace(System.out);
-        }
-    }
-}
-
-class MissingSuperSup {} // This class will be deleted from missing_super.jar before dumping
-
-class MissingSuperSub extends MissingSuperSup {}
-
-interface MissingSuperIntf {} // This interface will be deleted from missing_super.jar before dumping
-
-class MissingSuperImpl implements MissingSuperIntf {}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/MultiProcClass.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import sun.hotspot.WhiteBox;
-
-// This class should be loaded from a shared archive.
-public class MultiProcClass {
-    private static String instanceLabel;
-
-    public static void main(String args[]) throws Exception {
-        instanceLabel = args[0];
-        String checkPmap = args[1];
-
-        long pid = ProcessHandle.current().pid();
-        System.out.println(inst("========================== Starting MultiProcClass"));
-        System.out.println(inst("My PID: " + pid ));
-        System.out.println(inst("checkPmap = <" + checkPmap + ">" ));
-
-        if ("true".equals(checkPmap)) {
-            if (runPmap(pid, true) != 0)
-                System.out.println("MultiProcClass: Pmap failed");
-        }
-
-        WhiteBox wb = WhiteBox.getWhiteBox();
-        if (!wb.isSharedClass(MultiProcClass.class)) {
-            throw new RuntimeException(inst("MultiProcClass should be shared but is not."));
-        }
-
-        System.out.println(inst("========================== Leaving MultiProcClass"));
-    }
-
-    // A convenience method to append process instance label
-    private static String inst(String msg) {
-        return "process-" + instanceLabel + " : " + msg;
-    }
-
-    // Use on Linux-only; requires jdk-9 for Process.pid()
-    public static int runPmap(long pid, boolean inheritIO) throws Exception {
-        ProcessBuilder pmapPb = new ProcessBuilder("pmap", "" + pid);
-        if (inheritIO)
-            pmapPb.inheritIO();
-
-        return pmapPb.start().waitFor();
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/MyAnnotation.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-
-public @interface MyAnnotation {
-    public String name();
-    public String value();
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/MyThread.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-class MyThread extends Thread {
-    void foo() {}
-
-    public void run() {
-        while (true) {
-             foo();
-       }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/PackageSealingTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-import java.lang.Package;
-
-public class PackageSealingTest {
-    public static void main(String args[]) {
-        try {
-            Class c1 = PackageSealingTest.class.forName("sealed.pkg.C1");
-            Class c2 = PackageSealingTest.class.forName("pkg.C2");
-            Package p1 = c1.getPackage();
-            System.out.println("Package 1: " + p1.toString());
-            Package p2 = c2.getPackage();
-            System.out.println("Package 2: " + p2.toString());
-
-            if (!p1.isSealed()) {
-                System.out.println("Failed: sealed.pkg is not sealed.");
-                System.exit(0);
-            }
-
-            if (p2.isSealed()) {
-                System.out.println("Failed: pkg is sealed.");
-                System.exit(0);
-            }
-
-            System.out.println("OK");
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/PackageTest.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-package p;
-
-public class PackageTest {
-    public static void main(String args[]) {
-        (new PackageTest()).test();
-    }
-
-    private void test() {
-        ClassLoader cl = PackageTest.class.getClassLoader();
-        Package pkg_from_loader;
-        if (cl != null) {
-            pkg_from_loader = cl.getDefinedPackage("p");
-        } else {
-            pkg_from_loader = Package.getPackage("p");
-        }
-
-        Package pkg = PackageTest.class.getPackage();
-        if (pkg_from_loader != null && pkg == pkg_from_loader &&
-            pkg.getName().equals("p")) {
-            System.out.println("Expected package: " + pkg);
-        } else {
-            System.out.println("Unexpected package: " + pkg);
-            System.exit(1);
-        }
-        if (pkg.isSealed()) {
-            System.out.println("Package is sealed");
-            System.exit(1);
-        } else {
-            System.out.println("Package is not sealed");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ParallelClasses.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-class ParallelClass0 {}
-class ParallelClass1 {}
-class ParallelClass2 {}
-class ParallelClass3 {}
-class ParallelClass4 {}
-class ParallelClass5 {}
-class ParallelClass6 {}
-class ParallelClass7 {}
-class ParallelClass8 {}
-class ParallelClass9 {}
-class ParallelClass10 {}
-class ParallelClass11 {}
-class ParallelClass12 {}
-class ParallelClass13 {}
-class ParallelClass14 {}
-class ParallelClass15 {}
-class ParallelClass16 {}
-class ParallelClass17 {}
-class ParallelClass18 {}
-class ParallelClass19 {}
-class ParallelClass20 {}
-class ParallelClass21 {}
-class ParallelClass22 {}
-class ParallelClass23 {}
-class ParallelClass24 {}
-class ParallelClass25 {}
-class ParallelClass26 {}
-class ParallelClass27 {}
-class ParallelClass28 {}
-class ParallelClass29 {}
-class ParallelClass30 {}
-class ParallelClass31 {}
-class ParallelClass32 {}
-class ParallelClass33 {}
-class ParallelClass34 {}
-class ParallelClass35 {}
-class ParallelClass36 {}
-class ParallelClass37 {}
-class ParallelClass38 {}
-class ParallelClass39 {}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ParallelLoad.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-import java.io.*;
-import java.net.*;
-import java.lang.reflect.Field;
-
-
-// This test helper is parameterized by:
-// - class transformation mode: property "appcds.parallel.transform.mode"
-// - class loader test types
-//
-// In the case of transformMode == "cflh", the transformation is performed
-// by AppCDS/jvmti/TransformerAgent.java. The classes to be transformed, such as
-// ParallelClassTr0, are defined in ./jvmti/parallelLoad/ParallelClasses.java
-
-public class ParallelLoad {
-    public static int MAX_CLASSES = 40;
-    public static int NUM_THREADS = 4;
-
-    public final static int SYSTEM_LOADER = 0;
-    public final static int SINGLE_CUSTOM_LOADER = 1;
-    public final static int MULTI_CUSTOM_LOADER = 2;
-
-    public static final int FINGERPRINT_MODE = 1;
-    public static final int API_MODE         = 2;
-
-    public static int loaderType = SYSTEM_LOADER;
-    public static ClassLoader classLoaders[];
-    public static int mode = FINGERPRINT_MODE;
-
-    public static float timeoutFactor =
-        Float.parseFloat(System.getProperty("test.timeout.factor", "1.0"));
-
-    public static void main(String args[]) throws Throwable {
-        run(args, null);
-    }
-    public static void run(String args[], ClassLoader loaders[]) throws Throwable {
-        String customJar = null;
-        System.out.println("ParallelLoad: timeoutFactor = " + timeoutFactor);
-
-        if (args.length >= 1) {
-            if ("SINGLE_CUSTOM_LOADER".equals(args[0])) {
-                loaderType = SINGLE_CUSTOM_LOADER;
-                customJar = args[2];
-            } else if ("MULTI_CUSTOM_LOADER".equals(args[0])) {
-                loaderType = MULTI_CUSTOM_LOADER;
-                customJar = args[2];
-            } else if ("SYSTEM_LOADER".equals(args[0])) {
-                loaderType = SYSTEM_LOADER;
-            } else {
-                throw new RuntimeException("Unexpected loaderType" + args[0]);
-            }
-        }
-
-        if (customJar != null) {
-            if ("FINGERPRINT_MODE".equals(args[1])) {
-                mode = FINGERPRINT_MODE;
-                classLoaders = new ClassLoader[NUM_THREADS];
-                for (int i=0; i<NUM_THREADS; i++) {
-                    URL url = new File(customJar).toURI().toURL();
-                    URL[] urls = new URL[] {url};
-                    classLoaders[i] = new URLClassLoader(urls);
-                }
-            } else {
-                // Loaders must be supplied by caller of the run() method
-                mode = API_MODE;
-                classLoaders = loaders;
-            }
-        }
-
-        System.out.println("Start Parallel Load ...");
-
-        Thread thread[] = new Thread[NUM_THREADS];
-        for (int i=0; i<NUM_THREADS; i++) {
-            Thread t = new ParallelLoadThread(i);
-            t.start();
-            thread[i] = t;
-        }
-
-        Thread watchdog = new ParallelLoadWatchdog();
-        watchdog.setDaemon(true);
-        watchdog.start();
-
-        for (int i=0; i<NUM_THREADS; i++) {
-            thread[i].join();
-        }
-        System.out.println("Parallel Load ... done");
-        System.exit(0);
-    }
-}
-
-
-class ParallelLoadWatchdog extends Thread {
-    public void run() {
-        try {
-            long timeout = (long) (20 * 1000 * ParallelLoad.timeoutFactor);
-            Thread.sleep(timeout);
-            System.out.println("ParallelLoadWatchdog: Timeout reached: timeout(ms) = " + timeout);
-            System.exit(1);
-        } catch (Throwable t) {
-            t.printStackTrace();
-            System.exit(1);
-        }
-    }
-};
-
-
-class ParallelLoadThread extends Thread {
-    static int num_ready[] = new int[ParallelLoad.MAX_CLASSES];
-    static Object lock = new Object();
-    static String transformMode =
-        System.getProperty("appcds.parallel.transform.mode", "none");
-
-    int thread_id;
-    ParallelLoadThread(int thread_id) {
-        this.thread_id = thread_id;
-    }
-
-    public void run() {
-        try {
-            run0();
-        } catch (Throwable t) {
-            t.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-    private static void log(String msg, Object... args) {
-        String msg0 = "ParallelLoadThread: " + String.format(msg, args);
-        System.out.println(msg0);
-    }
-
-    private void run0() throws Throwable {
-        for (int i=0; i<ParallelLoad.MAX_CLASSES; i++) {
-            synchronized(lock) {
-                num_ready[i] ++;
-                while (num_ready[i] < ParallelLoad.NUM_THREADS) {
-                    lock.wait();
-                }
-                lock.notifyAll();
-            }
-            log("this = %s %d", this, i);
-            String className = "ParallelClass" + i;
-            if (transformMode.equals("cflh"))
-                className = "ParallelClassTr" + i;
-
-            Class clazz = null;
-
-            switch (ParallelLoad.loaderType) {
-            case ParallelLoad.SYSTEM_LOADER:
-                clazz = Class.forName(className);
-                break;
-            case ParallelLoad.SINGLE_CUSTOM_LOADER:
-                clazz = ParallelLoad.classLoaders[0].loadClass(className);
-                break;
-            case ParallelLoad.MULTI_CUSTOM_LOADER:
-                clazz = ParallelLoad.classLoaders[thread_id].loadClass(className);
-                break;
-            }
-
-            log("clazz = %s", clazz);
-            testTransformation(clazz);
-        }
-    }
-
-    private void testTransformation(Class c) throws Exception {
-        if (transformMode.equals("none"))
-            return;
-
-        // currently only cflh transform mode is supported
-        if (!transformMode.equals("cflh")) {
-            String msg = "wrong transform mode: " + transformMode;
-            throw new IllegalArgumentException(msg);
-        }
-
-        Field[] fields = c.getFields();
-        boolean fieldFound = false;
-        for (Field f : fields) {
-            if (f.getName().equals("testString")) {
-                checkTransformationString(c, (String) f.get(null));
-                fieldFound = true;
-            }
-        }
-
-        if (!fieldFound)
-            throw new RuntimeException ("Expected field 'testString' not found");
-    }
-
-    private void checkTransformationString(Class c, String actual) throws Exception {
-        String expected = "class-transform-check: this-has-been--transformed";
-        if (!actual.equals(expected)) {
-            String msg1 = "Transformation failed for class" + c.getName();
-            String msg2 = String.format("Expected: %s, actual: %s", expected, actual);
-            throw new RuntimeException(msg1 + "\n" + msg2);
-        }
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Prohibited.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-package java/lang;
-
-public class Prohibited
-    version 51:0
-{
-} // end class Prohibited
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ProhibitedHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2017, 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.
- *
- */
-
-public class ProhibitedHelper {
-    public static void main(String[] args) throws Throwable {
-
-        String className = "java.lang.Prohibited";
-        ClassLoader sysLoader = ClassLoader.getSystemClassLoader();
-        try {
-            Module unnamedModule = sysLoader.getUnnamedModule();
-            Class cls = Class.forName(unnamedModule, className);
-            System.out.println("cls " + cls);
-            throw new java.lang.RuntimeException(className +
-                "in a prohibited package shouldn't be loaded");
-        } catch (Exception e) {
-            e.printStackTrace();
-            if (!(e instanceof java.lang.SecurityException)) {
-                throw new java.lang.RuntimeException(
-                    "SecurityException is expected to be thrown while loading " + className);
-            }
-        }
-
-        try {
-            Class cls = Class.forName(className, false, sysLoader);
-            System.out.println("cls " + cls);
-            throw new java.lang.RuntimeException(className +
-                "in a prohibited package shouldn't be loaded");
-        } catch (Exception e) {
-            e.printStackTrace();
-            if (!(e instanceof java.lang.ClassNotFoundException)) {
-                throw new java.lang.RuntimeException(
-                    "ClassNotFoundException is expected to be thrown while loading " + className);
-            }
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ProtDomain.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-import java.security.ProtectionDomain;
-
-// See ../AppCDSProtectionDomain.java
-//
-// ProtDomain      is     stored in CDS archive.
-// ProtDomainOther is NOT stored in CDS archive.
-//
-// However, they should have the same ProtectionDomain instance.
-public class ProtDomain {
-  public static void main(String args[]) {
-    System.out.println("Testing ProtDomain");
-    ProtectionDomain mine = ProtDomain.class.getProtectionDomain();
-    ProtectionDomain his  = ProtDomainOther.class.getProtectionDomain();
-
-    System.out.println("mine = " + mine);
-    System.out.println("his  = " + his);
-
-    if (mine == his) {
-      System.out.println("Protection Domains match");
-    } else {
-      throw new RuntimeException("Protection Domains do not match!");
-    }
-  }
-}
-
-class ProtDomainOther {
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ProtDomainB.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, 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.
- *
- */
-
-import java.security.ProtectionDomain;
-
-// See ../AppCDSProtectionDomain.java
-//
-// ProtDomainB      is NOT stored in CDS archive.
-// ProtDomainBOther is     stored in CDS archive.
-//
-// However, they should have the same ProtectionDomain instance.
-public class ProtDomainB {
-  public static void main(String args[]) {
-    System.out.println("Testing ProtDomainB");
-    ProtectionDomain mine = ProtDomainB.class.getProtectionDomain();
-    ProtectionDomain his  = ProtDomainBOther.class.getProtectionDomain();
-
-    System.out.println("mine = " + mine);
-    System.out.println("his  = " + his);
-
-    if (mine == his) {
-      System.out.println("Protection Domains match");
-    } else {
-      throw new RuntimeException("Protection Domains do not match!");
-    }
-  }
-}
-
-class ProtDomainBOther {
-
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/ReportMyLoader.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class ReportMyLoader {
-    public static void main(String args[]) {
-        System.out.println("ReportMyLoader's loader = " + ReportMyLoader.class.getClassLoader());
-        System.out.println("TestClassLoader.called = " + TestClassLoader.called);
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/RewriteBytecodes.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.File;
-import sun.hotspot.WhiteBox;
-
-public class RewriteBytecodes {
-  public static void main(String args[]) throws Throwable {
-    String from = "___xxx___";
-    String to   = "___yyy___";
-    File clsFile = new File(args[0]);
-    Class superClass = Util.defineModifiedClass(RewriteBytecodes.class.getClassLoader(), clsFile, from, to);
-
-    Child child = new Child();
-
-    if (child.getClass().getSuperclass() != superClass) {
-      throw new RuntimeException("Mismatched super class");
-    }
-    // Even if the Super class is not loaded from the CDS archive, make sure the Child class
-    // can still be loaded successfully, and properly inherits from the rewritten version
-    // of Super.
-    if (!child.toString().equals(to)) {
-      throw new RuntimeException("Wrong output, expected: " + to + ", but got: " + child.toString());
-    }
-
-    WhiteBox wb = WhiteBox.getWhiteBox();
-    if (wb.isSharedClass(superClass)) {
-      throw new RuntimeException("wb.isSharedClass(superClass) should be false");
-    }
-    if (wb.isSharedClass(child.getClass())) {
-      throw new RuntimeException("wb.isSharedClass(child.getClass()) should be false");
-    }
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Super.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-public class Super {
-  public String toString() {
-    return "___xxx___";
-  }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/TestClassLoader.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-// This is a class loader that simply delegates all calls to its parent loader.
-
-public class TestClassLoader extends ClassLoader {
-    static boolean called = false;
-    ClassLoader parent;
-    public TestClassLoader(ClassLoader parent) {
-        super(parent);
-        this.parent = parent;
-    }
-
-    public Class<?> loadClass(String name, boolean resolve)
-        throws ClassNotFoundException
-    {
-        called = true;
-        System.out.println("TestClassLoader: loadClass(\"" + name + "\", " + resolve + ")");
-        return (super.loadClass(name, resolve));
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/TestWithProfilerHelper.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- *
- */
-
-public class TestWithProfilerHelper {
-    public static void main(String[] args) throws Exception {
-        Thread t = new MyThread();
-        t.start();
-        String prop = "TestWithProfiler.timeout";
-        int secs = Integer.parseInt(System.getProperty(prop, "15"));
-        System.out.println("Run for -D" + prop + "=" + secs  + " (seconds)");
-        Thread.sleep(secs * 1000);
-        System.exit(0);
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/TrySwitchMyLoader.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-public class TrySwitchMyLoader {
-    public static void main(String args[]) {
-        System.out.println("TrySwitchMyLoader's loader = " + ReportMyLoader.class.getClassLoader());
-        System.setProperty("java.system.class.loader", "TestClassLoader");
-
-        // This should still report the same loader as TrySwitchMyLoader.class.getClassLoader(),
-        // as setting the java.system.class.loader after main method has been executed
-        // has no effect.
-        ReportMyLoader.main(args);
-    }
-}
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/Util.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, 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.
- *
- */
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.jar.*;
-
-public class Util {
-    /**
-     * Invoke the loader.defineClass() class method to define the class stored in clsFile,
-     * with the following modification:
-     * <ul>
-     *  <li> All ASCII strings in the class file bytes that matches fromString will be replaced with toString.
-     *       NOTE: the two strings must be the exact same length.
-     * </ul>
-     */
-    public static Class defineModifiedClass(ClassLoader loader, File clsFile, String fromString, String toString)
-        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
-               InvocationTargetException
-    {
-      try (DataInputStream dis = new DataInputStream(new FileInputStream(clsFile))) {
-        byte[] buff = new byte[(int)clsFile.length()];
-        dis.readFully(buff);
-        replace(buff, fromString, toString);
-
-        System.out.println("Loading from: " + clsFile + " (" + buff.length + " bytes)");
-
-        Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
-                                                                 buff.getClass(), int.class, int.class);
-        defineClass.setAccessible(true);
-
-        // We directly call into ClassLoader.defineClass() to define the "Super" class. Also,
-        // rewrite its classfile so that it returns ___yyy___ instead of ___xxx___. Changing the
-        // classfile will guarantee that this class will NOT be loaded from the CDS archive.
-        Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
-        System.out.println("Loaded : " + cls);
-
-        return cls;
-      }
-    }
-
-    /**
-     * @return the number of occurrences of the <code>from</code> string that
-     * have been replaced.
-     */
-    public static int replace(byte buff[], String from, String to) {
-        if (to.length() != from.length()) {
-            throw new RuntimeException("bad strings");
-        }
-        byte f[] = asciibytes(from);
-        byte t[] = asciibytes(to);
-        byte f0 = f[0];
-
-        int numReplaced = 0;
-        int max = buff.length - f.length;
-        for (int i=0; i<max; ) {
-            if (buff[i] == f0 && replace(buff, f, t, i)) {
-                i += f.length;
-                numReplaced ++;
-            } else {
-                i++;
-            }
-        }
-        return numReplaced;
-    }
-
-    public static boolean replace(byte buff[], byte f[], byte t[], int i) {
-        for (int x=0; x<f.length; x++) {
-            if (buff[x+i] != f[x]) {
-                return false;
-            }
-        }
-        for (int x=0; x<f.length; x++) {
-            buff[x+i] = t[x];
-        }
-        return true;
-    }
-
-    static byte[] asciibytes(String s) {
-        byte b[] = new byte[s.length()];
-        for (int i=0; i<b.length; i++) {
-            b[i] = (byte)s.charAt(i);
-        }
-        return b;
-    }
-
-    public static Class defineClassFromJAR(ClassLoader loader, File jarFile, String className)
-        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
-               InvocationTargetException {
-        return defineClassFromJAR(loader, jarFile, className, null, null);
-    }
-
-    /**
-     * Invoke the loader.defineClass() class method to define the named class stored in a JAR file.
-     *
-     * If a class exists both in the classpath, as well as in the list of URLs of a URLClassLoader,
-     * by default, the URLClassLoader will not define the class, and instead will delegate to the
-     * app loader. This method is an easy way to force the class to be defined by the URLClassLoader.
-     *
-     * Optionally, you can modify the contents of the classfile buffer. See comments in
-     * defineModifiedClass.
-     */
-    public static Class defineClassFromJAR(ClassLoader loader, File jarFile, String className,
-                                           String fromString, String toString)
-        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
-               InvocationTargetException
-    {
-        byte[] buff = getClassFileFromJar(jarFile, className);
-
-        if (fromString != null) {
-            replace(buff, fromString, toString);
-        }
-
-        //System.out.println("Loading from: " + ent + " (" + buff.length + " bytes)");
-
-        Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
-                                                                 buff.getClass(), int.class, int.class);
-        defineClass.setAccessible(true);
-        Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
-
-        //System.out.println("Loaded : " + cls);
-        return cls;
-    }
-
-    public static byte[] getClassFileFromJar(File jarFile, String className) throws FileNotFoundException, IOException {
-        JarFile jf = new JarFile(jarFile);
-        JarEntry ent = jf.getJarEntry(className.replace('.', '/') + ".class");
-
-        try (DataInputStream dis = new DataInputStream(jf.getInputStream(ent))) {
-            byte[] buff = new byte[(int)ent.getSize()];
-            dis.readFully(buff);
-            return buff;
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/VerifierTest0.java	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2014, 2017, 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.
- *
- */
-
-/*
- * Note: verifier_test_tmp.jar will be processed by ../AppCDSVerifierTest.java to
- * create verifier_test.jar, which contains invalid versions of UnverifiableBase
- * and UnverifiableIntf.
- */
-
-public class VerifierTest0 {
-  public static void main(String args[]) {
-    boolean good = true;
-    good &= mustBeInvalid("VerifierTestA");
-    good &= mustBeInvalid("VerifierTestB");
-    good &= mustBeInvalid("VerifierTestC");
-    good &= mustBeInvalid("VerifierTestD");
-    good &= mustBeInvalid("VerifierTestE");
-    if (!good) {
-      System.out.println("VerifierTest0 failed");
-      System.exit(1);
-    }
-  }
-
-  /** @return false means error */
-  static boolean mustBeInvalid(String className) {
-    System.out.println("Testing: " + className);
-    try {
-      Class.forName(className);
-      System.out.println("ERROR: class " + className + " was loaded unexpectedly.");
-      return false;
-    } catch (Throwable t) {
-      System.out.println("Expected exception:");
-      t.printStackTrace();
-      return true;
-    }
-  }
-}
-
-class UnverifiableBase {
-  static final VerifierTest0 x = new VerifierTest0(); // <- this static initializer will be made unverifiable by type mismatch
-}
-
-interface UnverifiableIntf {
-  static final VerifierTest0 x = new VerifierTest0(); // <- this static initializer will be made unverifiable by type mismatch
-}
-
-interface UnverifiableIntfSub extends UnverifiableIntf {}
-
-class VerifierTestA extends    UnverifiableBase {}
-class VerifierTestB extends    VerifierTestA {}
-class VerifierTestC implements UnverifiableIntf {}
-class VerifierTestD extends    VerifierTestC {}
-class VerifierTestE implements UnverifiableIntfSub {}
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/com/sun/tools/javac/Main.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-package com/sun/tools/javac;
-
-public class Main
-    version 51:0
-{
-} // end class Main
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr1.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: cpattr2.jar
-Created-By: 1.9.0-internal (Oracle Corporation)
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr1_long.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.ja
- r zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz
- .jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.j
- ar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar
-  zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar z
- zzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzz
- zzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzz
- zz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz
- .jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.j
- ar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzz
- z.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.
- jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.ja
- r zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar 
- zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar cpattr2.jar cpattr1_long.j
- ar
-Created-By: 1.9.0-internal (Oracle Corporation)
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr2.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: cpattr3.jar cpattr5_123456789_223456789_323456789_42345678
- 9_523456789_623456789.jar
-Created-By: 1.9.0-internal (Oracle Corporation)
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr3.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Created-By: 1.9.0-internal (Oracle Corporation)
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr4.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Created-By: 1.9.0-internal (Oracle Corporation)
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/cpattr5_extra_long.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Created-By: 1.9.0-internal (Oracle Corporation)
-
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/java/net/HttpCookie.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-package java/net;
-
-public class HttpCookie
-    version 51:0
-{
-
-public Method thisClassIsDummy:"()V"
-    stack 0 locals 0
-{
-    return;
-}
-
-} // end class HttpCookie
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/javax/transaction/InvalidTransactionException.jasm	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 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.
- *
- */
-
-package javax/transaction;
-
-public class InvalidTransactionException
-    version 51:0
-{
-
-public Method thisClassIsDummy:"()V"
-    stack 0 locals 0
-{
-    return;
-}
-
-} // end class InvalidTransactionException
--- a/test/hotspot/jtreg/runtime/appcds/test-classes/package_seal.mf	Mon Jul 29 09:57:37 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Created-By: 1.9.0-internal (Oracle Corporation)
-
-Name: sealed/pkg/
-Sealed: true
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/ArchiveDoesNotExist.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/**
+ * @test ArchiveDoesNotExist
+ * @summary Test how VM handles "file does not exist" situation while
+ *          attempting to use CDS archive. JVM should exit gracefully
+ *          when sharing mode is ON, and continue w/o sharing if sharing
+ *          mode is AUTO.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver ArchiveDoesNotExist
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+
+public class ArchiveDoesNotExist {
+    public static void main(String[] args) throws Exception {
+        String fileName = "ArchiveDoesNotExist.jsa";
+
+        File cdsFile = new File(fileName);
+        if (cdsFile.exists())
+            throw new RuntimeException("Test error: cds file already exists");
+
+        CDSOptions opts = (new CDSOptions()).setArchiveName(fileName);
+
+        // -Xshare=on
+        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldContain("Specified shared archive not found")
+            .shouldHaveExitValue(1);
+
+        // -Xshare=auto
+        opts.setXShareMode("auto");
+        out = CDSTestUtils.runWithArchive(opts);
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldMatch("(java|openjdk) version")
+            .shouldNotContain("sharing")
+            .shouldHaveExitValue(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/BootAppendTests.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,306 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+/**
+ * @test
+ * @requires vm.cds & !vm.graal.enabled
+ * @summary Testing -Xbootclasspath/a support for CDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.compiler
+ *          java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile javax/sound/sampled/MyClass.jasm
+ * @compile javax/annotation/processing/FilerException.jasm
+ * @compile nonjdk/myPackage/MyClass.java
+ * @build LoadClass
+ * @run main/othervm BootAppendTests
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class BootAppendTests {
+    private static final String APP_CLASS = "LoadClass";
+    private static final String BOOT_APPEND_MODULE_CLASS = "javax/sound/sampled/MyClass";
+    private static final String BOOT_APPEND_DUPLICATE_MODULE_CLASS =
+        "javax/annotation/processing/FilerException";
+    private static final String BOOT_APPEND_CLASS = "nonjdk/myPackage/MyClass";
+    private static final String BOOT_APPEND_MODULE_CLASS_NAME =
+        BOOT_APPEND_MODULE_CLASS.replace('/', '.');
+    private static final String BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME =
+        BOOT_APPEND_DUPLICATE_MODULE_CLASS.replace('/', '.');
+    private static final String BOOT_APPEND_CLASS_NAME =
+        BOOT_APPEND_CLASS.replace('/', '.');
+    private static final String[] ARCHIVE_CLASSES =
+        {BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS, BOOT_APPEND_CLASS};
+
+    private static final String modes[] = {"on", "off"};
+
+    private static String appJar;
+    private static String bootAppendJar;
+
+    public static void main(String... args) throws Exception {
+        dumpArchive();
+
+        logTestCase("1");
+        testBootAppendModuleClass();
+
+        logTestCase("2");
+        testBootAppendDuplicateModuleClass();
+
+        logTestCase("3");
+        testBootAppendExcludedModuleClass();
+
+        logTestCase("4");
+        testBootAppendDuplicateExcludedModuleClass();
+
+        logTestCase("5");
+        testBootAppendClass();
+
+        logTestCase("6");
+        testBootAppendExtraDir();
+    }
+
+    private static void logTestCase(String msg) {
+        System.out.println();
+        System.out.printf("TESTCASE: %s", msg);
+        System.out.println();
+    }
+
+    static void dumpArchive() throws Exception {
+        // create the classlist
+        File classlist = CDSTestUtils.makeClassList(ARCHIVE_CLASSES);
+
+        // build jar files
+        appJar = ClassFileInstaller.writeJar("app.jar", APP_CLASS);
+        bootAppendJar = ClassFileInstaller.writeJar("bootAppend.jar",
+            BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS, BOOT_APPEND_CLASS);
+
+
+        OutputAnalyzer out = CDSTestUtils.createArchiveAndCheck(
+                                 "-Xbootclasspath/a:" + bootAppendJar,
+                                 "-cp", appJar,
+                                 "-XX:SharedClassListFile=" + classlist.getPath());
+        // Make sure all the classes were successfully archived.
+        for (String archiveClass : ARCHIVE_CLASSES) {
+            String msg = "Preload Warning: Cannot find " + archiveClass;
+            if (archiveClass.equals(BOOT_APPEND_MODULE_CLASS)) {
+                // We shouldn't archive a class in the appended boot class path that
+                // are the java.desktop module. Such a class cannot be loaded
+                // at runtime anyway.
+                out.shouldContain(msg);
+            } else {
+                out.shouldNotContain(msg);
+            }
+        }
+    }
+
+    // Test #1: If a class on -Xbootclasspath/a is from a package defined in
+    //          bootmodules, the class is not loaded at runtime.
+    //          Verify the behavior is the same when the class is archived
+    //          with CDS enabled at runtime.
+    //
+    //          The javax.sound.sampled package is defined in the java.desktop module.
+    //          The archived javax.sound.sampled.MyClass from the -Xbootclasspath/a
+    //          should not be loaded at runtime.
+    public static void testBootAppendModuleClass() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar, "-showversion")
+                .addSuffix(APP_CLASS, BOOT_APPEND_MODULE_CLASS_NAME);
+
+            OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
+            CDSTestUtils.checkExec(out, opts, "java.lang.ClassNotFoundException: javax.sound.sampled.MyClass");
+        }
+    }
+
+    // Test #2: If a class on -Xbootclasspath/a has the same fully qualified
+    //          name as a class defined in boot modules, the class is not loaded
+    //          from -Xbootclasspath/a. Verify the behavior is the same at runtime
+    //          when CDS is enabled.
+    //
+    //          The javax/annotation/processing/FilerException is a platform module
+    //          class. The class on the -Xbootclasspath/a path that has the same
+    //          fully-qualified name should not be loaded at runtime when CDS is enabled.
+    //          The one from the platform modules should be loaded instead.
+    public static void testBootAppendDuplicateModuleClass() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-showversion",
+                           "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
+                .addSuffix("-Xlog:class+load=info",
+                           APP_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME);
+
+            String MATCH_PATTERN = ".class.load. javax.annotation.processing.FilerException source:.*bootAppend.jar*";
+            CDSTestUtils.run(opts)
+                .assertNormalExit(out -> {
+                    out.shouldNotMatch(MATCH_PATTERN);
+                });
+        }
+    }
+
+    // Test #3: If a class on -Xbootclasspath/a is from a package defined in boot modules,
+    //          the class can be loaded from -Xbootclasspath/a when the module is excluded
+    //          using --limit-modules. Verify the behavior is the same at runtime when CDS
+    //          is enabled.
+    //
+    //          The java.desktop module is excluded using --limit-modules at runtime
+    //          CDS will be disabled with the --limit-modules option during runtime.
+    //          javax.sound.sampled.MyClass will be loaded from the jar at runtime.
+    public static void testBootAppendExcludedModuleClass() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
+                           "--limit-modules=java.base", "-cp", appJar)
+                .addSuffix("-Xlog:class+load=info",
+                           APP_CLASS, BOOT_APPEND_MODULE_CLASS_NAME);
+            CDSTestUtils.Result res = CDSTestUtils.run(opts);
+            String MATCH_PATTERN =
+                ".class.load. javax.sound.sampled.MyClass source:.*bootAppend.jar*";
+            if (mode.equals("on")) {
+                res.assertSilentlyDisabledCDS(out -> {
+                    out.shouldHaveExitValue(0)
+                       .shouldMatch(MATCH_PATTERN);
+                    });
+            } else {
+                res.assertNormalExit(out -> {
+                    out.shouldMatch(MATCH_PATTERN);
+                    });
+            }
+        }
+    }
+
+    // Test #4: If a class on -Xbootclasspath/a has the same fully qualified
+    //          name as a class defined in boot modules, the class is loaded
+    //          from -Xbootclasspath/a when the boot module is excluded using
+    //          --limit-modules. Verify the behavior is the same at runtime
+    //          when CDS is enabled.
+    //
+    //          The javax.annotation.processing.FilerException is a platform module class.
+    //          The class on -Xbootclasspath/a that has the same fully-qualified name
+    //          as javax.annotation.processing.FilerException can be loaded at runtime when
+    //          java.compiler is excluded.
+    //          CDS is disabled during runtime if the --limit-modules option is
+    //          specified.
+    public static void testBootAppendDuplicateExcludedModuleClass() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
+                           "--limit-modules=java.base", "-cp", appJar)
+                .addSuffix("-Xlog:class+load=info",
+                           APP_CLASS, BOOT_APPEND_DUPLICATE_MODULE_CLASS_NAME);
+
+            CDSTestUtils.Result res = CDSTestUtils.run(opts);
+            String MATCH_PATTERN =
+                ".class.load. javax.annotation.processing.FilerException source:.*bootAppend.jar*";
+            if (mode.equals("on")) {
+                res.assertSilentlyDisabledCDS(out -> {
+                    out.shouldHaveExitValue(0)
+                       .shouldMatch(MATCH_PATTERN);
+                    });
+            } else {
+                res.assertNormalExit(out -> {
+                    out.shouldMatch(MATCH_PATTERN);
+                    });
+            }
+        }
+    }
+
+    // Test #5: If a class on -Xbootclasspath/a is not from named modules,
+    //          the class can be loaded at runtime. Verify the behavior is
+    //          the same at runtime when CDS is enabled.
+    //
+    //          The nonjdk.myPackage is not defined in named modules. The
+    //          nonjdk.myPackage.MyClass will be loaded from the jar in
+    //          -Xbootclasspath/a since CDS will be disabled with the
+    //          --limit-modules option.
+    public static void testBootAppendClass() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-showversion",
+                           "--limit-modules=java.base", "-cp", appJar)
+                .addSuffix("-Xlog:class+load=info",
+                           APP_CLASS, BOOT_APPEND_CLASS_NAME);
+
+            CDSTestUtils.Result res = CDSTestUtils.run(opts);
+            String MATCH_PATTERN =
+                ".class.load. nonjdk.myPackage.MyClass source:.*bootAppend.jar*";
+            if (mode.equals("on")) {
+                res.assertSilentlyDisabledCDS(out -> {
+                    out.shouldHaveExitValue(0)
+                       .shouldMatch(MATCH_PATTERN);
+                    });
+            } else {
+                res.assertNormalExit(out -> {
+                    out.shouldMatch(MATCH_PATTERN);
+                    });
+            }
+        }
+    }
+
+    // Test #6: This is similar to Test #5. During runtime, an extra dir
+    //          is appended to the bootclasspath. It should not invalidate
+    //          the shared archive. However, CDS will be disabled with the
+    //          --limit-modules in the command line.
+    public static void testBootAppendExtraDir() throws Exception {
+        for (String mode : modes) {
+            CDSOptions opts = (new CDSOptions())
+                .setXShareMode(mode).setUseVersion(false)
+                .addPrefix("-Xbootclasspath/a:" + bootAppendJar + File.pathSeparator + appJar,
+                           "-showversion", "--limit-modules=java.base", "-cp", appJar)
+                .addSuffix("-Xlog:class+load=info",
+                           APP_CLASS, BOOT_APPEND_CLASS_NAME);
+
+            CDSTestUtils.Result res = CDSTestUtils.run(opts);
+            String MATCH_PATTERN =
+                ".class.load. nonjdk.myPackage.MyClass source:.*bootAppend.jar*";
+            if (mode.equals("on")) {
+                res.assertSilentlyDisabledCDS(out -> {
+                    out.shouldHaveExitValue(0)
+                       .shouldMatch(MATCH_PATTERN);
+                    });
+            } else {
+                res.assertNormalExit(out -> {
+                    out.shouldMatch(MATCH_PATTERN);
+                    });
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/CdsDifferentCompactStrings.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2013, 2019, 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.
+ */
+
+/**
+ * @test CdsDifferentCompactStrings
+ * @summary CDS (class data sharing) requires the same -XX:[+-]CompactStrings
+ *          setting between archive creation time and load time.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CdsDifferentCompactStrings {
+    public static void main(String[] args) throws Exception {
+        createAndLoadSharedArchive("+", "-");
+        createAndLoadSharedArchive("-", "+");
+    }
+
+    private static void createAndLoadSharedArchive(String create, String load)
+        throws Exception
+    {
+        String createCompactStringsArgument = "-XX:" + create + "CompactStrings";
+        String loadCompactStringsArgument   = "-XX:" + load   + "CompactStrings";
+
+        OutputAnalyzer out = CDSTestUtils.createArchive(createCompactStringsArgument);
+        CDSTestUtils.checkDump(out);
+
+        out = CDSTestUtils.runWithArchive(loadCompactStringsArgument);
+        CDSTestUtils.checkMappingFailure(out);
+
+        out.shouldMatch("The shared archive file's CompactStrings " +
+                        "setting .* does not equal the current CompactStrings setting")
+            .shouldHaveExitValue(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/CdsDifferentObjectAlignment.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2013, 2019, 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.
+ */
+
+/**
+ * @test CdsDifferentObjectAlignment
+ * @summary Testing CDS (class data sharing) using varying object alignment.
+ *          Using different object alignment for each dump/load pair.
+ *          This is a negative test; using  object alignment for loading that
+ *          is different from object alignment for creating a CDS file
+ *          should fail when loading.
+ * @requires vm.cds
+ * @requires vm.bits == 64
+ * @library /test/lib
+ * @bug 8025642
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver CdsDifferentObjectAlignment
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Platform;
+
+public class CdsDifferentObjectAlignment {
+
+    public static void main(String[] args) throws Exception {
+        createAndLoadSharedArchive(16, 64);
+        createAndLoadSharedArchive(64, 32);
+    }
+
+    // Parameters are object alignment expressed in bytes
+    private static void
+    createAndLoadSharedArchive(int createAlignment, int loadAlignment)
+    throws Exception {
+        String createAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
+            createAlignment;
+        String loadAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
+            loadAlignment;
+        String expectedErrorMsg =
+            String.format(
+            "The shared archive file's ObjectAlignmentInBytes of %d " +
+            "does not equal the current ObjectAlignmentInBytes of %d",
+            createAlignment,
+            loadAlignment);
+
+        CDSTestUtils.createArchiveAndCheck(createAlignmentArgument);
+
+        OutputAnalyzer out = CDSTestUtils.runWithArchive(loadAlignmentArgument);
+        CDSTestUtils.checkExecExpectError(out, 1, expectedErrorMsg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/CdsSameObjectAlignment.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2013, 2019, 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.
+ */
+
+/**
+ * @test CdsSameObjectAlignment
+ * @summary Testing CDS (class data sharing) using varying object alignment.
+ *          Using same object alignment for each dump/load pair
+ * @requires vm.cds
+ * @requires vm.bits == 64
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver CdsSameObjectAlignment
+ */
+
+import jdk.test.lib.Platform;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CdsSameObjectAlignment {
+    public static void main(String[] args) throws Exception {
+        dumpAndLoadSharedArchive(8);
+        dumpAndLoadSharedArchive(16);
+        dumpAndLoadSharedArchive(32);
+        dumpAndLoadSharedArchive(64);
+    }
+
+    private static void
+    dumpAndLoadSharedArchive(int objectAlignmentInBytes) throws Exception {
+        String objectAlignmentArg = "-XX:ObjectAlignmentInBytes="
+            + objectAlignmentInBytes;
+        System.out.println("dumpAndLoadSharedArchive(): objectAlignmentInBytes = "
+            + objectAlignmentInBytes);
+
+        CDSTestUtils.createArchiveAndCheck(objectAlignmentArg);
+        CDSTestUtils.runWithArchiveAndCheck(objectAlignmentArg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/CheckDefaultArchiveFile.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/**
+ * @test Default CDS archive file
+ * @summary JDK platforms/binaries do not support default CDS archive should
+ *          not contain classes.jsa in the default location.
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
+ *      -XX:+WhiteBoxAPI CheckDefaultArchiveFile
+ */
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.Platform;
+import jdk.test.lib.cds.CDSTestUtils;
+import jtreg.SkippedException;
+import sun.hotspot.WhiteBox;
+
+public class CheckDefaultArchiveFile {
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        String osArch = Platform.getOsArch();
+        String vmName = System.getProperty("java.vm.name");
+        String vmString = vmName + "(" + osArch + ")";
+        String jsaString = wb.getDefaultArchivePath();
+        System.out.println("classes.jsa location:" + jsaString);
+        if (jsaString == null) {
+            if (Platform.isDefaultCDSArchiveSupported()) {
+                throw new RuntimeException("default CDS archive supported, but classes.jsa path null");
+            }
+        } else {
+            Path jsa = Paths.get(jsaString);
+            if (Platform.isDefaultCDSArchiveSupported()) {
+                if (Files.exists(jsa)) {
+                    System.out.println("Passed. " + vmString +
+                                       ": has default classes.jsa file");
+                } else {
+                    throw new RuntimeException(vmString + "has no " + jsaString);
+                }
+            } else {
+                throw new SkippedException("Default CDS archive is not supported");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/CheckSharingWithDefaultArchive.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/**
+ * @test Default CDS archive
+ * @summary Sharing should be enabled by default on supported platform/binaries.
+ *          No -Xshare:dump is needed. No -Xshare:auto or -Xshare:on in needed.
+ *          Verify a set of well-known shared classes.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
+ *      -XX:+WhiteBoxAPI CheckSharingWithDefaultArchive -showversion
+ */
+import jdk.test.lib.Platform;
+import jtreg.SkippedException;
+import sun.hotspot.WhiteBox;
+
+public class CheckSharingWithDefaultArchive {
+    public static void main(String[] args) throws Exception {
+        if (!Platform.isDefaultCDSArchiveSupported()) {
+            throw new SkippedException("Supported platform");
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        String classes[] = {"java.lang.Object",
+                            "java.lang.String",
+                            "java.lang.Class"};
+        // If maping fails, sharing is disabled
+        if (wb.isSharingEnabled()) {
+            for (int i = 0; i < classes.length; i++) {
+                Class c = Class.forName(classes[i]);
+                if (wb.isSharedClass(c)) {
+                    System.out.println(classes[i] + " is shared.");
+                } else {
+                    throw new RuntimeException(classes[i] + " is not shared");
+                }
+            }
+        } else {
+           throw new SkippedException("Sharing is not enabled.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/DumpSharedDictionary.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ */
+
+/*
+ * @test
+ * @bug 8130072
+ * @summary Check that Shared Dictionary is printed out with jcmd
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * @run driver DumpSharedDictionary
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.JDKToolFinder;
+
+public class DumpSharedDictionary {
+
+    public static void main(String[] args) throws Exception {
+        if (args.length == 0) {
+            // Start this process
+            ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+                "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
+                "-Xshare:dump");
+
+            OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
+            out.shouldHaveExitValue(0);
+
+            String testjdkPath = System.getProperty("test.jdk");
+
+            pb = ProcessTools.createJavaProcessBuilder(
+                    "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
+                    "-Dtest.jdk=" + testjdkPath,
+                    "-Xshare:on", "DumpSharedDictionary", "test");
+
+            out = CDSTestUtils.executeAndLog(pb, "exec");
+            if (!CDSTestUtils.isUnableToMap(out)) {
+                out.shouldHaveExitValue(0);
+            }
+        } else {
+            // Grab my own PID
+            String pid = Long.toString(ProcessTools.getProcessId());
+
+            ProcessBuilder pb = new ProcessBuilder();
+            pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
+            OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
+            try {
+                output.shouldContain("Shared Dictionary statistics:");
+                output.shouldContain("Number of buckets");
+                output.shouldContain("Number of entries");
+                output.shouldContain("Maximum bucket size");
+            } catch (RuntimeException e) {
+                output.shouldContain("Unknown diagnostic command");
+            }
+
+            pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary", "-verbose"});
+            output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary-verbose");
+            try {
+                output.shouldContain("Shared Dictionary");
+                output.shouldContain("Dictionary for loader data: 0x");
+                output.shouldContain("^java.lang.String");
+            } catch (RuntimeException e) {
+                output.shouldContain("Unknown diagnostic command");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/DumpSymbolAndStringTable.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/*
+ * @test
+ * @bug 8059510
+ * @summary Test jcmd VM.symboltable, VM.stringtable and VM.systemdictionary options
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions DumpSymbolAndStringTable
+ */
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.JDKToolFinder;
+
+public class DumpSymbolAndStringTable {
+    public static void main(String[] args) throws Exception {
+        // Grab my own PID
+        String pid = Long.toString(ProcessTools.getProcessId());
+
+        ProcessBuilder pb = new ProcessBuilder();
+        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.symboltable", "-verbose"});
+        OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-symboltable");
+        try {
+            output.shouldContain("24 2: DumpSymbolAndStringTable\n");
+        } catch (RuntimeException e) {
+            output.shouldContain("Unknown diagnostic command");
+        }
+
+        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.stringtable", "-verbose"});
+        output = CDSTestUtils.executeAndLog(pb, "jcmd-stringtable");
+        try {
+            output.shouldContain("16: java.lang.String\n");
+        } catch (RuntimeException e) {
+            output.shouldContain("Unknown diagnostic command");
+        }
+
+        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
+        output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
+        try {
+            output.shouldContain("System Dictionary for 'app' class loader statistics:");
+            output.shouldContain("Number of buckets");
+            output.shouldContain("Number of entries");
+            output.shouldContain("Maximum bucket size");
+        } catch (RuntimeException e) {
+            output.shouldContain("Unknown diagnostic command");
+        }
+
+        pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary", "-verbose"});
+        output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
+        try {
+            output.shouldContain("Dictionary for loader data: 0x");
+            output.shouldContain("^java.lang.String");
+        } catch (RuntimeException e) {
+            output.shouldContain("Unknown diagnostic command");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/LoadClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+/*
+ * @summary Load the class specifiecd by the argument
+ *   Input: className
+ */
+public class LoadClass {
+    public static void main(String args[]) {
+        Class c = null;
+        try {
+            c = Class.forName(args[0]);
+        } catch (ClassNotFoundException e) {
+            System.out.println(e);
+        }
+        if (c != null) {
+            System.out.println(c + " loaded.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/MaxMetaspaceSize.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @bug 8067187 8200078
+ * @summary Testing CDS dumping with the -XX:MaxMetaspaceSize=<size> option
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ */
+
+import java.util.ArrayList;
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.Platform;
+
+public class MaxMetaspaceSize {
+  public static void main(String[] args) throws Exception {
+    ArrayList<String> processArgs = new ArrayList<>();
+    processArgs.add("-Xshare:dump");
+
+    if (Platform.is64bit()) {
+      processArgs.add("-XX:MaxMetaspaceSize=3m");
+      processArgs.add("-XX:CompressedClassSpaceSize=1m");
+      processArgs.add("-XX:InitialBootClassLoaderMetaspaceSize=1m");
+    } else {
+      processArgs.add("-XX:MaxMetaspaceSize=1m");
+    }
+
+    String msg = "Failed allocating metaspace object";
+    ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(processArgs.toArray(new String[0]));
+    CDSTestUtils.executeAndLog(pb, "dump").shouldContain(msg).shouldHaveExitValue(1);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/NonBootLoaderClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ */
+
+/*
+ * @test NonBootLoaderClasses
+ * @summary Test to ensure platform and app classes are archived when specified in classlist
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver NonBootLoaderClasses
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class NonBootLoaderClasses {
+    public static void main(String[] args) throws Exception {
+        final String PLATFORM_CLASS = "jdk/dynalink/DynamicLinker";
+        final String APP_CLASS = "com/sun/tools/javac/Main";
+        String[] classes = {PLATFORM_CLASS, APP_CLASS};
+        String classList =
+            CDSTestUtils.makeClassList(classes).getPath();
+        String archiveName = "NonBootLoaderClasses.jsa";
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-XX:ExtraSharedClassListFile=" + classList, "-Djava.class.path=")
+            .setArchiveName(archiveName);
+        CDSTestUtils.createArchiveAndCheck(opts);
+
+        // Print the shared dictionary and inspect the output
+        opts = (new CDSOptions())
+            .setUseVersion(false)
+            .addSuffix("-Djava.class.path=",
+                "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
+                "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary");
+        CDSTestUtils.run(opts)
+            .assertNormalExit(output -> {
+                output.shouldContain("archive is valid");
+                output.shouldContain(PLATFORM_CLASS.replace('/', '.'));
+                output.shouldContain(APP_CLASS.replace('/', '.'));
+            });
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/PrintSharedArchiveAndExit.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/**
+ * @test
+ * @bug 8066670
+ * @summary Testing -XX:+PrintSharedArchiveAndExit option
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class PrintSharedArchiveAndExit {
+    public static void main(String[] args) throws Exception {
+        String archiveName = "PrintSharedArchiveAndExit.jsa";
+        CDSOptions opts = (new CDSOptions()).setArchiveName(archiveName);
+        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
+        CDSTestUtils.checkDump(out);
+
+        // (1) With a valid archive
+        opts = (new CDSOptions())
+            .setUseVersion(false)
+            .addSuffix( "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
+                "-XX:+PrintSharedArchiveAndExit", "-version");
+        CDSTestUtils.run(opts)
+            .assertNormalExit(output -> {
+                output.shouldContain("archive is valid");
+                output.shouldNotContain("java version"); // Should not print JVM version
+            });
+
+        opts = (new CDSOptions())
+            .setUseVersion(false)
+            .addSuffix( "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName,
+                "-XX:+PrintSharedArchiveAndExit");
+        CDSTestUtils.run(opts)
+            .assertNormalExit(output -> {
+                output.shouldContain("archive is valid");
+                output.shouldNotContain("Usage:"); // Should not print JVM help message
+            });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedArchiveFile.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2013, 2019, 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.
+ */
+
+/**
+ * @test
+ * @bug 8014138
+ * @summary Testing new -XX:SharedArchiveFile=<file-name> option
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+
+// NOTE: This test serves as a sanity test and also as an example for simple
+// use of SharedArchiveFile argument. For this reason it DOES NOT use the utility
+// methods to form command line to create/use shared archive.
+public class SharedArchiveFile {
+    public static void main(String[] args) throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+                                "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
+                                "-Xshare:dump");
+        OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
+        CDSTestUtils.checkDump(out);
+
+        // -XX:+DumpSharedSpaces should behave the same as -Xshare:dump
+        pb = ProcessTools.createJavaProcessBuilder(true,
+                                "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
+                                "-XX:+DumpSharedSpaces");
+        out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
+        CDSTestUtils.checkDump(out);
+
+        pb = ProcessTools.createJavaProcessBuilder(true,
+                              "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
+                              "-Xshare:on", "-version");
+        out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
+        CDSTestUtils.checkExec(out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedBaseAddress.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/**
+ * @test SharedBaseAddress
+ * @summary Test variety of values for SharedBaseAddress, making sure
+ *          VM handles normal values as well as edge values w/o a crash.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver SharedBaseAddress
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SharedBaseAddress {
+
+    // shared base address test table
+    private static final String[] testTable = {
+        "1g", "8g", "64g","512g", "4t",
+        "32t", "128t", "0",
+        "1", "64k", "64M"
+    };
+
+    public static void main(String[] args) throws Exception {
+
+        for (String testEntry : testTable) {
+            String filename = "SharedBaseAddress" + testEntry + ".jsa";
+            System.out.println("sharedBaseAddress = " + testEntry);
+            CDSOptions opts = (new CDSOptions())
+                .setArchiveName(filename)
+                .addPrefix("-XX:SharedBaseAddress=" + testEntry);
+
+            CDSTestUtils.createArchiveAndCheck(opts);
+            CDSTestUtils.runWithArchiveAndCheck(opts);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedStrings.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ */
+
+/**
+ * @test
+ * @summary Check to make sure that shared strings in the bootstrap CDS archive
+ *          are actually shared
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @build SharedStringsWb sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
+ * @run driver SharedStrings
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SharedStrings {
+    public static void main(String[] args) throws Exception {
+        // Note: This is a basic sanity test for Shared Strings feature.
+        // This also serves as a reference on how to use this feature,
+        // hence the command lines are spelled out instead of using the
+        // test utils methods.
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-XX:SharedArchiveFile=./SharedStrings.jsa",
+            "-Xlog:cds,cds+hashtables",
+            // Needed for bootclasspath match, for CDS to work with WhiteBox API
+            "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"),
+            "-Xshare:dump");
+
+        OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
+        CDSTestUtils.checkDump(out, "Shared string table stats");
+
+
+        pb = ProcessTools.createJavaProcessBuilder(
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:SharedArchiveFile=./SharedStrings.jsa",
+                // needed for access to white box test API
+                "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"),
+                "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+                "-Xshare:on", "-showversion", "SharedStringsWb");
+
+        out = CDSTestUtils.executeAndLog(pb, "exec");
+        CDSTestUtils.checkExec(out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedStringsDedup.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+/**
+ * @test SharedStringsDedup
+ * @summary Test -Xshare:auto with shared strings and -XX:+UseStringDeduplication
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver SharedStringsDedup
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+
+// The main purpose is to test the interaction between shared strings
+// and -XX:+UseStringDeduplication. We run in -Xshare:auto mode so
+// we don't need to worry about CDS archive mapping failure (which
+// doesn't happen often so it won't impact coverage).
+public class SharedStringsDedup {
+    public static void main(String[] args) throws Exception {
+        OutputAnalyzer out =
+            CDSTestUtils.createArchive();
+        CDSTestUtils.checkDump(out, "Shared string table stats");
+        CDSTestUtils.runWithArchiveAndCheck("-XX:+UseStringDeduplication");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedStringsRunAuto.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ */
+
+/**
+ * @test SharedStringsAuto
+ * @summary Test -Xshare:auto with shared strings.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver SharedStringsRunAuto
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+
+public class SharedStringsRunAuto {
+    public static void main(String[] args) throws Exception {
+        OutputAnalyzer out =
+            CDSTestUtils.createArchive();
+        CDSTestUtils.checkDump(out, "Shared string table stats");
+        CDSTestUtils.runWithArchiveAndCheck();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedStringsWb.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2013, 2019, 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.
+ */
+
+import sun.hotspot.WhiteBox;
+
+// This class is used by the test SharedStrings.java
+// It should be launched in CDS mode
+public class SharedStringsWb {
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (wb.areSharedStringsIgnored()) {
+            System.out.println("Shared strings are ignored, assuming PASS");
+            return;
+        }
+
+        // The string below is known to be added to CDS archive
+        String s = "<init>";
+        String internedS = s.intern();
+
+        // Check that it's a valid string
+        if (s.getClass() != String.class || !(s instanceof String)) {
+            throw new RuntimeException("Shared string is not a valid String: FAIL");
+        }
+
+        if (wb.isShared(internedS)) {
+            System.out.println("Found shared string, result: PASS");
+        } else {
+            throw new RuntimeException("String is not shared, result: FAIL");
+        }
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SharedSymbolTableBucketSize.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/**
+ * @test
+ * @bug 8059510
+ * @summary Test SharedSymbolTableBucketSize option
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SharedSymbolTableBucketSize {
+    public static void main(String[] args) throws Exception {
+        int bucket_size = 8;
+
+        OutputAnalyzer output =
+            CDSTestUtils.createArchive("-XX:SharedSymbolTableBucketSize="
+                                       + Integer.valueOf(bucket_size));
+        CDSTestUtils.checkDump(output);
+        CDSTestUtils.checkMappingFailure(output);
+
+        String s = output.firstMatch("Average bucket size     : .*");
+        Float f = Float.parseFloat(s.substring(25));
+        int size = Math.round(f);
+        if (size != bucket_size) {
+            throw new Exception("FAILED: incorrect bucket size " + size +
+                                ", expect " + bucket_size);
+        }
+
+        // Invalid SharedSymbolTableBucketSize input
+        String input[] = {"-XX:SharedSymbolTableBucketSize=-1",
+                          "-XX:SharedSymbolTableBucketSize=2.5"};
+        for (int i = 0; i < input.length; i++) {
+            CDSTestUtils.createArchive(input[i])
+                .shouldContain("Improperly specified VM option")
+                .shouldHaveExitValue(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/SpaceUtilizationCheck.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+/**
+ * @test SpaceUtilizationCheck
+ * @summary Check if the space utilization for shared spaces is adequate
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ *                              sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SpaceUtilizationCheck
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.lang.Integer;
+
+public class SpaceUtilizationCheck {
+    // [1] Each region must have strictly less than
+    //     WhiteBox.metaspaceReserveAlignment() bytes of unused space.
+    // [2] There must be no gap between two consecutive regions.
+
+    public static void main(String[] args) throws Exception {
+        // (1) Default VM arguments
+        test();
+
+        // (2) Use the now deprecated VM arguments. They should have no effect.
+        test("-XX:SharedReadWriteSize=128M",
+             "-XX:SharedReadOnlySize=128M",
+             "-XX:SharedMiscDataSize=128M",
+             "-XX:SharedMiscCodeSize=128M");
+    }
+
+    static void test(String... extra_options) throws Exception {
+        OutputAnalyzer output = CDSTestUtils.createArchive(extra_options);
+        CDSTestUtils.checkDump(output);
+        Pattern pattern = Pattern.compile("^(..) *space: *([0-9]+).* out of *([0-9]+) bytes .* at 0x([0-9a0-f]+)");
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        long reserve_alignment = wb.metaspaceReserveAlignment();
+        System.out.println("Metaspace::reserve_alignment() = " + reserve_alignment);
+
+        long last_region = -1;
+        Hashtable<String,String> checked = new Hashtable<>();
+        for (String line : output.getStdout().split("\n")) {
+            if (line.contains(" space:") && !line.contains("st space:")) {
+                Matcher matcher = pattern.matcher(line);
+                if (matcher.find()) {
+                    String name = matcher.group(1);
+                    if (name.equals("s0") || name.equals("s1")) {
+                      // String regions are listed at the end and they may not be fully occupied.
+                      break;
+                    } else {
+                      System.out.println("Checking " + name + " in : " + line);
+                      checked.put(name, name);
+                    }
+                    long used = Long.parseLong(matcher.group(2));
+                    long capacity = Long.parseLong(matcher.group(3));
+                    long address = Long.parseLong(matcher.group(4), 16);
+                    long unused = capacity - used;
+                    if (unused < 0) {
+                        throw new RuntimeException("Unused space (" + unused + ") less than 0");
+                    }
+                    if (unused > reserve_alignment) {
+                        // [1] Check for unused space
+                        throw new RuntimeException("Unused space (" + unused + ") must be smaller than Metaspace::reserve_alignment() (" +
+                                                   reserve_alignment + ")");
+                    }
+                    if (last_region >= 0 && address != last_region) {
+                        // [2] Check for no-gap
+                        throw new RuntimeException("Region 0x" + address + " should have started at 0x" + Long.toString(last_region, 16));
+                    }
+                    last_region = address + capacity;
+                }
+            }
+        }
+        if (checked.size() != 4) {
+          throw new RuntimeException("Must have 4 consecutive, fully utilized regions");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/TestInterpreterMethodEntries.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+/**
+ * @test InterpreterMethodEntries
+ * @bug 8169711
+ * @summary Test interpreter method entries for intrinsics with CDS (class data sharing)
+ *          and the intrinsic flag enabled during dump and disabled during use of the archive.
+ * @requires vm.cds
+ * @comment the test disables intrinsics, so it can't be run w/ AOT'ed java module
+ * @requires !vm.aot.enabled
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver TestInterpreterMethodEntries true false
+ */
+
+/**
+ * @test InterpreterMethodEntries
+ * @bug 8169711
+ * @summary Test interpreter method entries for intrinsics with CDS (class data sharing)
+ *          and the intrinsic flag disabled during dump and enabled during use of the archive.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run driver TestInterpreterMethodEntries false true
+ */
+
+import java.lang.Math;
+import java.util.zip.CRC32;
+import java.util.zip.CRC32C;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class TestInterpreterMethodEntries {
+
+    public static void main(String[] args) throws Exception {
+        if (args.length > 1) {
+          boolean dump = Boolean.parseBoolean(args[0]);
+          boolean use  = Boolean.parseBoolean(args[1]);
+
+          // Dump and use shared archive with different flag combinations
+          dumpAndUseSharedArchive(dump ? "+" : "-", use ? "+" : "-");
+        } else {
+          // Call intrinsified java.lang.Math::fma()
+          Math.fma(1.0, 2.0, 3.0);
+
+          byte[] buffer = new byte[256];
+          // Call intrinsified java.util.zip.CRC32::update()
+          CRC32 crc32 = new CRC32();
+          crc32.update(buffer, 0, 256);
+
+          // Call intrinsified java.util.zip.CRC32C::updateBytes(..)
+          CRC32C crc32c = new CRC32C();
+          crc32c.update(buffer, 0, 256);
+        }
+    }
+
+    private static void dumpAndUseSharedArchive(String dump, String use) throws Exception {
+        String unlock     = "-XX:+UnlockDiagnosticVMOptions";
+
+        String dumpFMA    = "-XX:" + dump + "UseFMA";
+        String dumpCRC32  = "-XX:" + dump + "UseCRC32Intrinsics";
+        String dumpCRC32C = "-XX:" + dump + "UseCRC32CIntrinsics";
+        String useFMA     = "-XX:" + use  + "UseFMA";
+        String useCRC32   = "-XX:" + use  + "UseCRC32Intrinsics";
+        String useCRC32C  = "-XX:" + use  + "UseCRC32CIntrinsics";
+
+        CDSTestUtils.createArchiveAndCheck(unlock, dumpFMA, dumpCRC32, dumpCRC32C);
+
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix(unlock, useFMA, useCRC32, useCRC32C, "-showversion")
+            .addSuffix("TestInterpreterMethodEntries", "run")
+            .setUseVersion(false);
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/AppCDSOptions.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+import jdk.test.lib.cds.CDSOptions;
+
+// This class represents options used for
+// during creation of the archive and/or running JVM with archive
+
+public class AppCDSOptions extends CDSOptions {
+    public String appJar;
+    public String appJarDir;
+
+    public AppCDSOptions setAppJar(String appJar) {
+        this.appJar = appJar;
+        return this;
+    }
+
+    public AppCDSOptions setAppJarDir(String appJarDir) {
+        this.appJarDir = appJarDir;
+        return this;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/AppendClasspath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary At run time, it is OK to append new elements to the classpath that was used at dump time.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/HelloMore.java
+ * @run driver AppendClasspath
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class AppendClasspath {
+
+  public static void main(String[] args) throws Exception {
+    String appJar = JarBuilder.getOrCreateHelloJar();
+    String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
+
+    // Dump an archive with a specified JAR file in -classpath
+    TestCommon.testDump(appJar, TestCommon.list("Hello"));
+
+    // PASS: 1) runtime with classpath containing the one used in dump time
+    TestCommon.run(
+        "-cp", appJar + File.pathSeparator + appJar2,
+        "HelloMore")
+      .assertNormalExit();
+
+    // PASS: 2) runtime has an non-existing jar in the -cp
+    String classDir = System.getProperty("test.classes");
+    String newFile = "non-exist.jar";
+    String nonExistPath = classDir + File.separator + newFile;
+    String classPath = appJar + File.pathSeparator + nonExistPath;
+    File nonExistJar = new File(classDir, newFile);
+    if (nonExistJar.exists()) {
+        nonExistJar.delete();
+    }
+    TestCommon.run(
+        "-cp", classPath,
+        "-Xlog:class+path=trace",
+        "Hello")
+      .assertNormalExit();
+
+    final String errorMessage1 = "Unable to use shared archive";
+    final String errorMessage2 = "shared class paths mismatch";
+    // FAIL: 1) runtime with classpath different from the one used in dump time
+    // (runtime has an extra jar file prepended to the class path)
+    TestCommon.run(
+        "-Xlog:cds",
+        "-cp", appJar2 + File.pathSeparator + appJar,
+        "HelloMore")
+        .assertAbnormalExit(errorMessage1, errorMessage2);
+
+    // FAIL: 2) runtime with classpath part of the one used in dump time
+    TestCommon.testDump(appJar + File.pathSeparator + appJar2,
+                                      TestCommon.list("Hello"));
+    TestCommon.run(
+        "-Xlog:cds",
+        "-cp", appJar2,
+        "Hello")
+        .assertAbnormalExit(errorMessage1, errorMessage2);
+
+    // FAIL: 3) runtime with same set of jar files in the classpath but
+    // with different order
+    TestCommon.run(
+        "-Xlog:cds",
+        "-cp", appJar2 + File.pathSeparator + appJar,
+        "HelloMore")
+        .assertAbnormalExit(errorMessage1, errorMessage2);
+
+    // FAIL: 4) non-existing jar during dump time but jar exists during runtime
+    TestCommon.testDump(classPath, TestCommon.list("Hello"));
+
+    Files.copy(Paths.get(classDir, "hello.jar"),
+        Paths.get(classDir, newFile),
+        StandardCopyOption.REPLACE_EXISTING);
+
+    TestCommon.run(
+        "-cp", classPath,
+        "-Xlog:class+path=trace",
+        "Hello")
+        .assertAbnormalExit(errorMessage1, errorMessage2);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/BootClassPathMismatch.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary bootclasspath mismatch test.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver BootClassPathMismatch
+ */
+
+import jdk.test.lib.Platform;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.FileTime;
+
+
+public class BootClassPathMismatch {
+    private static final String mismatchMessage = "shared class paths mismatch";
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.getOrCreateHelloJar();
+        copyHelloToNewDir();
+
+        BootClassPathMismatch test = new BootClassPathMismatch();
+        test.testBootClassPathMismatch();
+        test.testBootClassPathMismatchWithAppClass();
+        test.testBootClassPathMismatchWithBadPath();
+        if (!TestCommon.isDynamicArchive()) {
+            // this test is not applicable to dynamic archive since
+            // there is no class to be archived in the top archive
+            test.testBootClassPathMatchWithAppend();
+        }
+        test.testBootClassPathMatch();
+    }
+
+    /* Archive contains boot classes only, with Hello class on -Xbootclasspath/a path.
+     *
+     * Error should be detected if:
+     * dump time: -Xbootclasspath/a:${testdir}/hello.jar
+     * run-time : -Xbootclasspath/a:${testdir}/newdir/hello.jar
+     *
+     * or
+     * dump time: -Xbootclasspath/a:${testdir}/newdir/hello.jar
+     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
+     */
+    public void testBootClassPathMismatch() throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String appClasses[] = {"Hello"};
+        String testDir = TestCommon.getTestDir("newdir");
+        String otherJar = testDir + File.separator + "hello.jar";
+
+        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar);
+        TestCommon.run(
+                "-Xlog:cds",
+                "-cp", appJar, "-Xbootclasspath/a:" + otherJar, "Hello")
+            .assertAbnormalExit(mismatchMessage);
+
+        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + otherJar);
+        TestCommon.run(
+                "-Xlog:cds",
+                "-cp", appJar, "-Xbootclasspath/a:" + appJar, "Hello")
+            .assertAbnormalExit(mismatchMessage);
+    }
+
+    /* Archive contains boot classes only.
+     *
+     * Error should be detected if:
+     * dump time: -Xbootclasspath/a:${testdir}/newdir/hello.jar
+     * run-time : -Xbootclasspath/a:${testdir}/newdir/hello.jar1
+     */
+    public void testBootClassPathMismatchWithBadPath() throws Exception {
+        String appClasses[] = {"Hello"};
+        String testDir = TestCommon.getTestDir("newdir");
+        String appJar = testDir + File.separator + "hello.jar";
+        String otherJar = testDir + File.separator + "hello.jar1";
+
+        TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar);
+        TestCommon.run(
+                "-Xlog:cds",
+                "-cp", appJar, "-Xbootclasspath/a:" + otherJar, "Hello")
+            .assertAbnormalExit(mismatchMessage);
+    }
+
+    /* Archive contains boot classes only, with Hello loaded from -Xbootclasspath/a at dump time.
+     *
+     * No error if:
+     * dump time: -Xbootclasspath/a:${testdir}/hello.jar
+     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
+     */
+    public void testBootClassPathMatch() throws Exception {
+        String appJar = TestCommon.getTestJar("hello.jar");
+        String appClasses[] = {"Hello"};
+        TestCommon.dump(
+            appJar, appClasses, "-Xbootclasspath/a:" + appJar);
+        TestCommon.run(
+                "-cp", appJar, "-verbose:class",
+                "-Xbootclasspath/a:" + appJar, "Hello")
+            .assertNormalExit("[class,load] Hello source: shared objects file");
+
+        // test relative path to appJar
+        String newJar = TestCommon.composeRelPath(appJar);
+        TestCommon.run(
+                "-cp", newJar, "-verbose:class",
+                "-Xbootclasspath/a:" + newJar, "Hello")
+            .assertNormalExit("[class,load] Hello source: shared objects file");
+
+        int idx = appJar.lastIndexOf(File.separator);
+        String jarName = appJar.substring(idx + 1);
+        String jarDir = appJar.substring(0, idx);
+        // relative path starting with "."
+        TestCommon.runWithRelativePath(
+            jarDir,
+            "-Xshare:on",
+            "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
+            "-cp", "." + File.separator + jarName,
+            "-Xbootclasspath/a:" + "." + File.separator + jarName,
+            "-Xlog:class+load=trace,class+path=info",
+            "Hello")
+            .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+                });
+
+        // relative path starting with ".."
+        idx = jarDir.lastIndexOf(File.separator);
+        String jarSubDir = jarDir.substring(idx + 1);
+        TestCommon.runWithRelativePath(
+            jarDir,
+            "-Xshare:on",
+            "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
+            "-cp", ".." + File.separator + jarSubDir + File.separator + jarName,
+            "-Xbootclasspath/a:" + ".." + File.separator + jarSubDir + File.separator + jarName,
+            "-Xlog:class+load=trace,class+path=info",
+            "Hello")
+            .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+                });
+
+        // test sym link to appJar
+        if (!Platform.isWindows()) {
+            File linkedJar = TestCommon.createSymLink(appJar);
+            TestCommon.run(
+                    "-cp", linkedJar.getPath(), "-verbose:class",
+                    "-Xbootclasspath/a:" + linkedJar.getPath(), "Hello")
+                .assertNormalExit("[class,load] Hello source: shared objects file");
+        }
+    }
+
+    /* Archive contains boot classes only, runtime add -Xbootclasspath/a path.
+     *
+     * No error:
+     * dump time: No -Xbootclasspath/a
+     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
+     */
+    public void testBootClassPathMatchWithAppend() throws Exception {
+      CDSOptions opts = new CDSOptions().setUseVersion(false);
+      OutputAnalyzer out = CDSTestUtils.createArchive(opts);
+      CDSTestUtils.checkDump(out);
+
+      String appJar = JarBuilder.getOrCreateHelloJar();
+      opts.addPrefix("-Xbootclasspath/a:" + appJar, "-showversion").addSuffix("Hello");
+      CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+    /* Archive contains app classes, with Hello on -cp path at dump time.
+     *
+     * Error should be detected if:
+     * dump time: <no bootclasspath specified>
+     * run-time : -Xbootclasspath/a:${testdir}/hello.jar
+     */
+    public void testBootClassPathMismatchWithAppClass() throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String appClasses[] = {"Hello"};
+        TestCommon.dump(appJar, appClasses);
+        TestCommon.run(
+                "-Xlog:cds",
+                "-cp", appJar, "-Xbootclasspath/a:" + appJar, "Hello")
+            .assertAbnormalExit(mismatchMessage);
+
+        // test relative path to appJar
+        String newJar = TestCommon.composeRelPath(appJar);
+        TestCommon.run(
+                "-cp", newJar, "-Xbootclasspath/a:" + newJar, "Hello")
+            .assertAbnormalExit(mismatchMessage);
+    }
+
+    private static void copyHelloToNewDir() throws Exception {
+        String classDir = System.getProperty("test.classes");
+        String dstDir = classDir + File.separator + "newdir";
+        try {
+            Files.createDirectory(Paths.get(dstDir));
+        } catch (FileAlreadyExistsException e) { }
+
+        // copy as hello.jar
+        Path dstPath = Paths.get(dstDir, "hello.jar");
+        Files.copy(Paths.get(classDir, "hello.jar"),
+            dstPath,
+            StandardCopyOption.REPLACE_EXISTING);
+
+        File helloJar = dstPath.toFile();
+        long modTime = helloJar.lastModified();
+
+        // copy as hello.jar1
+        Path dstPath2 = Paths.get(dstDir, "hello.jar1");
+        Files.copy(Paths.get(classDir, "hello.jar"),
+            dstPath2,
+            StandardCopyOption.REPLACE_EXISTING);
+
+        // On Windows, we rely on the file size, creation time, and
+        // modification time in order to differentiate between 2 files.
+        // Setting a different modification time on hello.jar1 so that this test
+        // runs more reliably on Windows.
+        modTime += 10000;
+        Files.setAttribute(dstPath2, "lastModifiedTime", FileTime.fromMillis(modTime));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/CDSandJFR.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @summary Make sure CDS and JFR work together.
+ * @requires vm.hasJFR & vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes test-classes
+ * @modules jdk.jfr
+ * @build Hello GetFlightRecorder
+ * @run driver ClassFileInstaller -jar CDSandJFR.jar Hello GetFlightRecorder GetFlightRecorder$TestEvent GetFlightRecorder$SimpleEvent
+ * @run main/othervm/timeout=500 CDSandJFR
+ */
+
+import jdk.test.lib.BuildHelper;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CDSandJFR {
+    static String[] classes = {
+        "jdk/jfr/Event",
+        "jdk/jfr/events/FileReadEvent",
+        "jdk/jfr/events/FileWriteEvent",
+        "jdk/jfr/events/SocketReadEvent",
+        "jdk/jfr/events/SocketWriteEvent",
+        "jdk/jfr/events/ExceptionThrownEvent",
+        "jdk/jfr/events/ExceptionStatisticsEvent",
+        "jdk/jfr/events/ErrorThrownEvent",
+        "jdk/jfr/events/ActiveSettingEvent",
+        "jdk/jfr/events/ActiveRecordingEvent",
+        "Hello",
+        "GetFlightRecorder",
+        "GetFlightRecorder$TestEvent",
+    };
+
+    public static void main(String[] args) throws Exception {
+        test(classes);
+    }
+
+    static void test(String[] classes) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("CDSandJFR.jar");
+        OutputAnalyzer output;
+        output = TestCommon.testDump(appJar, TestCommon.list(classes));
+        TestCommon.checkDump(output, "Skipping jdk/jfr/Event: JFR event class");
+
+        output = TestCommon.exec(appJar,
+                                 "-XX:StartFlightRecording=dumponexit=true",
+                                 "Hello");
+        TestCommon.checkExec(output, "Hello World");
+
+        TestCommon.checkExec(TestCommon.exec(appJar,
+                                             "-XX:FlightRecorderOptions=retransform=true",
+                                             "GetFlightRecorder"));
+        TestCommon.checkExec(TestCommon.exec(appJar,
+                                             "-XX:FlightRecorderOptions=retransform=false",
+                                             "GetFlightRecorder"));
+
+        // Test dumping with flight recorder enabled.
+        output = TestCommon.testDump(appJar, TestCommon.list(classes),
+                                     "-XX:StartFlightRecording=dumponexit=true");
+        TestCommon.checkDump(output, "warning: JFR will be disabled during CDS dumping");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/CaseSensitiveClassPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+
+/*
+ * @test
+ * @summary Test case sensitive aspect of comparing class paths
+ *     between dump time and archive use time
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @requires os.family != "mac"
+ * @compile test-classes/Hello.java
+ * @run driver CaseSensitiveClassPath
+ */
+
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+
+// Excluded from running on MAC: a more comprehensive case sensitivity detection
+// and fix mechanism is needed, which is planned to be implemented in the future.
+public class CaseSensitiveClassPath {
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String appJarUpper = appJar.replace("hello", "Hello");
+
+        OutputAnalyzer out = TestCommon.dump(appJar, TestCommon.list("Hello"));
+        TestCommon.checkDump(out);
+
+        Path jarPath = Paths.get(appJar);
+        Path jarPathUpper = null;
+
+        boolean fileExists = false;
+        try {
+            jarPathUpper = Files.createFile(Paths.get(appJarUpper));
+        } catch (FileAlreadyExistsException faee) {
+            fileExists = true;
+        }
+
+        if (!fileExists) {
+            try {
+                Files.copy(jarPath, jarPathUpper, StandardCopyOption.REPLACE_EXISTING);
+            } catch (Exception e) {
+                throw new java.lang.RuntimeException(
+                    "Failed copying file from " + appJar + " to " + appJarUpper + ".", e);
+            }
+        } else {
+            jarPathUpper = Paths.get(appJarUpper);
+        }
+        boolean isSameFile = Files.isSameFile(jarPath, jarPathUpper);
+
+        TestCommon.run("-Xlog:class+path=info,cds", "-cp", appJarUpper, "Hello")
+            .ifNoMappingFailure(output -> {
+                    if (isSameFile) {
+                        output.shouldContain("Hello World");
+                    } else {
+                        output.shouldContain("shared class paths mismatch");
+                        output.shouldHaveExitValue(1);
+                    }
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ClassLoaderTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Initiating and defining classloader test.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/HelloWB.java
+ * @compile test-classes/ForNameTest.java
+ * @compile test-classes/BootClassPathAppendHelper.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver ClassLoaderTest
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ClassLoaderTest {
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build(true, "ClassLoaderTest-WhiteBox", "sun/hotspot/WhiteBox");
+        JarBuilder.getOrCreateHelloJar();
+        JarBuilder.build("ClassLoaderTest-HelloWB", "HelloWB");
+        JarBuilder.build("ClassLoaderTest-ForName", "ForNameTest");
+        ClassLoaderTest test = new ClassLoaderTest();
+        test.testBootLoader();
+        test.testDefiningLoader();
+    }
+
+    public void testBootLoader() throws Exception {
+        String appJar = TestCommon.getTestJar("ClassLoaderTest-HelloWB.jar");
+        String appClasses[] = {"HelloWB"};
+        String whiteBoxJar = TestCommon.getTestJar("ClassLoaderTest-WhiteBox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + appJar +
+            File.pathSeparator + whiteBoxJar;
+
+        TestCommon.dump(appJar, appClasses, bootClassPath);
+
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, bootClassPath, "HelloWB")
+          .assertNormalExit(output -> output.shouldContain("HelloWB.class.getClassLoader() = null"));
+    }
+
+    public void testDefiningLoader() throws Exception {
+        // The boot loader should be used to load the class when it's
+        // on the bootclasspath, regardless who is the initiating classloader.
+        // In this test case, the AppClassLoader is the initiating classloader.
+        String helloJar = TestCommon.getTestJar("hello.jar");
+        String appJar = helloJar + System.getProperty("path.separator") +
+                        TestCommon.getTestJar("ClassLoaderTest-ForName.jar");
+        String whiteBoxJar = TestCommon.getTestJar("ClassLoaderTest-WhiteBox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + helloJar +
+            File.pathSeparator + whiteBoxJar;
+
+        // Archive the "Hello" class from the appended bootclasspath
+        TestCommon.dump(helloJar, TestCommon.list("Hello"), bootClassPath);
+
+        TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, bootClassPath, "-Xlog:class+path=trace", "ForNameTest")
+          .assertNormalExit();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ClassPathAttr.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Class-Path: attribute in MANIFEST file
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @run driver ClassPathAttr
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.Paths;
+
+
+public class ClassPathAttr {
+
+  public static void main(String[] args) throws Exception {
+    buildCpAttr("cpattr1", "cpattr1.mf", "CpAttr1", "CpAttr1");
+    buildCpAttr("cpattr1_long", "cpattr1_long.mf", "CpAttr1", "CpAttr1");
+    buildCpAttr("cpattr2", "cpattr2.mf", "CpAttr2", "CpAttr2");
+    buildCpAttr("cpattr3", "cpattr3.mf", "CpAttr3", "CpAttr2", "CpAttr3");
+    buildCpAttr("cpattr4", "cpattr4.mf", "CpAttr4",
+        "CpAttr2", "CpAttr3", "CpAttr4", "CpAttr5");
+    buildCpAttr("cpattr5_123456789_223456789_323456789_423456789_523456789_623456789", "cpattr5_extra_long.mf", "CpAttr5", "CpAttr5");
+
+    for (int i=1; i<=2; i++) {
+      String jar1 = TestCommon.getTestJar("cpattr1.jar");
+      String jar4 = TestCommon.getTestJar("cpattr4.jar");
+      if (i == 2) {
+        // Test case #2 -- same as #1, except we use cpattr1_long.jar, which has a super-long
+        // Class-Path: attribute.
+        jar1 = TestCommon.getTestJar("cpattr1_long.jar");
+      }
+      String cp = jar1 + File.pathSeparator + jar4;
+
+      TestCommon.testDump(cp, TestCommon.list("CpAttr1",
+                                                          "CpAttr2",
+                                                          "CpAttr3",
+                                                          "CpAttr4",
+                                                          "CpAttr5"));
+
+      TestCommon.run(
+          "-cp", cp,
+          "CpAttr1")
+        .assertNormalExit();
+
+      // Logging test for class+path.
+      TestCommon.run(
+          "-Xlog:class+path",
+          "-cp", cp,
+          "CpAttr1")
+        .assertNormalExit(output -> {
+            output.shouldMatch("checking shared classpath entry: .*cpattr2.jar");
+            output.shouldMatch("checking shared classpath entry: .*cpattr3.jar");
+          });
+
+      //  Make sure aliased TraceClassPaths still works
+      TestCommon.run(
+          "-XX:+TraceClassPaths",
+          "-cp", cp,
+          "CpAttr1")
+        .assertNormalExit(output -> {
+            output.shouldMatch("checking shared classpath entry: .*cpattr2.jar");
+            output.shouldMatch("checking shared classpath entry: .*cpattr3.jar");
+          });
+    }
+  }
+
+  private static void buildCpAttr(String jarName, String manifest, String enclosingClassName, String ...testClassNames) throws Exception {
+    String jarClassesDir = System.getProperty("test.classes") + File.separator + jarName + "_classes";
+    try { Files.createDirectory(Paths.get(jarClassesDir)); } catch (FileAlreadyExistsException e) { }
+
+    JarBuilder.compile(jarClassesDir, System.getProperty("test.src") + File.separator +
+        "test-classes" + File.separator + enclosingClassName + ".java");
+    JarBuilder.buildWithManifest(jarName, manifest, jarClassesDir, testClassNames);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagCombo.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test CommandLineFlagCombo
+ * @requires vm.cds.archived.java.heap
+ * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
+ * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
+ * vm options.
+ * @requires (vm.gc=="null")
+ * @summary Test command line flag combinations that
+ *          could likely affect the behaviour of AppCDS
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @compile test-classes/Hello.java
+ * @run main/othervm/timeout=240 -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. CommandLineFlagCombo
+ */
+
+import jdk.test.lib.BuildHelper;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+import sun.hotspot.code.Compiler;
+
+public class CommandLineFlagCombo {
+
+    // shared base address test table
+    private static final String[] testTable = {
+        "-XX:+UseG1GC", "-XX:+UseSerialGC", "-XX:+UseParallelGC", "-XX:+UseConcMarkSweepGC",
+        "-XX:+FlightRecorder",
+        "-XX:+UseLargePages", // may only take effect on machines with large-pages
+        "-XX:+UseCompressedClassPointers",
+        "-XX:+UseCompressedOops",
+        "-XX:ObjectAlignmentInBytes=16",
+        "-XX:ObjectAlignmentInBytes=32",
+        "-XX:ObjectAlignmentInBytes=64"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String classList[] = {"Hello"};
+
+        for (String testEntry : testTable) {
+            System.out.println("CommandLineFlagCombo = " + testEntry);
+
+            if (skipTestCase(testEntry))
+                continue;
+
+            OutputAnalyzer dumpOutput = TestCommon.dump(appJar, classList, testEntry);
+            if (!TestCommon.isDynamicArchive()) {
+                TestCommon.checkDump(dumpOutput, "Loading classes to share");
+            } else {
+                if (testEntry.contains("ObjectAlignmentInBytes")) {
+                   dumpOutput.shouldHaveExitValue(1)
+                             .shouldMatch("The shared archive file's ObjectAlignmentInBytes of .* does not equal the current ObjectAlignmentInBytes of");
+                } else {
+                   TestCommon.checkDump(dumpOutput, "Loading classes to share");
+                }
+            }
+
+            if ((TestCommon.isDynamicArchive() && !testEntry.contains("ObjectAlignmentInBytes")) ||
+                !TestCommon.isDynamicArchive()) {
+                OutputAnalyzer execOutput = TestCommon.exec(appJar, testEntry, "Hello");
+                TestCommon.checkExec(execOutput, "Hello World");
+            }
+        }
+
+        for (int i=0; i<2; i++) {
+            String g1Flag, serialFlag;
+
+            // Interned strings are supported only with G1GC. However, we should not crash if:
+            // 0: archive has shared strings, but run time doesn't support shared strings
+            // 1: archive has no shared strings, but run time supports shared strings
+
+            String dump_g1Flag     = "-XX:" + (i == 0 ? "+" : "-") + "UseG1GC";
+            String run_g1Flag      = "-XX:" + (i != 0 ? "+" : "-") + "UseG1GC";
+            String dump_serialFlag = "-XX:" + (i != 0 ? "+" : "-") + "UseSerialGC";
+            String run_serialFlag  = "-XX:" + (i == 0 ? "+" : "-") + "UseSerialGC";
+
+            OutputAnalyzer dumpOutput = TestCommon.dump(
+               appJar, classList, dump_g1Flag, dump_serialFlag);
+
+            TestCommon.checkDump(dumpOutput, "Loading classes to share");
+
+            OutputAnalyzer execOutput = TestCommon.exec(appJar, run_g1Flag, run_serialFlag, "Hello");
+            TestCommon.checkExec(execOutput, "Hello World");
+        }
+    }
+
+    private static boolean skipTestCase(String testEntry) throws Exception {
+        if (Platform.is32bit())
+        {
+            if (testEntry.equals("-XX:+UseCompressedOops") ||
+                testEntry.equals("-XX:+UseCompressedClassPointers") ||
+                testEntry.contains("ObjectAlignmentInBytes") )
+            {
+                System.out.println("Test case not applicable on 32-bit platforms");
+                return true;
+            }
+        }
+
+        if (Compiler.isGraalEnabled() && testEntry.equals("-XX:+UseConcMarkSweepGC"))
+        {
+            System.out.println("Graal does not support CMS");
+            return true;
+        }
+
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagComboNegative.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test CommandLineFlagComboNegative
+ * @summary Test command line flag combinations that differ between
+ *          the dump and execute steps, in such way that they cause errors
+ *          E.g. use compressed oops for creating and archive, but then
+ *               execute w/o compressed oops
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver CommandLineFlagComboNegative
+ */
+
+import java.util.ArrayList;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CommandLineFlagComboNegative {
+
+    private class TestVector {
+        public String testOptionForDumpStep;
+        public String testOptionForExecuteStep;
+        public String expectedErrorMsg;
+        public int expectedErrorCode;
+
+        public TestVector(String testOptionForDumpStep, String testOptionForExecuteStep,
+                          String expectedErrorMsg, int expectedErrorCode) {
+            this.testOptionForDumpStep=testOptionForDumpStep;
+            this.testOptionForExecuteStep=testOptionForExecuteStep;
+            this.expectedErrorMsg=expectedErrorMsg;
+            this.expectedErrorCode=expectedErrorCode;
+        }
+    }
+
+    private ArrayList<TestVector> testTable = new ArrayList<TestVector>();
+
+    private void initTestTable() {
+        // These options are not applicable on 32-bit platforms
+        if (Platform.is64bit()) {
+            testTable.add( new TestVector("-XX:ObjectAlignmentInBytes=8", "-XX:ObjectAlignmentInBytes=16",
+                "An error has occurred while processing the shared archive file", 1) );
+            if (!TestCommon.isDynamicArchive()) {
+                testTable.add( new TestVector("-XX:ObjectAlignmentInBytes=64", "-XX:ObjectAlignmentInBytes=32",
+                    "An error has occurred while processing the shared archive file", 1) );
+            }
+            testTable.add( new TestVector("-XX:+UseCompressedOops", "-XX:-UseCompressedOops",
+                "Class data sharing is inconsistent with other specified options", 1) );
+            testTable.add( new TestVector("-XX:+UseCompressedClassPointers", "-XX:-UseCompressedClassPointers",
+                "Class data sharing is inconsistent with other specified options", 1) );
+        }
+    }
+
+    private void runTests() throws Exception
+    {
+        for (TestVector testEntry : testTable) {
+            System.out.println("CommandLineFlagComboNegative: dump = " + testEntry.testOptionForDumpStep);
+            System.out.println("CommandLineFlagComboNegative: execute = " + testEntry.testOptionForExecuteStep);
+
+            String appJar = JarBuilder.getOrCreateHelloJar();
+            OutputAnalyzer dumpOutput = TestCommon.dump(
+               appJar, new String[] {"Hello"}, testEntry.testOptionForDumpStep);
+
+            TestCommon.checkDump(dumpOutput, "Loading classes to share");
+
+            OutputAnalyzer execOutput = TestCommon.exec(appJar, testEntry.testOptionForExecuteStep, "Hello");
+            execOutput.shouldContain(testEntry.expectedErrorMsg);
+            execOutput.shouldHaveExitValue(testEntry.expectedErrorCode);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        CommandLineFlagComboNegative thisClass = new CommandLineFlagComboNegative();
+        thisClass.initTestTable();
+        thisClass.runTests();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/CompilerUtils.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import javax.tools.JavaCompiler;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * This class consists exclusively of static utility methods for invoking the
+ * java compiler.
+ *
+ * This class will eventually move to jdk.testlibrary.
+ */
+
+public final class CompilerUtils {
+    private CompilerUtils() { }
+
+    /**
+     * Compile all the java sources in {@code <source>/**} to
+     * {@code <destination>/**}. The destination directory will be created if
+     * it doesn't exist.
+     *
+     * All warnings/errors emitted by the compiler are output to System.out/err.
+     *
+     * @return true if the compilation is successful
+     *
+     * @throws IOException if there is an I/O error scanning the source tree or
+     *                     creating the destination directory
+     */
+    public static boolean compile(Path source, Path destination, String ... options)
+        throws IOException
+    {
+        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
+
+        List<Path> sources
+            = Files.find(source, Integer.MAX_VALUE,
+                (file, attrs) -> (file.toString().endsWith(".java")))
+                .collect(Collectors.toList());
+
+        Files.createDirectories(destination);
+        jfm.setLocationFromPaths(StandardLocation.CLASS_OUTPUT,
+                                 Arrays.asList(destination));
+
+        List<String> opts = Arrays.asList(options);
+        JavaCompiler.CompilationTask task
+            = compiler.getTask(null, jfm, null, opts, null,
+                jfm.getJavaFileObjectsFromPaths(sources));
+
+        return task.call();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/DirClasspathTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Handling of directories in -cp is based on the classlist
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/Super.java
+ * @run driver DirClasspathTest
+ */
+
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+
+public class DirClasspathTest {
+    private static final int MAX_PATH = 260;
+
+    // We add helloJar into the classpath to be compatible with TestCommon.DYNAMIC_DUMP
+    static OutputAnalyzer doDump(String path, String classList[],
+                                        String... suffix) throws Exception {
+        String helloJar = JarBuilder.getOrCreateHelloJar();
+        return TestCommon.dump(helloJar + File.pathSeparator + path, classList, suffix);
+    }
+
+    public static void main(String[] args) throws Exception {
+        File dir = new File(System.getProperty("user.dir"));
+        File emptydir = new File(dir, "emptydir");
+        emptydir.mkdir();
+
+
+        /////////////////////////////////////////////////////////////////
+        // The classlist only contains boot class in following test cases
+        /////////////////////////////////////////////////////////////////
+        String bootClassList[] = {"java/lang/Object"};
+
+        // Empty dir in -cp: should be OK
+        OutputAnalyzer output;
+        output = doDump(emptydir.getPath(), bootClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        // Long path to empty dir in -cp: should be OK
+        Path classDir = Paths.get(System.getProperty("test.classes"));
+        Path destDir = classDir;
+        int subDirLen = MAX_PATH - classDir.toString().length() - 2;
+        if (subDirLen > 0) {
+            char[] chars = new char[subDirLen];
+            Arrays.fill(chars, 'x');
+            String subPath = new String(chars);
+            destDir = Paths.get(System.getProperty("test.classes"), subPath);
+        }
+        File longDir = destDir.toFile();
+        longDir.mkdir();
+        File subDir = new File(longDir, "subdir");
+        subDir.mkdir();
+        output = doDump(subDir.getPath(), bootClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        // Non-empty dir in -cp: should be OK
+        // <dir> is not empty because it has at least one subdirectory, i.e., <emptydir>
+        output = doDump(dir.getPath(), bootClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        // Long path to non-empty dir in -cp: should be OK
+        // <dir> is not empty because it has at least one subdirectory, i.e., <emptydir>
+        output = doDump(longDir.getPath(), bootClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        /////////////////////////////////////////////////////////////////
+        // The classlist contains non-boot class in following test cases
+        /////////////////////////////////////////////////////////////////
+        String appClassList[] = {"java/lang/Object", "com/sun/tools/javac/Main"};
+
+        // Non-empty dir in -cp: should be OK (as long as no classes were loaded from there)
+        output = doDump(dir.getPath(), appClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        // Long path to non-empty dir in -cp: should be OK (as long as no classes were loaded from there)
+        output = doDump(longDir.getPath(), appClassList, "-Xlog:class+path=info");
+        TestCommon.checkDump(output);
+
+        /////////////////////////////////////////////////////////////////
+        // Loading an app class from a directory
+        /////////////////////////////////////////////////////////////////
+        String appClassList2[] = {"Super", "java/lang/Object", "com/sun/tools/javac/Main"};
+        // Non-empty dir in -cp: should report error if a class is loaded from it
+        output = doDump(classDir.toString(), appClassList2, "-Xlog:class+path=info,class+load=trace");
+        output.shouldNotHaveExitValue(0);
+        output.shouldContain("Cannot have non-empty directory in paths");
+
+        // Long path to non-empty dir in -cp: should report error if a class is loaded from it
+        File srcClass = new File(classDir.toFile(), "Super.class");
+        File destClass = new File(longDir, "Super.class");
+        Files.copy(srcClass.toPath(), destClass.toPath());
+        output = doDump(longDir.getPath(), appClassList2, "-Xlog:class+path=info");
+        output.shouldNotHaveExitValue(0);
+        output.shouldContain("Cannot have non-empty directory in paths");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary DumpLoadedClassList should exclude generated classes, classes in bootclasspath/a and
+ *          --patch-module.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/ArrayListTest.java
+ * @run driver DumpClassList
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class DumpClassList {
+    public static void main(String[] args) throws Exception {
+        // build The app
+        String[] appClass = new String[] {"ArrayListTest"};
+        String classList = "app.list";
+
+        JarBuilder.build("app", appClass[0]);
+        String appJar = TestCommon.getTestJar("app.jar");
+
+        // build patch-module
+        String source = "package java.lang; "                       +
+                        "public class NewClass { "                  +
+                        "    static { "                             +
+                        "        System.out.println(\"NewClass\"); "+
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("java/lang/NewClass",
+             InMemoryJavaCompiler.compile("java.lang.NewClass", source, "--patch-module=java.base"),
+             System.getProperty("test.classes"));
+
+        String patchJar = JarBuilder.build("javabase", "java/lang/NewClass");
+
+        // build bootclasspath/a
+        String source2 = "package boot.append; "                 +
+                        "public class Foo { "                    +
+                        "    static { "                          +
+                        "        System.out.println(\"Foo\"); "  +
+                        "    } "                                 +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("boot/append/Foo",
+             InMemoryJavaCompiler.compile("boot.append.Foo", source2),
+             System.getProperty("test.classes"));
+
+        String appendJar = JarBuilder.build("bootappend", "boot/append/Foo");
+
+        // dump class list
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+            true,
+            "-XX:DumpLoadedClassList=" + classList,
+            "--patch-module=java.base=" + patchJar,
+            "-Xbootclasspath/a:" + appendJar,
+            "-cp",
+            appJar,
+            appClass[0]);
+        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dumpClassList");
+        TestCommon.checkExecReturn(output, 0, true,
+                                   "hello world",
+                                   "skip writing class java/lang/NewClass") // skip classes outside of jrt image
+            .shouldNotContain("skip writing class boot/append/Foo");        // but classes on -Xbootclasspath/a should not be skipped
+
+        output = TestCommon.createArchive(appJar, appClass,
+                                          "-Xbootclasspath/a:" + appendJar,
+                                          "-Xlog:class+load",
+                                          "-XX:SharedClassListFile=" + classList);
+        TestCommon.checkDump(output)
+            .shouldNotContain("Preload Warning: Cannot find java/lang/invoke/LambdaForm")
+            .shouldNotContain("Preload Warning: Cannot find boot/append/Foo")
+            .shouldContain("[info][class,load] boot.append.Foo");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_1.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,11 @@
+VERSION: 1.0
+@SECTION: Symbol
+0 -1:
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+11 -1 linkMethod
+18 -1: type can't be null
+20 -1: isAlphaNumericString
+43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
+1 -1: \t
+15 -1: IntCumulateTask
+1 -1: \n
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_2.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+@SECTION: Symbol
+20 -1: isAlphaNumericString
+43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
+15 -1: IntCumulateTask
+1 -1: \n
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.invalid_3.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,13 @@
+VERSION: 1.0
+@SECTION: Symbol
+11 -1: linkMethod
+18 -1: isAlphaNumericString
+33 -1: java/util/Locale$LocaleNameGetter
+23 -1: sun/invoke/util/Wrapper
+12 -1: reduceToLong
+11 -1: setReadOnly
+8 -1: endsWith
+55 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;TT;)V
+20 -1: createAnnotationData
+6 -1: OfLong
+17 -1: getClassSignature
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Adding extra symbols into CDS archive using -XX:SharedArchiveConfigFile
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver ExtraSymbols
+ */
+
+import java.io.*;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ExtraSymbols {
+    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+
+        // 1. Dump without extra symbols.
+        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"),
+                                                CDS_LOGGING);
+        checkOutput(output);
+        int numEntries1 = numOfEntries(output);
+
+        // 2. Dump an archive with extra symbols. All symbols in
+        // ExtraSymbols.symbols.txt are valid. Dumping should succeed.
+        output = TestCommon.dump(appJar, TestCommon.list("Hello"), CDS_LOGGING,
+            "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("ExtraSymbols.symbols.txt"));
+        checkOutput(output);
+        int numEntries2 = numOfEntries(output);
+        if (numEntries2 <= numEntries1) {
+            throw new RuntimeException("No extra symbols added to archive");
+        }
+        output = TestCommon.exec(appJar, "Hello");
+        TestCommon.checkExec(output);
+
+        // 3. Dump with invalid symbol files. Dumping should fail.
+        String invalid_symbol_files[] = {"ExtraSymbols.invalid_1.txt",
+                                         "ExtraSymbols.invalid_2.txt",
+                                         "ExtraSymbols.invalid_3.txt"};
+        String err_msgs[] = {"Corrupted at line",
+                             "wrong version of hashtable dump file",
+                             "Corrupted at line"};
+        for (int i = 0; i < invalid_symbol_files.length; i++) {
+            output = TestCommon.dump(appJar, TestCommon.list("Hello"),
+                                     "-XX:SharedArchiveConfigFile=" +
+                                     TestCommon.getSourceFile(invalid_symbol_files[i]));
+            output.shouldContain("Error occurred during initialization of VM");
+            output.shouldContain(err_msgs[i]);
+        }
+    }
+
+    static int numOfEntries(OutputAnalyzer output) {
+        String s = output.firstMatch("Number of entries       : .*");
+        String subs[] = s.split("[:]");
+        int numEntries = Integer.parseInt(subs[1].trim());
+        return numEntries;
+    }
+
+    static void checkOutput(OutputAnalyzer output) throws Exception {
+        output.shouldContain("Loading classes to share");
+        output.shouldContain("Shared symbol table stats -------- base:");
+        output.shouldHaveExitValue(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.symbols.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,10826 @@
+VERSION: 1.0
+@SECTION: Symbol
+69 -1: ------------------------------------------------------------123456789
+68 -1: # The values in this file are only used for testing the operation of
+63 -1: # adding extra symbols into the CDS archive. None of the values
+70 -1: # are interpreted in any way. So even if they contain names of classes
+70 -1: # that have been renamed or removed, or string literals that have been
+66 -1: # changed or remove from Java source code, it would not affect the
+26 -1: # correctness of the test.
+0 -1: 
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+11 -1: linkMethod 
+18 -1: type can't be null
+20 -1: isAlphaNumericString
+43 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
+72 -1: (Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
+1 -1: \t
+15 -1: IntCumulateTask
+1 -1: \n
+33 -1: java/util/Locale$LocaleNameGetter
+23 -1: sun/invoke/util/Wrapper
+57 -1: (Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V
+12 -1: reduceToLong
+11 -1: setReadOnly
+34 -1: (Ljava/lang/reflect/Executable;)[B
+54 -1: ([Ljava/net/URL;Ljava/security/AccessControlContext;)V
+15 -1: LegacyMergeSort
+8 -1: endsWith
+55 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;TT;)V
+20 -1: createAnnotationData
+6 -1: OfLong
+90 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;)Ljava/util/Map<TK;TV;>;
+1 -1:  
+17 -1: getClassSignature
+1 -1: "
+1 -1: #
+1 -1: (
+21 -1: MethodHandleImpl.java
+10 -1: getUTF8At0
+1 -1: )
+1 -1: *
+1 -1: +
+1 -1: ,
+1 -1: -
+1 -1: .
+18 -1: unsignedEntryNames
+1 -1: /
+1 -1: 0
+19 -1: java/io/InputStream
+38 -1: java/util/concurrent/ThreadLocalRandom
+1 -1: :
+1 -1: ;
+1 -1: <
+13 -1: getAndAddLong
+1 -1: =
+1 -1: >
+1 -1: ?
+20 -1: getMethodAtIfLoaded0
+1 -1: @
+1 -1: A
+7 -1: isAlive
+1 -1: B
+10 -1: checkIndex
+1 -1: C
+1 -1: D
+1 -1: E
+1 -1: F
+1 -1: I
+30 -1: sun/misc/JavaUtilZipFileAccess
+11 -1: classloader
+1 -1: J
+1 -1: L
+14 -1: packageEnabled
+8 -1: ([BIII)V
+24 -1: Ljava/io/BufferedWriter;
+1 -1: S
+32 -1: (Ljava/util/function/Consumer;)V
+11 -1: refKindName
+1 -1: U
+1 -1: V
+3 1: yyy
+18 -1: JavaNetAccess.java
+1 -1: Z
+7 -1: members
+1 -1: [
+1 -1: ]
+13 -1: ShortLanguage
+1 -1: _
+9 -1: invoke__L
+28 -1: (D)Ljava/lang/StringBuilder;
+15 -1: isInvokeSpecial
+1 -1: c
+17 -1: subListRangeCheck
+1 -1: e
+29 -1: Ljava/security/AllPermission;
+27 -1: (C)Ljava/lang/StringBuffer;
+28 -1: ([Ljava/lang/Comparable;II)V
+50 -1: (Ljava/util/zip/ZipFile;Ljava/util/zip/Inflater;)V
+9 -1: invoke__V
+1 -1: m
+101 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)Lsun/nio/cs/StreamEncoder;
+13 -1: MAX_SURROGATE
+18 -1: Ljava/lang/String;
+21 -1: ensureProtectedAccess
+18 -1: getIfModifiedSince
+1 -1: r
+9 -1: setExtra0
+1 -1: s
+47 -1: Ljava/lang/Enum<Lsun/launcher/LauncherHelper;>;
+1 -1: x
+1 -1: {
+7 -1: getLast
+1 -1: |
+1 -1: }
+1 -1: ~
+71 -1: (Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
+34 -1: (Ljava/nio/charset/Charset;[BII)[C
+10 -1: DST_NSHIFT
+25 -1: ForEachTransformedKeyTask
+26 -1: Ljava/nio/charset/Charset;
+56 -1: (Ljava/lang/reflect/Method;)Lsun/reflect/MethodAccessor;
+22 -1: StackTraceElement.java
+24 -1: sun.zip.zipFile.openTime
+27 -1: JNI_COPY_TO_ARRAY_THRESHOLD
+26 -1: java/lang/ClassValue$Entry
+19 -1: [Ljava/lang/Thread;
+56 -1: (Ljava/lang/ClassLoader$NativeLibrary;)Ljava/lang/Class;
+7 -1: message
+18 -1: parameterToArgSlot
+20 -1: [[Ljava/lang/String;
+11 -1: bumpVersion
+26 -1: Ljava/lang/reflect/Method;
+9 -1: getMethod
+6 -1: (I)TE;
+49 -1: (Ljava/lang/String;)Ljava/lang/invoke/MemberName;
+33 -1: sun/misc/URLClassPath$JarLoader$1
+57 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)V
+33 -1: sun/misc/URLClassPath$JarLoader$2
+33 -1: sun/misc/URLClassPath$JarLoader$3
+87 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
+19 -1: FileDescriptor.java
+12 -1: forEachValue
+36 -1: (Ljava/util/List;)[Ljava/lang/Class;
+53 -1: (Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
+8 -1: hasArray
+4 -1: ROWS
+10 -1: linkMethod
+9 -1: remaining
+23 -1: ARRAY_FLOAT_BASE_OFFSET
+35 -1: java/lang/reflect/ReflectPermission
+24 -1: ()Ljava/net/InetAddress;
+7 -1: ngroups
+81 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Class<*>;>;
+10 -1: putTreeVal
+4 -1: list
+5 -1: trace
+7 -1: blocker
+21 -1: reset() not supported
+8 -1: JAPANESE
+11 -1: PRIVATE_USE
+53 -1: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
+32 -1: Invalid JavaFX launch parameters
+15 -1: SECONDS_PER_DAY
+11 -1: UTF_16.java
+24 -1: sun/nio/cs/UTF_8$Encoder
+102 -1: (Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)V
+20 -1: (Lsun/misc/Signal;)V
+22 -1: MagicAccessorImpl.java
+84 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class;
+14 -1: altMetafactory
+13 -1: queryOverflow
+30 -1:  exists, but is not accessible
+3 -1: edt
+14 -1: MAX_ARRAY_SIZE
+20 -1: aliases_UTF_16LE_BOM
+34 -1: Ljava/lang/reflect/Constructor<*>;
+20 -1: (S)Ljava/lang/Short;
+6 -1: STRICT
+19 -1: internalCallerClass
+27 -1: java/nio/DirectLongBufferRU
+13 -1: TIMED_WAITING
+15 -1: toGenericString
+6 -1: client
+10 -1: attachImpl
+22 -1: ReflectionFactory.java
+8 -1: jsse.jar
+37 -1: (IZ)Ljava/lang/AbstractStringBuilder;
+41 -1: java/util/LinkedHashMap$LinkedKeyIterator
+15 -1: computeIfAbsent
+10 -1: GET_TARGET
+53 -1: <E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;)[TE;
+35 -1: java/util/Collections$SingletonList
+7 -1: addYear
+35 -1: Ljava/lang/Class<Ljava/lang/Byte;>;
+65 -1: (Ljava/util/LinkedHashMap$Entry;Ljava/util/LinkedHashMap$Entry;)V
+14 -1: image/x-bitmap
+10 -1: (IIII[JI)V
+50 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/net/URL;)V
+13 -1: getLineNumber
+20 -1: toUpperCaseCharArray
+62 -1: (Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;
+11 -1: rotateRight
+10 -1: checkPtype
+85 -1: (JLjava/util/function/ToLongFunction<-TK;>;JLjava/util/function/LongBinaryOperator;)J
+81 -1: (Ljava/lang/Class;Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
+15 -1: Illegal style: 
+28 -1: (Ljava/lang/StringBuilder;)V
+41 -1: 1.8.0-internal-iklam_2013_11_27_21_25-b00
+25 -1: Invalid authority field: 
+55 -1: (Ljava/lang/CharSequence;)Ljava/util/function/Supplier;
+12 -1: staticOffset
+32 -1: java/util/HashMap$KeySpliterator
+13 -1: javaNioAccess
+24 -1: (Ljava/util/SortedSet;)V
+17 -1: thenComparingLong
+2 -1: \n\n
+22 -1: registerFieldsToFilter
+34 -1: java/lang/invoke/LambdaMetafactory
+225 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
+26 -1: [[Ljava/lang/CharSequence;
+32 -1: java/util/Collections$CheckedMap
+147 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSequentialList<TE;>;Ljava/util/List<TE;>;Ljava/util/Deque<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+204 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+27 -1: sun/nio/cs/UTF_16BE$Decoder
+12 -1: getZoneInfo0
+77 -1: (Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
+9 -1: Traverser
+35 -1: Ljava/lang/ref/ReferenceQueue<TT;>;
+27 -1: lambda$comparing$ea9a8b3a$1
+7 -1: ([CI)[C
+6 -1: getenv
+9 -1: newMethod
+52 -1: <T:Ljava/lang/Object;>Ljava/lang/reflect/Executable;
+164 -1: (Ljava/security/ProtectionDomain;Ljava/security/DomainCombiner;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)V
+40 -1: (Ljava/lang/String;)Ljava/util/TimeZone;
+11 -1: countTokens
+202 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;Ljava/util/Map$Entry<TK;TV;>;>;Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;Ljava/io/Serializable;
+78 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Collection<TT;>;
+34 -1: (Ljava/lang/reflect/Constructor;)I
+15 -1: comparingDouble
+24 -1: ()Ljava/util/Collection;
+14 -1: invokeFinalize
+14 -1: encodeISOArray
+77 -1: (Ljava/lang/ref/Reference;Ljava/lang/ref/Reference;)Ljava/lang/ref/Reference;
+11 -1: bad index: 
+34 -1: (Ljava/lang/reflect/Constructor;)V
+68 -1: (Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
+53 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
+27 -1: ([CII)Ljava/nio/CharBuffer;
+6 -1: setOut
+41 -1: (ILjava/lang/Object;Ljava/lang/Object;I)V
+12 -1: MIN_EXPONENT
+30 -1: PrivilegedExceptionAction.java
+18 -1: key cannot be null
+6 -1: CENHDR
+73 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
+23 -1: java/lang/reflect/Array
+8 -1: AF_LIMIT
+2 -1: \r\n
+11 -1: getFileName
+10 -1: parseShort
+22 -1: java/lang/LinkageError
+15 -1: FT_LAST_WRAPPER
+32 -1: java/util/ArrayDeque$DeqIterator
+24 -1: pc-multilingual-850+euro
+3 -1: zfc
+14 -1: incrementExact
+38 -1: (IIII)Lsun/util/calendar/CalendarDate;
+8 -1: (II[BI)V
+8 -1: isLocked
+13 -1: ZoneInfo.java
+36 -1: (Lsun/util/calendar/CalendarDate;J)V
+35 -1: java/lang/invoke/MethodHandleImpl$1
+31 -1: (Ljava/util/Comparator<-TE;>;)V
+19 -1: CharsetEncoder.java
+52 -1: <T:Ljava/lang/Object;>()Ljava/util/Enumeration<TT;>;
+44 -1: (Ljava/io/InputStream;)Ljava/io/InputStream;
+7 -1:  field 
+5 -1: abort
+25 -1: java/lang/SecurityManager
+66 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask
+1316 -1: \xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe6\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\x80\x80\xe4\x80\x8f\xe5\xa0\x80\xe4\x80\x8f\xe6\x80\x80\xe4\x80\x8c\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xe2\xa0\x80\x18\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\x18\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xee\xa0\x80\x15\xee\xa0\x80\x16\xe6\xa0\x80\x18\xe2\x80\x80\x19\xe3\xa0\x80\x18\xe2\x80\x80\x14\xe3\xa0\x80\x18\xe3\xa0\x80\x18\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe1\xa0\x80\xe3\x98\x89\xe3\xa0\x80\x18\xe6\xa0\x80\x18\xee\xa0\x80\x19\xe6\xa0\x80\x19\xee\xa0\x80\x19\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xc2\x82\xe7\xbf\xa1\xee\xa0\x80\x15\xe6\xa0\x80\x18\xee\xa0\x80\x16\xe6\xa0\x80\x1b\xe6\xa0\x80\xe5\x80\x97\xe6\xa0\x80\x1b\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xc2\x81\xe7\xbf\xa2\xee\xa0\x80\x15\xe6\xa0\x80\x19\xee\xa0\x80\x16\xe6\xa0\x80\x19\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe5\x80\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe4\xa0\x80\xe1\x80\x8f\xe3\xa0\x80\x0c\xe6\xa0\x80\x18\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe2\xa0\x80\xe6\x80\x9a\xe6\xa0\x80\x1c\xe6\xa0\x80\x18\xe6\xa0\x80\x1b\xe6\xa0\x80\x1c\xc0\x80\xe7\x80\x85\xee\xa0\x80\x1d\xe6\xa0\x80\x19\xe4\xa0\x80\xe1\x80\x90\xe6\xa0\x80\x1c\xe6\xa0\x80\x1b\xe2\xa0\x80\x1c\xe2\xa0\x80\x19\xe1\xa0\x80\xd8\x8b\xe1\xa0\x80\xd8\x8b\xe6\xa0\x80\x1b\xdf\xbd\xe7\x80\x82\xe6\xa0\x80\x18\xe6\xa0\x80\x18\xe6\xa0\x80\x1b\xe1\xa0\x80\xd4\x8b\xc0\x80\xe7\x80\x85\xee\xa0\x80\x1e\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\xe0\xa0\x8b\xe6\xa0\x80\x18\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xe6\xa0\x80\x19\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xc2\x82\xe7\x80\x81\xdf\xbd\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xe6\xa0\x80\x19\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xc2\x81\xe7\x80\x82\xd8\x9d\xe7\x80\x82
+6 -1: (J[I)I
+162 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;Ljava/util/Locale$FilteringMode;)Ljava/util/List<Ljava/util/Locale;>;
+21 -1: getQualifiedFieldName
+46 -1: Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;
+47 -1: (Ljava/util/Collection;Ljava/util/Collection;)Z
+10 -1: getRuntime
+30 -1: threadLocalRandomSecondarySeed
+18 -1: (Ljava/io/File;I)J
+10 -1: methodName
+34 -1: sun/reflect/generics/tree/TypeTree
+35 -1: (Ljava/io/File;)[Ljava/lang/String;
+31 -1: java/util/Collections$EmptyList
+15 -1: LF_INVINTERFACE
+9 -1: notifyAll
+18 -1: (Ljava/io/File;I)V
+94 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class<*>;
+45 -1: (Ljava/lang/String;)Ljava/net/ContentHandler;
+3 -1: enc
+3 -1: end
+18 -1: (Ljava/io/File;I)Z
+47 -1: (Ljava/lang/Object;Ljava/lang/reflect/Method;)V
+76 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+19 -1: getURLStreamHandler
+46 -1: (Ljava/lang/ClassLoader;Ljava/lang/Class<*>;)V
+17 -1: COMPILE_THRESHOLD
+15 -1: charset is null
+7 -1: ibm-912
+10 -1: basicTypes
+7 -1: ibm-914
+78 -1: (Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z
+7 -1: ibm-915
+12 -1: JarFileEntry
+12 -1: setThreshold
+22 -1: (ILjava/lang/Object;)V
+55 -1: <T::Lsun/reflect/generics/tree/Tree;>Ljava/lang/Object;
+16 -1: Unknown signal: 
+3 -1: zip
+13 -1: CR_UNMAPPABLE
+19 -1: getClassAtIfLoaded0
+21 -1: WindowsClientCounters
+29 -1: Ljava/lang/invoke/MethodType;
+91 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableList<TE;>;Ljava/util/RandomAccess;
+23 -1: StackOverflowError.java
+13 -1: Launcher.java
+9 -1: Signature
+7 -1: ibm-920
+153 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;ILjava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
+13 -1: setExtensions
+26 -1: [Ljava/lang/ref/Reference;
+7 -1: ibm-923
+12 -1: BMH.reinvoke
+34 -1: java/lang/IllegalArgumentException
+53 -1: (Ljava/lang/String;)Ljava/lang/NumberFormatException;
+5 -1: .dirs
+13 -1: finishToArray
+22 -1: (ZI)Ljava/lang/String;
+84 -1: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
+15 -1: charsetProvider
+24 -1: ()Ljava/lang/Class<TT;>;
+10 -1: wordsInUse
+26 -1: (Ljava/io/ExpiringCache;)I
+53 -1: ()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>;
+25 -1: com/sun/management/GcInfo
+26 -1: getCompatibilityExtensions
+69 -1: (Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
+15 -1: getConstantPool
+24 -1: [[Ljava/lang/Comparable;
+26 -1: (Ljava/io/ExpiringCache;)V
+8 -1: getTable
+53 -1: sun/reflect/generics/repository/ConstructorRepository
+5 -1: range
+36 -1: (Ljava/lang/String;)Ljava/lang/Byte;
+72 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
+60 -1: <T:Ljava/lang/Object;>([TT;TT;Ljava/util/Comparator<-TT;>;)I
+20 -1: (Ljava/nio/Bits$1;)V
+30 -1: ()Ljava/util/Spliterator<TK;>;
+6 -1: ([BB)I
+53 -1: (Ljava/lang/ref/Finalizer;Lsun/misc/JavaLangAccess;)V
+11 -1: memberTypes
+45 -1: (ILjava/lang/String;)Ljava/lang/StringBuffer;
+12 -1: OTHER_SYMBOL
+65 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+43 -1: (Ljava/util/Set;)[Ljava/lang/reflect/Field;
+30 -1: (Ljava/lang/ref/Reference$1;)V
+18 -1: GREGORIAN_INSTANCE
+31 -1: Ljava/lang/FunctionalInterface;
+57 -1: (Ljava/lang/Error;Ljava/lang/Exception;)Ljava/lang/Error;
+54 -1: ([Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
+14 -1: not an array: 
+6 -1: ([BB)V
+9 -1: ISO8859_1
+8 -1: addTrans
+27 -1: getFunctionalInterfaceClass
+29 -1: lambda$comparingInt$7b0bb60$1
+8 -1: TreeNode
+138 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Dictionary<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+3 -1: era
+22 -1: fakeMethodHandleInvoke
+9 -1: addToList
+39 -1: (Ljava/lang/Class;[Ljava/lang/String;)V
+17 -1: launchApplication
+21 -1: randomNumberGenerator
+51 -1: Ljava/lang/ThreadLocal<Ljava/lang/ThreadLocal<*>;>;
+35 -1: java/io/ObjectOutputStream$PutField
+42 -1: (ILjava/util/function/IntBinaryOperator;)I
+3 -1: err
+13 -1: cachedDecoder
+32 -1: sun/util/calendar/ZoneInfoFile$1
+23 -1: doIntersectionPrivilege
+19 -1: cspc850multilingual
+56 -1: Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;
+11 -1: loader_data
+27 -1: (Ljava/util/jar/Manifest;)V
+5 -1: files
+90 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lsun/util/calendar/CalendarSystem;>;
+36 -1: [[Ljava/lang/invoke/LambdaForm$Name;
+5 -1: lines
+55 -1: (Lsun/misc/URLClassPath$JarLoader;)Lsun/misc/MetaIndex;
+9 -1: ansi-1251
+15 -1: refKindIsMethod
+29 -1: java/lang/reflect/Constructor
+3 -1: est
+19 -1: Lsun/misc/Launcher;
+109 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;)TT;
+10 -1: getOffsets
+9 -1: removeAll
+23 -1: java/util/regex/Matcher
+8 -1: sumCount
+7 -1: implies
+10 -1: MAIN_CLASS
+75 -1: (Ljava/util/List<Lsun/launcher/LauncherHelper$StdArg;>;)[Ljava/lang/String;
+11 -1: getISO3Code
+4 -1: high
+53 -1: (TK;Ljava/util/function/BiFunction<-TK;-TV;+TV;>;)TV;
+17 -1: setNormalizedDate
+23 -1: AbstractRepository.java
+28 -1: java/util/LinkedList$ListItr
+8 -1: isFrozen
+38 -1: (Ljava/lang/String;Z)Ljava/lang/Class;
+16 -1: ReflectUtil.java
+30 -1: ()Ljava/util/stream/IntStream;
+57 -1: (Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
+11 -1: getResource
+16 -1: ThreadDeath.java
+24 -1: unmodifiableNavigableSet
+59 -1: (Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
+24 -1: java.security.auth.debug
+58 -1: (Ljava/io/FileInputStream;)Ljava/nio/channels/FileChannel;
+25 -1: ()Ljava/util/Enumeration;
+11 -1: getInstance
+6 -1: MONDAY
+15 -1: jdkMinorVersion
+16 -1: newThreadWithAcc
+6 -1: CENHOW
+32 -1:     Max. Heap Size (Estimated): 
+61 -1: (Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/LambdaForm;
+11 -1: windows-932
+7 -1: Index: 
+11 -1: composeList
+6 -1: utf-16
+6 -1: ibm437
+10 -1: getJarFile
+8 -1: , rem = 
+13 -1: multiNewArray
+14 -1: getDefaultPort
+39 -1: Ljava/security/cert/CertificateFactory;
+10 -1: L_RESERVED
+19 -1: getMethodAtIfLoaded
+8 -1: needCast
+8 -1: IS_FIELD
+15 -1: ClassValue.java
+31 -1: ()Ljava/util/function/Supplier;
+125 -1: (Ljava/lang/Class<*>;)Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
+34 -1: lambda$comparingByValue$827a17d5$1
+4 -1: NONE
+21 -1: java/nio/DoubleBuffer
+33 -1: ()Lsun/reflect/LangReflectAccess;
+26 -1: invalid compression method
+6 -1: (TK;)Z
+16 -1: FT_UNCHECKED_REF
+14 -1: getGenericType
+17 -1: pathSeparatorChar
+8 -1: writeUTF
+8 -1: NO_PROXY
+188 -1: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V
+13 -1: finalRefCount
+12 -1: NF_checkCast
+6 -1: utf-32
+26 -1: (Ljava/util/ArrayDeque;I)Z
+19 -1: prefetchWriteStatic
+14 -1: computeInvoker
+5 -1:  cap=
+19 -1: generateCertificate
+15 -1: methodModifiers
+3 -1: exc
+27 -1: ()Lsun/misc/JavaLangAccess;
+5 -1: State
+14 -1: NullComparator
+10 -1: getClassAt
+15 -1: printProperties
+110 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor;
+40 -1: (Ljava/util/List<*>;Ljava/util/Random;)V
+63 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Method;>;
+28 -1: (I)Ljava/lang/StringBuilder;
+48 -1: ([DIILjava/util/function/DoubleBinaryOperator;)V
+3 -1: exp
+11 -1: interpret_L
+17 -1: Serializable.java
+8 -1: FJDouble
+12 -1: HashMap.java
+9 -1: sys_paths
+17 -1: getMainAttributes
+14 -1: asDoubleBuffer
+10 -1: buildNames
+26 -1: TOPLEVEL_WINDOW_PERMISSION
+4 -1: Type
+31 -1: (Ljava/util/Collection<+TE;>;)V
+64 -1: (Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>;
+100 -1: <E:Ljava/lang/Object;>(Ljava/util/Collection<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Collection<TE;>;
+10 -1: checkError
+31 -1: (Ljava/util/Collection<+TE;>;)Z
+31 -1: java/lang/NoSuchMethodException
+6 -1: attach
+87 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+9 -1: writeChar
+44 -1: java/util/ArraysParallelSortHelpers$FJObject
+34 -1: (Ljava/lang/Class;Ljava/io/File;)Z
+21 -1: java/util/zip/ZipFile
+5 -1: dirty
+6 -1: (JIZ)V
+12 -1: leftoverChar
+39 -1:  is being loaded in another classloader
+10 -1: writeBytes
+6 -1: unlink
+41 -1: (TT;Ljava/lang/ref/ReferenceQueue<TT;>;)V
+21 -1: getBootstrapResources
+95 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/io/Serializable;
+10 -1: PathStatus
+25 -1: java/io/InputStreamReader
+15 -1: ISO_8859-9:1989
+37 -1: java/lang/ExceptionInInitializerError
+14 -1: exceptionTypes
+19 -1: BufferedReader.java
+34 -1: Could not create SecurityManager: 
+13 -1: definePackage
+12 -1: getAndAddInt
+50 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
+30 -1: (Ljava/lang/SecurityManager;)V
+12 -1: fxLaunchName
+22 -1: BINARYSEARCH_THRESHOLD
+29 -1: JVMTI_THREAD_STATE_TERMINATED
+9 -1: fullFence
+60 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration<Ljava/net/URL;>;
+29 -1: java/lang/Thread$WeakClassKey
+47 -1: (Ljava/nio/charset/Charset;Ljava/lang/String;)V
+8 -1: (TV;)TV;
+60 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;I)V
+47 -1: java/security/cert/CertificateEncodingException
+12 -1: BA_DIRECTORY
+53 -1: (Ljava/lang/Class;ZLjava/lang/Class;)Ljava/util/List;
+9 -1: checkRead
+6 -1: <init>
+4 -1: args
+17 -1: genericMethodType
+10 -1: writeFloat
+26 -1: Can't handle static method
+49 -1: (Ljava/lang/String;)Ljava/lang/invoke/MethodType;
+22 -1: MapReduceKeysToIntTask
+17 -1: jvm_micro_version
+29 -1: (Ljava/util/Map<+TK;+TV;>;Z)V
+40 -1: ([Ljava/lang/Object;Ljava/lang/Object;)I
+7 -1: vmindex
+22 -1: maybeCompileToBytecode
+89 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;
+11 -1: getLauncher
+17 -1: jvm_major_version
+36 -1: ([IIII)Ljava/util/Spliterator$OfInt;
+40 -1: ([Ljava/lang/Object;Ljava/lang/Object;)V
+33 -1: IllegalMonitorStateException.java
+73 -1: ([ILjava/util/function/IntUnaryOperator;)Ljava/util/function/IntConsumer;
+39 -1: (Ljava/lang/String;)Ljava/lang/Package;
+29 -1: java/lang/CharacterDataLatin1
+52 -1: (Ljava/lang/annotation/Annotation;)Ljava/lang/Class;
+49 -1: (Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;
+53 -1: (Ljava/lang/Object;)Ljava/nio/charset/CharsetDecoder;
+22 -1: Ljava/net/FileNameMap;
+16 -1: isAnonymousClass
+4 -1: item
+7 -1: compute
+12 -1: user.country
+22 -1: malformed context url:
+16 -1: jvm_build_number
+69 -1: (Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+17 -1: getDirectionality
+4 -1: save
+8 -1: UNMARKED
+58 -1: (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)V
+12 -1: searchFields
+9 -1: frequency
+23 -1: getLocalizedInputStream
+2 -1:   
+126 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;ILjava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
+39 -1: (Ljava/lang/String;Z)Ljava/lang/String;
+7 -1: setZone
+2 -1:  "
+9 -1: checkRef(
+11 -1: loadFromXML
+49 -1: (Ljava/util/jar/JarFile;Ljava/util/Enumeration;)V
+68 -1: (IILsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
+2 -1:  (
+54 -1: (Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
+6 -1: rewind
+13 -1: getAndSetLong
+30 -1: java/lang/invoke/MethodHandles
+11 -1: ListPattern
+97 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/RandomAccess;Ljava/io/Serializable;
+25 -1: (Ljava/io/InputStream;I)V
+9 -1: setMethod
+10 -1: H_REG_NAME
+39 -1: ([Ljava/lang/Object;)Ljava/lang/Object;
+16 -1: AbstractMap.java
+68 -1: Ljava/util/Hashtable<Ljava/lang/String;Ljava/net/URLStreamHandler;>;
+58 -1: (Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;
+23 -1: getFileSystemAttributes
+12 -1: toSurrogates
+2 -1: !/
+5 -1: empty
+24 -1: isUnicodeIdentifierStart
+35 -1: sun/nio/cs/StandardCharsets$Classes
+27 -1: [Ljava/security/Permission;
+13 -1: getDefinition
+11 -1: permission=
+42 -1: (ILjava/lang/String;)Ljava/nio/ByteBuffer;
+69 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
+3 1: zzz
+17 -1: hasLongPrimitives
+2 -1: !=
+13 -1: getInterfaces
+2 -1: " 
+11 -1: noInflation
+14 -1: aliases_UTF_16
+2 -1: ")
+17 -1: ()Ljava/util/Map;
+55 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
+6 -1: charAt
+12 -1: getStringAt0
+10 -1: superClone
+28 -1: Ljava/util/AbstractSet<TK;>;
+40 -1: java/lang/ref/Reference$ReferenceHandler
+22 -1: NaturalOrderComparator
+9 -1: markValue
+9 -1: getRegion
+26 -1: null permissions parameter
+17 -1: Ljava/util/Stack;
+14 -1: codebase=<URL>
+36 -1: (Ljava/util/List;)Ljava/lang/Object;
+17 -1: setJavaLangAccess
+16 -1: hasQueuedThreads
+5 -1: (CC)I
+8 -1: toString
+5 -1: (CC)J
+11 -1: permissions
+10 -1: getHeaders
+27 -1: java/io/BufferedInputStream
+21 -1: unicodelittleunmarked
+51 -1: (Ljava/net/URLClassLoader;Ljava/util/Enumeration;)V
+14 -1: generateMethod
+11 -1: skipForward
+55 -1: java/util/concurrent/ConcurrentHashMap$ForEachEntryTask
+5 -1: (CC)Z
+15 -1: getURLClassPath
+84 -1: Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet<Ljava/lang/invoke/MethodType;>;
+23 -1: primitiveParameterCount
+8 -1: security
+14 -1: aliases_UTF_32
+22 -1: ()Ljava/util/Set<TK;>;
+9 -1: listFiles
+15 -1: insertElementAt
+42 -1: Ljava/util/Comparator<Ljava/lang/String;>;
+11 -1: getUserInfo
+46 -1: ([JIILjava/util/function/LongBinaryOperator;)V
+23 -1: (Ljava/util/Iterator;)V
+46 -1: ([Ljava/lang/Object;II)Ljava/util/Spliterator;
+67 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Object;)Ljava/lang/Object;
+14 -1: normalizeMonth
+13 -1: getStackTrace
+51 -1: java/lang/invoke/MethodType$ConcurrentWeakInternSet
+8 -1: makeChar
+2 -1: %%
+9 -1: getTarget
+21 -1: packageDefinitionLock
+52 -1: java/util/concurrent/ConcurrentHashMap$ValueIterator
+12 -1: OTHER_NUMBER
+22 -1: java/util/jar/JarEntry
+11 -1: access$1000
+16 -1: NON_SPACING_MARK
+13 -1: last-modified
+68 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>;
+16 -1: Australia/Darwin
+55 -1: (Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V
+29 -1: Ljava/lang/ref/WeakReference;
+19 -1: expungeStaleEntries
+41 -1: Ljava/security/PrivilegedActionException;
+6 -1: update
+23 -1: (Ljava/lang/Object;JB)V
+10 -1: newUpdater
+39 -1: (Ljava/net/URL;)Ljava/util/jar/JarFile;
+25 -1: Ljava/net/ContentHandler;
+21 -1: ARRAY_INT_INDEX_SCALE
+13 -1: hasSurrogates
+27 -1: (Ljava/lang/ThreadGroup;Z)Z
+20 -1: createGCNotification
+21 -1: negative day of week 
+11 -1: getInIfOpen
+22 -1: java/util/RandomAccess
+24 -1:     available locales = 
+21 -1: AccessController.java
+44 -1:  can not access a protected member of class 
+4 -1: LONG
+15 -1: objectOnlyTypes
+75 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V
+14 -1: getFindClasses
+10 -1: storeFence
+16 -1: asNormalOriginal
+45 -1: (Ljava/lang/String;)Ljava/lang/StringBuilder;
+6 -1: millis
+16 -1: America/St_Johns
+38 -1: ()Ljava/lang/IllegalArgumentException;
+37 -1: DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
+15 -1: implReplaceWith
+29 -1: ([C)Ljava/lang/StringBuilder;
+15 -1: Appendable.java
+41 -1: (Ljava/lang/String;)Ljava/io/InputStream;
+26 -1: Illegal Initial Capacity: 
+9 -1: checkBase
+7 -1: setYear
+15 -1: DISPLAY_VARIANT
+7 -1: getType
+31 -1: Ljava/lang/ref/Reference<+TT;>;
+15 -1: isFieldOrMethod
+35 -1: appendToClassPathForInstrumentation
+16 -1: LocaleNameGetter
+7 -1: compact
+55 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
+10 -1: dummyQueue
+3 -1: ROC
+2 -1: ("
+15 -1: checkPermission
+38 -1: java/util/zip/ZipFile$ZipEntryIterator
+8 -1: hexDigit
+8 -1:  pairs: 
+2 -1: ()
+2 -1: )\n
+43 -1: handler for url different from this handler
+15 -1: isAutoDetecting
+37 -1: (Ljava/util/LinkedList$Node<TE;>;)TE;
+11 -1: Unsafe.java
+12 -1: windows-1250
+39 -1: java/util/Collections$CheckedCollection
+12 -1: windows-1251
+15 -1: codePointAtImpl
+12 -1: windows-1252
+12 -1: windows-1253
+12 -1: windows-1254
+58 -1: (Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;
+5 -1: deref
+12 -1: windows-1255
+12 -1: windows-1256
+12 -1: windows-1257
+12 -1: windows-1258
+14 -1: FT_CHECKED_REF
+47 -1: (Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
+37 -1: (J)Lsun/util/calendar/Gregorian$Date;
+19 -1: checkPropertyAccess
+4 -1: file
+17 -1: emptyListIterator
+26 -1: sun/util/calendar/ZoneInfo
+14 -1: file.separator
+4 -1: fill
+62 -1: (Ljava/util/Spliterator$OfLong;Z)Ljava/util/stream/LongStream;
+18 -1: java/util/Iterator
+20 -1: reduceValuesToDouble
+12 -1: LF_CS_LINKER
+26 -1: java/util/Arrays$ArrayList
+45 -1: Ljava/util/concurrent/ConcurrentHashMap$Node;
+6 -1: skipLF
+2 -1: )=
+39 -1: (I[Ljava/lang/invoke/LambdaForm$Name;)I
+90 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;)V
+18 -1: parameterModifiers
+31 -1: (Ljava/util/Collection<+TK;>;)Z
+21 -1: proxy can not be null
+22 -1: java/io/FileDescriptor
+6 -1: Loader
+21 -1: numberOfTrailingZeros
+10 -1: addMapping
+39 -1: (I[Ljava/lang/invoke/LambdaForm$Name;)Z
+30 -1: java/util/Locale$LanguageRange
+20 -1: getReflectionFactory
+16 -1: shouldMeterInput
+56 -1: ([Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
+23 -1: sun/net/ProgressMonitor
+510 -1: \xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\x01\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\x01\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80\xc0\x80
+28 -1: java/util/Spliterator$OfLong
+24 -1: SynchronizedNavigableMap
+4 -1: find
+6 -1: unsafe
+31 -1: java/nio/ByteBufferAsIntBufferB
+2 -1: ,\n
+6 -1: [ call
+14 -1: registerFilter
+10 -1: ValuesView
+9 -1: untreeify
+59 -1: ([Ljava/lang/Object;IILjava/util/function/BinaryOperator;)V
+13 -1: getSimpleName
+41 -1: (Ljava/util/Vector;Ljava/util/Vector$1;)V
+31 -1: java/nio/ByteBufferAsIntBufferL
+45 -1: (Ljava/lang/reflect/Field;)Ljava/lang/Object;
+13 -1: getDefaultRef
+18 -1: mapAlternativeName
+30 -1: setDefaultAllowUserInteraction
+13 -1: cannotCastMsg
+4 -1: )=>{
+7 -1: println
+2 -1: , 
+70 -1: (Ljava/nio/Buffer;IILjava/nio/Buffer;II)Ljava/nio/charset/CoderResult;
+32 -1: (ILjava/util/Collection<+TE;>;)Z
+9 -1: interpret
+104 -1: <E:Ljava/lang/Object;>(Ljava/util/NavigableSet<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/NavigableSet<TE;>;
+7 -1: advance
+86 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/reflect/Field;>;
+11 -1: Stack trace
+6 -1: raise0
+68 -1: ()Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
+32 -1: sun/util/calendar/Gregorian$Date
+33 -1: java/lang/ref/ReferenceQueue$Lock
+19 -1: constructorAccessor
+6 -1: IBM367
+18 -1: CharacterData.java
+8 -1: parseURL
+32 -1: java/io/FilePermissionCollection
+7 -1: ([JI)[J
+9 -1: JIS_X0201
+2 -1: -1
+8 -1: encoding
+63 -1: ([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V
+9 -1: localhost
+66 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal$1;)V
+54 -1: (II[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+67 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
+14 -1: containsAllPDs
+23 -1: setAllowUserInteraction
+30 -1: Ljava/security/DomainCombiner;
+26 -1: Ljava/security/Permission;
+30 -1: serializePropertiesToByteArray
+112 -1: (Ljava/util/Iterator<Ljava/nio/charset/Charset;>;Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V
+2 -1: ..
+6 -1: LOCEXT
+2 -1: ./
+26 -1: (Ljava/nio/ByteBuffer;II)V
+18 -1: (Ljava/io/File;J)Z
+45 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;)V
+17 -1: asCollectorChecks
+7 -1: actions
+5 -1: ([I)I
+20 -1: asChange_otherthread
+20 -1: forInputStreamReader
+69 -1: java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+5 -1: FINAL
+17 -1: staticPermissions
+44 -1: (Ljava/lang/Object;)Ljava/lang/StringBuffer;
+5 -1: ([I)V
+4 -1: swap
+10 -1: readOffset
+2 -1: /*
+112 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
+12 -1: isAsciiDigit
+2 -1: /-
+2 -1: /.
+2 -1: //
+5 -1: zones
+37 -1: (ILjava/lang/Object;)Ljava/util/List;
+17 -1: SHUFFLE_THRESHOLD
+32 -1: java/lang/CharacterDataUndefined
+23 -1: sun.reflect.noInflation
+11 -1: Can not set
+36 -1: (Ljava/util/Properties$LineReader;)V
+9 -1: debugName
+78 -1: (Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
+6 -1: (III)J
+58 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/lang/String;
+19 -1: BufferedWriter.java
+148 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor<TT;>;
+6 -1: printf
+7 -1: signers
+2 -1: 0.
+4 -1: Date
+15 -1: findReplacement
+6 -1: (III)V
+32 -1: java/nio/ReadOnlyBufferException
+92 -1: ([Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
+6 -1: (III)Z
+43 -1: (Ljava/lang/ClassValue;Ljava/lang/Object;)V
+32 -1: java/nio/ByteBufferAsLongBufferB
+16 -1: Constructor.java
+10 -1: removeLast
+9 -1: ([CII[B)I
+40 -1: ()Ljava/util/List<Ljava/lang/Class<*>;>;
+2 -1: 1.
+7 -1: VARARGS
+32 -1: java/nio/ByteBufferAsLongBufferL
+18 -1: java/lang/Shutdown
+40 -1:  not supported, using ISO-8859-1 instead
+40 -1: Ljava/util/Collections$EmptyEnumeration;
+146 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/SortedMap<TK;TV;>;
+20 -1: aliases_UTF_32LE_BOM
+23 -1: getEnclosingConstructor
+2 -1: 0X
+11 -1: NO_TIMEZONE
+37 -1: ()Lsun/misc/JavaNioAccess$BufferPool;
+18 -1: printXUsageMessage
+9 -1: isPrivate
+63 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/invoke/MethodHandle;)V
+17 -1: maxSkipBufferSize
+76 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V
+40 -1: (Ljava/lang/String;II)Ljava/lang/String;
+17 -1: selectAlternative
+53 -1: [Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
+87 -1: <S:Ljava/lang/Object;>(Ljava/util/function/Supplier<+TS;>;)Ljava/lang/ThreadLocal<TS;>;
+40 -1: Ljava/util/concurrent/ConcurrentHashMap;
+41 -1: (Ljava/lang/Character;)Ljava/lang/String;
+19 -1: getMemberRefInfoAt0
+14 -1: reduceToDouble
+18 -1: SUPPRESSED_CAPTION
+6 -1: CANADA
+64 -1: (IZ[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/String;
+12 -1: UnicodeBlock
+2 -1: 0x
+44 -1: (Ljava/lang/CharSequence;II)Ljava/io/Writer;
+23 -1: getPermissionCollection
+19 -1: threadLocalHashCode
+9 -1: createMap
+25 -1: checkForSpecialAttributes
+12 -1: Mark invalid
+36 -1: java/lang/CharSequence$1CharIterator
+11 -1:  local time
+16 -1: Enumeration.java
+27 -1: (Ljava/util/zip/ZipEntry;)V
+11 -1: MATH_SYMBOL
+8 -1: filename
+24 -1: (Ljava/util/List<*>;II)V
+9 -1: bindCache
+18 -1: java/io/FileFilter
+12 -1: checkInvoker
+18 -1: OSEnvironment.java
+8 -1: EmptyMap
+11 -1: getIterator
+35 -1: java/util/function/IntUnaryOperator
+35 -1: java/util/WeakHashMap$EntryIterator
+90 -1: <E:Ljava/lang/Object;>(Ljava/util/Queue<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Queue<TE;>;
+8 -1: batchFor
+16 -1: isValidCodePoint
+27 -1: ([Lsun/util/calendar/Era;)V
+16 -1: ThreadGroup.java
+33 2: sun/net/www/protocol/file/Handler
+7 -1: isField
+22 -1: sun/misc/OSEnvironment
+38 -1: Ljava/lang/Class<Ljava/lang/Boolean;>;
+12 -1: ADDRESS_SIZE
+8 -1: forDigit
+49 -1: (Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry;
+13 -1: getCodeSource
+41 -1: ([Ljava/lang/Class<*>;)Ljava/lang/String;
+39 -1: (Ljava/util/function/Predicate<-TE;>;)Z
+13 -1: asFloatBuffer
+34 -1: ()Lsun/reflect/generics/tree/Tree;
+3 -1: ftp
+18 -1: maybeReBoxElements
+82 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)[[Ljava/lang/annotation/Annotation;
+48 -1: ()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;
+27 -1: (Ljava/util/NavigableMap;)V
+18 -1: parameterSlotCount
+20 -1: NF_getCallSiteTarget
+16 -1: aliases_US_ASCII
+13 -1: NF_staticBase
+31 -1: sun/reflect/ConstructorAccessor
+26 -1: guessContentTypeFromStream
+10 -1: Deprecated
+35 -1: System initialization has completed
+11 -1: initialized
+7 -1: compare
+15 -1: maxDirectMemory
+19 -1: setLastModifiedTime
+7 -1: (J[BZ)J
+12 -1: readEpochSec
+66 -1: (Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale;
+69 -1: ()Lsun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache;
+9 -1: Constants
+11 -1: valueOffset
+62 -1: (Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;)V
+33 -1: java/lang/CharacterDataPrivateUse
+21 -1: Exception in thread "
+40 -1: ()Ljava/util/Set<Ljava/lang/Character;>;
+12 -1: Asia/Yerevan
+40 -1: (Ljava/lang/Throwable;)Ljava/lang/Error;
+25 -1: (IS)Ljava/nio/ByteBuffer;
+7 -1: (I[CI)I
+45 -1: java/nio/charset/UnmappableCharacterException
+23 -1: java/util/WeakHashMap$1
+21 -1: setFXLaunchParameters
+1250 -1: ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBLBLMBMBMUBNBRNBOBOLBQBESBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICUCUBCVCPVCWCUWCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGGGGYGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRIMIMNININDIOIOTIQIRQIRIRNISISLITITAJEJEYJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMEMNEMFMAFMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURSSRBRURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSSSSDSTSTPSVSLVSXSXMSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE
+60 -1: Ljava/util/Set<Ljava/lang/Class<+Ljava/lang/ClassLoader;>;>;
+24 -1: ()Ljava/security/Policy;
+7 -1: initted
+44 -1: java/util/Collections$UnmodifiableCollection
+12 -1: Pacific/Apia
+23 -1: checkProxyPackageAccess
+7 -1: (I[CI)V
+64 -1: ([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I
+16 -1: getJavaNioAccess
+7 -1: reverse
+7 -1: nocerts
+16 -1: activeGroupCount
+34 -1: java/util/jar/JarFile$JarFileEntry
+7 -1: loaders
+9 -1: toRadians
+24 -1: java/util/HashMap$KeySet
+37 -1: (Ljava/lang/Class;)Ljava/lang/Object;
+6 -1: getRef
+6 -1: H_DASH
+17 -1: LinkageError.java
+66 -1: (Ljava/lang/invoke/MethodTypeForm;)Ljava/lang/invoke/MethodHandle;
+41 -1: (Ljava/nio/ByteBuffer;)Ljava/util/BitSet;
+10 -1: addMinutes
+58 -1: <T:Ljava/lang/Object;>([TT;II)Ljava/util/Spliterator<TT;>;
+9 -1: parseJars
+13 -1: getUnsignedCS
+28 -1: (Ljava/util/AbstractList;I)V
+22 -1: threadLocalRandomProbe
+19 -1: newDirectByteBuffer
+27 -1: Filter already registered: 
+8 -1: unescape
+31 -1: sun/misc/URLClassPath$JarLoader
+6 -1: TAIWAN
+53 -1: <T:Ljava/lang/Object;>()Ljava/util/ListIterator<TT;>;
+17 -1: REVERSE_THRESHOLD
+31 -1: Java(TM) SE Runtime Environment
+7 -1: SECONDS
+70 -1: (Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+7 -1: BLOCKED
+6 -1: Caches
+63 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V
+2 -1: : 
+210 -1: (Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;I)V
+153 -1: (JLjava/util/function/BiFunction<Ljava/util/Map$Entry<TK;TV;>;Ljava/util/Map$Entry<TK;TV;>;+Ljava/util/Map$Entry<TK;TV;>;>;)Ljava/util/Map$Entry<TK;TV;>;
+22 -1: ()Ljava/lang/Class<*>;
+28 -1: Ljava/lang/OutOfMemoryError;
+19 -1: writeFileDescriptor
+39 -1: Ljava/util/LinkedHashMap$Entry<TK;TV;>;
+26 -1: (ILjava/util/Collection;)Z
+18 -1: getEncodedInternal
+16 -1: ForEachValueTask
+23 -1: (Ljava/util/List<*>;I)V
+19 -1: SharedArchiveLoader
+20 -1: probeBackupLocations
+24 -1: java/lang/StringCoding$1
+28 -1: lookupContentHandlerClassFor
+36 -1: ()Lsun/misc/Launcher$ExtClassLoader;
+27 -1: reflectionFactoryAccessPerm
+14 -1: ACCESSOR_FORMS
+35 -1: ([JII)Ljava/util/stream/LongStream;
+34 -1: ISO-8859-1 charset not available: 
+8 -1: cscesu-8
+2 -1: ;/
+17 -1: typeToPackageName
+34 -1: (Ljava/net/URL;)Ljava/lang/String;
+5 -1: (IZ)V
+25 -1: Prohibited package name: 
+51 -1: (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
+108 -1: (JLjava/util/function/ToIntFunction<Ljava/util/Map$Entry<TK;TV;>;>;ILjava/util/function/IntBinaryOperator;)I
+12 -1: soleInstance
+27 -1: (Ljava/io/BufferedReader;)V
+71 -1: (Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
+17 -1: Ljava/lang/Class;
+38 -1: (Ljava/lang/String;)Ljava/lang/Double;
+10 -1: viewAsType
+22 -1: (Ljava/io/DataInput;)I
+22 -1: (Ljava/io/DataInput;)J
+105 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
+16 -1: setJavaNetAccess
+73 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node<TK;TV;>;
+22 -1: (Ljava/io/DataInput;)V
+14 -1: getHostAddress
+37 -1: sun/reflect/annotation/TypeAnnotation
+14 -1: ENCLOSING_MARK
+5 -1: FALSE
+14 -1: preDefineClass
+9 -1: newKeySet
+18 -1: getWaitQueueLength
+32 -1: ()Lsun/misc/URLClassPath$Loader;
+54 -1: (Ljava/nio/CharBuffer;I)Ljava/nio/charset/CoderResult;
+3 -1: SEP
+45 -1: (ITK;TV;Ljava/util/Hashtable$Entry<TK;TV;>;)V
+17 -1: getDeclaredFields
+7 -1: getDate
+10 -1: getClasses
+240 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
+12 -1: WeakClassKey
+14 -1: LF_GEN_INVOKER
+25 -1: Ljava/lang/StringBuilder;
+2 -1: > 
+9 -1: getJarMap
+4 -1: asin
+37 -1: (Ljava/net/URLStreamHandlerFactory;)V
+30 -1: not a constructor type or name
+4 -1: main
+22 -1: java/io/FilenameFilter
+22 -1: sun.java.launcher.diag
+30 -1: ()Ljava/util/Spliterator<TE;>;
+57 -1: <T::Ljava/lang/Comparable<-TT;>;>(Ljava/util/List<TT;>;)V
+86 -1: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;)TT;
+18 -1: canBeCalledVirtual
+9 -1: Shift_JIS
+24 -1: ()Ljava/util/ArrayDeque;
+32 -1: (Ljava/lang/Class$MethodArray;)V
+22 -1: java/lang/StringCoding
+33 -1: sun/util/locale/LocaleObjectCache
+20 -1: Sorry, deque too big
+38 -1: java/lang/Throwable$WrappedPrintWriter
+25 -1: (Ljava/io/InputStream;J)J
+44 -1: (Ljava/security/Permission;)Ljava/util/List;
+5 -1: thunk
+5 -1: props
+15 -1: getLastModified
+120 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap<Ljava/lang/String;Ljava/util/LinkedList<Ljava/lang/String;>;>;)V
+146 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/invoke/MethodHandleImpl$1;)V
+27 -1: parseExtensionsDependencies
+10 -1: getRawType
+39 -1: (Ljava/nio/charset/CodingErrorAction;)V
+22 -1: ObjectStreamField.java
+6 -1: handle
+11 -1: hasPrevious
+18 -1: instanceof Float: 
+52 -1: (ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V
+4 -1: make
+13 -1: isIdeographic
+26 -1: java/util/HashMap$EntrySet
+51 -1: (Ljava/util/Hashtable;)[Ljava/util/Hashtable$Entry;
+91 -1: (Ljava/lang/CharSequence;Ljava/lang/Iterable<+Ljava/lang/CharSequence;>;)Ljava/lang/String;
+13 -1: makeAllocator
+10 -1: , headless
+20 -1: expungeStaleElements
+58 -1: sun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget
+41 -1: ([Ljava/lang/Object;Ljava/lang/Class$1;)V
+50 -1: <T:Ljava/lang/Object;>(I)Ljava/util/Iterator<TT;>;
+7 -1: TreeBin
+21 -1: Ljava/io/IOException;
+56 -1: (I[Ljava/lang/Class;)[Ljava/lang/invoke/LambdaForm$Name;
+6 -1: LOCFLG
+6 -1: DIRECT
+3 -1: SIG
+37 -1: java/security/NoSuchProviderException
+39 -1: " with illegal data type conversion to 
+16 -1: getCodeSourceURL
+51 -1: java/util/concurrent/ConcurrentHashMap$EntrySetView
+47 -1: (Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V
+6 -1: delete
+38 -1: sun/reflect/UnsafeFieldAccessorFactory
+11 -1: isDestroyed
+140 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
+9 -1: unaligned
+36 -1: ()Lsun/misc/Launcher$AppClassLoader;
+57 -1: (Ljava/lang/String;Ljava/util/Locale;)[Ljava/lang/String;
+37 -1: sun/reflect/annotation/AnnotationType
+49 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/List<TT;>;
+24 -1: (S)Ljava/nio/ByteBuffer;
+6 -1: ([DD)I
+9 -1: setTarget
+29 -1: (IF)Ljava/lang/StringBuilder;
+12 -1: forBasicType
+10 -1: (IIII[BI)V
+8 -1: ([DIID)I
+9 -1: BASE_YEAR
+19 -1: ()Ljava/lang/Error;
+42 -1: (Ljava/util/Map<TE;Ljava/lang/Boolean;>;)V
+6 -1: ([DD)V
+14 -1: Illegal size: 
+8 -1: ([DIID)V
+7 -1: (II[I)I
+17 -1: java_profile_name
+28 -1: java/util/AbstractCollection
+43 -1: (Ljava/net/URL;)[Ljava/security/CodeSource;
+62 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/net/URLStreamHandler;
+33 -1: [Ljava/util/HashMap$Node<TK;TV;>;
+15 -1: (Native Method)
+11 -1: fileNameMap
+26 -1: ()Ljava/util/ListIterator;
+25 -1: java/util/LinkedList$Node
+18 -1: SELECT_ALTERNATIVE
+35 -1: (Ljava/lang/Object;)Ljava/util/Set;
+19 -1: java/io/IOException
+16 -1: : already loaded
+9 -1: image/gif
+6 -1: (TE;)I
+25 -1: (Ljava/util/Properties;)V
+40 -1: (Ljava/lang/String;)Ljava/nio/file/Path;
+19 -1: checkedNavigableMap
+9 -1: checkInt(
+17 -1: getContentTypeFor
+26 -1: ()Ljava/io/FileDescriptor;
+69 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
+6 -1: (TE;)V
+25 -1: WARNING: Default charset 
+14 -1: ZipFile closed
+2 -1: CA
+6 -1: (TE;)Z
+64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask
+15 -1: FileSystem.java
+75 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+10 -1: FileLoader
+44 -1: (Lsun/util/PreHashedMap;)[Ljava/lang/Object;
+19 -1: availableProcessors
+2 -1: CN
+36 -1: ([JII)Ljava/util/Spliterator$OfLong;
+11 -1: access$1100
+18 -1: getFieldAtIfLoaded
+30 -1: PrivilegedActionException.java
+6 -1: EUC-JP
+20 -1: (F)Ljava/lang/Float;
+22 -1: unable to instantiate 
+31 -1: java/lang/reflect/ReflectAccess
+23 -1: (Ljava/lang/Object;JC)V
+3 -1: get
+59 -1: <T:Ljava/lang/Object;>([TT;IILjava/util/Comparator<-TT;>;)V
+2 -1: DE
+13 -1: GMT_ID_LENGTH
+7 -1: execute
+12 -1: MethodHandle
+18 -1: AllPermission.java
+54 -1: (Ljava/util/Locale;)Lsun/util/locale/LocaleExtensions;
+23 -1: MapReduceKeysToLongTask
+12 -1: varargsArray
+23 -1: java/util/jar/JarFile$1
+23 -1: java/util/jar/JarFile$2
+23 -1: java/util/jar/JarFile$3
+12 -1: getAndUpdate
+13 -1: reserveMemory
+17 -1: expungeStaleEntry
+6 -1: EUC-KR
+120 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;Ljava/util/Map$Entry<TK;TV;>;
+69 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
+26 -1: ()Ljava/util/NavigableMap;
+7 -1: L_PCHAR
+23 -1: (Ljava/lang/String$1;)V
+4 -1: KEYS
+37 -1: (Ljava/util/List;Ljava/lang/Object;)I
+31 -1: Ljava/lang/ArithmeticException;
+15 -1: [Ljava/net/URL;
+37 -1: (Ljava/util/List;Ljava/lang/Object;)V
+18 -1: MAX_HIGH_SURROGATE
+6 -1: (JCZ)V
+4 -1: mark
+17 -1: setMethodAccessor
+21 -1: java/io/ExpiringCache
+21 -1: PrivilegedAction.java
+21 -1: MappedByteBuffer.java
+2 -1: FR
+10 -1: copyMemory
+8 -1: L_SERVER
+13 -1: assertionLock
+12 -1: searchValues
+46 -1: (Ljava/util/Collection<*>;Ljava/lang/Object;)I
+21 -1: ProtectionDomainCache
+32 -1: USE_PREDEFINED_INTERPRET_METHODS
+2 -1: GB
+16 -1: getFinalRefCount
+23 -1: Ljava/lang/ClassLoader;
+4 -1: mask
+94 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+4 -1: bind
+41 -1: (Ljava/lang/Class<*>;I)Ljava/lang/Object;
+9 -1: COUNT_GWT
+16 -1: DASH_PUNCTUATION
+24 -1: UNICODE_LOCALE_EXTENSION
+15 -1: checkInvariants
+10 -1: stringSize
+12 -1: deepHashCode
+30 -1: java/security/cert/Certificate
+19 -1: America/Los_Angeles
+19 -1: unmappableForLength
+6 -1: UTF-16
+10 -1: methodType
+21 -1: sun/misc/URLClassPath
+19 -1: META-INF/INDEX.LIST
+10 -1: jniVersion
+6 -1: IBM437
+29 -1: sun/reflect/FieldAccessorImpl
+21 -1: ()Ljava/lang/Package;
+32 -1: java/security/SecurityPermission
+57 -1: (Lsun/util/calendar/Era;)Lsun/util/calendar/CalendarDate;
+34 -1: [Ljava/util/concurrent/locks/Lock;
+11 -1: replacement
+20 -1: ()Ljava/lang/String;
+6 -1: resize
+12 -1: UTF_32BE_BOM
+26 -1: (Ljava/util/jar/JarFile;)V
+24 -1: DEFAULT_INITIAL_CAPACITY
+87 -1: (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
+74 -1: (Ljava/util/jar/JarFile;)Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
+18 -1: parameterSlotDepth
+26 -1: (Ljava/util/jar/JarFile;)Z
+18 -1: makePlatformString
+24 -1: doPrivilegedWithCombiner
+48 -1: (Ljava/lang/String;)Lsun/util/calendar/ZoneInfo;
+27 -1: ()Ljava/lang/ref/Reference;
+40 -1: java/util/ArrayList$ArrayListSpliterator
+67 -1: ([Ljava/lang/Object;IILjava/util/Comparator;[Ljava/lang/Object;II)V
+2 -1: ID
+19 -1: stringPropertyNames
+28 -1: (Ljava/util/Collections$1;)V
+12 -1: STATE_YELLOW
+12 -1: isNormalized
+10 -1: fromIndex(
+16 -1: getFloatVolatile
+37 -1: Lsun/util/calendar/BaseCalendar$Date;
+10 -1: properties
+17 -1: peakFinalRefCount
+102 -1: (Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+68 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
+2 -1: IT
+9 -1: ([BI[BI)V
+51 -1: scl           permissions SecureClassLoader assigns
+36 -1: (Ljava/util/Set;Ljava/lang/Object;)V
+11 -1: ([SII[SII)V
+21 -1: sun.io.useCanonCaches
+18 -1: Illegal capacity: 
+22 -1: (Ljava/lang/Integer;)I
+83 -1: ([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set<[Ljava/lang/Object;>;)V
+65 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;II)V
+17 -1: java/util/Objects
+48 -1: (ILjava/util/List;)Ljava/lang/invoke/LambdaForm;
+31 -1: java/util/Properties$XmlSupport
+10 -1: L_LOWALPHA
+13 -1: long overflow
+25 -1: NullPointerException.java
+32 -1: (I)Ljava/lang/StackTraceElement;
+34 -1: ()[Ljava/lang/reflect/Constructor;
+2 -1: JP
+3 -1: SST
+12 -1: ShortCountry
+48 -1: (Ljava/util/stream/Collector;)Ljava/lang/Object;
+29 -1: Lsun/reflect/CallerSensitive;
+10 -1: addElement
+12 -1: lastReturned
+6 -1: putInt
+34 -1: sun.misc.JarIndex.metaInfFilenames
+13 -1: getBaseLocale
+20 -1: StringTokenizer.java
+8 -1: entrySet
+11 -1: getTypeName
+17 -1: America/Sao_Paulo
+5 -1: \t... 
+35 -1: (Lsun/util/calendar/CalendarDate;)I
+28 -1: java/lang/StackOverflowError
+35 -1: (Lsun/util/calendar/CalendarDate;)J
+10 -1: logicalAnd
+18 -1: csISOLatinCyrillic
+43 -1: (Ljava/lang/String;II)Ljava/nio/CharBuffer;
+73 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Z)Ljava/lang/invoke/MethodType;
+14 -1: aliases_MS1250
+14 -1: aliases_MS1251
+17 -1: getImplMethodKind
+17 -1: getLastAccessTime
+14 -1: aliases_MS1252
+14 -1: aliases_MS1253
+35 -1: (Lsun/util/calendar/CalendarDate;)V
+2 -1: KR
+14 -1: aliases_MS1254
+14 -1: getGenericInfo
+8 -1: utf_32be
+14 -1: aliases_MS1257
+35 -1: (Lsun/util/calendar/CalendarDate;)Z
+13 -1: StringEncoder
+7 -1: LDT2037
+7 -1: generic
+2 -1: L9
+45 -1: ([DLjava/util/function/IntToDoubleFunction;)V
+17 -1: isOtherAlphabetic
+9 -1: implWrite
+24 -1: PC-Multilingual-850+euro
+12 -1: valueMatches
+78 -1: (Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag;
+3 -1: gmt
+19 -1: (Ljava/io/Reader;)V
+25 -1: (JJ)Ljava/nio/ByteBuffer;
+7 -1: val$url
+26 -1: (Ljava/nio/ByteBuffer;IJ)V
+10 -1: isImplicit
+19 -1: getDeclaredClasses0
+4 -1: (I)B
+4 -1: (I)C
+4 -1: (I)D
+9 -1: byteValue
+4 -1: (I)F
+5 -1: ([J)I
+6 -1: isLive
+5 -1: sleep
+4 -1: (I)I
+4 -1: (I)J
+6 -1: outBuf
+77 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Set<TE;>;
+4 -1: (I)S
+5 -1: ([J)V
+4 -1: (I)V
+30 -1: (I[C)Ljava/lang/StringBuilder;
+14 -1: intBitsToFloat
+4 -1: (I)Z
+15 -1: MethodType.java
+14 -1: resolveSibling
+9 -1: Enum.java
+111 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
+14 -1: IS_CONSTRUCTOR
+4 -1: bits
+34 -1: java/security/PermissionCollection
+9 -1: autoFlush
+21 -1: java/util/Collections
+12 -1: bindReceiver
+20 -1: DMH.invokeStaticInit
+11 -1: charsetName
+14 -1: x-utf-32be-bom
+5 -1: cause
+7 -1: handle0
+43 -1: ([I[C[Ljava/lang/invoke/LambdaForm$Name;I)Z
+30 -1: getDefaultAllowUserInteraction
+18 -1: ConcurrentMap.java
+35 -1: (Ljava/lang/String;Z)Ljava/net/URL;
+33 -1: Ljava/nio/charset/CharsetDecoder;
+36 -1: java/lang/invoke/MethodHandleStatics
+34 -1: java/util/concurrent/ConcurrentMap
+16 -1: collectArguments
+22 -1: packageAssertionStatus
+79 -1: (JLjava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)J
+39 -1: Cannot reflectively create enum objects
+62 -1: attempt to add a Permission to a readonly PermissionCollection
+22 -1: FieldAccessorImpl.java
+9 -1: ByteCache
+4 -1: TRUE
+85 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Character;>;
+17 -1: java.library.path
+7 -1: encoder
+21 -1:     default locale = 
+11 -1: secondOfDay
+37 -1: (Lsun/util/calendar/ZoneInfoFile$1;)V
+35 -1: sun/reflect/UnsafeFieldAccessorImpl
+24 -1: (Ljava/lang/Object;JJJ)V
+16 -1: countStackFrames
+24 -1: (Ljava/lang/Object;JJJ)Z
+17 -1: nonfairTryAcquire
+20 -1: ArrayListSpliterator
+5 -1: /DMH=
+68 -1: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
+2 -1: PI
+8 -1: cspcp852
+112 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;)Ljava/util/Locale;
+8 -1: cspcp855
+58 -1: (Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
+33 -1: sun/misc/PerfCounter$CoreCounters
+6 -1: CESU_8
+7 -1: vmslots
+4 -1: Init
+7 -1: handler
+11 -1: getProperty
+10 -1: isVolatile
+8 -1: ([J[IJ)I
+25 -1: ()Ljava/lang/ClassLoader;
+8 -1: asChange
+81 -1: (Ljava/net/URLClassLoader;Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
+12 -1: naturalOrder
+8 -1: getState
+40 -1: (Ljava/lang/Object;I)[Ljava/lang/String;
+36 -1: java/security/AccessControlException
+10 -1: linkBefore
+48 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V
+26 -1: (Ljava/util/WeakHashMap;)V
+23 -1: bad method type alias: 
+7 -1: putChar
+18 -1: basicTypeSignature
+33 -1: sun/misc/InvalidJarIndexException
+13 -1: getPrivateuse
+14 -1: isConstantZero
+24 -1: java/io/FilePermission$1
+9 -1: Long.java
+19 -1: getLocaleExtensions
+10 -1: discovered
+17 -1: Invalid file path
+12 -1: MAX_MH_ARITY
+20 -1: observesDaylightTime
+31 -1: Ljava/lang/invoke/MethodHandle;
+6 -1: , end 
+24 -1: java/io/FileDescriptor$1
+12 -1: loadLibrary.
+11 -1: Method.java
+12 -1: loadLibrary0
+23 -1: java/util/stream/Stream
+37 -1: sun.lang.ClassLoader.allowArraySyntax
+8 -1: appClass
+15 -1: FileReader.java
+5 -1: (IF)I
+29 -1: [Ljava/lang/ClassValue$Entry;
+12 -1: (principals 
+30 -1: jar           jar verification
+22 -1: ARRAY_CHAR_BASE_OFFSET
+18 -1: newDirectoryStream
+4 -1: atan
+5 -1: (IF)V
+24 -1: (Ljava/lang/Character;)I
+2 -1: TH
+10 -1: startsWith
+9 -1: baseCount
+13 -1: canonicalize0
+47 -1: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)V
+22 -1: Ljava/io/OutputStream;
+2 -1: TW
+10 -1: H_RESERVED
+19 -1: URLClassLoader.java
+16 -1: isAccessibleFrom
+59 -1: Ljava/util/Hashtable<Ljava/lang/Object;Ljava/lang/Object;>;
+33 -1: java/lang/invoke/ConstantCallSite
+14 -1: Ljava/net/URL;
+12 -1: deleteOnExit
+20 -1: MAX_SKIP_BUFFER_SIZE
+30 -1: [Ljava/lang/ref/WeakReference;
+15 -1: contentPathProp
+9 -1: initCause
+53 -1: (Ljava/util/Queue;Ljava/lang/Class;)Ljava/util/Queue;
+20 -1: java/util/TimeZone$1
+2 -1: UK
+86 -1: (BLjava/lang/Class;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
+51 -1: (II[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+18 -1: Lsun/misc/Cleaner;
+31 -1: RuntimeInvisibleTypeAnnotations
+2 -1: US
+7 -1: makeInt
+40 -1: sun/reflect/annotation/AnnotationSupport
+28 -1: sun/reflect/misc/ReflectUtil
+8 -1: utf_32le
+40 -1: (Ljava/lang/Object;JLjava/lang/Object;)V
+24 -1: java/nio/file/WatchEvent
+66 -1: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodType;
+91 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
+114 -1: (Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+20 -1: internalWriteEntries
+79 -1: <T:Ljava/lang/Object;>(TT;Ljava/util/function/Supplier<Ljava/lang/String;>;)TT;
+14 -1: bitIndex < 0: 
+88 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
+6 -1: , len 
+28 -1: java/io/BufferedOutputStream
+11 -1: System.java
+11 -1: csISOLatin1
+11 -1: csISOLatin2
+28 -1: Ljava/io/OutputStreamWriter;
+27 -1: IllegalAccessException.java
+11 -1: csISOLatin4
+14 -1: isDaylightTime
+11 -1: csISOLatin5
+21 -1: getYearLengthInMonths
+13 -1: canonicalizes
+93 -1: "'s signer information does not match signer information of other classes in the same package
+32 -1: ()Lsun/management/GcInfoBuilder;
+37 -1: (IILjava/nio/charset/CoderResult$1;)V
+10 -1: stateNames
+46 -1: (Ljava/lang/String;)Ljava/nio/charset/Charset;
+21 -1: acquireMethodAccessor
+2 -1: X-
+32 -1: java/security/ProtectionDomain$1
+5 -1: atan2
+32 -1: java/security/ProtectionDomain$2
+32 -1: java/security/ProtectionDomain$3
+41 -1: malformed input: partial character at end
+18 -1: dropParameterTypes
+44 -1: (Ljava/lang/String;)Ljava/lang/StringBuffer;
+18 -1: CalendarUtils.java
+5 -1: month
+84 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/ClassLoader;>;
+33 -1: sun/misc/JavaNioAccess$BufferPool
+18 -1: SearchMappingsTask
+38 -1: DelegatingConstructorAccessorImpl.java
+80 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Ljava/lang/invoke/MemberName;
+8 -1: instance
+54 -1: Parameter annotations don't match number of parameters
+14 -1: createConstant
+35 -1: java/lang/invoke/MemberName$Factory
+4 -1: scrt
+34 -1: Ljava/lang/InstantiationException;
+20 -1: allowUserInteraction
+15 -1: java/util/Deque
+16 -1: forEachRemaining
+35 -1: (J)Lsun/util/calendar/CalendarDate;
+13 -1: no such field
+25 -1: java/nio/file/FileSystems
+16 -1: expectedModCount
+44 -1: (Ljava/io/File;ILjava/nio/charset/Charset;)V
+12 -1: createString
+15 -1: useDaylightTime
+31 -1: java/util/Properties$LineReader
+111 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Class<*>;I[Ljava/lang/invoke/MemberName;)I
+16 -1: java/util/Locale
+26 -1: URLClassPath.getResource("
+58 -1: (Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V
+10 -1: appendTail
+7 -1: cleaner
+78 -1: (Lsun/nio/cs/FastCharsetProvider;Ljava/lang/String;)Ljava/nio/charset/Charset;
+18 -1: convertOldISOCodes
+4 -1: year
+38 -1: java/lang/ReflectiveOperationException
+28 -1: (Ljava/lang/StringBuffer;B)V
+27 -1: (D)Ljava/lang/StringBuffer;
+17 -1: emptyNavigableSet
+7 -1: indices
+10 -1:  is sealed
+21 -1: SPECIFICATION_VERSION
+3 -1: TE;
+8 -1: addMonth
+24 -1: java/util/HashMap$Values
+17 -1: SEARCH_ALL_SUPERS
+18 -1: uncaught exception
+14 -1: declaredFields
+2 -1: [B
+2 -1: [C
+8 -1: ABSTRACT
+2 -1: [D
+2 -1: [F
+2 -1: [I
+2 -1: [J
+5 -1: false
+36 -1: (Ljava/net/URL;Ljava/lang/String;J)V
+12 -1: equalContext
+11 -1: VOID_RESULT
+2 -1: [S
+24 -1: (JLjava/lang/Object;JJ)V
+36 -1: Ljava/security/PermissionCollection;
+2 -1: [Z
+17 -1: floatToRawIntBits
+2 -1: []
+21 -1: ()[Ljava/lang/Thread;
+20 -1: [Ljava/lang/Integer;
+42 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Z)V
+19 -1: checkPrintJobAccess
+40 -1: (Ljava/lang/Object;)Ljava/lang/Class<*>;
+31 -1: (Lsun/reflect/FieldAccessor;Z)V
+10 -1: reallyPoll
+52 -1: (Ljava/lang/ref/Reference;)Ljava/lang/ref/Reference;
+100 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
+19 -1: CheckedNavigableMap
+48 -1: (Ljava/lang/String;)Ljava/lang/RuntimeException;
+35 -1: java/util/Hashtable$ValueCollection
+89 -1: (JLjava/util/function/ToDoubleFunction<-TK;>;DLjava/util/function/DoubleBinaryOperator;)D
+10 -1: Stack.java
+57 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;I)V
+12 -1: getTimeOfDay
+12 -1: reduceValues
+22 -1: warnUnsupportedCharset
+34 -1: (Ljava/lang/ref/Reference<+TS;>;)Z
+31 -1: EEE, dd MMM yyyy HH:mm:ss 'GMT'
+19 -1: setCachedLambdaForm
+21 -1: (I)Ljava/lang/Object;
+85 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
+36 -1: java/security/AccessControlContext$1
+27 -1: Lsun/net/www/MessageHeader;
+23 -1: ()[Ljava/lang/Class<*>;
+14 -1: refKindIsValid
+41 -1: sun/reflect/NativeConstructorAccessorImpl
+6 -1: binary
+23 -1: ()Ljava/nio/CharBuffer;
+8 -1: getSpace
+45 -1: bootstrap method failed to produce a CallSite
+15 -1: getISO3Language
+17 -1: TRANSITION_NSHIFT
+163 -1: ([Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
+7 -1: os.name
+38 -1: java/util/function/IntToDoubleFunction
+8 -1: checkInt
+21 -1: java/lang/VerifyError
+42 -1: sunpkcs11     SunPKCS11 provider debugging
+19 -1: URI is not absolute
+23 -1: java/io/DataInputStream
+53 -1: (Ljava/lang/Object;)Ljava/nio/charset/CharsetEncoder;
+2 -1: _#
+41 -1: (Ljava/io/FilenameFilter;)[Ljava/io/File;
+26 -1: Ljava/util/jar/Attributes;
+7 -1: collect
+17 -1: Lsun/misc/Unsafe;
+97 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
+78 -1: <T:Ljava/lang/Object;>(Ljava/util/Enumeration<TT;>;)Ljava/util/ArrayList<TT;>;
+28 -1: (II)Ljava/lang/StringBuffer;
+54 -1: (Ljava/lang/reflect/Constructor<*>;)Ljava/lang/String;
+28 -1: ()Ljava/util/ResourceBundle;
+48 -1: java/util/ArraysParallelSortHelpers$FJInt$Sorter
+9 -1: no access
+57 -1: <S:Ljava/lang/Object;>Ljava/lang/ref/ReferenceQueue<TS;>;
+7 -1: getPerf
+11 -1: getClassAt0
+11 -1: rtypeOffset
+20 -1: thread can't be null
+12 -1: addArguments
+12 -1: utf_32le_bom
+21 -1: allowThreadSuspension
+25 -1: defaultExpectedLineLength
+11 -1: removeFirst
+13 -1: reduceEntries
+20 -1: Read-ahead limit < 0
+57 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<-TT;>;[TT;)Z
+39 -1: ()Ljava/lang/invoke/MemberName$Factory;
+13 -1: ZipCoder.java
+16 -1: java/lang/Thread
+27 -1: java/lang/NoSuchMethodError
+66 -1: (Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;
+22 -1: java/lang/StringBuffer
+3 -1: TK;
+34 -1: (I)Ljava/lang/invoke/MethodHandle;
+30 -1: (Ljava/lang/reflect/Method;Z)V
+13 -1: file.encoding
+14 -1: removeTreeNode
+27 -1: sun/misc/JavaSecurityAccess
+58 -1: ([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
+19 -1: equalLimitedContext
+22 -1: appendVmSynonymMessage
+10 -1: applyAsInt
+23 -1: privateGetPublicMethods
+11 -1: dumpThreads
+25 -1: RuntimeVisibleAnnotations
+37 -1: (IF)Ljava/lang/AbstractStringBuilder;
+18 -1: getBooleanVolatile
+27 -1: (Ljava/util/zip/ZipFile;J)V
+25 -1: INITIAL_QUOTE_PUNCTUATION
+51 -1: (Ljava/util/Map;)[Ljava/lang/annotation/Annotation;
+54 -1: (ILjava/lang/Object;)Ljava/lang/AbstractStringBuilder;
+20 -1: reflectionDataOffset
+2 1: aa
+51 -1: (Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
+13 -1: transferLinks
+18 -1: java/util/Vector$1
+10 -1: ensureOpen
+22 -1: getDeclaredConstructor
+2 -1: am
+19 -1: NF_allocateInstance
+66 -1: (Ljava/util/Spliterator$OfDouble;Z)Ljava/util/stream/DoubleStream;
+6 -1: ([SS)I
+17 -1: newReflectionData
+19 -1: subclassAuditsQueue
+11 -1: access$1200
+16 -1: ValueSpliterator
+18 -1: preparedLambdaForm
+38 -1: (Ljava/net/URL;)Ljava/net/InetAddress;
+14 -1: getMaxPriority
+32 -1: ()[Ljava/lang/StackTraceElement;
+67 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask
+62 -1: (Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V
+6 -1: EXTHDR
+14 -1: java/util/Date
+2 -1: az
+6 -1: ([SS)V
+15 -1: arrayBaseOffset
+9 -1: isTrusted
+23 -1: (Ljava/lang/Object;JD)V
+2 -1: bb
+10 -1: ([BII[BI)V
+7 -1: toLower
+14 -1: invoke_LLLLL_L
+7 -1: jarfile
+42 -1: (Ljava/lang/String;)Lsun/misc/PerfCounter;
+28 -1: java/lang/ref/Reference$Lock
+16 -1: java/util/BitSet
+22 -1: jarfile parsing error!
+18 -1: jdk_update_version
+14 -1: invoke_LLLLL_V
+20 -1: java/util/LinkedList
+22 -1: erasedInvokerWithDrops
+25 -1: timeout value is negative
+21 -1: getCalendarProperties
+25 -1: not a method descriptor: 
+2 -1: cb
+31 -1: (Lsun/misc/JavaUtilJarAccess;)V
+2 -1: cd
+43 -1: Lsun/util/PreHashedMap<Ljava/lang/String;>;
+12 -1: getEntrySize
+2 -1: ce
+24 -1: guessContentTypeFromName
+2 -1: ch
+14 -1: JulianCalendar
+22 -1: [Ljava/lang/Cloneable;
+122 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Deque<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+34 -1: Lsun/util/locale/BaseLocale$Cache;
+14 -1: LinkedEntrySet
+72 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/io/Serializable;
+39 -1: ()Ljava/io/ObjectOutputStream$PutField;
+2 -1: cs
+8 -1: indexFor
+25 -1: (Ljava/util/List<+TE;>;)V
+7 -1: subpath
+11 -1: invokeExact
+14 -1: setFileNameMap
+22 -1: LangReflectAccess.java
+8 -1: referent
+34 -1: java/util/MissingResourceException
+77 -1: (Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;
+11 -1: ([FII[FII)V
+17 -1: getParameterCount
+18 -1: isMemberAccessible
+10 -1: getExtDirs
+69 -1: <T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;Ljava/util/List<+TT;>;)V
+9 -1: getNextPC
+13 -1: setProperties
+2 -1: de
+16 -1: generateCertPath
+6 -1: decode
+16 -1: getDefaultParent
+50 -1: (Ljava/net/URL;[Ljava/security/cert/Certificate;)V
+24 -1: Certificate factory for 
+35 -1: ()Ljava/lang/reflect/AnnotatedType;
+2 -1: ee
+12 -1: asLongBuffer
+7 -1: PRIVATE
+16 -1: aliases_UTF_32BE
+2 -1: en
+2 -1: eq
+7 -1: indexOf
+136 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<+Ljava/lang/Throwable;>;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+24 -1: (Ljava/lang/Class<*>;I)V
+72 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/IllegalAccessException;
+35 -1: java/util/jar/JavaUtilJarAccessImpl
+24 -1: (Ljava/lang/Class<*>;I)Z
+2 -1: ex
+24 -1: getProtectionDomainCache
+101 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;JLjava/security/AccessControlContext;)V
+3 -1: hit
+8 -1: UTF_16BE
+2 -1: fd
+16 -1: EmptyEnumeration
+4 -1: attr
+16 -1: fromIndex < -1: 
+7 -1: getIntB
+22 -1: java/io/FilePermission
+2 -1: fr
+2 -1: fs
+7 -1: lazySet
+7 -1: getIntL
+37 -1: configfile    JAAS ConfigFile loading
+24 -1: sun/nio/cs/StreamEncoder
+40 -1: (Ljava/time/ZoneId;)Ljava/util/TimeZone;
+132 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V
+2 -1: gc
+18 -1: Ljava/lang/Thread;
+10 -1: cacheArray
+48 -1: (Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
+61 -1: (Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V
+8 -1: readByte
+7 -1: ([S[S)Z
+24 -1: findBootstrapClassOrNull
+2 -1: hb
+7 -1: REPLACE
+45 -1: ()Ljava/util/Enumeration<Ljava/lang/String;>;
+10 -1: isOverflow
+2 -1: he
+13 -1: getCachedJan1
+12 -1: getClassPath
+8 -1: leapYear
+31 -1: java/lang/invoke/MethodTypeForm
+10 -1: ANNOTATION
+20 -1: getGregorianCalendar
+11 -1: ISO_8859_13
+11 -1: ISO_8859_15
+6 -1: invoke
+2 -1: ht
+7 -1: ListItr
+15 -1: synchronizedMap
+7 -1: cleanup
+94 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lsun/reflect/annotation/AnnotationType;
+3 -1: TT;
+69 -1: (JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/Gregorian$Date;
+81 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/HashMap$TreeNode<TK;TV;>;)Z
+20 -1:     Min. Heap Size: 
+33 -1: (IZ)Ljava/lang/invoke/MethodType;
+2 -1: id
+7 -1: ([DI)[D
+37 -1: (Ljava/lang/reflect/Constructor<*>;)I
+42 -1: <T::Ljava/lang/Comparable<-TT;>;>([TT;II)V
+13 -1: addSuppressed
+28 -1: internalMemberNameEnsureInit
+2 -1: in
+17 -1: getCompressedSize
+34 -1: sun/misc/Launcher$AppClassLoader$1
+88 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class<*>;)Ljava/security/AccessControlContext;
+37 -1: (Ljava/lang/reflect/Constructor<*>;)V
+2 -1: is
+2 -1: it
+6 -1: ENDOFF
+4 -1: void
+2 -1: iw
+14 -1: emptySortedSet
+2 -1: ix
+17 -1: unicode-1-1-utf-8
+64 -1: (Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
+46 -1: (Lsun/misc/URLClassPath$Loader;)Ljava/net/URL;
+2 -1: ja
+13 -1: synchronized 
+76 -1: ([DLjava/util/function/IntToDoubleFunction;)Ljava/util/function/IntConsumer;
+11 -1: wrapperType
+51 -1: <T:Ljava/lang/Object;>()Ljava/util/Comparator<TT;>;
+106 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/Object;
+17 -1: removeAllElements
+2 -1: ji
+24 -1: java/util/Vector$ListItr
+14 -1: getNestedTypes
+6 -1: L_MARK
+27 -1: Source does not fit in dest
+2 -1: l1
+2 -1: jp
+2 -1: l2
+4 -1: (J)B
+57 -1: (Ljava/lang/String;Ljava/util/Locale;I)Ljava/lang/String;
+4 -1: (J)C
+27 -1: ForEachTransformedValueTask
+2 -1: l4
+26 -1: java/util/Hashtable$KeySet
+4 -1: (J)D
+2 -1: l5
+39 -1: java/security/BasicPermissionCollection
+4 -1: (J)F
+2 -1: jv
+29 -1: MapReduceMappingsToDoubleTask
+18 -1: copyFromShortArray
+2 -1: l9
+3 -1: TV;
+4 -1: (J)I
+4 -1: (J)J
+23 -1: Lsun/util/calendar/Era;
+8 -1: x-EUC-TW
+15 -1: checkSetFactory
+7 -1: Special
+4 -1: (J)S
+4 -1: (J)V
+7 -1: invoke_
+25 -1: (IC)Ljava/nio/ByteBuffer;
+68 -1: (JLjava/util/concurrent/TimeUnit;)Ljava/nio/file/attribute/FileTime;
+36 -1: ()Ljava/net/URLStreamHandlerFactory;
+4 -1: (J)Z
+181 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;)Z
+9 -1: getOffset
+46 -1: (ILjava/lang/String;)Ljava/lang/StringBuilder;
+7 -1: element
+15 -1: createByteArray
+17 -1: uncaughtException
+2 -1: ko
+29 -1: java/nio/file/DirectoryStream
+15 -1: getISOCountries
+246 -1: <NoSuchMemberException:Ljava/lang/ReflectiveOperationException;>(BLjava/lang/invoke/MemberName;Ljava/lang/Class<*>;Ljava/lang/Class<TNoSuchMemberException;>;)Ljava/lang/invoke/MemberName;^Ljava/lang/IllegalAccessException;^TNoSuchMemberException;
+7 -1: invoker
+17 -1: langReflectAccess
+10 -1: bindSingle
+23 -1: java/lang/reflect/Proxy
+2 -1: lb
+2 -1: lc
+29 -1: CREATE_CLASSLOADER_PERMISSION
+5 -1: isSet
+18 -1: ([Ljava/io/File;)V
+15 -1: urlNoFragString
+21 -1: DirectByteBuffer.java
+15 -1: java.class.path
+15 -1: createDirectory
+4 -1:  GMT
+37 -1: sun/reflect/annotation/ExceptionProxy
+28 -1: (Ljava/util/Map<+TK;+TV;>;)V
+17 -1: getContentHandler
+26 -1: GenericDeclRepository.java
+56 -1: (Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
+15 -1: getJavaIOAccess
+39 -1: java/util/Collections$EmptyListIterator
+34 -1: java/lang/ConditionalSpecialCasing
+82 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMBean;
+58 -1: (Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
+21 -1: ()Lsun/misc/Launcher;
+2 -1: lt
+92 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
+8 -1: disjoint
+62 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V
+24 -1: ([Ljava/lang/Object;)TT;
+4 -1: lmap
+8 -1: SATURDAY
+12 -1: toStringUTF8
+91 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
+46 -1: pkcs11        PKCS11 session manager debugging
+27 -1: (Z)Ljava/lang/StringBuffer;
+7 -1: forEach
+17 -1: (Ljava/io/File;)I
+17 -1: (Ljava/io/File;)J
+5 -1: RESET
+6 -1: isFile
+14 -1: Exception.java
+8 -1: isPublic
+27 -1: computeInitialPreparedForms
+50 -1: (BZLjava/lang/Class;)Ljava/lang/invoke/LambdaForm;
+19 -1: getAvailableLocales
+17 -1: (Ljava/io/File;)V
+28 -1: ()Ljava/nio/charset/Charset;
+10 -1: appendNull
+17 -1: (Ljava/io/File;)Z
+23 -1: java/lang/InternalError
+2 -1: ne
+6 -1: radix 
+8 -1: checksum
+66 -1: (Lsun/net/www/MessageHeader;Ljava/lang/String;Ljava/lang/Object;)V
+45 -1: (Ljava/io/FilenameFilter;)[Ljava/lang/String;
+8 -1: checkJar
+28 -1:     default format locale = 
+13 -1: normalizeTime
+26 -1: java/util/AbstractList$Itr
+30 -1: java/util/function/IntFunction
+7 -1: TIS-620
+12 -1: reverseBytes
+2 -1: of
+26 -1: java/lang/ClassFormatError
+109 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+10 -1: delimiters
+20 -1: indexOfSupplementary
+16 -1: aliases_UTF_32LE
+134 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/Map<TK;TV;>;
+17 -1: [Ljava/lang/Long;
+2 -1: or
+12 -1: getClassName
+31 -1: (Ljava/nio/charset/Charset;FF)V
+6 -1: ([FF)I
+39 -1: (Ljava/util/Locale;)[Ljava/lang/String;
+33 -1: java/util/WeakHashMap$KeyIterator
+8 -1: UTF_16LE
+12 -1: isISOControl
+75 -1: (Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
+7 -1: ([I[I)Z
+28 -1: Self-causation not permitted
+6 -1: ([FF)V
+14 -1: defaultCharset
+12 -1: isJavaLetter
+2 -1: pm
+39 -1: cannot reflectively invoke MethodHandle
+20 -1: getSystemClassLoader
+42 -1: ([Ljava/lang/Object;IILjava/lang/Object;)I
+56 -1: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
+42 -1: ([Ljava/lang/Object;IILjava/lang/Object;)V
+12 -1: ZipFile.java
+43 -1: (Ljava/util/zip/ZipFile;)Ljava/lang/String;
+22 -1: Ljava/net/InetAddress;
+15 -1: getCharVolatile
+32 -1: ()[Ljava/lang/reflect/Parameter;
+13 -1: delimsChanged
+13 -1: getFileSystem
+13 -1: METHOD_RETURN
+20 -1: sun/misc/PerfCounter
+61 -1: (Ljava/util/HashMap<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
+8 -1: newIndex
+18 -1: getDisplayLanguage
+36 -1: (C)Ljava/lang/AbstractStringBuilder;
+36 -1: java/lang/StringCoding$StringEncoder
+12 -1: forEachEntry
+23 -1: [Ljava/io/Serializable;
+13 -1: totalCapacity
+26 -1: java/io/FileOutputStream$1
+14 -1: signatureArity
+90 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/cert/Certificate;)V
+17 -1: reflectionFactory
+6 -1: ibm737
+17 -1: fillInStackTrace0
+16 -1: allocateInstance
+52 -1: (Lsun/util/locale/BaseLocale$Key;)Ljava/lang/String;
+9 -1: addExtURL
+16 -1: copyFromIntArray
+65 -1: (Ljava/security/Permission;Z)Ljava/security/PermissionCollection;
+57 -1: java/util/concurrent/ConcurrentHashMap$SearchMappingsTask
+10 -1: toEpochDay
+4 -1: gate
+24 -1: sun/nio/cs/UTF_8$Decoder
+8 -1: entries2
+18 -1: isCharsetSupported
+10 -1: toCustomID
+2 -1: rw
+33 -1: java/nio/ByteBufferAsFloatBufferB
+25 -1: (ID)Ljava/nio/ByteBuffer;
+12 -1: addTimeOfDay
+61 -1: (Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z
+2 -1: sd
+25 -1: (Ljava/net/InetAddress;)V
+33 -1: java/nio/ByteBufferAsFloatBufferL
+2 -1: se
+15 -1: hasQueuedThread
+24 -1: assertMemberIsConsistent
+37 -1: java/util/Collections$UnmodifiableMap
+2 -1: sp
+20 -1: setJavaUtilJarAccess
+96 -1: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
+8 -1: language
+76 -1: <T:Ljava/lang/Object;>(Ljava/util/SortedSet<TT;>;)Ljava/util/SortedSet<TT;>;
+11 -1: findLibrary
+61 -1: (Ljava/lang/Class<*>;)Lsun/reflect/annotation/AnnotationType;
+6 -1: ([BZ)V
+24 -1: DEFAULT_BYTE_BUFFER_SIZE
+25 -1: (Ljava/util/ArrayList;I)V
+2 -1: th
+47 -1: (Ljava/util/Collection;)Ljava/util/Enumeration;
+49 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/net/URL;
+7 -1: ([D[D)Z
+2 -1: to
+22 -1: java/util/Locale$Cache
+8 -1: iterator
+30 -1: (Ljava/lang/StringBuilder;IZ)V
+17 -1: ()Ljava/util/Set;
+2 -1: tr
+27 -1: (Ljava/nio/ByteBuffer;ISZ)V
+6 -1: method
+13 -1: allPermission
+9 -1: ruleArray
+8 -1: UTC_TIME
+10 -1: LF_COUNTER
+26 -1: Lsun/nio/cs/StreamDecoder;
+25 -1: ()Lsun/util/calendar/Era;
+6 -1: LOCHDR
+21 -1: sun/net/www/MimeTable
+12 -1: Cannot cast 
+2 -1: us
+2 -1: ut
+52 -1: Ljava/lang/invoke/MethodHandle$PolymorphicSignature;
+6 -1: encode
+15 -1: CharBuffer.java
+24 -1: (C)Ljava/nio/ByteBuffer;
+56 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
+18 -1: getEnclosingMethod
+56 -1: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z
+6 -1: ibm775
+9 -1: (IIIIII)I
+44 -1: ([JLjava/util/function/IntToLongFunction;I)V
+9 -1: (IIIIII)J
+64 -1: (Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;
+2 -1: x-
+2 -1: vm
+5 -1: clock
+9 -1: (IIIIII)V
+10 -1: XmlSupport
+19 -1: sun/nio/cs/US_ASCII
+10 -1: toRealPath
+5 -1: cp367
+6 -1: ST_END
+58 -1: [Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;
+12 -1: hasSameRules
+108 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
+22 -1: java/lang/Class$Atomic
+4 -1: sync
+6 -1: listen
+12 -1: firstElement
+142 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B[B)Ljava/lang/reflect/Method;
+18 -1: internalProperties
+28 -1: (Ljava/lang/StringBuffer;C)V
+7 -1: factory
+18 -1: ()Ljava/util/List;
+50 -1: (Ljava/util/concurrent/CountedCompleter;[D[DIIII)V
+44 -1: (Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
+83 -1: (JLjava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)D
+12 -1: erasedType: 
+53 -1: (Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V
+20 -1: Cannot find package 
+27 -1: java/util/ArrayList$ListItr
+10 -1: copyMethod
+23 -1: java/lang/ThreadLocal$1
+16 -1: iso_646.irv:1983
+42 -1: (Ljava/lang/Thread;Ljava/lang/Throwable;)V
+19 -1: DEFAULT_LOAD_FACTOR
+40 -1: ([Ljava/lang/Object;)[Ljava/lang/Object;
+10 -1: (JJJ[BII)I
+12 -1: singletonMap
+8 -1: RESERVED
+9 -1: zipAccess
+21 -1: SynchronizedSortedMap
+4 -1: flag
+15 -1: UnmodifiableSet
+18 -1: WrappedPrintWriter
+7 -1: resume0
+2 -1: yi
+10 -1: erasedType
+31 -1: CHECK_AWT_EVENTQUEUE_PERMISSION
+8 -1: <clinit>
+59 -1: (Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
+40 -1: java/lang/management/MemoryManagerMXBean
+33 -1: newGetIntIllegalArgumentException
+16 -1: iso_646.irv:1991
+58 -1: (Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
+2 -1: zc
+26 -1: (Ljava/util/AbstractMap;)V
+6 -1: THROWS
+11 -1: toCharArray
+64 -1: (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
+2 -1: zh
+68 -1: Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;
+25 -1: (Ljava/util/Collection;)V
+20 -1: getJdkSpecialVersion
+17 -1: getTypeParameters
+32 -1: [Ljava/lang/ClassValue$Entry<*>;
+25 -1: (Ljava/util/Collection;)Z
+26 -1: Lsun/nio/ch/Interruptible;
+5 -1: 0.0p0
+5 -1: CACHE
+7 -1: namesOK
+21 -1: Ljava/lang/Exception;
+51 -1: (Ljava/net/URL;Lsun/net/www/protocol/jar/Handler;)V
+19 -1: jdk_special_version
+66 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;)Ljava/util/List<TT;>;
+75 -1: (Ljava/util/Comparator;Ljava/util/function/Function;)Ljava/util/Comparator;
+11 -1: Arrays.java
+19 -1: (Ljava/lang/Byte;)I
+17 -1: java/lang/Class$1
+17 -1: java/lang/Class$2
+17 -1: java/lang/Class$3
+47 -1: java/lang/invoke/MethodHandleImpl$WrappedMember
+17 -1: java/lang/Class$4
+44 -1: (Ljava/lang/Throwable;)Ljava/lang/Throwable;
+9 -1: charCount
+24 -1: ()Ljava/net/FileNameMap;
+44 -1: sun/util/locale/provider/TimeZoneNameUtility
+17 -1: not an array type
+2 -1: {}
+24 -1: (Lsun/misc/Launcher$1;)V
+12 -1: directMemory
+10 -1: parameters
+5 -1: java.
+14 -1: allocateDirect
+51 -1: (Ljava/lang/StringBuffer;)Ljava/lang/StringBuilder;
+23 -1: java/nio/file/Watchable
+37 -1: createDiagnosticFrameworkNotification
+54 -1: (Ljava/lang/Class<*>;Z)Ljava/lang/invoke/MethodHandle;
+35 -1: sun/nio/cs/StandardCharsets$Aliases
+9 -1: retDelims
+11 -1: MAX_ENTRIES
+12 -1: CumulateTask
+64 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask
+3 -1: iae
+12 -1: AF_PUTSTATIC
+21 -1: java/lang/Throwable$1
+45 -1: (Ljava/util/HashMap;)Ljava/util/HashMap$Node;
+77 -1: (JLjava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)I
+5 -1: after
+29 -1: (Ljava/security/CodeSource;)Z
+248 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
+6 -1: H_URIC
+7 -1: L_DIGIT
+7 -1: toNanos
+24 -1: (D)Ljava/nio/ByteBuffer;
+25 -1: getDiagnosticCommandMBean
+6 2: [LFoo;
+14 -1: path.separator
+16 -1: toUnsignedString
+40 -1: DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
+87 -1: (Ljava/security/Permission;[Ljava/security/cert/Certificate;)Ljava/security/Permission;
+16 -1: inheritedChannel
+11 -1: audio/basic
+27 -1: sun.classloader.findClasses
+10 -1: queryCount
+20 -1: NF_ensureInitialized
+12 -1: getBufIfOpen
+23 -1: sun/nio/cs/UTF_16LE_BOM
+134 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+17 -1: getImplMethodName
+14 -1: linkMethod => 
+25 -1: Ljava/lang/invoke/Stable;
+32 -1: Ljava/lang/annotation/Retention;
+7 -1: doInput
+9 -1: -_.!~*'()
+62 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;B)V
+18 -1: separateWithCommas
+43 -1: com/sun/crypto/provider/CipherBlockChaining
+14 -1: createTempFile
+9 -1: implFlush
+20 -1: getOffsetsByStandard
+21 -1: OutOfMemoryError.java
+7 -1: jce.jar
+46 -1: java/util/Collections$UnmodifiableNavigableMap
+30 -1: (Ljava/io/File;)Ljava/io/File;
+15 -1: LinkedList.java
+15 -1: iso_8859-9:1989
+50 -1: sun/reflect/generics/factory/CoreReflectionFactory
+10 -1: : JVM has 
+19 -1: HeapByteBuffer.java
+6 -1: getURL
+37 -1: java/security/cert/CertificateFactory
+23 -1: getAllowUserInteraction
+12 -1: otherParents
+25 -1: ARRAY_BOOLEAN_BASE_OFFSET
+9 -1: L_UPALPHA
+41 -1: ([Ljava/util/Hashtable$Entry<**>;TK;TV;)V
+6 -1: LOCHOW
+11 -1: access$1300
+30 -1: sun/reflect/MethodAccessorImpl
+130 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/util/Locale;>;)Ljava/util/List<Ljava/util/Locale;>;
+9 -1: MALFORMED
+38 -1: (Ljava/lang/String;I)Ljava/lang/Short;
+26 -1: File format not recognised
+12 -1: setTimeOfDay
+19 -1: java/lang/Exception
+15 -1: getOutputStream
+74 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+41 -1: (Ljava/lang/String;Z)Ljava/util/TimeZone;
+49 -1: Lsun/reflect/generics/repository/ClassRepository;
+8 -1: getCerts
+90 -1: (Ljava/lang/Class<*>;ZLjava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
+5 -1: clone
+32 -1: ()Ljava/lang/ref/Reference$Lock;
+15 -1: caseIgnoreMatch
+23 -1: (Ljava/util/Set<TE;>;)V
+25 -1: enumerateStringProperties
+9 -1: inherited
+4 -1: flip
+8 -1: setMonth
+38 -1: (Ljava/util/function/Consumer<-TV;>;)V
+55 -1: java/util/concurrent/ConcurrentHashMap$ReduceValuesTask
+37 -1: getJavaSecurityProtectionDomainAccess
+67 -1: (Ljava/util/NavigableSet;Ljava/lang/Class;)Ljava/util/NavigableSet;
+10 -1: reduceKeys
+14 -1: MAX_CODE_POINT
+24 -1: getGenericExceptionTypes
+8 -1: fraction
+30 -1: java/lang/InterruptedException
+46 -1: (Ljava/lang/String;II[BI)Ljava/nio/ByteBuffer;
+114 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$TreeNode<TK;TV;>;)V
+66 -1: (Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/InternalError;
+45 -1: (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+8 -1: putLongB
+101 -1: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Lsun/nio/cs/StreamDecoder;
+16 -1: standardProvider
+14 -1: parameterCount
+59 -1: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/List;
+8 -1: putLongL
+12 -1: (TT;TV;TV;)Z
+37 -1: Lsun/reflect/ConstructorAccessorImpl;
+11 -1: ([CII[CII)V
+14 -1: parameterArray
+15 -1: | interpretName
+62 -1: (JLjava/util/function/Function;Ljava/util/function/Consumer;)V
+30 -1: (Z)Lsun/reflect/FieldAccessor;
+19 -1: jvm_special_version
+22 -1: java/util/ArrayDeque$1
+12 -1: initVersions
+22 -1: java/lang/CharSequence
+21 -1: NF_internalMemberName
+5 -1: ()TE;
+97 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;IZ)Ljava/lang/invoke/MethodHandle;
+25 -1: java/nio/MappedByteBuffer
+6 -1: addURL
+17 -1: isConvertibleFrom
+14 -1: extendWithType
+9 -1: interrupt
+11 -1: floorDivide
+16 -1: x-ISO-2022-CN-GB
+12 -1: CheckedQueue
+7 -1: setLong
+64 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V
+108 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;TV;>;)Ljava/util/NavigableMap<TK;TV;>;
+38 -1: java/nio/channels/spi/SelectorProvider
+17 -1: makeGuardWithTest
+20 -1: (Ljava/util/List;Z)V
+8 -1: val$path
+12 -1: Runtime.java
+7 -1: channel
+71 -1: <T:Ljava/lang/Object;>([TT;IILjava/util/function/BinaryOperator<TT;>;)V
+18 -1: initializedHeaders
+32 -1: ()[Lsun/launcher/LauncherHelper;
+13 -1: jvInitialized
+10 -1: getSeconds
+7 -1: Decoder
+20 -1: getYearFromFixedDate
+6 -1: PREFIX
+21 -1: sun.boot.library.path
+11 -1: FIXED_DATES
+33 -1: (JLjava/util/function/Consumer;)V
+27 -1: initializeJavaAssertionMaps
+13 -1: toOctalString
+9 -1: fixResult
+10 -1: typeParams
+94 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
+4 -1: Help
+11 -1: setIfNotSet
+39 -1: java/lang/UnsupportedOperationException
+15 -1: zip file closed
+8 -1: floorDiv
+10 -1: canExecute
+10 -1: encodeLoop
+18 -1: addRequestProperty
+56 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V
+10 -1: superclass
+5 -1: close
+56 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)Z
+6 -1: ignore
+32 -1: ()Ljava/lang/ref/ReferenceQueue;
+19 -1: java/util/Formatter
+27 -1: java/lang/ClassLoaderHelper
+23 -1: (Ljava/lang/Object;JZ)V
+29 -1: java/nio/file/WatchEvent$Kind
+6 -1: CENLEN
+4 -1: SIZE
+68 -1: <T:Ljava/lang/Object;>(Ljava/util/Deque<TT;>;)Ljava/util/Queue<TT;>;
+9 -1: isEscaped
+12 -1: LF_INTERPRET
+22 -1: (I)Ljava/lang/Integer;
+60 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
+49 -1: ([Ljava/lang/Class<*>;Ljava/lang/StringBuilder;)V
+11 -1: getZipEntry
+16 -1: metaInfFilenames
+27 -1: (Ljava/lang/StringBuffer;)V
+57 -1: (Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry<TK;TV;>;
+76 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class<*>;
+8 -1: ([CII)[B
+27 -1: (Ljava/lang/StringBuffer;)Z
+24 -1: getManifestFromReference
+8 -1: ([CII)[C
+10 -1: H_LOWALPHA
+18 -1: FileURLMapper.java
+12 -1: fxLaunchMode
+24 -1: isMethodHandleInvokeName
+17 -1: winTimeToFileTime
+19 -1: checkTopLevelWindow
+26 -1: MapReduceMappingsToIntTask
+13 -1: NORM_PRIORITY
+18 -1: lookupViaProviders
+30 -1: (I)Ljava/util/LinkedList$Node;
+3 -1: UTC
+10 -1: UNMAPPABLE
+68 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;B)V
+9 -1: META-INF/
+13 -1: Iterable.java
+71 -1: ([Ljava/lang/reflect/Field;Ljava/lang/String;)Ljava/lang/reflect/Field;
+9 -1: setOffset
+8 -1: FJObject
+50 -1: (Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
+23 -1: java/nio/HeapByteBuffer
+23 -1: sun/util/PreHashedMap$1
+23 -1: sun/util/PreHashedMap$2
+34 -1: newGetCharIllegalArgumentException
+40 -1: jca           JCA engine class debugging
+39 -1: (Ljava/lang/Object;I)Ljava/lang/Object;
+42 -1: (Ljava/lang/String;)Ljava/net/InetAddress;
+25 -1: (Ljava/net/FileNameMap;)V
+44 -1: (Ljava/util/SortedMap;)Ljava/util/SortedMap;
+52 -1: (Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;
+27 -1: ()[Ljava/util/HashMap$Node;
+29 -1: java/util/EmptyStackException
+16 -1: not a field type
+14 -1: Ljava/io/File;
+28 -1: ()[Ljava/security/Principal;
+69 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
+5 -1: ()TK;
+10 -1: ISO8859-13
+40 -1: java/lang/invoke/DirectMethodHandle$Lazy
+30 -1: The object is not initialized.
+10 -1: ISO8859-15
+88 -1: <E:Ljava/lang/Object;>(Ljava/util/List<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>;
+25 -1: (ZILjava/lang/String;II)Z
+9 -1: stackSize
+61 -1: (Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
+16 -1: synchronizedList
+90 -1: (Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
+9 -1: nullCheck
+174 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry<TT;>;Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry<TT;>;>;
+14 -1: java/lang/Enum
+3 -1: int
+13 -1: detailMessage
+56 -1: java/util/concurrent/ConcurrentHashMap$SearchEntriesTask
+10 -1: ISO-8859-1
+10 -1: ISO-8859-2
+10 -1: ISO-8859-3
+10 -1: ISO-8859-4
+10 -1: ISO-8859-5
+10 -1: ISO-8859-6
+24 -1: ([Ljava/lang/Object;II)V
+10 -1: ISO-8859-7
+10 -1: ISO-8859-8
+139 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node;
+10 -1: ISO-8859-9
+5 -1: round
+25 -1: DIRECTIONALITY_WHITESPACE
+13 -1: NamedFunction
+10 -1: startAgent
+3 -1: ioe
+7 -1: closing
+24 -1: appendSchemeSpecificPart
+56 -1: sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+83 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/reflect/ReflectionFactory;>;
+17 -1: isCharsetDetected
+11 -1: getJarFiles
+22 -1: getEnclosingMethodInfo
+11 -1: setReadable
+61 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)V
+10 -1: attachment
+34 -1: (Ljava/io/File;)Ljava/lang/String;
+18 -1: ZipFileInputStream
+15 -1: CodeSource.java
+61 -1: (Ljava/util/jar/JarFile;)Ljava/util/List<Ljava/lang/Object;>;
+7 -1: cp00858
+108 -1: ([Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;II)Ljava/lang/invoke/LambdaForm$Name;
+38 -1: ([DII)Ljava/util/Spliterator$OfDouble;
+8 -1: val$name
+11 -1: LF_REINVOKE
+12 -1: validateTime
+17 -1: copyFromCharArray
+32 -1: throwSetIllegalArgumentException
+14 -1: fieldModifiers
+52 -1: (Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
+58 -1: (Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V
+14 -1: generalInvoker
+11 -1: interrupted
+246 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V
+20 -1: java/util/Dictionary
+17 -1: getDoubleVolatile
+41 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;)Z
+8 -1: intValue
+24 -1: (F)Ljava/nio/ByteBuffer;
+5 -1: reset
+54 -1: (ILjava/util/List;)[Ljava/lang/invoke/LambdaForm$Name;
+19 -1: [Ljava/util/Locale;
+43 -1: (Ljava/lang/String;II)Ljava/nio/ByteBuffer;
+38 -1: ()Ljava/io/ObjectInputStream$GetField;
+18 -1: [Locked by thread 
+10 -1: checkedMap
+16 -1: checkedSortedMap
+14 -1: illegal symbol
+16 -1: TITLECASE_LETTER
+4 -1: root
+22 -1: (ZLjava/lang/String;)V
+27 -1: ([JII)Ljava/nio/LongBuffer;
+15 -1: printStackTrace
+30 -1: newConstructorForSerialization
+14 -1: getPermissions
+13 -1: toStringCache
+15 -1: equalParamTypes
+37 -1: throwFinalFieldIllegalAccessException
+35 -1: (Ljava/lang/String;Ljava/io/File;)V
+34 -1: java/nio/charset/CoderResult$Cache
+3 -1: .\n\n
+33 -1: Ljava/nio/charset/CharsetEncoder;
+11 -1: lambdaForms
+65 -1: <T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)TT;
+39 -1: (CLjava/lang/Class;Ljava/lang/Object;)Z
+3 -1: ise
+14 -1: forLanguageTag
+45 -1: ([Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Z
+36 -1: RuntimeInvisibleParameterAnnotations
+12 -1: binarySearch
+24 -1: getAssociatedAnnotations
+10 -1: decoderFor
+6 -1: ibm813
+10 -1: logicalXor
+10 -1: setVarargs
+71 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Void;)V
+4 -1: cast
+6 -1: ibm819
+23 -1: getParentDelegationTime
+8 -1: ([FII)[F
+4 -1: .tmp
+6 -1: (JII)J
+27 -1: ()Ljava/lang/ref/Finalizer;
+9 -1: sunec.jar
+22 -1: java/net/URLConnection
+41 -1: (Ljava/lang/Runnable;Ljava/lang/String;)V
+20 -1: SecurityManager.java
+18 -1: getZipFileOpenTime
+7 -1: country
+13 -1: inflaterCache
+4 -1:     
+17 -1: java/lang/Runtime
+125 -1: (Lsun/management/GcInfoBuilder;JJJ[Ljava/lang/management/MemoryUsage;[Ljava/lang/management/MemoryUsage;[Ljava/lang/Object;)V
+24 -1: java/util/ResourceBundle
+64 -1: Ljava/util/Hashtable<Lsun/misc/Signal;Lsun/misc/SignalHandler;>;
+79 -1: ([Ljava/util/WeakHashMap$Entry<TK;TV;>;[Ljava/util/WeakHashMap$Entry<TK;TV;>;)V
+8 -1: x-ibm737
+39 -1: (Ljava/security/AccessControlContext;)Z
+21 -1: (Ljava/lang/Class;I)V
+4 -1:    -
+15 -1: calculateFields
+22 -1: Ljava/util/Properties;
+8 -1: getArray
+21 -1: (Ljava/lang/Class;I)Z
+41 -1: (Ljava/lang/ThreadGroup;)Ljava/lang/Void;
+17 -1: Ljava/io/Console;
+115 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
+12 -1: nextThreadID
+81 -1: (Ljava/net/URLClassLoader;Ljava/lang/SecurityManager;Ljava/security/Permission;)V
+23 -1: ARRAY_SHORT_BASE_OFFSET
+10 -1: interpret_
+144 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+20 -1: isIPv6LiteralAddress
+13 -1: launcher_name
+36 -1: java/util/function/IntToLongFunction
+38 -1: java/util/WeakHashMap$EntrySpliterator
+8 -1: copyInto
+3 -1: ACT
+11 -1: metafactory
+31 -1: ([BLjava/nio/charset/Charset;)V
+30 -1: java/lang/annotation/Retention
+13 -1: getYearLength
+42 -1: java/util/AbstractMap$SimpleImmutableEntry
+31 -1: ()Ljava/lang/invoke/MemberName;
+21 -1: sun/misc/JavaIOAccess
+16 -1: jdk_build_number
+8 -1: ST_RESET
+96 -1: (BLjava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
+13 -1: getTypeString
+15 -1: maxCharsPerByte
+8 -1: checkKey
+49 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/UTF_8$1;)V
+80 -1: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
+32 -1: Ljava/security/ProtectionDomain;
+5 -1: ()TT;
+6 -1: insert
+10 -1: intersects
+38 -1: ([Ljava/lang/Class;Ljava/lang/Class;)V
+15 -1: java/lang/Class
+12 -1: getPublicKey
+37 -1: (ID)Ljava/lang/AbstractStringBuilder;
+6 -1: ibm850
+6 -1: locsig
+6 -1: ibm852
+19 -1: changeReferenceKind
+3 -1: AET
+42 -1: (Ljava/util/Collection;Ljava/lang/Class;)V
+6 -1: ibm855
+16 -1: getPolicyNoCheck
+39 -1: ([B)[[Ljava/lang/annotation/Annotation;
+6 -1: ibm857
+10 -1: Error.java
+38 -1: ()Ljava/util/List<Ljava/lang/Object;>;
+14 -1: createInstance
+5 -1: cp437
+28 -1: Lsun/util/locale/BaseLocale;
+17 -1: getStandardOffset
+29 -1: sun/nio/cs/StandardCharsets$1
+36 -1: Ljava/security/ProtectionDomain$Key;
+14 -1: ArrayList.java
+78 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
+38 -1: java/lang/invoke/MethodHandleImpl$Lazy
+42 -1: (Ljava/util/LinkedHashMap$Entry<TK;TV;>;)V
+8 -1: getLongB
+7 -1: vmentry
+21 -1: lookupExtendedCharset
+32 -1: <T:Ljava/lang/Object;>([TT;)[TT;
+53 -1: Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
+6 -1: ibm862
+8 -1: getLongL
+32 -1: (Ljava/lang/invoke/MemberName;)J
+67 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/misc/Perf;>;
+6 -1: region
+6 -1: ibm866
+89 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;I)Lsun/reflect/ConstructorAccessor;
+22 -1: java/util/ListIterator
+9 -1: wednesday
+16 -1: unsuspendThreads
+20 -1: Not a Proxy instance
+45 -1: Ljava/lang/reflect/InvocationTargetException;
+61 -1: (Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
+5 -1: ()TV;
+32 -1: (Ljava/lang/invoke/MemberName;)V
+82 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/cert/Certificate;
+34 -1: java/lang/ClassValue$ClassValueMap
+32 -1: (Ljava/lang/invoke/MemberName;)Z
+15 -1: SPACE_SEPARATOR
+17 -1: caseIgnoreCompare
+58 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandles$Lookup;
+4 -1: Code
+3 -1: AGT
+54 -1: (Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
+6 -1: ibm874
+15 -1: newMemberBuffer
+42 -1: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
+33 -1: Ljava/lang/NumberFormatException;
+10 -1: Field.java
+67 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;)TU;
+4 -1: rows
+12 -1: MIN_PRIORITY
+25 -1: URI has a query component
+41 -1: provider      security provider debugging
+29 -1: sun/nio/cs/ISO_8859_1$Encoder
+26 -1: (Ljava/util/zip/ZipFile;)I
+26 -1: (Ljava/util/zip/ZipFile;)J
+20 -1: Bad digit at end of 
+29 -1: Ljava/lang/RuntimePermission;
+12 -1: initResolved
+9 -1: loadFence
+13 -1: fieldAccessor
+26 -1: (Ljava/util/zip/ZipFile;)V
+36 -1: java/lang/CloneNotSupportedException
+19 -1: getBasicConstraints
+16 -1: putOrderedObject
+26 -1: (Ljava/util/zip/ZipFile;)Z
+6 -1: target
+50 -1: (Ljava/util/concurrent/CountedCompleter;[I[IIIII)V
+16 -1: changeReturnType
+13 -1: CAUSE_CAPTION
+14 -1: checkExactType
+50 -1: sun/util/locale/provider/LocaleServiceProviderPool
+47 -1: java/lang/invoke/DirectMethodHandle$Constructor
+20 -1: CallerSensitive.java
+30 -1: java/security/ProtectionDomain
+26 -1: java.launcher.opt.vmselect
+4 -1: \tat 
+42 -1: java/util/ArraysParallelSortHelpers$FJLong
+39 -1: (Ljava/lang/String;)[Ljava/lang/String;
+19 -1: sun.net.www.content
+34 -1: ([III)Ljava/util/stream/IntStream;
+20 -1: (Ljava/util/Deque;)V
+35 -1: (Ljava/lang/reflect/Constructor;)[B
+16 -1: WeakHashMap.java
+8 -1: ([III)[I
+46 -1: (Ljava/util/Properties;Ljava/io/InputStream;)V
+54 -1: (I)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
+65 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;
+27 -1: URI path component is empty
+3 -1: -1-
+32 -1: Ljava/io/InterruptedIOException;
+9 -1: setLocale
+7 -1: [^, ;]*
+6 -1: format
+61 -1: (Ljava/util/function/Supplier;IZ)Ljava/util/stream/IntStream;
+20 -1: getRequestProperties
+16 -1: reallocateMemory
+28 -1: java/lang/IllegalAccessError
+5 -1: query
+83 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;II)Ljava/lang/invoke/MethodHandle;
+7 -1: threadQ
+6 -1: STATIC
+7 -1: enqueue
+21 -1: uninitializedCallSite
+3 -1: -2-
+26 -1: ()Ljava/util/NavigableSet;
+27 -1: getUncaughtExceptionHandler
+42 -1: ([Ljava/net/URL;)Ljava/net/URLClassLoader;
+30 -1: java/lang/UnsatisfiedLinkError
+39 -1: java/util/Collections$ReverseComparator
+7 -1: resolve
+4 -1: poll
+7 -1: (TE;I)V
+21 -1: : Unknown launch mode
+53 -1: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
+36 -1: sun.classloader.parentDelegationTime
+25 -1: java/net/URLStreamHandler
+39 -1: (Ljava/lang/Object;J)Ljava/lang/Object;
+53 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
+51 -1: java/util/ArraysParallelSortHelpers$FJDouble$Sorter
+26 -1: getAnnotatedParameterTypes
+18 -1: codePointCountImpl
+7 -1: threads
+12 -1: offsetBefore
+29 -1: ()Ljava/util/Collection<TV;>;
+58 -1: (Lsun/invoke/util/Wrapper;)Ljava/lang/invoke/MethodHandle;
+17 -1: DMH.invokeSpecial
+3 -1: -3-
+16 -1: decodeBufferLoop
+43 -1: java/util/concurrent/atomic/AtomicReference
+16 -1: reduceKeysToLong
+27 -1: newIllegalArgumentException
+3 -1: ALL
+5 -1: cache
+5 -1: queue
+4 -1: 8bit
+3 -1: -4-
+35 -1: Ljava/util/Set<Ljava/lang/String;>;
+9 -1: MIN_RADIX
+26 -1: ZipFileInflaterInputStream
+13 -1: MANIFEST_NAME
+18 -1: java/util/TimeZone
+175 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/invoke/DirectMethodHandle$1;)V
+16 -1: getContentLength
+11 -1: setDoOutput
+22 -1: (Ljava/io/Closeable;)V
+13 -1: TimeZone.java
+28 -1: sun/misc/ExtensionDependency
+6 -1: bindTo
+3 -1: -5-
+40 -1: ()[Ljava/util/WeakHashMap$Entry<TK;TV;>;
+20 -1: ()Lsun/misc/Cleaner;
+9 -1: compareTo
+68 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask
+11 -1: checkedList
+14 -1: (ITK;TV;ZZ)TV;
+5 -1: greek
+3 -1: jar
+21 -1: (Ljava/lang/String;)B
+21 -1: (Ljava/lang/String;)C
+21 -1: (Ljava/lang/String;)D
+5 -1: (JS)V
+21 -1: (Ljava/lang/String;)F
+13 -1: LETTER_NUMBER
+14 -1: isAlphaNumeric
+21 -1: (Ljava/lang/String;)I
+73 -1: (Ljava/nio/charset/Charset;Ljava/lang/String;Ljava/lang/StringCoding$1;)V
+21 -1: (Ljava/lang/String;)J
+25 -1: makeExactOrGeneralInvoker
+3 -1: -6-
+25 -1: java/nio/StringCharBuffer
+21 -1: Ljava/util/Hashtable;
+8 -1: ENQUEUED
+8 -1: finalize
+22 -1: DirectLongBufferU.java
+21 -1: (Ljava/lang/String;)S
+10 -1: localhost:
+33 -1: isKnownNotToHaveSpecialAttributes
+21 -1: (Ljava/lang/String;)V
+45 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Z)V
+21 -1: (Ljava/lang/String;)Z
+22 -1: (Ljava/util/Vector;I)V
+44 -1: java/nio/charset/UnsupportedCharsetException
+23 -1: java/lang/CharacterName
+7 -1: checkIO
+33 -1: (I)Lsun/misc/URLClassPath$Loader;
+90 -1: (Ljava/lang/Class<*>;Ljava/lang/reflect/Constructor<*>;)Ljava/lang/reflect/Constructor<*>;
+18 -1: getHeaderFieldDate
+9 -1: MIN_VALUE
+95 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;
+44 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration;
+8 -1: NOVEMBER
+4 -1: gcal
+17 -1: getConnectTimeout
+124 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+24 -1: INDEXOFSUBLIST_THRESHOLD
+16 -1: isJulianLeapYear
+21 -1: reduceEntriesToDouble
+15 -1: getPrefixLength
+17 -1:  is not param at 
+14 -1: inDaylightTime
+39 -1: (Ljava/lang/Class;[I)Ljava/lang/Object;
+5 -1: force
+98 -1: (Ljava/lang/Class;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
+40 -1: (Lsun/reflect/ConstructorAccessorImpl;)V
+27 -1: RuntimeInvisibleAnnotations
+17 -1: checkTargetChange
+9 -1: skipBytes
+4 -1: port
+25 -1: sun/nio/cs/UTF_16$Encoder
+28 -1: MIN_SUPPLEMENTARY_CODE_POINT
+4 -1: node
+11 -1: not param: 
+9 -1: debugInit
+6 -1: setURL
+14 -1: getMonthLength
+23 -1: ()Ljava/nio/ByteBuffer;
+17 -1: CALENDAR_JAPANESE
+11 -1: access$1400
+16 -1: ()Ljava/net/URI;
+29 -1: (IZ)Ljava/lang/StringBuilder;
+15 -1: Native Library 
+30 -1: Invalid lambda deserialization
+14 -1: throwException
+18 -1: nothing to verify!
+23 -1: (Ljava/lang/Object;JF)V
+3 -1: ART
+16 -1: isExtClassLoader
+18 -1: Illegal Capacity: 
+26 -1: java/util/zip/ZipException
+4 -1: /../
+34 -1: ([II)Ljava/util/Spliterator$OfInt;
+26 -1: (I)Ljava/util/Enumeration;
+60 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
+43 -1: not a field or nested class, no simple type
+12 -1: nextPutIndex
+15 -1: getConstructor0
+3 -1: AST
+11 -1: fromURIPath
+49 -1: (Ljava/util/Collections$UnmodifiableCollection;)V
+8 -1: makeImpl
+51 -1: (Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
+32 -1: (Ljava/util/function/Supplier;)V
+20 -1: namedFunctionInvoker
+37 -1: newGetBooleanIllegalArgumentException
+19 -1: (Ljava/io/File;ZI)V
+8 -1: NULL_KEY
+36 -1: Ljava/lang/reflect/Constructor<TT;>;
+21 -1: (Ljava/lang/Object;)B
+21 -1: (Ljava/lang/Object;)C
+21 -1: (Ljava/lang/Object;)D
+21 -1: (Ljava/lang/Object;)F
+30 -1: ()Lsun/util/locale/BaseLocale;
+21 -1: (Ljava/lang/Object;)I
+21 -1: (Ljava/lang/Object;)J
+10 -1: lineNumber
+95 -1: (JLjava/util/function/ToDoubleBiFunction<-TK;-TV;>;DLjava/util/function/DoubleBinaryOperator;)D
+16 -1: CoderResult.java
+44 -1: (Ljava/util/NavigableSet;Ljava/lang/Class;)V
+21 -1: (Ljava/lang/Object;)S
+13 -1: getNameString
+129 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/invoke/DirectMethodHandle$1;)V
+21 -1: (Ljava/lang/Object;)V
+21 -1: (Ljava/lang/Object;)Z
+81 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/util/LinkedList<Ljava/lang/String;>;>;
+49 -1: java/util/concurrent/locks/ReentrantLock$FairSync
+11 -1: csisolatin0
+11 -1: csisolatin1
+7 -1: isSpace
+10 -1: getDefault
+11 -1: csisolatin2
+16 -1: ()Ljava/net/URL;
+11 -1: csisolatin4
+14 -1: invokeExact_MT
+11 -1: csisolatin5
+28 -1: (Ljava/io/FileInputStream;)V
+11 -1: csisolatin9
+8 -1: isLetter
+15 -1: getConstructors
+21 -1: mainAppContextDefault
+29 -1: ()[Ljava/lang/reflect/Method;
+23 -1: Ljava/util/WeakHashMap;
+12 -1: LF_INVSTATIC
+17 -1: DirectBuffer.java
+10 -1: newEncoder
+10 -1: getVersion
+32 -1: java/lang/IllegalAccessException
+20 -1: java/util/Collection
+61 -1: (Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
+19 -1: $deserializeLambda$
+8 -1: removeIf
+25 -1: sun/reflect/FieldAccessor
+129 -1: <U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
+17 -1: parseAbsoluteSpec
+37 -1: ([Ljava/util/HashMap$Node<TK;TV;>;I)V
+17 -1: java/util/HashSet
+13 -1: spreadInvoker
+20 -1: suppressAccessChecks
+32 -1: Ljava/lang/InterruptedException;
+11 -1: oldMappings
+9 -1: lookupTag
+16 -1: java/lang/System
+5 -1: LFI: 
+6 -1: IBM737
+9 -1: SHORT_IDS
+45 -1: ([IIILjava/util/function/IntBinaryOperator;)V
+20 -1: getMetaInfEntryNames
+10 -1: isReadOnly
+50 -1: <E:Ljava/lang/Object;>()Ljava/util/SortedSet<TE;>;
+12 -1: java.vm.name
+30 -1: java/lang/Class$AnnotationData
+61 -1: (ILjava/lang/invoke/LambdaForm;)Ljava/lang/invoke/LambdaForm;
+7 -1: address
+44 -1: (Ljava/util/function/BiConsumer<-TK;-TV;>;)V
+58 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;I)V
+112 -1: (Ljava/lang/Object;TV;Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;ILjava/util/WeakHashMap$Entry<TK;TV;>;)V
+14 -1: aliases_KOI8_R
+3 -1: AWT
+14 -1: aliases_KOI8_U
+24 -1: ARRAY_DOUBLE_BASE_OFFSET
+23 -1: Ljava/util/jar/JarFile;
+91 -1: (Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)V
+14 -1: mappingAddress
+19 -1: [Ljava/lang/Object;
+17 -1: sun/misc/JarIndex
+9 -1: image/jpg
+49 -1: (Ljava/lang/String;I)Lsun/util/calendar/ZoneInfo;
+37 -1: java/lang/invoke/DirectMethodHandle$1
+34 -1: java/util/Collections$SingletonMap
+89 -1: (JLjava/util/function/ToIntBiFunction<-TK;-TV;>;ILjava/util/function/IntBinaryOperator;)I
+46 -1: (Ljava/util/Comparator;)Ljava/util/Comparator;
+11 -1: isTitleCase
+38 -1: java/lang/IllegalMonitorStateException
+33 -1: java/nio/BufferUnderflowException
+28 -1: java/lang/ClassValue$Version
+11 -1: printLocale
+13 -1: STORE_BARRIER
+42 -1: ([ILjava/util/function/IntUnaryOperator;)V
+26 -1: sun/util/locale/BaseLocale
+29 -1: java/io/ObjectStreamException
+41 -1: sun/reflect/UnsafeStaticFieldAccessorImpl
+60 -1: ([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object;
+30 -1: (Ljava/nio/charset/Charset;)[B
+73 -1: ([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
+3 -1: VST
+80 -1: Java(TM) SE Runtime Environment (build 1.8.0-internal-iklam_2013_11_27_21_25-b00
+85 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V
+20 -1: getStackTraceElement
+36 -1: java/util/LinkedHashMap$LinkedKeySet
+17 -1: getNormalizedYear
+15 -1: maxBytesPerChar
+16 -1: java/util/Random
+34 -1: (I[C)Ljava/lang/invoke/LambdaForm;
+11 -1: nbits < 0: 
+7 -1: H_PCHAR
+29 -1: (Ljava/nio/charset/Charset;)I
+36 -1: (I[I[C)Ljava/lang/invoke/LambdaForm;
+23 -1: java/lang/ClassLoader$1
+23 -1: java/lang/ClassLoader$2
+23 -1: java/lang/ClassLoader$3
+9 -1: sizeTable
+36 -1: (Z)Ljava/lang/AbstractStringBuilder;
+29 -1: (Ljava/nio/charset/Charset;)V
+25 -1: ARRAY_BOOLEAN_INDEX_SCALE
+29 -1: (Ljava/nio/charset/Charset;)Z
+6 -1: keySet
+20 -1: declaredConstructors
+25 -1: oracle/jrockit/jfr/Timing
+12 -1: sizeIsSticky
+6 -1: IBM775
+17 -1: currentTimeMillis
+28 -1: java/nio/DirectDoubleBufferS
+71 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/invoke/MethodType;B)V
+28 -1: java/nio/DirectDoubleBufferU
+19 -1: cachedFixedDateJan1
+15 -1: getClassContext
+65 -1: (Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V
+16 -1: unmodifiableList
+10 -1: getDoubleB
+82 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
+11 -1: getEntryCrc
+10 -1: getDoubleL
+20 -1: (C)Ljava/lang/Class;
+11 -1: Null action
+22 -1: java/io/BufferedWriter
+67 -1: (Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
+22 -1: parseSelectAnnotations
+6 -1: rename
+20 -1: acquireFieldAccessor
+43 -1: (Ljava/util/Vector;[Ljava/lang/Object;III)V
+32 -1: Ljava/lang/NullPointerException;
+29 -1: (Ljava/lang/ThreadLocal<*>;)V
+18 -1: descendingIterator
+37 -1: java/util/Collections$SynchronizedSet
+24 -1: mark/reset not supported
+12 -1: ) > toIndex(
+13 -1: <<ALL FILES>>
+10 -1: fastRemove
+4 -1: load
+31 -1: sun/reflect/ReflectionFactory$1
+39 -1: (Ljava/util/List<*>;)Ljava/lang/Object;
+39 -1: Ljava/util/Map<TE;Ljava/lang/Boolean;>;
+9 -1: offerLast
+31 -1: ()Ljava/lang/invoke/MethodType;
+40 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;
+17 -1: getObjectVolatile
+14 -1: suspendThreads
+55 -1: (Ljava/lang/String;ZLjava/util/Set;)Lsun/misc/Resource;
+75 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+Ljava/lang/Comparable<-TT;>;>;TT;)I
+6 -1: Lookup
+20 -1: java/io/OutputStream
+41 -1: Could not create application class loader
+28 -1: Lsun/misc/JavaUtilJarAccess;
+46 -1: java/util/Collections$SynchronizedNavigableSet
+8 -1: override
+21 -1: threadLocalRandomSeed
+10 -1: TEXT_PLAIN
+22 -1: ([B)Ljava/lang/String;
+29 -1: java/nio/InvalidMarkException
+14 -1: Throwable.java
+27 -1: newWrongMethodTypeException
+6 -1: ptypes
+8 -1: bugLevel
+62 -1: (ILjava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
+37 -1: ()Ljava/util/Locale$LocaleNameGetter;
+14 -1: getEntryMethod
+7 -1: getByte
+12 -1: UTF-32BE-BOM
+4 -1: lock
+34 -1: java/security/AccessControlContext
+79 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MemberName;
+5 -1: DEBUG
+5 -1: unbox
+17 -1: CLASSPATH_OPTOSFT
+4 -1: cbrt
+21 -1: LocalizedObjectGetter
+21 -1: ProtectionDomain.java
+22 -1: ([J)Ljava/util/BitSet;
+17 -1: getUnresolvedName
+34 -1: (Ljava/util/Map;Ljava/util/Map;I)V
+7 -1: cskoi8r
+14 -1: getInterfaces0
+48 -1: (Lsun/net/www/MessageHeader;)[Ljava/lang/String;
+14 -1: getFileNameMap
+16 -1: preserveCombiner
+19 -1: getDefaultUseCaches
+57 -1: (Ljava/lang/Class;[B[Ljava/lang/Object;)Ljava/lang/Class;
+21 -1: (D)Ljava/lang/Double;
+15 -1: iso8859_15_fdis
+23 -1: java/util/regex/Pattern
+6 -1: ibm912
+14 -1: findBuiltinLib
+42 -1: java/lang/annotation/AnnotationFormatError
+6 -1: ibm914
+6 -1: ibm915
+44 -1: java/nio/charset/IllegalCharsetNameException
+22 -1: COMBINING_SPACING_MARK
+20 -1: ()Ljava/lang/Thread;
+8 -1: readLine
+12 -1: (unresolved 
+65 -1: (Ljava/lang/String;Z)Ljava/util/Enumeration<Lsun/misc/Resource;>;
+41 -1: ([Ljava/lang/String;[Ljava/lang/String;)V
+30 -1: java/lang/Class$ReflectionData
+8 -1: requests
+52 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/US_ASCII$1;)V
+12 -1: ACCESS_WRITE
+6 -1: ibm920
+12 -1: CR_ERROR_MIN
+6 -1: jarMap
+6 -1: ibm923
+15 -1: java/lang/Error
+11 -1: VM_SETTINGS
+18 -1: name can't be null
+7 -1: PRESENT
+19 -1: setSecurityManager0
+101 -1: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)Lsun/nio/cs/StreamEncoder;
+25 -1: ()Ljava/util/jar/JarFile;
+26 -1: java/io/ObjectOutputStream
+13 -1: no !/ in spec
+5 -1: (II)C
+12 -1: setPriority0
+30 -1: (Z)[Ljava/lang/reflect/Method;
+28 -1: sun/nio/cs/ThreadLocalCoders
+5 -1: (II)I
+22 -1: java/io/BufferedReader
+26 -1: ()Lsun/misc/JavaNetAccess;
+10 -1: Asia/Dhaka
+14 -1: parallelStream
+5 -1: (II)V
+5 -1: (II)Z
+31 -1: Ljava/lang/reflect/Constructor;
+21 -1: ()Ljava/time/Instant;
+31 -1: (Ljava/lang/String;III[J[I[IZ)V
+8 -1: Volatile
+23 -1: isUnicodeIdentifierPart
+27 -1: longPrimitiveParameterCount
+16 -1: Map is non-empty
+24 -1: getLocalizedOutputStream
+14 -1: java/lang/Byte
+10 -1: staticBase
+11 -1: lastElement
+17 -1: replaceStaleEntry
+17 -1: MAX_LOW_SURROGATE
+28 -1: java.launcher.X.macosx.usage
+20 -1: registerShutdownHook
+16 -1: SECOND_IN_MILLIS
+8 -1: Embedded
+16 -1: BootstrapMethods
+14 -1: numInvocations
+79 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Enumeration<TT;>;
+10 -1: rotateLeft
+46 -1: ([Ljava/lang/Object;)Ljava/util/stream/Stream;
+6 -1: verify
+17 -1: OTHER_PUNCTUATION
+26 -1: acquireConstructorAccessor
+38 -1: (Ljava/lang/String;I)Ljava/lang/Class;
+30 -1: java/net/UnknownContentHandler
+20 -1: PREFIX_LENGTH_OFFSET
+12 -1: nextGetIndex
+14 -1: standardOffset
+10 -1: entryNames
+15 -1: application/xml
+3 -1: BET
+39 -1: ([DIII)Ljava/util/Spliterator$OfDouble;
+83 -1: (JLjava/util/function/BiFunction;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+10 -1: initMethod
+47 -1: (Ljava/util/LinkedList$Node;)Ljava/lang/Object;
+8 -1: isSealed
+12 -1: isAccessible
+11 -1: audio/x-wav
+46 -1: (Ljava/lang/String;)Ljava/util/jar/Attributes;
+24 -1: ()Ljava/io/OutputStream;
+15 -1: FIELD_MODIFIERS
+30 -1: sun/misc/URLClassPath$Loader$1
+20 -1: recursive invocation
+34 -1: (Ljava/lang/String;)Ljava/net/URL;
+12 -1: linkNodeLast
+34 -1: call site initialization exception
+17 -1: casAnnotationType
+8 -1: x-ibm874
+7 -1: isUpper
+58 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesTask
+31 -1: Ill-formed Unicode locale key: 
+12 -1: defineClass0
+12 -1: defineClass1
+12 -1: defineClass2
+59 -1: Can not call newInstance() on the Class for java.lang.Class
+10 -1: codePoints
+3 -1: ...
+14 -1: readAheadLimit
+14 -1: parallelSetAll
+41 -1: ([Ljava/lang/Object;I)[Ljava/lang/Object;
+148 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set<Ljava/lang/Throwable;>;)V
+10 -1: Deque.java
+21 -1: Must be volatile type
+7 -1: setForm
+58 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Byte;>;
+47 -1: (Ljava/lang/String;Ljava/security/CodeSource;)V
+30 -1: java/io/InterruptedIOException
+44 -1: java/util/Collections$SynchronizedCollection
+16 -1: Invalid Jar file
+32 -1: sun/util/calendar/CalendarSystem
+67 -1: (JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
+19 -1: DEFAULT_BUFFER_SIZE
+16 -1: readObjectNoData
+16 -1: setJavaNioAccess
+73 -1: (Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/Object;)Ljava/lang/Object;
+14 -1: copyToIntArray
+10 -1: hasWaiters
+20 -1: (I)Ljava/lang/Class;
+35 -1: all           turn on all debugging
+14 -1: Invalid host: 
+26 -1: Lsun/nio/cs/StreamEncoder;
+43 -1: sun/misc/JavaSecurityProtectionDomainAccess
+11 -1: getNamedCon
+8 -1: H_SERVER
+27 -1: java/util/function/Consumer
+12 -1: isLocalClass
+81 -1: (Ljava/util/LinkedHashMap$Entry<TK;TV;>;Ljava/util/LinkedHashMap$Entry<TK;TV;>;)V
+83 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Boolean;>;
+4 -1: exec
+43 -1: java/lang/reflect/InvocationTargetException
+35 -1: (Ljava/io/File;Ljava/lang/String;)V
+9 -1: modifiers
+35 -1: (Ljava/io/File;Ljava/lang/String;)Z
+9 -1: Byte.java
+12 -1: unknown mode
+18 -1: initializeVerifier
+24 -1: (Ljava/nio/ByteBuffer;)I
+22 -1: ([Ljava/lang/Object;)I
+11 -1: correctType
+6 -1: escape
+52 -1: (Ljava/security/ProtectionDomain;)Ljava/lang/String;
+11 -1: annotations
+121 -1: (Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
+22 -1:  using an instance of 
+14 -1: getSpeciesData
+28 -1: ()Ljava/security/CodeSource;
+12 -1: JZENTRY_NAME
+24 -1: (Ljava/nio/ByteBuffer;)V
+4 -1: ZBSC
+22 -1: ([Ljava/lang/Object;)V
+7 -1: isParam
+165 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+70 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/LambdaForm;
+24 -1: Ljava/io/FilePermission;
+22 -1: ([Ljava/lang/Object;)Z
+11 -1: mergeHeader
+11 -1: applyAsLong
+28 -1: (IJ)Ljava/lang/StringBuffer;
+10 -1: arityCheck
+52 -1: (ILjava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+13 -1: toUpperCaseEx
+9 -1: nextIndex
+11 -1: start > end
+4 -1: long
+6 -1: Static
+27 -1: ()Ljava/lang/reflect/Field;
+10 -1: bufUpdater
+43 -1: averageBytesPerChar exceeds maxBytesPerChar
+105 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V
+23 -1: ARRAY_SHORT_INDEX_SCALE
+15 -1: getHeaderFields
+36 -1: java/util/HashMap$HashMapSpliterator
+10 -1: Guard.java
+29 -1: java/util/RandomAccessSubList
+6 -1: addAll
+7 -1: getTime
+16 -1: invokeHandleForm
+32 -1: sun/util/locale/LocaleExtensions
+16 -1: checkAndLoadMain
+19 -1: INTERFACE_MODIFIERS
+11 -1: resolveName
+20 -1: getContentLengthLong
+53 -1: (ICLjava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+19 -1: name cannot be null
+23 -1: hasReceiverTypeDispatch
+12 -1: getExtension
+49 -1: Ljava/util/Set<Ljava/security/ProtectionDomain;>;
+114 -1: (Ljava/lang/String;[J[I[J[I[Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)Lsun/util/calendar/ZoneInfo;
+24 -1: NativeSignalHandler.java
+58 -1: (Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
+10 -1: interface 
+68 -1: (Ljava/lang/String;)Ljava/lang/invoke/BoundMethodHandle$SpeciesData;
+15 -1: addShutdownHook
+32 -1: java/security/AccessController$1
+10 -1: filterTags
+19 -1: [Ljava/lang/Number;
+92 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+43 -1: java/util/LinkedHashMap$LinkedEntryIterator
+5 -1: utf-8
+11 -1: iso-8859-13
+11 -1: iso-8859-15
+58 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/util/jar/JarFile;
+41 -1:               CertPathValidator debugging
+22 -1: ARRAY_LONG_BASE_OFFSET
+57 -1: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+13 -1: queuePrintJob
+14 -1: Watchable.java
+15 -1: jdkMajorVersion
+62 -1: (Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;
+23 -1: twoToTheDoubleScaleDown
+22 -1: registerVMNotification
+30 -1: ()Lsun/misc/JavaUtilJarAccess;
+17 -1: getTargetVolatile
+4 -1: exit
+13 -1: StringDecoder
+12 -1: hasRemaining
+9 -1: bigEndian
+14 -1: checkMulticast
+13 -1: clearProperty
+18 -1: ForEachMappingTask
+15 -1: Collection.java
+55 -1: (Ljava/io/InputStream;)Ljava/security/cert/Certificate;
+5 -1: UTF-8
+11 -1: transitions
+7 -1: wrapAlt
+27 -1: ClassNotFoundException.java
+20 -1: UnresolvedPermission
+14 -1: charsetForName
+9 -1: getParent
+18 -1: [Ljava/lang/Short;
+24 -1: UnmodifiableNavigableMap
+5 -1: xflow
+10 -1: interfaces
+19 -1: doubleToRawLongBits
+73 -1: (Ljava/lang/reflect/Constructor<*>;[Ljava/lang/Object;)Ljava/lang/Object;
+10 -1: getInCheck
+21 -1: (Ljava/lang/Thread;)V
+15 -1: fromIndex < 0: 
+63 -1: (ITK;TV;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)V
+9 -1: pollFirst
+21 -1: (Ljava/lang/Thread;)Z
+16 -1: checkProxyMethod
+39 -1: generateLambdaFormInterpreterEntryPoint
+15 -1: findLoadedClass
+6 -1: system
+5 -1: ITALY
+45 -1: combiner      SubjectDomainCombiner debugging
+34 -1: NativeConstructorAccessorImpl.java
+22 -1: ([C)Ljava/lang/String;
+39 -1: (Ljava/lang/String;Ljava/lang/Class;Z)V
+18 -1: java/lang/Thread$1
+20 -1: window can't be null
+10 -1: Debug.java
+17 -1: singletonIterator
+53 -1: java/util/concurrent/ConcurrentHashMap$ForEachKeyTask
+20 -1: java/security/Policy
+13 -1: getDescriptor
+32 -1: (I)Ljava/lang/invoke/MethodType;
+15 -1: nativeLibraries
+27 -1: sun/util/locale/LanguageTag
+8 -1: priority
+12 -1: IntegerCache
+14 -1: connectTimeout
+9 -1: namePairs
+17 -1: vmAllowSuspension
+16 -1: METHOD_MODIFIERS
+51 -1: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+20 -1: MIN_TREEIFY_CAPACITY
+13 -1: getEntryBytes
+33 -1: ()Lsun/reflect/ReflectionFactory;
+17 -1: getDisplayCountry
+13 -1: isWrapperType
+5 -1: utf16
+12 -1: parallelSort
+27 -1: (Ljava/nio/ByteBuffer;IIZ)V
+56 -1: (Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;I)Z
+9 -1: isDefined
+20 -1: sun/misc/FloatConsts
+10 -1: putDoubleB
+30 -1: java/lang/NoSuchFieldException
+27 -1: Value out of range. Value:"
+36 -1: sun/reflect/NativeMethodAccessorImpl
+7 -1: decoder
+38 -1: ([Ljava/lang/invoke/MutableCallSite;)V
+10 -1: putDoubleL
+68 -1: (Ljava/lang/reflect/Method;)Lsun/reflect/generics/scope/MethodScope;
+37 -1: java/lang/invoke/MethodHandles$Lookup
+9 -1: Void.java
+28 -1: sun/util/locale/BaseLocale$1
+10 -1: stackTrace
+7 -1: toClass
+11 -1: access$1500
+41 -1: (Ljava/lang/Object;I)Ljava/lang/Class<*>;
+148 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;Ljava/lang/Object;JLjava/lang/invoke/DirectMethodHandle$1;)V
+22 -1: ARRAY_BYTE_BASE_OFFSET
+13 -1: ZipEntry.java
+56 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/util/List;
+5 -1: utf32
+16 -1: ISO_646.irv:1991
+5 -1: p-126
+20 -1: sun.net.www.protocol
+3 -1: key
+20 -1: IMPLEMENTATION_TITLE
+93 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Lsun/util/locale/LanguageTag;
+66 -1: ([Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)V
+27 -1: java/nio/DirectFloatBufferS
+27 -1: java/nio/DirectFloatBufferU
+15 -1: JZENTRY_COMMENT
+8 -1: casTabAt
+10 -1: getVariant
+24 -1: Ljava/lang/Thread$State;
+35 -1: ()Ljava/lang/AbstractStringBuilder;
+114 -1: (Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
+16 -1: getShortVolatile
+18 -1: SoftReference.java
+3 -1: BST
+12 -1: isCastableTo
+28 -1: sun.zip.disableMemoryMapping
+11 -1: copyOfRange
+17 -1: ()Lsun/misc/Perf;
+59 -1: (Ljava/lang/String;[Ljava/io/File;Ljava/lang/ClassLoader;)V
+27 -1: (Lsun/misc/JavaAWTAccess;)V
+8 -1: DECLARED
+18 -1: loadedLibraryNames
+6 -1: CENNAM
+7 -1: encprop
+5 -1: ABASE
+27 -1: java/util/WeakHashMap$Entry
+13 -1: wrapWithPrims
+5 -1: UTF32
+29 -1: Ljava/net/URISyntaxException;
+6 -1: groups
+65 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<+TT;>;)Ljava/util/Set<TT;>;
+32 -1: lambda$comparingByKey$6d558cbf$1
+15 -1: removeElementAt
+49 -1: [Ljava/util/concurrent/ConcurrentHashMap$Segment;
+32 -1: Sign character in wrong position
+6 -1: IBM819
+39 -1: java/security/cert/CertificateException
+4 -1: join
+30 -1: Ljava/lang/invoke/ForceInline;
+14 -1: expandCapacity
+19 -1: Ljava/lang/Integer;
+11 -1: NUMBER_THAI
+10 -1: getExtURLs
+9 -1: retainAll
+21 -1: (S)Ljava/lang/String;
+8 -1: truncate
+51 -1: java/util/ArraysParallelSortHelpers$FJObject$Sorter
+28 -1: newIndexOutOfBoundsException
+26 -1: JavaUtilJarAccessImpl.java
+22 -1: (II)Ljava/util/BitSet;
+10 -1: getLongAt0
+65 -1: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)TA;
+26 -1: (Ljava/lang/ThreadLocal;)I
+5 -1: (J)[B
+27 -1: Ljava/lang/CharacterData00;
+18 -1: sun/misc/Cleaner$1
+59 -1: (Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
+114 -1: (JLjava/util/function/ToDoubleFunction<Ljava/util/Map$Entry<TK;TV;>;>;DLjava/util/function/DoubleBinaryOperator;)D
+28 -1: java/lang/ClassCastException
+26 -1: (Ljava/lang/ThreadLocal;)V
+27 -1: ()[Ljava/lang/reflect/Type;
+13 -1: not invoker: 
+56 -1: (Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;
+6 -1: before
+37 -1: ([DII)Ljava/util/stream/DoubleStream;
+9 -1: logicalOr
+9 -1: IS_METHOD
+12 -1: SPACE_USABLE
+12 -1: lastModified
+10 -1: setSigners
+8 -1: Invokers
+7 -1: nCopies
+12 -1: utf-32le-bom
+7 -1: (IIII)J
+17 -1: jdkSpecialVersion
+26 -1: ()Ljava/lang/StringBuffer;
+17 -1: SearchEntriesTask
+14 -1: java/net/Parts
+20 -1: Ljava/lang/Runnable;
+35 -1: java/util/WeakHashMap$ValueIterator
+19 -1: FinalReference.java
+7 -1: (IIII)V
+23 -1: Ljava/lang/ThreadGroup;
+10 -1: nullsFirst
+8 -1: setCache
+55 -1: (Ljava/util/List;Ljava/lang/Object;Ljava/lang/Object;)Z
+24 -1: java/util/SimpleTimeZone
+6 -1: IBM850
+6 -1: IBM852
+25 -1: sun/net/www/MeteredStream
+4 -1: exts
+6 -1: IBM855
+16 -1: allocateElements
+6 -1: IBM857
+19 -1: setDefaultUseCaches
+6 -1: IBM858
+5 -1: slice
+9 -1: marklimit
+77 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Void;>;
+32 -1: java/util/Collections$CheckedSet
+12 -1: getModifiers
+8 -1: protocol
+10 -1: getInteger
+33 -1: ([J)Ljava/util/stream/LongStream;
+6 -1: IBM862
+8 -1: Map.java
+35 -1: java/lang/Class$EnclosingMethodInfo
+25 -1: (J)Ljava/math/BigInteger;
+31 -1: (Ljava/net/URL;Ljava/io/File;)V
+6 -1: IBM866
+6 -1: unload
+28 -1: sun/invoke/util/VerifyAccess
+105 -1: ()Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
+25 -1: Resetting to invalid mark
+20 -1: java/util/Vector$Itr
+5 -1: SHIFT
+11 -1: NonfairSync
+18 -1: getSecurityManager
+34 -1: ()[Ljava/lang/ClassValue$Entry<*>;
+28 -1: (J)Ljava/lang/StringBuilder;
+28 -1: (Ljava/security/PublicKey;)V
+12 -1: getResources
+6 -1: IBM874
+27 -1:  which Java does not define
+36 -1: (Ljava/lang/invoke/MethodTypeForm;)V
+48 -1: array length is not legal for long[] or double[]
+18 -1: IS_FIELD_OR_METHOD
+7 -1: Aliases
+17 -1: checkedExceptions
+13 -1: getDayOfMonth
+51 -1: (Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
+20 -1: java/io/EOFException
+26 -1: Enclosing method not found
+17 -1: flushLeftoverChar
+122 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor<*>;
+18 -1: buildAnnotatedType
+21 -1: setContextClassLoader
+22 -1: java/io/UnixFileSystem
+20 -1: nonSyncContentEquals
+43 -1: java/util/Collections$SynchronizedSortedMap
+15 -1: Properties.java
+35 -1: com.oracle.usagetracker.config.file
+13 -1: java/util/Map
+18 -1: setEagerValidation
+13 -1: getSetMessage
+6 -1: unlock
+14 -1: refKindIsField
+22 -1: bad field type alias: 
+17 -1: casAnnotationData
+6 -1: AUGUST
+106 -1: (Ljava/util/concurrent/CountedCompleter;[Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/util/Comparator;)V
+11 -1: monitorExit
+17 -1: linkMethodTracing
+69 -1: (Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V
+21 -1: java/lang/ClassLoader
+39 -1:               PKCS11 KeyStore debugging
+10 -1: checkRtype
+25 -1: getLocalGregorianCalendar
+23 -1: GenericDeclaration.java
+12 -1: isViewableAs
+22 -1: static_oop_field_count
+72 -1: (Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+11 -1: languageKey
+6 -1: Class 
+34 -1: java/util/HashMap$ValueSpliterator
+37 -1: (IJ)Ljava/lang/AbstractStringBuilder;
+17 -1: privilegedContext
+36 -1: java/util/LinkedHashMap$LinkedValues
+11 -1: getHostName
+10 -1: beginEntry
+7 -1: isAlpha
+61 -1: (Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/LambdaForm;
+10 -1: expandArgs
+14 -1: Finalizer.java
+14 -1: timeDefinition
+28 -1: ()Ljava/util/jar/Attributes;
+14 -1: ansi_x3.4-1968
+11 -1: setPriority
+23 -1: (C)Ljava/lang/Class<*>;
+26 -1: (Ljava/lang/Object;TV;)TV;
+70 -1: (Ljava/util/function/BiFunction;Ljava/lang/Object;Ljava/lang/Object;)V
+48 -1: ()Lsun/reflect/generics/factory/GenericsFactory;
+25 -1: java/lang/invoke/CallSite
+8 -1: tzdb.dat
+17 -1: containsAllLimits
+17 -1: fileNameMapLoaded
+6 -1: values
+17 -1: setLastAccessTime
+12 -1: expandFromVM
+50 -1: java/lang/invoke/MethodHandle$PolymorphicSignature
+3 -1: .EC
+14 -1: access denied 
+22 -1: java/util/AbstractList
+47 -1: (IILjava/lang/String;)Ljava/lang/StringBuilder;
+52 -1: ()Lsun/reflect/generics/repository/MethodRepository;
+22 -1: (Ljava/lang/String;)[B
+57 -1: (Ljava/lang/Object;)Ljava/lang/invoke/DirectMethodHandle;
+18 -1: compareAndSwapLong
+4 -1:  != 
+6 -1: StdArg
+29 -1: (Ljava/security/Permission;)V
+22 -1: ([D)Ljava/lang/String;
+28 -1: Lsun/reflect/MethodAccessor;
+14 -1: ansi_x3.4-1986
+20 -1: getPeakFinalRefCount
+29 -1: (Ljava/security/Permission;)Z
+5 -1: debug
+38 -1: (Ljava/lang/reflect/Constructor<*>;)[B
+27 -1: java/util/GregorianCalendar
+16 -1: Null replacement
+26 -1: ()Ljava/lang/reflect/Type;
+28 -1: DIRECTIONALITY_LEFT_TO_RIGHT
+102 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale;
+15 -1: isConvertibleTo
+24 -1: ARRAY_DOUBLE_INDEX_SCALE
+16 -1: getComponentType
+29 -1: sun/util/locale/LocaleMatcher
+11 -1: LOCALECACHE
+6 -1: UNWRAP
+16 -1: AbstractSet.java
+3 -1: CAT
+36 -1: java/lang/annotation/RetentionPolicy
+14 -1: getParameters0
+8 -1: .Handler
+33 -1: Ljava/lang/IllegalStateException;
+10 -1: RAW_RETURN
+20 -1: java/lang/ClassValue
+16 -1: getDisplayString
+152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;I)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+67 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/Map<TK;TV;>;
+214 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+33 -1: java/lang/invoke/SerializedLambda
+42 -1: ([Ljava/lang/Object;II)[Ljava/lang/Object;
+22 -1: java/util/zip/ZipUtils
+9 -1: setDaemon
+26 -1: java/net/HttpURLConnection
+6 -1: mkdirs
+20 -1: (Ljava/io/Reader;I)V
+28 -1: (IC)Ljava/lang/StringBuffer;
+45 -1: ([Ljava/lang/Class<*>;I)[Ljava/lang/Class<*>;
+29 -1: java/lang/invoke/MethodHandle
+28 -1: sun/misc/CompoundEnumeration
+6 -1: setVal
+23 -1: INTERNED_ARGUMENT_LIMIT
+4 -1: NULL
+49 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class;)Z
+43 -1: java/util/Collections$UnmodifiableSortedMap
+39 -1: (Ljava/lang/Object;Ljava/lang/Object;)I
+6 -1: ([JJ)I
+19 -1: java/io/PrintWriter
+25 -1: ()Ljava/lang/ThreadGroup;
+5 -1: (IJ)J
+16 -1: onMalformedInput
+15 -1: decrementAndGet
+11 -1: -2147483648
+6 -1: reduce
+12 -1: asCharBuffer
+39 -1: (Ljava/lang/Object;Ljava/lang/Object;)V
+44 -1: (Ljava/util/SortedSet;)Ljava/util/SortedSet;
+9 -1: backtrace
+3 3: Bar
+47 -1: ()Lsun/misc/JavaSecurityProtectionDomainAccess;
+39 -1: (Ljava/lang/Object;Ljava/lang/Object;)Z
+5 -1: (IJ)V
+6 -1: ([JJ)V
+22 -1: ([Ljava/lang/Thread;)I
+5 -1: (IJ)Z
+7 -1: ([BII)I
+79 -1: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
+12 -1: getUnchecked
+10 -1: getBaseURL
+36 -1: (Ljava/lang/Object;)Ljava/util/List;
+53 -1: (Ljava/util/function/Function;)Ljava/util/Comparator;
+10 -1: getComment
+7 -1: ([BII)V
+30 -1: privateGetDeclaredConstructors
+58 -1: (Ljava/lang/String;ZILjava/util/Locale;)Ljava/lang/String;
+18 -1: unknown era name: 
+13 -1: invokeSpecial
+9 -1: checkLink
+16 -1: cspc8codepage437
+6 -1: stream
+18 -1: sun/nio/cs/UTF_8$1
+18 -1: contextClassLoader
+50 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
+30 -1: sun/util/calendar/BaseCalendar
+11 -1: enumeration
+18 -1: key can't be empty
+137 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
+10 -1: getBoolean
+5 -1: eetop
+49 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/String;
+43 -1: sun/reflect/generics/scope/ConstructorScope
+13 -1: CANADA_FRENCH
+39 -1: Ljava/nio/channels/ReadableByteChannel;
+15 -1: java/lang/Float
+29 -1: DIRECTIONALITY_OTHER_NEUTRALS
+52 -1: (ZLjava/nio/charset/Charset;Ljava/io/OutputStream;)V
+8 -1: appendTo
+19 -1: PARAGRAPH_SEPARATOR
+16 -1: (Unknown Source)
+4 -1: tree
+38 -1: (I[C)Ljava/lang/AbstractStringBuilder;
+14 -1: VerifierStream
+48 -1: (Ljava/util/Collection<TE;>;Ljava/lang/Object;)V
+15 -1: releaseInflater
+20 -1: getHeaderNamesInList
+17 -1: getSystemPackages
+8 -1: teardown
+6 -1: (BZI)I
+10 -1: checkWrite
+19 -1: JavaLangAccess.java
+31 -1: Ljava/lang/ClassValue$Identity;
+50 -1: (Ljava/util/concurrent/CountedCompleter;[S[SIIII)V
+24 -1: getDeclaredConstructors0
+3 -1: /..
+3 -1: /./
+16 -1: hashCodeForCache
+18 -1: Property settings:
+26 -1: Illegal initial capacity: 
+10 -1: text/plain
+61 -1: (Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
+24 -1: createMemoryManagerMBean
+10 -1: ,lastRule=
+9 -1: GMT-00:00
+5 -1: mtime
+40 -1: (Ljava/lang/String;I)[Ljava/lang/String;
+11 -1: (TT;TV;)TV;
+154 -1: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B[B)Ljava/lang/reflect/Method;
+41 -1: (Ljava/util/jar/JarFile;)Ljava/util/List;
+43 -1: (JILjava/lang/Object;)Ljava/nio/ByteBuffer;
+19 -1: MethodTypeForm.java
+21 -1: java/util/jar/JarFile
+30 -1: java/lang/Integer$IntegerCache
+22 -1: getDisplayVariantArray
+6 -1: setAll
+13 -1: ClassValueMap
+52 -1: (Ljava/security/PublicKey;Ljava/security/Provider;)V
+51 -1: java/util/concurrent/ConcurrentHashMap$BaseIterator
+59 -1: (Ljava/lang/Runnable;Ljava/security/AccessControlContext;)V
+100 -1: (Ljava/util/concurrent/ConcurrentMap;Ljava/util/function/BiFunction;)Ljava/util/function/BiConsumer;
+8 -1: default 
+13 -1: compareAndSet
+10 -1: iso8859-13
+9 -1: putShortB
+14 -1: skipDelimiters
+28 -1: URI has a fragment component
+10 -1: iso8859-15
+42 -1: (Ljava/net/Proxy;)Ljava/net/URLConnection;
+23 -1: needsPackageAccessCheck
+9 -1: putShortL
+3 -1: //[
+69 -1: (Ljava/security/AccessControlContext;Ljava/security/DomainCombiner;)V
+18 -1: too many arguments
+35 -1: ([III)Ljava/util/Spliterator$OfInt;
+10 -1: CopiesList
+10 -1: iso-8859-1
+9 -1: ([BII[C)I
+10 -1: iso-8859-2
+11 -1: returnCount
+10 -1: iso-8859-4
+10 -1: iso-8859-5
+8 -1: utf_16be
+10 -1: iso-8859-7
+9 -1: isLimited
+9 -1: parseByte
+10 -1: iso-8859-9
+13 -1: , s.length() 
+10 -1: matchCerts
+14 -1: RECURSIVE_CHAR
+11 -1: reduceToInt
+11 -1: displayName
+9 -1: calendars
+64 -1: (Ljava/lang/String;ZLjava/util/jar/JarEntry;)Lsun/misc/Resource;
+11 -1: isProtected
+78 -1: (Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/SortedMap;
+4 -1: trim
+20 -1: java/nio/FloatBuffer
+17 -1: PreHashedMap.java
+74 -1: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Ljava/lang/String;>;
+22 -1: ([S)Ljava/lang/String;
+19 -1: PrintStreamOrWriter
+38 -1: java/util/Collections$EmptyEnumeration
+22 -1: java/util/LinkedList$1
+13 -1: sunpkcs11.jar
+25 -1: java/nio/DirectByteBuffer
+96 -1: (ZLjava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+7 -1: isArray
+43 -1: (Ljava/lang/String;)Ljava/util/Enumeration;
+52 -1: java/lang/invoke/MethodHandleImpl$AsVarargsCollector
+59 -1: (Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class<*>;
+26 -1: setJavaNetHttpCookieAccess
+15 -1: wrongTargetType
+57 -1: java/util/concurrent/ConcurrentHashMap$ForEachMappingTask
+33 -1: [Ljava/lang/reflect/TypeVariable;
+5 -1: load0
+39 -1: (Ljava/lang/String;)Ljava/lang/Boolean;
+21 -1: isHeldByCurrentThread
+14 -1: outOfBoundsMsg
+30 -1: Ljava/lang/ref/Reference$Lock;
+11 -1: ISO-8859-13
+84 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
+11 -1: ISO-8859-15
+40 -1: (Ljava/net/URL;)Ljava/net/URLConnection;
+84 -1: <T:Ljava/lang/Object;:Ljava/lang/Comparable<-TT;>;>(Ljava/util/Collection<+TT;>;)TT;
+38 -1: sun/reflect/generics/scope/MethodScope
+5 -1: mutex
+11 -1: loaderTypes
+8 -1: defaults
+22 -1: getActualTypeArguments
+41 -1: DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
+4 -1: keys
+71 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+94 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;
+113 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+12 -1: checkConnect
+39 -1: (Ljava/lang/String;Ljava/util/Locale;)V
+26 -1: ([CII[C)Ljava/lang/String;
+12 -1: isDoubleWord
+37 -1: configparser  JAAS ConfigFile parsing
+27 -1: sun/misc/Perf$GetPerfAction
+44 -1: (Ljava/util/Collections$UnmodifiableList;I)V
+4 -1: acos
+26 -1: java/nio/DirectLongBufferS
+7 -1: (ITE;)V
+14 -1: putIntVolatile
+24 -1: setContentHandlerFactory
+26 -1: java/nio/DirectLongBufferU
+10 -1: fieldCount
+11 -1: invokeBasic
+50 -1: (Ljava/util/zip/ZipEntry;)Ljava/util/jar/JarEntry;
+24 -1: java/util/Locale$Builder
+9 -1: setParent
+11 -1: asLifoQueue
+33 -1: lambda$comparingDouble$8dcf42ea$1
+24 -1: (Ljava/lang/Throwable;)I
+35 -1: (Lsun/misc/JavaUtilZipFileAccess;)V
+49 -1: (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;
+10 -1: CLASS_PATH
+6 -1: tclass
+11 -1: getExponent
+23 -1: getAnnotatedReturnType0
+18 -1: checkPackageAccess
+35 -1: Can not instantiate java.lang.Class
+24 -1: (Ljava/lang/Throwable;)V
+195 -1: (Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/BoundMethodHandle$SpeciesData;Ljava/lang/invoke/BoundMethodHandle$SpeciesData;)Ljava/lang/invoke/LambdaForm;
+17 -1: Empty replacement
+3 -1: .SF
+14 -1: ByteOrder.java
+39 -1: ()Lsun/util/calendar/BaseCalendar$Date;
+35 -1: ()[Ljava/security/ProtectionDomain;
+12 -1: setElementAt
+30 -1: (Ljava/security/CodeSource;Z)Z
+45 -1: (Ljava/lang/Class<*>;)Ljava/lang/ClassLoader;
+52 -1: (Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
+13 -1: foldArguments
+23 -1: java/time/LocalDateTime
+30 -1: [Lsun/launcher/LauncherHelper;
+16 -1: 0123456789abcdef
+60 -1: (Ljava/util/Spliterator$OfInt;Z)Ljava/util/stream/IntStream;
+33 -1: (ILjava/lang/String;IIIIIIIIIII)V
+20 -1: DMH.newInvokeSpecial
+28 -1: java/nio/charset/CoderResult
+33 -1: sun/nio/cs/StandardCharsets$Cache
+11 -1: saveConvert
+14 -1: ExtClassLoader
+12 -1: parentOrNull
+20 -1: insertParameterTypes
+32 -1: (II)Ljava/util/stream/IntStream;
+13 -1: setStackTrace
+20 -1:  is not an enum type
+3 -1: CNT
+4 -1: host
+85 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;)Ljava/util/function/IntConsumer;
+11 -1: batchRemove
+8 -1: newField
+16 5: sun/nio/cs/UTF_8
+104 -1: (Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)Ljava/lang/invoke/LambdaForm$Name;
+8 -1: saturday
+35 -1: java/util/ArraysParallelSortHelpers
+15 -1: java/util/Queue
+40 -1: (Ljava/lang/Class<*>;)Ljava/lang/String;
+7 -1: toChars
+5 -1: first
+17 -1: ArrayDecoder.java
+30 -1: ()Lsun/reflect/MethodAccessor;
+26 -1: thread group can't be null
+13 -1: IllegalName: 
+32 -1: java/util/Collections$SetFromMap
+14 -1: line.separator
+17 -1: getDeclaredMethod
+10 -1: getMinutes
+35 -1: (Lsun/util/locale/BaseLocale$Key;)I
+40 -1: ([Ljava/lang/String;)Ljava/lang/Process;
+31 -1: Ljava/util/LinkedHashMap$Entry;
+13 -1: , str.length 
+8 -1: getProbe
+6 -1: ([DI)I
+5 -1: (CI)I
+23 -1: saveAndRemoveProperties
+6 -1: rehash
+3 -1: lcb
+31 -1: Ljava/util/Arrays$NaturalOrder;
+55 -1: (IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
+10 -1: loadFactor
+15 -1: putLongVolatile
+34 -1: sun/misc/URLClassPath$FileLoader$1
+12 -1: Europe/Paris
+8 -1: DECEMBER
+86 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Lsun/misc/Launcher$AppClassLoader;>;
+22 -1: getImplMethodSignature
+38 -1: Malformed enclosing method information
+8 -1: maskNull
+3 -1: lct
+21 -1: CONSTRUCTOR_MODIFIERS
+36 -1: ()Lsun/misc/JavaNetHttpCookieAccess;
+12 -1: HashIterator
+84 -1: (Ljava/lang/Class;Ljava/lang/Class$AnnotationData;Ljava/lang/Class$AnnotationData;)Z
+33 -1: java/lang/Character$UnicodeScript
+5 -1: toHex
+27 -1: java/security/AllPermission
+17 -1: appendReplacement
+20 -1: SimpleImmutableEntry
+18 -1: getRequestProperty
+12 -1: compareCerts
+44 -1: java/util/ArrayPrefixHelpers$IntCumulateTask
+19 -1: makeSpreadArguments
+222 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
+8 -1: addFirst
+6 -1: nextUp
+35 -1: (Ljava/net/ContentHandlerFactory;)V
+40 -1: (Ljava/lang/String;)Ljava/lang/Class<*>;
+23 -1: java/util/LocaleISOData
+14 -1: PREPARED_FORMS
+6 -1: FJByte
+20 -1: getGenericSuperclass
+6 -1: offset
+16 -1: LocaleUtils.java
+12 -1: isUnresolved
+18 -1: aliases_ISO_8859_1
+18 -1: aliases_ISO_8859_2
+15 -1: isSurrogatePair
+18 -1: aliases_ISO_8859_4
+18 -1: aliases_ISO_8859_5
+6 -1: EXTLEN
+18 -1: aliases_ISO_8859_7
+15 -1: Comparator.java
+18 -1: aliases_ISO_8859_9
+15 -1: ISO_8859-2:1987
+22 -1: Ljava/util/List<+TE;>;
+16 -1: Unknown Category
+3 -1: CST
+51 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;
+6 -1: FRIDAY
+40 -1: (Ljava/lang/String;ZZ)Ljava/lang/String;
+13 -1: isInterrupted
+8 -1: utf_16le
+89 -1: (BLjava/lang/Class<*>;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
+22 -1: checkInvocationCounter
+12 -1: EPOCH_OFFSET
+35 -1: (JJILjava/nio/DirectByteBuffer$1;)V
+7 -1: canRead
+9 -1: getLoader
+18 -1: publicConstructors
+23 -1: factory already defined
+33 -1: java/lang/ref/ReferenceQueue$Null
+37 -1: (Ljava/util/List;Ljava/util/Random;)V
+25 -1: setPackageAssertionStatus
+20 -1: MapReduceEntriesTask
+11 -1: OPEN_DELETE
+35 -1: (Ljava/util/Set;Ljava/lang/Class;)V
+9 -1: rootGroup
+10 -1: updateForm
+22 -1: JavaUtilJarAccess.java
+3 -1: CTT
+57 -1: (Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Constructor;
+82 -1: <T:Ljava/lang/Object;>(Ljava/util/NavigableSet<TT;>;)Ljava/util/NavigableSet<TT;>;
+13 -1: getReturnType
+34 -1: java/util/HashMap$EntrySpliterator
+14 -1: TIME_UNDEFINED
+32 -1: com/sun/crypto/provider/AESCrypt
+7 -1: H_DIGIT
+20 -1: clearAssertionStatus
+44 -1: java/lang/invoke/MethodHandleImpl$BindCaller
+8 -1: scloader
+6 -1: IBM923
+5 -1: read0
+5 -1: read1
+4 -1: true
+9 -1: BA_HIDDEN
+16 -1: jvmUpdateVersion
+36 -1: java/lang/StringCoding$StringDecoder
+37 -1: (J)Ljava/nio/file/attribute/FileTime;
+3 -1: lib
+17 -1: getParameterTypes
+15 -1: FinalizerThread
+31 -1: ()Lsun/util/calendar/Gregorian;
+50 -1: (Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;
+13 -1: PROP_SETTINGS
+33 -1: java/util/function/BinaryOperator
+70 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
+25 -1: getDefaultRequestProperty
+27 -1: (Ljava/util/jar/JarEntry;)V
+27 -1: SPLITERATOR_CHARACTERISTICS
+18 -1: FieldAccessor.java
+10 -1: setComment
+62 -1: (Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;
+11 -1: array_klass
+39 -1: ()Ljava/lang/Class$EnclosingMethodInfo;
+67 -1: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;)I
+9 -1: (II[CII)I
+50 -1: (Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V
+20 -1: SPECIFICATION_VENDOR
+72 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/net/URL;)Ljava/util/jar/JarFile;
+87 -1: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;TT;)V
+9 -1: isVarArgs
+10 -1: setBoolean
+12 -1: (TK;TV;TV;)Z
+16 -1: findSharedClass0
+5 -1: csize
+49 -1: Ljava/security/cert/CertificateEncodingException;
+40 -1: java/util/concurrent/locks/ReentrantLock
+86 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;
+5 -1: ready
+38 -1: Ljava/security/AccessControlException;
+28 -1: UnmodifiableRandomAccessList
+69 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/function/BinaryOperator<TT;>;)V
+27 -1: Ljava/lang/invoke/Invokers;
+39 -1: java/util/LinkedList$DescendingIterator
+11 -1: writeFields
+17 -1: classLoaderDepth0
+18 -1: permutedTypesMatch
+52 -1: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;
+12 -1: linkToStatic
+10 -1: CheckedMap
+6 -1: CENOFF
+8 -1: lastRule
+15 -1: java/lang/Short
+39 -1: ()Ljava/lang/Class$ReflectionData<TT;>;
+8 -1: nextDown
+14 -1: image/x-pixmap
+39 -1: (Ljava/lang/Class;[Ljava/lang/Object;)V
+25 -1: defineClassSourceLocation
+23 -1: sun/misc/PostVMInitHook
+15 -1: could not load 
+16 -1: allowArraySyntax
+90 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/io/BufferedInputStream;[B>;
+10 -1: putBoolean
+11 -1:  has params
+14 -1: setMaxPriority
+10 -1: mayContain
+46 -1: java/lang/reflect/MalformedParametersException
+10 -1: baseLocale
+14 -1: isSubwordOrInt
+10 -1: nextDouble
+32 -1: java/lang/Character$UnicodeBlock
+85 -1: (JLjava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)D
+20 -1: numberOfLeadingZeros
+59 -1: (I[Ljava/lang/Class<*>;)[Ljava/lang/invoke/LambdaForm$Name;
+7 -1: setSize
+29 -1: java/io/FileNotFoundException
+9 -1: getString
+24 -1: ([CII)Ljava/lang/String;
+38 -1: (Ljava/lang/String;Ljava/lang/Class;)V
+5 -1: shift
+18 -1: getConstructorSlot
+41 -1: java/lang/ThreadLocal$SuppliedThreadLocal
+16 -1: UNASSIGNED_STACK
+20 -1: Malformed class name
+12 -1: ofEpochMilli
+34 -1: sun/launcher/LauncherHelper$StdArg
+33 -1: java/nio/ByteBufferAsShortBufferB
+7 -1: convert
+21 -1: ()[Ljava/util/Locale;
+15 -1: ISO_8859-5:1988
+35 -1: av[0] not instace of MethodHandle: 
+33 -1: java/nio/ByteBufferAsShortBufferL
+5 -1: hypot
+16 -1: InputStream.java
+13 -1: reinvokerForm
+39 -1: JVMTI_THREAD_STATE_WAITING_INDEFINITELY
+16 -1: sun/misc/Version
+66 -1: <T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)[TT;
+11 -1: codePointAt
+30 -1: ([Ljava/lang/reflect/Method;)V
+9 -1: duplicate
+9 -1: interface
+5 -1: X.509
+24 -1: SynchronizedNavigableSet
+8 -1: us-ascii
+17 -1: getUnresolvedType
+21 -1: PRIVATE_USE_EXTENSION
+4 -1: form
+93 -1: (Ljava/util/ArrayPrefixHelpers$LongCumulateTask;Ljava/util/function/LongBinaryOperator;[JII)V
+27 -1: sealing violation: package 
+34 -1: RuntimeVisibleParameterAnnotations
+17 -1: LF_INVSTATIC_INIT
+14 -1: Gregorian.java
+32 -1: java/util/function/UnaryOperator
+3 -1: log
+3 -1: low
+22 -1: sun/misc/JavaNetAccess
+9 -1: getLength
+21 -1: getRawTypeAnnotations
+36 -1: (Ljava/lang/String;)Ljava/lang/Long;
+9 -1: getNumber
+66 -1: (ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
+20 -1: (Ljava/lang/Class;)C
+89 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>;
+6 -1: ENDSIG
+20 -1: (Ljava/lang/Class;)I
+20 -1: (Ljava/lang/Class;)J
+24 -1: [[Ljava/io/Serializable;
+22 -1: serialPersistentFields
+7 -1: console
+142 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+27 -1: (Ljava/nio/ByteBuffer;ICZ)V
+20 -1: (Ljava/lang/Class;)V
+40 -1: java/lang/ArrayIndexOutOfBoundsException
+6 -1: this$0
+51 -1: (Ljava/lang/invoke/MemberName;[Ljava/lang/Object;)V
+18 -1: packageAccessValid
+33 -1: ([Ljava/lang/StackTraceElement;)V
+8 -1: constant
+113 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;IILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class<*>;
+8 -1: isMethod
+20 -1: (Ljava/lang/Class;)Z
+6 -1: ENDSIZ
+8 -1: newEntry
+57 -1: (Ljava/lang/Object;)Ljava/lang/IndexOutOfBoundsException;
+25 -1: (Ljava/util/Comparator;)V
+8 -1: isBridge
+6 -1: ([BI)I
+6 -1: ([BI)J
+16 -1: getReferenceKind
+26 -1: [Ljava/security/Principal;
+71 -1: (Ljava/lang/Class;[Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
+32 -1: ()Ljava/lang/ClassValue$Version;
+16 -1: SearchValuesTask
+17 -1: setCompressedSize
+16 -1: DEFAULT_CAPACITY
+108 -1: <K:Ljava/lang/Object;V::Ljava/lang/Comparable<-TV;>;>()Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
+27 -1: java/util/ComparableTimSort
+41 -1: null StackTraceElement in serial stream. 
+6 -1: ([BI)V
+44 -1: (Ljava/util/jar/JarFile;)Lsun/misc/JarIndex;
+71 -1: (Ljava/util/jar/JarFile;Ljava/util/Enumeration;)Ljava/util/Enumeration;
+52 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Z
+36 -1: [Ljava/lang/reflect/TypeVariable<*>;
+17 -1: OutputStream.java
+8 -1: combiner
+15 -1: decodeArrayLoop
+19 -1: (Ljava/io/Writer;)V
+41 -1: (Ljava/util/List<*>;Ljava/util/List<*>;)I
+35 -1: ()[Ljava/security/cert/Certificate;
+33 -1: ([I)Ljava/util/Spliterator$OfInt;
+9 -1: NF_asType
+17 -1: java/io/Closeable
+11 -1: updateBytes
+12 -1: charsets.jar
+18 -1: getDeclaredFields0
+47 -1: (Ljava/lang/Object;I)Ljava/lang/reflect/Member;
+60 -1: (Ljava/lang/String;ILjava/lang/String;)Ljava/nio/ByteBuffer;
+15 -1: getTotalSeconds
+57 -1: (Ljava/util/Collection<+Ljava/util/Map$Entry<TK;TV;>;>;)Z
+4 -1: JULY
+10 -1: Exceptions
+41 -1: ()Ljava/util/List<Ljava/io/IOException;>;
+14 -1: ParseUtil.java
+13 -1: getJarFileURL
+29 -1: setJavaIOFileDescriptorAccess
+24 -1: ARRAY_OBJECT_BASE_OFFSET
+21 -1: onUnmappableCharacter
+53 -1: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
+24 -1: MethodHandleNatives.java
+40 -1: java/nio/charset/MalformedInputException
+37 -1: [Ljava/lang/reflect/AnnotatedElement;
+15 -1: CLASSPATH_CHARS
+18 -1: [Ljava/lang/Class;
+7 -1: FJFloat
+47 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;I)V
+19 -1: Ljava/lang/Runtime;
+23 -1: java/lang/CharacterData
+42 -1: (Ljava/lang/Void;Ljava/lang/ClassLoader;)V
+76 -1: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)V
+56 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;B)V
+19 -1: java/util/zip/CRC32
+33 -1: <T:Ljava/lang/Object;>([TT;I)[TT;
+22 -1: ([F)Ljava/lang/String;
+5 -1: UTF_8
+20 -1: aliases_UTF_32BE_BOM
+11 -1: Buffer.java
+78 -1: <T:Ljava/lang/Object;>(Ljava/util/Comparator<TT;>;)Ljava/util/Comparator<TT;>;
+44 -1: (Ljava/lang/String;)Ljava/util/zip/ZipEntry;
+9 -1: malformed
+4 -1: JUNE
+51 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarFile$1;)V
+6 -1: locale
+34 -1: (Ljava/util/function/BiFunction;)V
+10 -1: setMinutes
+40 -1: (Ljava/lang/reflect/AccessibleObject;Z)V
+12 -1: maybeCompile
+46 -1: (Ljava/lang/Class;Ljava/lang/reflect/Method;)V
+7 -1: getEras
+55 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/Iterator<*>;)[TT;
+17 -1: toUnsignedString0
+32 -1: (Ljava/lang/invoke/MethodType;)V
+32 -1: (Ljava/lang/invoke/MethodType;)Z
+10 -1: Class.java
+27 -1: ()Ljava/util/Iterator<TK;>;
+29 -1: WINDOWS_EPOCH_IN_MICROSECONDS
+41 -1: (Ljava/io/InputStream;)Ljava/lang/String;
+4 -1: prev
+24 -1: ()Ljava/util/Properties;
+11 -1: awaitBooted
+19 -1: generateConstructor
+22 -1: sun/misc/SharedSecrets
+19 -1: getDateTimeInstance
+43 -1: (IIILsun/util/calendar/BaseCalendar$Date;)J
+5 -1: setID
+11 -1: Locale.java
+12 -1: getRootGroup
+15 -1: setLastModified
+7 -1: trouble
+28 -1: (Z)Ljava/lang/StringBuilder;
+5 -1: setIO
+17 -1: loadClassInternal
+23 -1: java/lang/ref/Finalizer
+8 -1: EmptySet
+16 -1: aliases_UTF_16BE
+50 -1: (Ljava/util/NavigableMap;)Ljava/util/NavigableMap;
+15 -1: unmodifiableMap
+48 -1: (Ljava/lang/Class<*>;)Lsun/reflect/ConstantPool;
+15 -1: arrayContentsEq
+7 -1: EXT_TAG
+31 -1: (Ljava/util/HashMap$TreeNode;)Z
+5 -1: cp737
+22 -1: java/util/zip/Checksum
+5 -1: names
+22 -1: ConcurrentHashMap.java
+7 -1: ([J[J)Z
+7 -1: WAITING
+31 -1: sun.launcher.resources.launcher
+14 -1: getThreadGroup
+8 -1: PutField
+12 -1: hugeCapacity
+9 -1: isPackage
+72 -1: (Ljava/lang/ThreadLocal<*>;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+23 7: sun/nio/ch/DirectBuffer
+13 -1: Checksum.java
+25 -1: (Ljava/nio/ByteBuffer;I)C
+51 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
+25 -1: (Ljava/nio/ByteBuffer;I)D
+7 -1: treeify
+25 -1: (Ljava/nio/ByteBuffer;I)F
+5 -1: setIn
+25 -1: (Ljava/nio/ByteBuffer;I)I
+20 -1: TRACE_METHOD_LINKAGE
+25 -1: (Ljava/nio/ByteBuffer;I)J
+7 -1: putIntB
+22 -1: createGarbageCollector
+50 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)[TT;
+25 -1: (Ljava/nio/ByteBuffer;I)S
+7 -1: putIntL
+19 -1: (B)Ljava/lang/Byte;
+14 -1: Hashtable.java
+29 -1: java/lang/ArrayStoreException
+11 -1: all_allowed
+16 -1: getLastRawOffset
+7 -1: inReady
+36 -1: java/lang/ThreadLocal$ThreadLocalMap
+40 -1: (ILjava/lang/String;Ljava/lang/String;)V
+23 -1: Ljava/lang/ThreadLocal;
+16 -1: classValueOrNull
+62 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/MethodHandle;
+23 -1: preparedFieldLambdaForm
+22 -1: (Z)Ljava/lang/Boolean;
+14 -1: ThreadLocalMap
+27 -1: java/lang/StackTraceElement
+13 -1: getEntryCSize
+19 -1: java.security.debug
+53 -1: (Ljava/util/Collection<*>;Ljava/util/Collection<*>;)Z
+6 -1: LOCLEN
+40 -1: Ljava/lang/Class<Ljava/lang/Character;>;
+6 -1: (JJB)V
+66 -1: Ljava/util/Hashtable<Ljava/lang/String;Ljava/net/ContentHandler;>;
+31 -1: [[Ljava/lang/StackTraceElement;
+9 -1: putStatic
+16 -1: Asia/Ho_Chi_Minh
+15 -1: getDisplayNames
+13 -1: convertToAbbr
+23 -1: Method not implemented.
+15 -1: isCCLOverridden
+14 -1: doubleCapacity
+137 -1: (Ljava/lang/Class<*>;ZLjava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
+219 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
+7 -1: native 
+29 -1: (Ljava/lang/reflect/Field;Z)V
+18 -1: Ljava/util/Locale;
+31 -1: Ljava/util/concurrent/TimeUnit;
+16 -1: threadsSuspended
+7 -1: ([III)V
+20 -1: setMaxDelimCodePoint
+18 -1: contentClassPrefix
+13 -1: mappingOffset
+10 -1: toIndex = 
+47 -1: (Ljava/lang/CharSequence;)Ljava/io/PrintStream;
+12 -1: booleanValue
+13 -1: putMapEntries
+17 -1: defaultBundleName
+50 -1: (Ljava/util/concurrent/CountedCompleter;[B[BIIII)V
+10 -1: executable
+20 -1: java/time/ZoneOffset
+28 -1: java/lang/ref/FinalReference
+11 -1: newTreeNode
+7 -1: lookup2
+10 -1: TableStack
+59 -1: Ljava/util/concurrent/ConcurrentHashMap$ValuesView<TK;TV;>;
+11 -1: getAccessor
+9 -1: available
+18 -1: java/io/FileReader
+34 -1: java/security/ProtectionDomain$3$1
+16 -1: integer overflow
+11 -1: internTable
+28 -1: Ljava/util/HashMap$TreeNode;
+19 -1: | invocationCounter
+12 -1: findResource
+9 -1: isLoaded0
+5 -1: cp775
+24 -1: DIRECTIONALITY_UNDEFINED
+9 -1: isInvalid
+7 -1: lookupN
+35 -1: (Lsun/reflect/MethodAccessorImpl;)V
+6 -1: ENDSUB
+4 -1:  to 
+59 -1: ([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;
+10 -1: meta-index
+6 -1: INDENT
+9 -1: WEDNESDAY
+40 -1: ()Ljava/lang/annotation/RetentionPolicy;
+14 -1: getUsableSpace
+7 -1: TUESDAY
+51 -1: (Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
+12 -1: getSubjectDN
+21 -1: Ljava/io/InputStream;
+25 -1: (IC)Ljava/nio/CharBuffer;
+52 -1: (Ljava/nio/CharBuffer;)Ljava/util/function/Supplier;
+17 -1: ()[Ljava/net/URL;
+6 -1: search
+10 -1: Main-Class
+8 -1: ([CIIC)I
+16 -1: Certificate.java
+14 -1: spreadInvokers
+22 -1: sun/nio/cs/ISO_8859_15
+6 -1: accept
+18 -1: ReflectAccess.java
+13 -1: java/nio/Bits
+14 -1: linkToCallSite
+46 -1: Ljava/nio/charset/UnsupportedCharsetException;
+8 -1: ([CIIC)V
+9 -1: (TT;TV;)V
+26 -1: java/lang/OutOfMemoryError
+34 -1: policy        loading and granting
+76 -1: (Ljava/nio/CharBuffer;ILjava/nio/ByteBuffer;I)Ljava/nio/charset/CoderResult;
+13 -1: x-windows-949
+21 -1: Ljava/io/PrintStream;
+9 -1: initNames
+12 -1: testAnyFlags
+65 -1: (Ljava/lang/reflect/Method;)Ljava/lang/invoke/DirectMethodHandle;
+34 -1: (Ljava/util/List;)Ljava/util/List;
+10 -1: CacheEntry
+10 -1: hasAllPerm
+26 -1: java/nio/charset/Charset$1
+26 -1: java/nio/charset/Charset$2
+19 -1: ()Ljava/util/Stack;
+26 -1: java/nio/charset/Charset$3
+62 -1: (Ljava/lang/String;)Lsun/util/calendar/LocalGregorianCalendar;
+23 -1: ARRAY_FLOAT_INDEX_SCALE
+23 -1: (Ljava/lang/Object;IS)V
+13 -1: x-windows-950
+31 -1: Ljava/util/Hashtable$Entry<**>;
+87 -1: Ljava/util/WeakHashMap<Ljava/lang/ClassValue$Identity;Ljava/lang/ClassValue$Entry<*>;>;
+9 -1: permClass
+37 -1: (Ljava/security/ProtectionDomain$3;)V
+99 -1: <S::Lsun/reflect/generics/tree/Signature;>Lsun/reflect/generics/repository/AbstractRepository<TS;>;
+37 -1: ()Ljava/util/function/BinaryOperator;
+64 -1: java/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap
+91 -1: (Ljava/util/ArrayPrefixHelpers$IntCumulateTask;Ljava/util/function/IntBinaryOperator;[III)V
+6 -1: getCrc
+25 -1: ByteArrayInputStream.java
+9 -1: SYNTHETIC
+52 -1: Ljava/lang/ref/PhantomReference<Ljava/lang/Object;>;
+246 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
+38 -1: java/lang/Throwable$WrappedPrintStream
+21 -1: Illegal load factor: 
+43 -1: Ljava/util/Deque<Ljava/util/zip/Inflater;>;
+3 -1: map
+6 -1: expand
+6 -1: access
+3 -1: max
+33 -1: impliesCreateAccessControlContext
+3 -1: may
+53 -1: java/util/concurrent/ConcurrentHashMap$ReduceKeysTask
+91 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Lsun/misc/URLClassPath$Loader;>;
+60 -1: attempt to add a Permission to a readonly Permissions object
+21 -1: canonicalizeExtension
+11 -1: copyValueOf
+25 -1: (IJ)Ljava/nio/LongBuffer;
+112 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
+11 -1: DeqIterator
+11 -1: SpeciesData
+8 -1: getCause
+16 -1: aliases_UTF_16LE
+51 -1: (TT;TV;Ljava/util/function/BinaryOperator<TV;>;)TV;
+25 -1: (JF)Ljava/nio/ByteBuffer;
+16 -1: sun/misc/IOUtils
+32 -1: Ljava/util/Locale$FilteringMode;
+6 -1: .class
+13 -1: getPermission
+13 -1: startsWithLOC
+8 -1: Identity
+23 -1: ([BII)Ljava/lang/Class;
+15 -1: putByteVolatile
+36 -1: (Ljava/util/Deque;)Ljava/util/Queue;
+22 -1: (Ljava/lang/Object;S)V
+47 -1: java/util/concurrent/ConcurrentHashMap$BulkTask
+4 -1: n = 
+9 -1: (ITE;)TE;
+5 -1: zeroD
+18 -1: formatUnsignedLong
+29 -1:     default display locale = 
+23 -1: java/io/File$PathStatus
+5 -1: zeroF
+20 -1: Ljava/util/Set<TK;>;
+20 -1: (Ljava/util/List;I)V
+5 -1: zeroI
+5 -1: zeroJ
+7 -1: context
+39 -1: Ljava/nio/channels/WritableByteChannel;
+5 -1: zeroL
+34 -1: Lsun/util/calendar/CalendarSystem;
+24 -1: JVMTI_THREAD_STATE_ALIVE
+18 -1: (Ljava/util/Set;)V
+18 -1: (Ljava/util/Set;)Z
+42 -1: (TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V
+7 -1: entries
+30 -1: (Ljava/util/WeakHashMap;IIII)V
+15 -1: csisolatingreek
+38 -1: ([Ljava/lang/Class;)Ljava/lang/Object;
+12 -1: isMalformed3
+12 -1: isMalformed4
+5 -1: FJInt
+23 -1: java/util/LinkedHashMap
+20 -1: malformedInputAction
+12 -1: Charset.java
+5 -1: LLL_L
+42 -1: (Ljava/util/Collection;)Ljava/lang/Object;
+22 -1: makeMethodHandleInvoke
+3 -1: mdt
+7 -1: unicode
+12 -1: newInstance0
+10 -1: checkCerts
+34 -1: java/util/WeakHashMap$HashIterator
+23 -1: (Ljava/lang/Object;JI)I
+9 -1: hexDigits
+13 -1: javaToDosTime
+24 -1: (I)Ljava/nio/LongBuffer;
+6 -1: A_DATA
+12 -1: deepToString
+23 -1: (Ljava/lang/Object;JI)V
+91 -1: (JLjava/util/function/ToLongBiFunction<-TK;-TV;>;JLjava/util/function/LongBinaryOperator;)J
+23 -1: bad spread array length
+11 -1: readTimeout
+14 -1: toAbsolutePath
+8 -1: isFinite
+19 -1: currentLoadedClass0
+3 -1: \xef\xbf\xbd
+23 -1: (Ljava/nio/file/Path;)I
+8 -1: handlers
+21 -1: (Ljava/util/List;II)V
+89 -1: (Lsun/misc/URLClassPath$Loader;Ljava/lang/String;Ljava/net/URL;Ljava/net/URLConnection;)V
+8 -1: OVERFLOW
+8 -1: newTable
+8 -1: THURSDAY
+6 -1: notify
+12 -1: initialValue
+35 -1: (I)Ljava/util/LinkedList$Node<TE;>;
+18 -1: AsVarargsCollector
+26 -1: (Lsun/misc/JavaIOAccess;)V
+18 -1: ()Ljava/lang/Void;
+23 -1: (Ljava/nio/file/Path;)Z
+16 -1: MINUTE_IN_MILLIS
+67 -1: (Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
+18 -1: Ljava/util/Vector;
+70 -1: (Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;
+40 -1: (Ljava/lang/Object;ILjava/lang/Object;)V
+25 -1: UnresolvedPermission.java
+14 -1: ReduceKeysTask
+21 -1: ()[Ljava/lang/Object;
+129 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable;
+16 -1: ClassLoader.java
+46 -1: Ljava/util/Comparators$NaturalOrderComparator;
+17 -1: compareAndSwapInt
+22 -1: packageDefinitionValid
+41 -1: ([Ljava/lang/Object;[Ljava/lang/Object;)Z
+162 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;Ljava/util/Locale$FilteringMode;)Ljava/util/List<Ljava/lang/String;>;
+16 -1: sun.zip.zipFiles
+17 -1: java_runtime_name
+31 -1: (Ljava/lang/ClassValue$Entry;)V
+31 -1: (Ljava/lang/ClassValue$Entry;)Z
+30 -1: <T:Ljava/lang/Object;>(TT;)TT;
+39 -1: JavaSecurityProtectionDomainAccess.java
+24 -1: (I)Ljava/lang/Throwable;
+7 -1: FJShort
+9 -1: putFloatB
+19 -1: checkedNavigableSet
+25 -1: java/lang/invoke/Invokers
+18 -1: setIfModifiedSince
+14 -1: parameterTypes
+41 -1: (Ljava/lang/Object;Ljava/lang/Runnable;)V
+9 -1: putFloatL
+11 -1: getTypeCode
+5 -1: (ZZ)I
+24 -1: java/lang/ProcessBuilder
+9 -1: UNDERFLOW
+21 -1: VolatileCallSite.java
+24 -1: (C)Ljava/nio/CharBuffer;
+55 -1: java/util/concurrent/ConcurrentHashMap$ForEachValueTask
+26 -1: (Ljava/lang/String;[CII)[B
+18 -1: reduceKeysToDouble
+5 -1: (ZZ)Z
+23 -1: setCallSiteTargetNormal
+3 -1: min
+4 -1: ceil
+62 -1: (Ljava/lang/String;)Ljava/util/LinkedList<Ljava/lang/String;>;
+29 -1: (Ljava/util/AbstractList;II)V
+32 -1: Ljava/lang/Class$AnnotationData;
+21 -1: createFileExclusively
+64 -1: (Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData;
+26 -1: java/lang/Short$ShortCache
+54 -1: (Ljava/net/URL;Ljava/io/File;)Ljava/net/URLConnection;
+29 -1: Lsun/nio/cs/Surrogate$Parser;
+58 -1: (Ljava/lang/Class;)Lsun/reflect/annotation/AnnotationType;
+8 -1: findForm
+53 -1: Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;
+39 -1: (Lsun/misc/Perf;Ljava/nio/ByteBuffer;)V
+16 -1: mergePermissions
+11 -1: totalMemory
+53 -1: java/lang/invoke/DirectMethodHandle$EnsureInitialized
+139 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/concurrent/ConcurrentMap<TK;TV;>;Ljava/io/Serializable;
+29 -1: java/util/HashMap$KeyIterator
+20 -1: STACK_TRACE_SENTINEL
+5 -1: order
+18 -1: java/lang/Runnable
+8 -1: GetField
+13 -1: Empty command
+7 -1: CONTROL
+9 -1: blockedOn
+12 -1: testAllFlags
+11 -1: getInflater
+16 -1: threadTerminated
+44 -1: (Ljava/lang/ThreadGroup;Ljava/lang/String;)V
+20 -1: java.runtime.version
+8 -1: peekLast
+23 -1: java/util/ArrayList$Itr
+21 -1: (Ljava/util/Locale;)V
+13 -1: isOptimizable
+8 -1: FairSync
+7 -1: CHINESE
+15 -1: initHelpMessage
+30 -1: ()Ljava/util/HashMap$TreeNode;
+29 -1: Ljava/lang/SecurityException;
+7 -1: charset
+35 -1: sun/security/util/SecurityConstants
+19 -1: sun.nio.cs.bugLevel
+8 2: Foo.java
+49 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+12 -1: EntrySetView
+37 -1: (Lsun/misc/JavaNetHttpCookieAccess;)V
+35 -1: Ljava/util/Hashtable$Entry<TK;TV;>;
+20 -1: NF_constructorMethod
+8 -1: getMonth
+38 -1: (Ljava/util/Iterator;Ljava/util/Map;)V
+14 -1: getIntVolatile
+6 -1: [name=
+8 -1: oop_size
+20 -1: Can't load library: 
+30 -1: ()Ljava/util/Spliterator<TV;>;
+33 -1: Lsun/reflect/ConstructorAccessor;
+61 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Integer;>;
+15 -1: printVmSettings
+33 -1: stack         include stack trace
+45 -1: ([Ljava/lang/Object;I)Ljava/util/Spliterator;
+37 -1: sun/reflect/generics/scope/ClassScope
+36 -1: java/io/UnsupportedEncodingException
+24 -1: (J)Ljava/nio/LongBuffer;
+11 -1: addressSize
+15 -1: ByteBuffer.java
+62 -1: (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature;
+9 -1: (TT;TT;)I
+25 -1: java/io/DefaultFileSystem
+15 -1: BaseLocale.java
+14 -1: BitSetIterator
+17 -1: AbstractList.java
+57 -1: Ljava/lang/ref/WeakReference<Ljava/lang/ThreadLocal<*>;>;
+178 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+9 -1: arguments
+26 -1: java/util/Locale$LocaleKey
+9 -1: setLength
+29 -1: sun/nio/cs/ISO_8859_1$Decoder
+9 -1: zipfs.jar
+24 -1: Ljava/util/zip/ZipCoder;
+14 -1: , new state = 
+93 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V
+39 -1: java/security/PrivilegedExceptionAction
+9 -1: dnsns.jar
+20 -1: iteratorBinarySearch
+14 -1: initializePath
+22 -1: DefaultFileSystem.java
+17 -1: Ljava/util/Deque;
+8 -1: DEFLATED
+11 -1: Can't load 
+9 -1: ArrayList
+21 -1: negativeZeroFloatBits
+41 -1: (Ljava/lang/String;ILjava/util/Locale;)[C
+14 -1: ANSI_X3.4-1968
+39 -1: sun/reflect/annotation/AnnotationType$1
+3 -1: mod
+62 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/ByteBuffer;>;
+29 -1: interpretWithArgumentsTracing
+6 -1: getDay
+47 -1: sun/reflect/generics/repository/ClassRepository
+19 -1: refKindDoesDispatch
+20 -1: getAnnotationsByType
+14 -1: needsExpansion
+18 -1: lastIndexOfSubList
+26 -1: JavaUtilZipFileAccess.java
+59 -1: (Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
+12 -1: ptypesOffset
+8 -1: hashcode
+18 -1: ([Ljava/net/URL;)V
+8 -1: iso-ir-6
+7 -1: jzentry
+52 -1:               only dump output if specified codebase
+31 -1: lambda$comparingLong$6043328a$1
+5 -1: MARCH
+14 -1: ANSI_X3.4-1986
+14 -1: isMalformed3_2
+7 -1: IS_TYPE
+68 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/charset/Charset;>;
+30 -1: protocol doesn't support input
+17 -1: getExtClassLoader
+14 -1: setProxiedHost
+73 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
+16 -1: traceInterpreter
+17 -1: (Ljava/net/URL;)I
+5 -1: expm1
+18 -1: createInheritedMap
+66 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask
+17 -1: getTimeOfDayValue
+15 -1: zeroLengthArray
+20 -1: invalid permission: 
+6 -1: REPORT
+15 -1: isNumericString
+78 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
+6 -1: (TV;)Z
+25 -1: Lsun/misc/JavaLangAccess;
+29 -1: (I)Ljava/lang/reflect/Method;
+17 -1: (Ljava/net/URL;)V
+34 -1: ()Ljava/lang/Class$ReflectionData;
+50 -1: java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE
+10 -1: copyWith: 
+17 -1: (Ljava/net/URL;)Z
+32 -1: ()Ljava/util/stream/Stream<TE;>;
+22 -1: quickCheckMemberAccess
+29 -1: ()Lsun/net/www/MessageHeader;
+19 -1: getAssignedCombiner
+8 -1: ([JIIJ)I
+17 -1: formatUnsignedInt
+68 -1: <V:Ljava/lang/Object;>Ljava/util/AbstractMap<Ljava/lang/String;TV;>;
+34 -1: java/nio/ByteBufferAsDoubleBufferB
+32 -1: ([I)Ljava/util/stream/IntStream;
+9 -1: init_lock
+18 -1: must be resolved: 
+42 -1: ()Ljava/nio/channels/spi/SelectorProvider;
+8 -1: ([JIIJ)V
+33 -1: IncompatibleClassChangeError.java
+34 -1: java/nio/ByteBufferAsDoubleBufferL
+31 -1: ()Ljava/util/function/Function;
+43 -1: Ljava/lang/Enum<Ljava/io/File$PathStatus;>;
+17 -1: availableCharsets
+49 -1: java/util/ArraysParallelSortHelpers$FJChar$Sorter
+22 -1: permission=<classname>
+22 -1: getAnnotatedSuperclass
+20 -1: isObjectPublicMethod
+15 -1: Attempt to get 
+10 -1: createLong
+14 -1: HASH_INCREMENT
+32 -1: sun/management/ManagementFactory
+13 -1: separatorChar
+15 -1: bad field type 
+8 -1: november
+27 -1: (F)Ljava/lang/StringBuffer;
+3 -1: EAT
+3 -1: mst
+54 -1: (Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+18 -1: Ljava/lang/Object;
+7 -1: ;:&=+$,
+12 -1: Handler.java
+7 -1: isDirty
+127 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;[Ljava/security/Permission;)TT;
+14 -1: asTypeUncached
+5 -1: split
+200 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;Ljava/lang/reflect/Type;Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;)Ljava/lang/reflect/AnnotatedType;
+47 -1: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+22 -1: sun/invoke/empty/Empty
+66 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Map;
+18 -1: jvm_update_version
+32 -1: (Ljava/util/Map;)Ljava/util/Map;
+14 -1: cacheLoadLimit
+8 -1: javaHome
+52 -1: (Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;
+20 -1: [[Ljava/lang/Object;
+19 -1: isJavaLetterOrDigit
+11 -1: loadLibrary
+32 -1: java/io/StreamCorruptedException
+14 -1: setAccessible0
+27 -1: sun/nio/cs/UTF_16LE$Encoder
+60 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
+8 -1: segments
+10 -1: UTF_8.java
+3 -1: ECT
+5 -1: cp813
+5 -1: cp819
+61 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I
+5 -1: Cache
+4 -1: sinh
+32 -1: java/util/function/ToIntFunction
+10 -1: setFactory
+24 -1: Illegal mappings count: 
+16 -1: fileToEncodedURL
+38 -1: Ljava/lang/annotation/RetentionPolicy;
+27 -1: Ljava/net/SocketPermission;
+46 -1: (Ljava/lang/CharSequence;I)[Ljava/lang/String;
+11 -1: cardinality
+13 -1: getMonthValue
+64 -1: (Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodHandle;
+6 -1: ENDTOT
+12 -1: getBytesUTF8
+9 -1: cacheLoad
+13 -1: packageAccess
+14 -1: sharedToString
+5 -1: merge
+29 -1: parameter type cannot be void
+27 -1: makePreparedFieldLambdaForm
+40 -1: Couldn't find 3-letter country code for 
+166 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V
+19 -1: (Ljava/util/Map;Z)V
+13 -1: setExecutable
+17 -1: objectFieldOffset
+57 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+128 -1: (Ljava/lang/Class<*>;ZLjava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
+61 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask
+6 -1: asType
+25 -1: java/io/ObjectStreamField
+15 -1: jvmMajorVersion
+124 -1: (Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
+23 -1: (Ljava/lang/Class<*>;)C
+6 -1: andNot
+15 -1: getResponseCode
+59 -1: (Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder;
+23 -1: (Ljava/lang/Class<*>;)I
+7 -1: seeAllp
+44 -1: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
+13 -1: loadFromCache
+35 -1: sun/nio/cs/HistoricallyNamedCharset
+38 -1: (Ljava/lang/Class;[Ljava/lang/Class;)V
+19 -1: INVOKER_METHOD_TYPE
+16 -1: putShortVolatile
+12 -1: Asia/Karachi
+8 -1: cyrillic
+12 -1: getISO2Table
+23 -1: (Ljava/lang/Class<*>;)V
+3 -1: 1.4
+15 -1: LongBuffer.java
+6 -1: (IFZ)V
+23 -1: (Ljava/lang/Class<*>;)Z
+10 -1: initOutput
+9 -1: CELLSBUSY
+39 -1: java/security/PrivilegedActionException
+31 -1: sun/util/calendar/CalendarUtils
+202 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;[Ljava/lang/reflect/Type;Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;)[Ljava/lang/reflect/AnnotatedType;
+20 -1: Ljava/lang/Class<*>;
+5 -1: cp850
+25 -1: (JI)Ljava/nio/ByteBuffer;
+5 -1: cp852
+24 -1: Invalid parameter name "
+39 -1: ([CII)Ljava/lang/AbstractStringBuilder;
+5 -1: cp855
+11 -1: Deallocator
+5 -1: cp857
+5 -1: cp858
+7 -1: ([SI)[S
+37 -1: ([C)Ljava/lang/AbstractStringBuilder;
+27 -1: java/lang/SecurityException
+82 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)V
+38 -1: (Ljava/lang/String;)Ljava/lang/String;
+7 -1: connect
+7 -1: isEmpty
+11 -1: replaceNode
+19 -1: SuppliedThreadLocal
+12 -1: asFixedArity
+12 -1: fromIndex = 
+19 -1: createMemoryManager
+9 -1: List.java
+8 -1: FEBRUARY
+21 -1: UnicodeLittleUnmarked
+6 -1: a null
+30 -1: ()Ljava/util/Spliterator<TT;>;
+5 -1: cp862
+17 -1: ZoneInfoFile.java
+5 -1: cp866
+8 -1: BulkTask
+53 -1: java/util/concurrent/locks/AbstractQueuedSynchronizer
+20 -1: FileInputStream.java
+12 -1: java.vm.info
+10 -1: newDecoder
+5 -1: (JB)V
+8 -1: filePath
+17 -1: spreadArrayChecks
+44 -1: ([Ljava/lang/Object;Ljava/util/Comparator;)V
+33 -1: java/util/Collections$AsLIFOQueue
+32 -1: Ljava/util/LinkedList$Node<TE;>;
+5 -1: cp874
+78 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
+39 -1: (JLjava/util/function/Consumer<-TK;>;)V
+15 -1: appendCodePoint
+20 -1: primitiveReturnCount
+54 -1:               only dump output if specified permission
+20 -1: getGenericInterfaces
+41 -1: ([Ljava/lang/reflect/AccessibleObject;Z)V
+17 -1: nUnstartedThreads
+33 -1: (Ljava/lang/invoke/MemberName;Z)V
+24 -1: ARRAY_OBJECT_INDEX_SCALE
+40 -1: (Ljava/lang/String;ILjava/util/Locale;)I
+17 -1: java/io/Flushable
+22 -1: newConstructorAccessor
+26 -1: sun/misc/JavaUtilJarAccess
+6 -1: booted
+10 -1: setDoInput
+36 -1: (Ljava/lang/Class;)[Ljava/lang/Enum;
+19 -1: java/lang/Character
+52 -1: ([Ljava/net/URL;Ljava/net/URLStreamHandlerFactory;)V
+24 -1: (Ljava/nio/LongBuffer;)I
+16 -1: start > length()
+28 -1: (I)Ljava/lang/CharacterData;
+5 -1: val$c
+61 -1: (Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)V
+13 -1: resolveOrNull
+9 -1: L_ESCAPED
+27 -1: MapReduceValuesToDoubleTask
+15 -1: getPreparedForm
+33 -1: (I)[Ljava/util/WeakHashMap$Entry;
+54 -1: ()Ljava/util/stream/Stream<+Ljava/util/zip/ZipEntry;>;
+16 -1: bad method type 
+5 -1: val$s
+17 -1: Null charset name
+36 -1: java/lang/invoke/LambdaForm$Compiled
+24 -1: (Ljava/util/SortedMap;)V
+19 -1: java/time/LocalTime
+29 -1: not invocable, no method type
+21 -1: recalculateWordsInUse
+6 -1: val$id
+39 -1: sun/security/util/ManifestEntryVerifier
+60 -1: ([Ljava/lang/Class<*>;I)Ljava/lang/reflect/Constructor<TT;>;
+45 -1: java/util/ArrayPrefixHelpers$LongCumulateTask
+5 -1: OfInt
+11 -1: environment
+60 -1: ([Ljava/lang/Class<*>;[B)[[Ljava/lang/annotation/Annotation;
+7 -1: (JJJZ)V
+10 -1: BufferPool
+6 -1: isUTF8
+12 -1: threadLocals
+35 -1: (Ljava/lang/String;)[Ljava/net/URL;
+21 -1: Ljava/nio/LongBuffer;
+15 -1: copyConstructor
+25 -1: setCallSiteTargetVolatile
+15 -1: getNumericValue
+26 -1: Ljava/security/CodeSource;
+18 -1: Null output stream
+14 -1: cloneWithIndex
+23 -1: LOCAL_LISTEN_PERMISSION
+6 -1: (TT;)I
+46 -1: (Ljava/security/PublicKey;Ljava/lang/String;)V
+6 -1: setCrc
+26 -1: java/io/FilterOutputStream
+10 -1: access$000
+10 -1: access$001
+10 -1: access$002
+6 -1: (TT;)V
+78 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>([TU;IILjava/lang/Class<+[TT;>;)[TT;
+41 -1: java/util/concurrent/atomic/AtomicInteger
+8 -1: renameTo
+40 -1: (Ljava/lang/Class<*>;)Ljava/lang/Object;
+17 -1: getRawAnnotations
+29 -1: java/lang/VirtualMachineError
+37 -1: java/lang/management/MemoryPoolMXBean
+25 -1: (II)Ljava/util/List<TE;>;
+6 -1: utf_16
+23 -1: (Ljava/lang/String;[B)V
+19 -1: MIN_ARRAY_SORT_GRAN
+25 -1: array length is not legal
+45 -1: java/util/concurrent/locks/ReentrantLock$Sync
+36 -1: Ljava/security/AccessControlContext;
+48 -1: sun/reflect/generics/repository/MethodRepository
+24 -1: MethodHandleStatics.java
+24 -1: addThreadDumpForMonitors
+64 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<TT;>;)Ljava/util/Set<TT;>;
+58 -1: (Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/Object;)Z
+37 -1: (III)Lsun/util/calendar/CalendarDate;
+9 -1: createURI
+15 -1: unreserveMemory
+52 -1: (Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Method;
+66 -1: (Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+51 -1: (Ljava/lang/reflect/Constructor;)Ljava/lang/String;
+23 -1: inheritableThreadLocals
+63 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/reflect/Method;>;
+16 -1: setContentLength
+16 -1: LOWERCASE_LETTER
+4 -1: size
+25 -1: java.launcher.opt.hotspot
+19 -1: buildAnnotatedTypes
+26 -1: JAVAFX_LAUNCHER_CLASS_NAME
+11 -1: getAliasMap
+19 -1: CheckedNavigableSet
+15 -1: getAbsolutePath
+11 -1: doubleValue
+6 -1: utf_32
+22 -1: IMPLEMENTATION_VERSION
+3 -1: ne1
+11 -1: contentType
+8 -1: canWrite
+11 -1: Object.java
+14 -1: America/Denver
+8 -1: fileName
+13 -1: allPermDomain
+27 -1: ()Ljava/util/Iterator<TE;>;
+31 -1: (Lsun/reflect/MethodAccessor;)V
+11 -1: asTypeCache
+13 -1: lineSeparator
+9 -1: JarLoader
+15 -1: replacementNode
+18 -1: getContentEncoding
+12 -1: invoke_LLL_L
+22 -1: ()Ljava/util/TimeZone;
+17 -1: Reference Handler
+33 -1: java/lang/invoke/MethodHandleImpl
+47 -1: ()Ljava/util/concurrent/ConcurrentHashMap$Node;
+12 -1: invoke_LLL_V
+8 -1: form << 
+23 -1: (Ljava/lang/Object;JJ)J
+15 -1: isHighSurrogate
+31 -1: (Ljava/util/Collection<+TV;>;)Z
+36 -1: ([Ljava/util/HashMap$Node<TK;TV;>;)V
+23 -1: (Ljava/lang/Object;JJ)V
+12 -1: utf_32be_bom
+40 -1: sun/util/calendar/LocalGregorianCalendar
+27 -1: [Ljava/security/CodeSigner;
+15 -1: afterNodeAccess
+13 -1: nextThreadNum
+18 -1: INTERNED_ARGUMENTS
+11 -1: getMillisOf
+18 -1: offsetByCodePoints
+11 -1: writeObject
+48 -1: (Ljava/util/Locale$Category;Ljava/util/Locale;)V
+3 -1: nfe
+41 -1: (Ljava/util/Properties;Ljava/io/Reader;)V
+50 -1: (Ljava/util/concurrent/CountedCompleter;[C[CIIII)V
+15 -1: implFlushBuffer
+33 -1: (I)[Ljava/lang/invoke/MemberName;
+12 -1: Unicode.java
+17 -1: DMH.invokeVirtual
+5 -1: setup
+51 -1: (Ljava/util/Collection;[Ljava/lang/reflect/Field;)V
+3 -1: EST
+7 -1: TREEBIN
+7 -1: getFile
+10 -1: isLeapYear
+18 -1: LinkedHashIterator
+14 -1: DISPLAY_SCRIPT
+25 -1: privateGetDeclaredMethods
+68 -1: (Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
+22 -1: ()Ljava/util/Iterator;
+21 -1: sun/management/Sensor
+15 -1: getAvailableIDs
+51 -1: Lsun/util/PreHashedMap<Ljava/nio/charset/Charset;>;
+8 -1: elot_928
+6 -1: LATIN0
+45 -1: ([Ljava/lang/Object;II[Ljava/lang/Object;II)V
+10 -1: [Unlocked]
+15 -1: internArguments
+6 -1: LATIN9
+33 -1: (II)Ljava/lang/invoke/MethodType;
+12 -1: Version.java
+17 -1: setConnectTimeout
+75 -1: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+13 -1: highSurrogate
+12 -1: Africa/Cairo
+21 -1: synchronizedSortedMap
+21 -1:  in java.library.path
+45 -1: sun/reflect/generics/tree/FormalTypeParameter
+24 -1: UncaughtExceptionHandler
+14 -1: previousOrSame
+24 -1: java/security/Permission
+9 -1: x-ISCII91
+5 -1: L_HEX
+35 -1: java/lang/invoke/DirectMethodHandle
+35 -1: java/util/ArrayDeque$DeqSpliterator
+14 -1: java/util/List
+11 -1: toLowerCase
+24 -1: java/nio/charset/Charset
+10 -1: MIN_NORMAL
+110 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+13 -1: regionMatches
+17 -1: newMethodAccessor
+26 -1: (Ljava/net/InetAddress;B)V
+68 -1: (Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
+22 -1: ()Ljava/io/FileSystem;
+19 -1: primitiveSimpleName
+5 -1: MOVED
+9 -1: STATE_RED
+13 -1: linkToSpecial
+19 -1: AnnotationType.java
+20 -1: (II)Ljava/util/List;
+252 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V
+12 -1: callSiteForm
+22 -1: isSiblingBindingBefore
+62 -1: <T:Ljava/lang/Object;>([TT;IITT;Ljava/util/Comparator<-TT;>;)I
+15 -1: buildEmptyNames
+11 -1: Thread.java
+30 -1: Ljava/lang/ref/Reference<TT;>;
+35 -1: sun/reflect/MethodAccessorGenerator
+152 -1: (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
+5 -1: total
+242 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
+27 -1: javax/security/auth/Subject
+43 -1: JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
+17 -1: getSignerCertPath
+15 -1: registerNatives
+21 -1: sun/reflect/FieldInfo
+54 -1: (Ljava/nio/charset/Charset;Lsun/nio/cs/ISO_8859_1$1;)V
+17 -1: unwrapWithNoPrims
+17 -1: instanceof Long: 
+20 -1: hasRealParameterData
+23 -1: ()Ljava/time/LocalTime;
+14 -1: getAnnotations
+8 -1: optimize
+7 -1: setChar
+11 -1: OFFSET_MASK
+4 -1: TYPE
+177 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V
+18 -1: removeShutdownHook
+27 -1: ()Ljava/security/Principal;
+29 -1: JAVAFX_APPLICATION_CLASS_NAME
+6 -1: digits
+37 -1: [Ljava/lang/reflect/Constructor<TT;>;
+45 -1: ()Ljava/lang/Thread$UncaughtExceptionHandler;
+7 -1: tryLock
+19 -1: java/net/Proxy$Type
+21 -1: setJavaSecurityAccess
+13 -1: tieBreakOrder
+3 -1: no 
+16 -1: Australia/Sydney
+13 -1: DAY_IN_MILLIS
+19 -1: ()Ljava/nio/Buffer;
+12 -1: Integer.java
+14 -1: isBmpCodePoint
+6 -1: daemon
+23 -1: Lsun/misc/JavaIOAccess;
+106 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
+10 -1: getFloatAt
+15 -1: content/unknown
+52 -1: ()Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>;
+123 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
+4 -1: nsme
+12 -1: prefixLength
+9 -1: flagsMods
+95 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
+62 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
+16 -1: Illegal mode: 0x
+24 -1: java/io/FileOutputStream
+41 -1: [Pp][Ee][Rr][Mm][Ii][Ss][Ss][Ii][Oo][Nn]=
+24 -1: java/security/CodeSource
+16 -1: DUMP_CLASS_FILES
+25 -1: ([C)Ljava/nio/CharBuffer;
+12 -1: bindArgument
+50 -1: Ljava/lang/ref/FinalReference<Ljava/lang/Object;>;
+21 -1: unmodifiableSortedMap
+10 -1: jarHandler
+73 -1: (Ljava/lang/Class;[Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
+67 -1: ()Ljava/util/Map<Ljava/lang/Thread;[Ljava/lang/StackTraceElement;>;
+15 -1: threadSeqNumber
+18 -1: AutoCloseable.java
+9 -1: holdsLock
+25 -1: (Ljava/lang/Object;JJJJ)V
+7 -1: (IJII)I
+15 -1: copyToLongArray
+58 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Package;>;
+84 -1: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+32 -1: getExecutableTypeAnnotationBytes
+17 -1: streamHandlerLock
+35 -1: java/lang/IndexOutOfBoundsException
+15 -1: moveRootToFront
+28 -1: ()Ljava/nio/file/FileSystem;
+14 -1: content-length
+61 -1: (Ljava/lang/invoke/CallSite;Ljava/lang/invoke/MethodHandle;)V
+7 -1: csASCII
+18 -1: staticIsConsistent
+21 -1: sharedToGenericString
+8 -1: linkLast
+21 -1: isUnicodeExtensionKey
+7 -1: readInt
+7 -1: compile
+32 -1: ()Ljava/lang/reflect/Executable;
+4 -1: Big5
+20 -1: Ljava/util/Set<TE;>;
+18 -1: ExpiringCache.java
+44 -1: (Ljava/lang/String;[BII)Ljava/lang/Class<*>;
+18 -1: LinkedHashMap.java
+32 -1: Ljava/lang/UnsatisfiedLinkError;
+13 -1: parameterType
+28 -1: (ID)Ljava/lang/StringBuffer;
+15 -1: synchronizedSet
+9 -1: implClose
+6 -1: member
+14 -1: MH_INVOKE_MODS
+21 -1: forOutputStreamWriter
+37 -1: Lsun/misc/JavaIOFileDescriptorAccess;
+28 -1: java/lang/ProcessEnvironment
+17 -1: setNormalizedYear
+14 -1: isMalformed4_2
+14 -1: isMalformed4_3
+38 -1: (Ljava/lang/Object;)Ljava/lang/String;
+16 -1: getJavaAWTAccess
+12 -1: isPrivileged
+30 -1: java/util/Collections$EmptyMap
+17 -1: LinkedKeyIterator
+7 -1: vmcount
+27 -1: java/lang/ref/WeakReference
+5 -1: march
+13 -1: addOldMapping
+58 -1: (Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner;
+56 -1: (ILjava/lang/String;)[Ljava/lang/invoke/LambdaForm$Name;
+65 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask
+55 -1: (Ljava/lang/invoke/SerializedLambda;)Ljava/lang/Object;
+17 -1: getEnclosingClass
+35 -1: (I)Lsun/util/calendar/BaseCalendar;
+13 -1: binarySearch0
+25 -1: ([J)Ljava/nio/LongBuffer;
+19 -1: java/util/Map$Entry
+22 -1: java/util/HashMap$Node
+26 -1: sun/reflect/MethodAccessor
+8 -1: LASTYEAR
+7 -1: disable
+36 -1: sun/launcher/LauncherHelper$FXHelper
+6 -1: toPath
+10 -1: shortValue
+6 -1: remove
+59 -1: ([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;
+55 -1: java/util/concurrent/ConcurrentHashMap$ValueSpliterator
+64 -1: (Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
+15 -1: asPrimitiveType
+16 -1: PrintStream.java
+10 -1: image/jpeg
+22 -1: specificToStringHeader
+7 -1: class "
+38 -1: java/util/Collections$CheckedSortedMap
+19 -1: SUPPRESSED_SENTINEL
+16 -1: getEnumConstants
+54 -1: (ILjava/lang/CharSequence;II)Ljava/lang/StringBuilder;
+36 -1: Ljava/lang/Class<Ljava/lang/Short;>;
+13 -1: toThreadState
+38 -1: (Ljava/lang/Class;)Ljava/lang/Package;
+24 -1: (C)Ljava/lang/Character;
+19 -1: UNTREEIFY_THRESHOLD
+4 -1: NCPU
+23 -1: ()Ljava/lang/Exception;
+42 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)V
+15 -1: nothingToVerify
+15 -1: setInitialValue
+15 -1: getTimeInMillis
+12 -1: getDoubleAt0
+18 -1: parameterTypeCache
+86 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;)Ljava/nio/file/WatchKey;
+49 -1: java/util/concurrent/ConcurrentHashMap$ValuesView
+13 -1: <all actions>
+7 -1: exitVM.
+34 -1: Ljava/lang/ClassNotFoundException;
+68 -1: (Ljava/util/Map;Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
+28 -1: getCalendarDateFromFixedDate
+28 -1: UnsafeFieldAccessorImpl.java
+27 -1: java/lang/RuntimePermission
+74 -1: Ljava/lang/Object;Ljava/lang/Comparable<Lsun/util/locale/BaseLocale$Key;>;
+62 -1: ()Ljava/util/Iterator<Ljava/nio/charset/spi/CharsetProvider;>;
+13 -1: LanguageRange
+239 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
+37 -1: DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
+62 -1: (Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
+16 -1: DMH.invokeStatic
+11 -1: (TK;TV;)TV;
+7 -1: ([FI)[F
+14 -1: newPerfCounter
+35 -1: ([JI)Ljava/util/Spliterator$OfLong;
+30 -1: java/util/AbstractList$ListItr
+5 -1: cp912
+5 -1: cp914
+45 -1: (Ljava/io/BufferedWriter;Ljava/lang/String;)V
+6 -1: LOCNAM
+8 -1: launcher
+5 -1: cp915
+14 -1: standardString
+26 -1: ()Ljava/lang/Thread$State;
+10 -1: L_ALPHANUM
+8 -1: (C[CII)I
+9 -1: SEPTEMBER
+20 -1: java/text/DateFormat
+38 -1: Ljava/lang/CloneNotSupportedException;
+5 -1: cp920
+23 -1: getConstructorSignature
+16 -1: ReferenceHandler
+19 -1: America/Puerto_Rico
+5 -1: cp923
+10 -1: typeString
+30 -1: Self-suppression not permitted
+25 -1: (Ljava/io/OutputStream;)V
+9 -1: implReset
+12 -1: fullAddCount
+34 -1: java/lang/invoke/LambdaForm$Hidden
+25 -1: ()Lsun/misc/JavaIOAccess;
+9 -1: Math.java
+9 -1: getAndSet
+7 -1: failure
+14 -1: LINE_SEPARATOR
+6 -1: parent
+30 -1: java/lang/BootstrapMethodError
+8 -1: indexMap
+9 -1: ALL_KINDS
+23 -1: desiredAssertionStatus0
+39 -1: (ILjava/lang/Object;)Ljava/lang/Object;
+22 -1: RuntimePermission.java
+21 -1: getContextClassLoader
+14 -1: VARARGS_INVOKE
+8 -1: zoneinfo
+130 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;ILjava/lang/invoke/DirectMethodHandle$1;)V
+18 -1: java/lang/Readable
+11 -1: containsAll
+11 -1: newPosition
+57 -1: sun/reflect/InstantiationExceptionConstructorAccessorImpl
+13 -1: REVERSE_ORDER
+29 -1: Required array size too large
+6 -1: sunday
+44 -1: <T:Ljava/lang/Object;>()Ljava/util/Set<TT;>;
+10 -1: toIntExact
+33 -1: ([BIILjava/nio/charset/Charset;)V
+14 -1: indexOfSubList
+15 -1: tryAcquireNanos
+31 -1: java/lang/InvalidClassException
+22 -1: SecureClassLoader.java
+12 -1: proxiedHosts
+7 -1: ([CII)I
+11 -1: toHexString
+30 -1: sun/util/calendar/ZoneInfoFile
+31 -1: Ljava/util/jar/Attributes$Name;
+10 -1: L_USERINFO
+25 -1: (IB)Ljava/nio/ByteBuffer;
+11 -1: parseDouble
+7 -1: ([CII)V
+13 -1: Asia/Shanghai
+5 -1: [...]
+57 -1: ([Ljava/lang/Class;[B)[[Ljava/lang/annotation/Annotation;
+19 -1: java/nio/LongBuffer
+15 -1: getCertificates
+9 -1: comparing
+83 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;IILjava/lang/String;[B)V
+43 -1: Ljava/util/concurrent/atomic/AtomicInteger;
+23 -1: toFieldDescriptorString
+20 -1: Lsun/misc/MetaIndex;
+37 -1: java/util/Collections$UnmodifiableSet
+5 -1: (JC)V
+37 -1: nanosecond timeout value out of range
+26 -1: AbstractStringBuilder.java
+43 -1: java/lang/invoke/DirectMethodHandle$Special
+49 -1: ([Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;
+15 -1: currentPosition
+14 -1: java/net/Proxy
+13 -1: asConstructor
+8 -1: userInfo
+14 -1: parseClassPath
+15 -1: legacyMergeSort
+34 -1: java/security/UnresolvedPermission
+97 -1: Lsun/util/locale/LocaleObjectCache<Lsun/util/locale/BaseLocale$Key;Lsun/util/locale/BaseLocale;>;
+9 -1: freeEntry
+19 -1: delimiterCodePoints
+34 -1: Should be non-empty if initialized
+23 -1: (I)Ljava/lang/Class<*>;
+11 -1: Reader.java
+26 -1: checkClassLoaderPermission
+27 -1: java/nio/DirectShortBufferS
+95 -1: Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Lsun/misc/Launcher$ExtClassLoader;>;
+27 -1: java/nio/DirectShortBufferU
+20 -1: ()[Ljava/lang/Class;
+56 -1: ()[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+19 -1: sun/nio/cs/UTF_16BE
+24 -1: java/util/AbstractList$1
+10 -1: ([CIIIII)V
+60 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/lang/Object;>;
+37 -1: (Ljava/lang/invoke/LambdaForm$Name;)S
+9 -1: putDouble
+52 -1: ([Ljava/security/CodeSource;)Ljava/util/Enumeration;
+37 -1: (Ljava/lang/invoke/LambdaForm$Name;)Z
+22 -1: ()[Ljava/lang/Package;
+41 -1: java/lang/CharSequence$1CodePointIterator
+13 -1: auditSubclass
+24 -1: Ljava/util/jar/JarEntry;
+20 -1: findMethodHandleType
+15 -1: MAX_BUFFER_SIZE
+19 -1: FilePermission.java
+18 -1: WrappedPrintStream
+36 -1: (D)Ljava/lang/AbstractStringBuilder;
+11 -1: unfinalized
+10 -1: getFileURL
+37 -1: (Ljava/io/FileFilter;)[Ljava/io/File;
+54 -1: (Ljava/nio/ByteBuffer;I)Ljava/nio/charset/CoderResult;
+7 -1: ([ZI)[Z
+64 -1: (Ljava/security/CodeSource;)Ljava/security/PermissionCollection;
+6 -1: PUBLIC
+83 -1: (Ljava/util/jar/JarFile;Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
+17 -1: lockInterruptibly
+67 -1: ([Ljava/util/Hashtable$Entry;Ljava/lang/Object;Ljava/lang/Object;)V
+42 -1: java/util/ArraysParallelSortHelpers$FJChar
+21 -1: defaultCharBufferSize
+14 -1: unalignedKnown
+23 -1: ()Ljava/net/Proxy$Type;
+4 -1: TZDB
+14 -1: CharacterCache
+13 -1: lengthOfMonth
+13 -1: hasExtensions
+23 -1: Prefix string too short
+15 -1: Executable.java
+10 -1: forEachKey
+6 -1: getEra
+13 -1: appendEncoded
+21 -1: java/util/AbstractMap
+10 -1: access$100
+10 -1: access$102
+30 -1: javafx.application.Application
+46 -1: (Ljava/lang/Thread$UncaughtExceptionHandler;)V
+43 -1: Ljava/lang/invoke/LambdaForm$NamedFunction;
+101 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)Ljava/lang/reflect/Field;
+9 -1: WILD_CHAR
+21 -1: SynchronizedSortedSet
+28 -1: (Ljava/util/Collection<*>;)Z
+29 -1: (I[C)Ljava/lang/StringBuffer;
+65 -1: (Ljava/lang/String;[Ljava/lang/Class;Z)Ljava/lang/reflect/Method;
+7 -1: putByte
+6 -1: H_MARK
+49 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/Object;
+98 -1: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;Z)Ljava/lang/ClassValue$Entry<*>;
+23 -1: array is not of length 
+52 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;TT;TT;)Z
+41 -1: Ljava/util/Collections$EmptyListIterator;
+8 -1:         
+11 -1: updateCheck
+29 -1: getBootClassPathEntryForClass
+27 -1: sun/nio/cs/US_ASCII$Encoder
+10 -1: bindCaller
+18 -1: Ljava/util/BitSet;
+10 -1: checkRange
+77 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/Void;)V
+7 -1: Classes
+6 -1: store0
+23 -1: java/lang/Thread$Caches
+25 -1: Ljava/lang/CharacterData;
+7 -1: (JI[C)V
+49 -1: (Ljava/util/LinkedList;Ljava/util/LinkedList$1;)V
+16 -1: getGcInfoBuilder
+12 -1: counterCells
+14 -1: memoryLimitSet
+7 -1: , nojit
+9 -1: sharpsMap
+7 -1: october
+13 -1: isProxiedHost
+9 -1: rawOffset
+18 -1: toJavaFormatString
+19 -1: sun.boot.class.path
+60 -1: (ILjava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
+11 -1: spliterator
+13 -1: contentLength
+18 -1: unixTimeToFileTime
+31 -1: Lsun/reflect/LangReflectAccess;
+16 -1:  while Java has 
+79 -1: (JLjava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)I
+12 -1: timeEndOfDay
+17 -1: getCustomTimeZone
+25 -1: Ljava/lang/ref/Reference;
+20 -1: ()Ljava/util/Locale;
+64 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;Z)V
+13 -1: MAX_JVM_ARITY
+72 -1: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/invoke/MethodType;
+11 -1: AsLIFOQueue
+84 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/lang/Object;)Ljava/util/List<TT;>;
+12 -1: mappingCount
+29 -1: (Ljava/io/FileOutputStream;)V
+50 -1: <T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;TT;)V
+23 -1: Category cannot be NULL
+10 -1: normalized
+5 -1: CLASS
+28 -1: (IZ)Ljava/lang/StringBuffer;
+18 -1: java/lang/System$1
+18 -1: java/lang/System$2
+9 -1: getResult
+44 -1: ()Ljava/util/Collection<Ljava/lang/Thread;>;
+8 -1: isNative
+59 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Short;>;
+24 -1: [Ljava/lang/ThreadGroup;
+24 -1: (B)Ljava/nio/ByteBuffer;
+4 -1: READ
+44 -1: (Ljava/io/FilePermission;)Ljava/lang/String;
+93 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedCollection<TE;>;Ljava/util/Set<TE;>;
+12 -1: compileClass
+12 -1: isProxyClass
+20 -1: isSystemDomainLoader
+74 -1: <T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/util/Comparator<-TT;>;)V
+7 -1: getMask
+72 -1: (Ljava/lang/ClassLoader;Ljava/lang/SecurityManager;Ljava/lang/String;I)V
+20 -1: removeLastOccurrence
+64 -1: (Ljava/lang/reflect/Field;)Ljava/lang/invoke/DirectMethodHandle;
+57 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
+11 -1: parkBlocker
+40 -1: (Lsun/misc/JarIndex;Ljava/lang/String;)V
+33 -1: [Ljava/security/ProtectionDomain;
+14 -1: setContentType
+14 -1: getEnumeration
+18 -1: ProtectionDomain  
+76 -1: (Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date;
+16 -1: setRequestMethod
+52 -1: (Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
+32 -1: Lsun/util/calendar/BaseCalendar;
+52 -1: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
+5 -1: .:@[]
+7 -1: addLast
+21 -1: AnnotatedElement.java
+10 -1: defaultVal
+16 -1: getCanonicalPath
+17 -1: protection_domain
+9 -1: strictfp 
+19 -1: sun/nio/cs/UTF_16LE
+9 -1: readBytes
+18 -1: removeStaleEntries
+46 -1: java/util/Collections$UnmodifiableNavigableSet
+5 -1: cpath
+14 -1: COPY_THRESHOLD
+8 -1: permsMap
+8 -1: japanese
+33 -1: java/nio/charset/StandardCharsets
+47 -1: Lsun/reflect/DelegatingConstructorAccessorImpl;
+19 -1: NF_checkGenericType
+40 -1: java/util/Collections$UnmodifiableList$1
+4 -1: TERM
+48 -1: The following can be used with stack and domain:
+27 -1: ([BII)Ljava/nio/ByteBuffer;
+40 -1: Ljava/util/Vector<Ljava/lang/Class<*>;>;
+5 -1: digit
+7 -1: isFinal
+39 -1: (Ljava/lang/String;Ljava/lang/String;)I
+26 -1: memberDeclaringClassOrNull
+10 -1: ([CI[BII)I
+38 -1: (Ljava/lang/Class;I)Ljava/lang/Object;
+15 -1: isValidProtocol
+17 -1: (this Collection)
+11 -1: getTreeNode
+16 -1: ThreadLocal.java
+23 -1: java/nio/HeapLongBuffer
+39 -1: (Ljava/lang/String;Ljava/lang/String;)V
+12 -1: getNextEntry
+39 -1: (Ljava/lang/String;Ljava/lang/String;)Z
+28 -1: (C)Lsun/invoke/util/Wrapper;
+9 -1: readFloat
+21 -1: overrideFieldAccessor
+16 -1: fillInStackTrace
+16 -1: getDeclaredField
+5 -1: deflt
+8 -1: nextChar
+10 -1: primCounts
+22 -1: getAnnotatedInterfaces
+26 -1: ()Ljava/util/zip/Inflater;
+73 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;)TU;
+16 -1: traceMethodCalls
+10 -1: sun.nio.cs
+7 -1: marshal
+9 -1: ftypeKind
+77 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
+11 -1: sun/misc/VM
+14 -1: GuardWithCatch
+40 -1: (Ljava/lang/Object;)Ljava/util/Iterator;
+13 -1: subtractExact
+42 -1: (Ljava/lang/Object;ILjava/lang/Object;II)V
+10 -1: isInfinite
+18 -1: sun.util.calendar.
+14 -1: java/lang/Math
+16 -1: java/lang/String
+10 -1: encodePath
+14 -1: compactAndTrim
+11 -1: getVariants
+4 -1: from
+47 -1: (Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;)V
+35 -1: serializeAgentPropertiesToByteArray
+16 -1: computeIfPresent
+9 -1: EMPTY_MAP
+28 -1: java/lang/InstantiationError
+68 -1: (Ljava/util/Comparator;Ljava/util/Comparator;)Ljava/util/Comparator;
+14 -1: getDisplayName
+14 -1: limitedContext
+23 -1: usagetracker.properties
+52 -1: java/util/concurrent/locks/ReentrantLock$NonfairSync
+7 -1: public 
+17 -1: srcBegin > srcEnd
+48 -1: (ILjava/util/List;)Ljava/lang/invoke/MethodType;
+21 -1: java/lang/ThreadDeath
+9 -1: gregorian
+111 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;
+52 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
+12 -1: generateFile
+20 -1: appendParameterTypes
+22 -1: sun/misc/FileURLMapper
+13 -1: defaultDomain
+25 -1: (I)Ljava/time/ZoneOffset;
+21 -1: getBooleanAttributes0
+39 -1: (Ljava/lang/String;)Lsun/misc/Resource;
+43 -1: Ljava/lang/Thread$UncaughtExceptionHandler;
+23 -1: getTypeAnnotationBytes0
+8 -1: ELOT_928
+32 -1: sun/nio/cs/FastCharsetProvider$1
+34 -1: Ljava/nio/BufferOverflowException;
+14 -1: AppClassLoader
+10 -1: protected 
+12 -1: isAnnotation
+16 -1: PerfCounter.java
+51 -1: Ljava/util/Map<Ljava/io/File;Lsun/misc/MetaIndex;>;
+160 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+11 -1: setLeapYear
+16 -1: parseContextSpec
+16 -1: setFieldAccessor
+8 -1: writeInt
+16 -1: java/lang/Number
+33 -1: java/util/AbstractMap$SimpleEntry
+9 -1: nextTable
+8 -1: getQuery
+14 -1: putOrderedLong
+93 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+52 -1: (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree;
+85 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+9 -1: singleton
+9 -1: destroyed
+15 -1: iso_8859-2:1987
+12 -1: comparingInt
+29 -1: [Ljava/lang/OutOfMemoryError;
+39 -1: (Ljava/lang/String;Ljava/lang/Object;)V
+27 -1: ([Ljava/util/Enumeration;)V
+36 -1: Ljava/nio/charset/CodingErrorAction;
+16 -1: getCanonicalName
+41 -1: (Ljava/nio/LongBuffer;)Ljava/util/BitSet;
+15 -1: DISPLAY_COUNTRY
+32 -1: getFunctionalInterfaceMethodName
+66 -1: (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
+24 -1: getUnresolvedPermissions
+66 -1: ([Ljava/lang/ClassValue$Entry<*>;I)Ljava/lang/ClassValue$Entry<*>;
+41 -1: ()Lsun/reflect/annotation/AnnotationType;
+7 -1: afIndex
+7 -1: csascii
+20 -1: ()Ljava/util/Vector;
+16 -1: EntrySpliterator
+53 -1: (Ljava/lang/Throwable;I)Ljava/lang/StackTraceElement;
+81 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
+20 -1: classAssertionStatus
+7 -1: EXECUTE
+21 -1: ()Ljava/lang/Runtime;
+6 -1: cesu-8
+7 -1: offset 
+23 -1: Ljava/lang/SafeVarargs;
+34 -1: (Ljava/util/LinkedHashMap$Entry;)V
+8 -1: entryFor
+8 -1: getCache
+46 -1: (Ljava/lang/Object;I)Ljava/lang/reflect/Field;
+4 -1: skip
+8 -1: (II[CI)V
+4 -1: vart
+12 -1: InnerClasses
+68 -1: (Ljava/util/Map;Ljava/lang/Class;[Ljava/lang/String;)Ljava/util/Map;
+19 -1: currentClassLoader0
+34 -1: getDefaultUncaughtExceptionHandler
+11 -1: String.java
+117 -1: (Ljava/lang/ThreadLocal<*>;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+7 -1: january
+31 -1: (ILjava/lang/String;IIIIIIIII)V
+24 -1: Lsun/misc/JavaAWTAccess;
+5 -1: .path
+15 -1: [Ljava/io/File;
+11 -1: Writer.java
+8 -1: , Size: 
+159 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
+32 -1: java/lang/invoke/LambdaForm$Name
+51 -1: (Ljava/util/ArrayList;Ljava/util/AbstractList;III)V
+7 -1: getZone
+14 -1: JIS_X0212-1990
+21 -1: (Ljava/util/Set<*>;)Z
+149 -1: (Lsun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter;Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
+21 -1: Illegal Load factor: 
+35 -1: ()Ljava/lang/invoke/MethodTypeForm;
+22 -1: ([Z)Ljava/lang/String;
+7 -1: setName
+48 -1: <T:Ljava/lang/Object;>(TT;Ljava/lang/String;)TT;
+9 -1: INTERFACE
+22 -1: ARRAY_CHAR_INDEX_SCALE
+19 -1: java/nio/ByteBuffer
+23 -1: Ljava/io/ExpiringCache;
+7 -1: streams
+44 -1: java/lang/invoke/DirectMethodHandle$Accessor
+36 -1: ([Ljava/security/ProtectionDomain;)V
+16 -1: afterNodeRemoval
+9 -1: prevIndex
+49 -1: java/util/concurrent/ConcurrentHashMap$KeySetView
+22 -1: getEnumConstantsShared
+17 -1: java/lang/Integer
+12 -1: getRawOffset
+36 -1: ()Ljava/nio/file/attribute/FileTime;
+7 -1: offsets
+10 -1: ] throw =>
+3 -1: [[B
+10 -1: hostsEqual
+18 -1: compareComparables
+35 -1: sun/reflect/ConstructorAccessorImpl
+8 -1: december
+36 -1: Invalid binary time-zone data: TZDB:
+24 -1: synchronizedNavigableMap
+72 -1: sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+19 -1: parseCustomTimeZone
+88 -1: (Ljava/lang/Class<*>;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
+9 -1: findClass
+6 -1: OBJECT
+3 -1: GBK
+110 -1: (JLjava/util/function/ToLongFunction<Ljava/util/Map$Entry<TK;TV;>;>;JLjava/util/function/LongBinaryOperator;)J
+6 -1: UTF_16
+17 -1: <all permissions>
+13 -1: lookupCharset
+28 -1: ConstructorAccessorImpl.java
+62 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask
+30 -1: Ljava/lang/ClassCastException;
+56 -1: ()Ljava/util/Spliterator<Ljava/util/Map$Entry<TK;TV;>;>;
+11 -1: invokerType
+23 -1: java/lang/StringBuilder
+12 -1: deleteCharAt
+11 -1: CR_OVERFLOW
+14 -1: toExternalForm
+3 -1: out
+34 -1: Ljava/net/URLStreamHandlerFactory;
+15 -1: encodeArrayLoop
+30 -1: ()Ljava/util/Enumeration<TK;>;
+27 -1: java/io/SyncFailedException
+10 -1: checkedSet
+16 -1: checkedSortedSet
+22 -1: java/util/zip/ZipEntry
+43 -1: java/util/LinkedHashMap$LinkedValueIterator
+22 -1: UnmodifiableCollection
+32 -1: java/nio/ByteBufferAsCharBufferB
+11 -1: blockerLock
+27 -1: checkExtensionsDependencies
+11 -1: fromIndex: 
+32 -1: java/nio/ByteBufferAsCharBufferL
+6 -1: UTF_32
+30 -1: java/util/Hashtable$Enumerator
+92 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<+TK;+TV;>;)Ljava/util/Map<TK;TV;>;
+4 -1: tail
+5 -1: (BB)C
+16 -1: isValidSignature
+9 -1: addMillis
+9 -1: peekFirst
+86 -1: <E:Ljava/lang/Object;>(Ljava/util/Set<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Set<TE;>;
+5 -1: (BB)I
+15 -1: jvmMicroVersion
+28 -1: [Ljava/util/Hashtable$Entry;
+15 -1: iso_8859-5:1988
+14 -1: HOUR_IN_MILLIS
+67 -1: (Ljava/util/PrimitiveIterator$OfInt;I)Ljava/util/Spliterator$OfInt;
+5 -1: (BB)S
+21 -1: UnmodifiableSortedMap
+79 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
+56 -1: Ljava/util/Stack<Ljava/lang/ClassLoader$NativeLibrary;>;
+5 -1: (BB)Z
+10 -1: treeifyBin
+8 -1: isOpaque
+27 -1: java.launcher.ergo.message1
+27 -1: java.launcher.ergo.message2
+101 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Cloneable;Ljava/lang/Comparable<Ljava/util/Date;>;
+31 -1: (Ljava/io/ObjectOutputStream;)V
+3 -1: GET
+13 -1: matchLocation
+13 -1: WrappedMember
+63 -1: NoSuchMethodException:\n  could not find proper constructor for 
+14 -1: gssloginconfig
+70 -1: (Ljava/util/LinkedList$Node<TE;>;TE;Ljava/util/LinkedList$Node<TE;>;)V
+57 -1: (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
+11 -1: toByteArray
+49 -1: java/util/ArraysParallelSortHelpers$FJByte$Sorter
+13 -1: no protocol: 
+940 -1: aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul
+42 -1: java/util/LinkedHashMap$LinkedHashIterator
+39 -1: java/util/ArrayDeque$DescendingIterator
+15 -1: MODIFIER_LETTER
+21 -1: (Lsun/misc/Cleaner;)Z
+12 -1: PACKAGE_NAME
+14 -1: getMappedValue
+10 -1: interrupt0
+8 -1: LF_LIMIT
+17 -1: getDeclaringClass
+42 -1: (ZILjava/lang/String;)Ljava/lang/Class<*>;
+57 -1: (Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V
+15 -1: java/nio/Bits$1
+61 -1: (Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
+28 -1: java/lang/ref/ReferenceQueue
+33 -1: [Ljava/security/cert/Certificate;
+44 -1: (Ljava/util/Hashtable;I)Ljava/util/Iterator;
+24 -1: java/security/CodeSigner
+19 -1: Non-positive length
+24 -1: [Ljava/util/Enumeration;
+38 -1: ()Ljava/security/PermissionCollection;
+16 -1: checkGenericType
+56 -1: java/util/concurrent/ConcurrentHashMap$ReduceEntriesTask
+7 -1: getYear
+5 -1: atime
+19 -1: Ljava/util/HashMap;
+125 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
+22 -1: STOP_THREAD_PERMISSION
+46 -1: (Ljava/util/Enumeration;)Ljava/util/ArrayList;
+16 -1: getPathSeparator
+10 -1: getMembers
+8 -1: getIntAt
+26 -1: java/io/File$TempDirectory
+48 -1: java/lang/invoke/MethodHandleImpl$GuardWithCatch
+25 -1: CaseInsensitiveComparator
+8 -1: pollLast
+21 -1: GET_POLICY_PERMISSION
+23 -1: uninitialized call site
+75 -1: (Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
+9 -1: directory
+51 -1: (JLjava/util/function/BiFunction<-TV;-TV;+TV;>;)TV;
+41 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;)V
+42 -1: (Ljava/lang/Throwable;Ljava/lang/String;)V
+26 -1: (FLjava/lang/Appendable;)V
+5 -1: stop0
+9 -1: substring
+64 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
+5 -1: (JD)V
+9 -1: getShortB
+10 -1: nextOrSame
+24 -1: [ interpretWithArguments
+6 -1: GB2312
+32 -1: java/nio/BufferOverflowException
+23 -1: sun/nio/cs/ArrayEncoder
+4 -1: tanh
+9 -1: getShortL
+55 -1: (JLjava/util/function/BiFunction;)Ljava/util/Map$Entry;
+10 -1: getMessage
+12 -1: findTreeNode
+38 -1: DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
+23 -1: [Ljava/lang/Comparable;
+17 -1: getCallSiteTarget
+55 -1: (Ljava/nio/ByteBuffer;II)Ljava/nio/charset/CoderResult;
+19 -1: java/util/ArrayList
+17 -1: java/io/DataInput
+13 -1: getPrincipals
+52 -1: <E:Ljava/lang/Object;>(TE;)Ljava/util/Iterator<TE;>;
+44 -1: sun/reflect/generics/tree/ClassTypeSignature
+6 -1: loaded
+20 -1: ()Ljava/lang/Object;
+36 -1: Ljava/util/concurrent/ConcurrentMap;
+13 -1: classValueMap
+33 -1: java/lang/SystemClassLoaderAction
+6 -1: loader
+31 -1: java/lang/annotation/Annotation
+5 -1: colon
+11 -1: Vector.java
+24 -1: CharacterDataLatin1.java
+12 -1: setUseCaches
+22 -1: getTypeAnnotationBytes
+9 -1: readShort
+24 -1: longPrimitiveReturnCount
+5 -1: get16
+34 -1: setDefaultUncaughtExceptionHandler
+17 -1: cachedInputStream
+29 -1: java/util/LinkedHashMap$Entry
+17 -1: java/lang/Boolean
+50 -1: ()[Lsun/reflect/generics/tree/FormalTypeParameter;
+14 -1: AnnotationData
+21 -1: Ljava/net/Proxy$Type;
+13 -1: invokeVirtual
+14 -1: Parameter.java
+21 -1: getDayOfWeekDateAfter
+92 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+56 -1: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+46 -1: sun/util/locale/provider/LocaleProviderAdapter
+29 -1: Ljava/lang/StackTraceElement;
+47 -1: (TK;Ljava/util/function/Function<-TK;+TV;>;)TV;
+32 -1: enableContextClassLoaderOverride
+68 -1: (Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;
+51 -1: Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
+9 -1: addAndGet
+5 -1: store
+7 -1: ([JII)V
+15 -1: signatureReturn
+18 -1: NF_reinvokerTarget
+22 -1: ()Ljava/nio/file/Path;
+25 -1: (C)Ljava/lang/Appendable;
+7 -1: expires
+18 -1: initializeInvokers
+19 -1: application/java-vm
+13 -1: stopOrSuspend
+13 -1: rawOffsetDiff
+6 -1: (JJZ)V
+9 -1: findValue
+5 -1: get32
+10 -1: asSubclass
+6 -1: forJRE
+3 -1: GMT
+7 -1: delete0
+69 -1: ([Ljava/security/cert/Certificate;[Ljava/security/cert/Certificate;)Z
+75 -1: (Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
+6 -1: setEra
+24 -1: ()Ljava/util/Comparator;
+10 -1: access$200
+10 -1: access$202
+20 -1: retrieveDisplayNames
+3 -1: pae
+24 -1: java/lang/Byte$ByteCache
+7 -1: VM.java
+9 -1: TRANSIENT
+6 -1: setErr
+16 -1: jdkUpdateVersion
+10 -1: isResolved
+35 -1: sun/misc/JavaIOFileDescriptorAccess
+4 -1: char
+13 -1: Readable.java
+19 -1: UnixFileSystem.java
+43 -1: (Ljava/lang/ThreadLocal;)Ljava/lang/Object;
+40 -1: (Ljava/lang/String;[Ljava/lang/String;)V
+7 -1: profile
+11 -1: , version: 
+25 -1: PermissionCollection.java
+13 -1: setNormalized
+10 -1: access$210
+24 -1: (Ljava/lang/String;IJZ)J
+19 -1: isAnnotationPresent
+85 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
+19 -1: DMH.invokeInterface
+157 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;TV;>;Ljava/util/Collection<TV;>;Ljava/io/Serializable;
+94 -1: <E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableCollection<TE;>;Ljava/util/List<TE;>;
+41 -1: java/lang/StringIndexOutOfBoundsException
+29 -1: java/net/UnknownHostException
+11 -1: (BBBBBBBB)J
+4 -1: iioe
+12 -1: (TK;TV;Z)TV;
+5 -1: ERROR
+31 -1: (Ljava/io/File;Ljava/io/File;)I
+32 -1: [Ljava/lang/invoke/MethodHandle;
+27 -1: lambda$comparing$77a9974f$1
+13 -1: toLowerCaseEx
+61 -1: (Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MemberName;)V
+66 -1: (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;
+43 -1: java/util/concurrent/ConcurrentHashMap$Node
+23 -1: latestUserDefinedLoader
+24 -1: buildAnnotatedSuperclass
+19 -1: compareToIgnoreCase
+31 -1: (Ljava/io/File;Ljava/io/File;)Z
+40 -1: (I[C)[Ljava/lang/invoke/LambdaForm$Name;
+16 -1: ROTATE_THRESHOLD
+18 -1: getClassAtIfLoaded
+37 -1: java/lang/IllegalThreadStateException
+5 -1: get64
+12 -1: writeReplace
+14 -1: DAYS_PER_CYCLE
+4 -1: _get
+6 -1: nChars
+26 -1: ()Ljava/net/SocketAddress;
+27 -1: setUncaughtExceptionHandler
+6 -1: jzfile
+42 -1: All subclasses should override this method
+3 2: Foo
+56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+136 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;[Ljava/security/Permission;)TT;
+3 -1: pdt
+44 -1: sun/util/locale/LocaleObjectCache$CacheEntry
+20 -1: java/util/Comparator
+9 -1: suspended
+11 -1: removeEntry
+10 -1: SPACE_FREE
+12 -1: processQueue
+9 -1: java.home
+5 -1: valid
+23 -1: printEnclosedStackTrace
+4 -1: push
+5 -1: guard
+23 -1: javaNetHttpCookieAccess
+36 -1: (Ljava/security/cert/Certificate;)[B
+9 -1: isWrapped
+12 -1: CharIterator
+26 -1: sun.io.useCanonPrefixCache
+42 -1: (Lsun/misc/Cleaner;Ljava/lang/Throwable;)V
+7 -1: prepare
+8 -1: parseInt
+13 -1: Invokers.java
+63 -1: (Ljava/net/URLClassLoader;)Ljava/security/AccessControlContext;
+18 -1: defaultWriteObject
+5 -1: class
+15 -1: EnclosingMethod
+23 -1: ([BI)Ljava/lang/String;
+16 -1: rangeCheckForAdd
+11 -1: getTimeImpl
+15 -1: arrayIndexScale
+5 -1: scalb
+5 -1: scale
+45 -1: (Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
+8 -1: ([FIIF)I
+16 -1: runAllFinalizers
+27 -1: ()Lsun/net/ProgressMonitor;
+15 -1: MemberName.java
+27 -1: [Ljava/lang/reflect/Member;
+6 -1: length
+14 -1: genericInvoker
+8 -1: ([FIIF)V
+34 -1: Ljava/nio/file/attribute/FileTime;
+6 -1: number
+70 -1: (Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
+12 -1: printLocales
+38 -1: java/lang/invoke/MethodHandleStatics$1
+8 -1: private 
+20 -1: invalid actions mask
+10 -1:  not found
+13 -1: parseClassSig
+22 -1: getAllAvailableLocales
+175 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
+8 -1: ([BII)[B
+35 -1: (Ljava/util/HashMap$Node<TK;TV;>;)V
+132 -1: (Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V
+8 -1: ([BII)[C
+20 -1: DECIMAL_DIGIT_NUMBER
+40 -1: (Ljava/lang/String;[Ljava/lang/Object;)Z
+7 -1: ([CCI)I
+64 -1: (TV;)Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
+8 -1: aliasMap
+8 -1: checkfpx
+44 -1: java/util/Comparators$NaturalOrderComparator
+48 -1: (Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;
+12 -1: Name is null
+10 -1: invoke_L_L
+8 -1: URL.java
+51 -1: (JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime;
+25 -1: Lsun/invoke/util/Wrapper;
+19 -1: LauncherHelper.java
+10 -1: invoke_L_V
+5 -1: index
+30 -1: sun/security/x509/X509CertImpl
+8 -1: addClass
+46 -1: (I)Ljava/lang/invoke/LambdaForm$NamedFunction;
+20 -1: refKindIsConstructor
+10 -1: getFieldAt
+5 -1: log10
+13 -1: GetPerfAction
+15 -1: isLetterOrDigit
+27 -1: hasCheckedSpecialAttributes
+25 -1: MapReduceEntriesToIntTask
+17 -1: probeHomeLocation
+9 -1: image/png
+19 -1: checkSpreadArgument
+12 -1: LinkedKeySet
+13 -1: removeMapping
+39 -1: sun/security/util/SecurityConstants$AWT
+9 -1: MAX_RADIX
+28 -1: (F)Ljava/lang/StringBuilder;
+11 -1: ([C[B[I[I)Z
+36 -1: (Ljava/lang/Class;)Ljava/lang/Class;
+32 -1: java/lang/invoke/MagicLambdaImpl
+6 -1: monday
+16 -1: closeClassLoader
+41 -1: (Ljava/util/concurrent/locks/Condition;)I
+8 -1: reversed
+27 -1: sun/util/calendar/Gregorian
+49 -1: (Lsun/nio/cs/FastCharsetProvider;)Ljava/util/Map;
+42 -1: (Ljava/lang/String;Ljava/lang/Throwable;)V
+18 -1: java/util/Calendar
+8 -1: vmtarget
+17 -1: TREEIFY_THRESHOLD
+41 -1: (Ljava/util/concurrent/locks/Condition;)Z
+9 -1: deadChild
+8 -1: EntrySet
+5 -1: log1p
+58 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
+9 -1: pageCount
+14 -1: slotToArgTable
+24 -1: toMethodDescriptorString
+25 -1: ([B)Ljava/nio/ByteBuffer;
+21 -1: twoToTheDoubleScaleUp
+32 -1: sun/misc/URLClassPath$FileLoader
+40 -1: (Ljava/util/List<Ljava/lang/String;>;Z)V
+6 -1: cache1
+6 -1: cache2
+27 -1: Ljava/net/URLStreamHandler;
+20 -1: Detect premature EOF
+94 -1: (Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamEncoder;
+12 -1: NF_checkBase
+20 -1: (Ljava/nio/Buffer;)V
+45 -1: <E:Ljava/lang/Object;>Ljava/util/Vector<TE;>;
+4 -1: Sync
+12 -1: H_UNRESERVED
+32 -1: (Ljava/util/Map;)Ljava/util/Set;
+32 -1: (Ljava/util/Map$Entry<TK;TV;>;)Z
+25 -1: java/util/Locale$Category
+8 -1: receiver
+9 -1: MAX_VALUE
+4 -1: .RSA
+25 -1: Ljava/net/URLClassLoader;
+15 -1: Terminator.java
+26 -1: (Ljava/lang/String;TV;)TV;
+4 -1: null
+76 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+9 -1: checkCast
+39 -1: ()Ljava/lang/AssertionStatusDirectives;
+15 -1: declaredMethods
+5 -1: clazz
+21 -1:    Retention policy: 
+20 -1: spreadArgElementType
+9 -1: WORD_MASK
+27 -1: ([IILjava/io/InputStream;)I
+11 -1: getMethodAt
+31 -1: (Ljava/net/URL;Ljava/net/URL;)Z
+13 -1: getLocaleName
+14 -1: isEnumConstant
+41 -1: (Ljava/lang/String;)Ljava/nio/CharBuffer;
+16 -1: newInvokeSpecial
+26 -1: (Ljava/nio/ByteBuffer;IS)V
+22 -1: sun/misc/JavaNioAccess
+184 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/security/AccessControlContext;
+96 -1: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+5 -1: ([S)I
+30 -1: java/security/AccessController
+37 -1: sun/misc/Launcher$SharedArchiveLoader
+4 -1: pack
+5 -1: ([S)V
+51 -1: failure       before throwing exception, dump stack
+10 -1: dayOfMonth
+6 -1: CENSIG
+28 -1: java/util/function/Predicate
+26 -1: Malformed \\uxxxx encoding.
+9 -1: initIndex
+11 -1: invoke_LL_L
+23 -1: ConcurrentWeakInternSet
+14 -1: java/lang/Void
+42 -1: java/lang/String$CaseInsensitiveComparator
+38 -1: Ljava/lang/invoke/LambdaForm$Compiled;
+34 -1: java/util/Collections$SingletonSet
+142 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/invoke/CallSite;
+35 -1: too many bootstrap method arguments
+17 -1: maxDelimCodePoint
+13 -1: previousIndex
+3 -1: pop
+6 -1: CENSIZ
+7 -1: ([Z[Z)Z
+11 -1: invoke_LL_V
+3 -1: pos
+33 -1: java/nio/file/WatchEvent$Modifier
+3 -1: pow
+12 -1: nextClearBit
+15 -1: Dictionary.java
+27 -1: sun/reflect/CallerSensitive
+13 -1: signatureType
+10 -1: dstSavings
+13 -1: UnicodeLittle
+16 -1: America/New_York
+82 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
+25 -1: referenceKindIsConsistent
+62 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/LongBuffer;>;
+4 -1: INTS
+11 -1: LOAD_FACTOR
+40 -1: sun/reflect/DelegatingMethodAccessorImpl
+16 -1: accumulateAndGet
+21 -1: (B)Ljava/lang/String;
+6 -1: UNSAFE
+13 -1: resolveOrFail
+21 -1: MapReduceMappingsTask
+5 -1: arity
+77 -1: (Ljava/io/FileDescriptor;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
+5 -1: value
+61 -1: Ljava/util/concurrent/ConcurrentHashMap$EntrySetView<TK;TV;>;
+6 -1: forJar
+52 -1: <T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>;
+21 -1: CREATE_ACC_PERMISSION
+28 -1: sun/misc/NativeSignalHandler
+11 -1: defineClass
+5 -1: match
+93 -1: (Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V
+11 -1: Double.java
+30 -1: America/Argentina/Buenos_Aires
+8 -1: previous
+37 -1: (Ljava/io/Writer;Ljava/lang/String;)V
+9 -1: Synthetic
+18 -1: isVMAnonymousClass
+62 -1: ([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I
+22 -1: (JI)Ljava/lang/String;
+49 -1: (Ljava/lang/CharSequence;II)Ljava/io/PrintStream;
+52 -1: ([Ljava/lang/Thread;)[[Ljava/lang/StackTraceElement;
+12 -1: setDayOfWeek
+11 -1: getManifest
+30 -1: java/util/Locale$FilteringMode
+54 -1: (Ljava/lang/String;)Lsun/util/calendar/CalendarSystem;
+12 -1: nextHashCode
+19 -1: ()Ljava/io/Console;
+42 -1: AccessControlContext invoking the Combiner
+19 -1: shouldBeInitialized
+17 -1: invocationCounter
+21 -1: IMPLEMENTATION_VENDOR
+7 -1: chararr
+60 -1: (Ljava/lang/String;)Ljava/util/Iterator<Ljava/lang/String;>;
+11 -1: asCollector
+52 -1: (ILjava/lang/CharSequence;)Ljava/lang/StringBuilder;
+9 -1: exception
+22 -1: newInstanceCallerCache
+20 -1: nativeLibraryContext
+24 -1: MODIFY_THREAD_PERMISSION
+4 -1: WRAP
+19 -1: Method name is null
+32 -1: sun/invoke/util/ValueConversions
+7 -1: APP_TAG
+24 -1: (Ljava/util/Hashtable;)I
+23 -1: METHOD_FORMAL_PARAMETER
+18 -1: inflationThreshold
+24 -1: java/io/DeleteOnExitHook
+3 -1: pst
+13 -1: BITS_PER_WORD
+25 -1: getConstructorAnnotations
+17 -1: CheckedCollection
+24 -1: (Ljava/util/Hashtable;)V
+7 -1: inClass
+5 -1: getFD
+8 -1: readLong
+19 -1: aliases_ISO_8859_13
+19 -1: invokeWithArguments
+19 -1: aliases_ISO_8859_15
+42 -1: ()Ljava/util/concurrent/ConcurrentHashMap;
+8 -1: expandTo
+23 -1: java/text/MessageFormat
+8 -1: classID0
+11 -1: replaceWith
+21 -1: Invalid port number :
+65 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+19 -1: isGregorianLeapYear
+16 -1: asSpreaderChecks
+11 -1: withInitial
+10 -1: X-UTF-32BE
+57 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+12 -1: wrong type: 
+57 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+17 -1: sun/misc/Resource
+14 -1: getReadTimeout
+8 -1: safeTrim
+38 -1: DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
+14 -1: isElementIndex
+23 -1: FilterOutputStream.java
+6 -1: (IJI)V
+3 -1: put
+57 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+43 -1: Expecting an absolute path of the library: 
+8 -1: checkRef
+53 -1: (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
+74 -1: (Ljava/lang/Class<*>;[Ljava/lang/reflect/Field;)[Ljava/lang/reflect/Field;
+11 -1: user.script
+10 -1: H_ALPHANUM
+17 -1: getCalendarSystem
+48 -1: Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;
+17 -1: EnsureInitialized
+82 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
+243 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V
+26 -1: getAnnotatedExceptionTypes
+10 -1: validIndex
+6 -1: ([CC)I
+8 -1: overflow
+5 -1: getID
+93 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder;
+22 -1: java/util/StringJoiner
+9 -1: putFields
+18 -1: USE_SHARED_ARCHIVE
+8 -1: thursday
+8 -1: nanoTime
+59 -1: (Lsun/reflect/annotation/AnnotationType;Ljava/lang/Class;)V
+69 -1: (Ljava/nio/charset/CoderResult$Cache;I)Ljava/nio/charset/CoderResult;
+36 -1: (J)Ljava/lang/AbstractStringBuilder;
+16 -1: java/util/Arrays
+6 -1: ([CC)V
+25 -1: registerAsParallelCapable
+4 -1: slot
+24 -1: java/net/URLConnection$1
+6 -1: koi8-r
+19 -1:  should be of type 
+46 -1: java/util/concurrent/ConcurrentHashMap$TreeBin
+6 -1: koi8-u
+34 -1: data type scale not a power of two
+53 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
+21 -1: AccessibleObject.java
+53 -1: <E:Ljava/lang/Object;>()Ljava/util/NavigableSet<TE;>;
+88 -1: (Ljava/util/List;Ljava/util/Collection;Ljava/util/Locale$FilteringMode;)Ljava/util/List;
+17 -1: getAnnotationType
+36 -1: Ljava/util/HashMap$TreeNode<TK;TV;>;
+14 -1: declaringClass
+10 -1: read,write
+5 -1: getId
+10 -1: BIG_ENDIAN
+20 -1: PolymorphicSignature
+16 -1: comparingByValue
+67 -1: (ILjava/lang/invoke/MethodType;)[Ljava/lang/invoke/LambdaForm$Name;
+19 -1: java/util/Hashtable
+20 -1: getUnicodeLocaleKeys
+27 -1: ()Ljava/util/LinkedHashMap;
+51 -1: (Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
+30 -1: java/util/HashMap$HashIterator
+22 -1: (IZ)Ljava/lang/String;
+5 -1: yield
+34 -1: java/lang/Throwable$SentinelHolder
+62 -1: (Ljava/lang/invoke/MethodType;ZI)Ljava/lang/invoke/LambdaForm;
+5 -1: (FD)F
+17 -1: java/util/SubList
+24 -1: (Ljava/io/PrintStream;)V
+7 -1: LF.zero
+25 -1: java/util/StringTokenizer
+15 -1: ISO8859_15_FDIS
+11 -1: powerOfTwoD
+11 -1: powerOfTwoF
+22 -1: WeakHashMapSpliterator
+15 -1: refKindIsGetter
+12 -1: setRawOffset
+11 -1: setProperty
+23 -1: (Ljava/lang/Object;IB)V
+45 -1: (ILjava/lang/Object;)Ljava/util/HashMap$Node;
+13 -1: applyAsDouble
+83 -1: (Lsun/misc/URLClassPath$FileLoader;Ljava/lang/String;Ljava/net/URL;Ljava/io/File;)V
+19 -1: MethodAccessor.java
+9 -1: WALL_TIME
+7 -1: INVOKES
+13 -1: java.ext.dirs
+9 -1: getStatic
+56 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
+42 -1: (Ljava/util/function/UnaryOperator<TE;>;)V
+27 -1: java/lang/Class$MethodArray
+10 -1: H_USERINFO
+19 -1: PostVMInitHook.java
+7 -1: running
+32 -1: Warning: passing argument as-is 
+13 -1: EntryIterator
+22 -1: NF_checkSpreadArgument
+46 -1: ([DLjava/util/function/IntToDoubleFunction;I)V
+7 -1: .<init>
+13 -1: mappingLength
+20 -1: implOnMalformedInput
+53 -1: (Ljava/lang/String;ILjava/lang/reflect/Executable;I)V
+26 -1: cannot make variable arity
+18 -1: SharedSecrets.java
+27 -1: (Ljava/io/InputStream;IZ)[B
+9 -1: Asia/Gaza
+55 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
+5 -1: NTLM 
+19 -1: defaultCenturyStart
+18 -1: addElapsedTimeFrom
+38 -1: (Lsun/misc/Cleaner;)Lsun/misc/Cleaner;
+44 -1: (Ljava/io/OutputStream;ZLjava/lang/String;)V
+22 -1: (Ljava/lang/Object;B)V
+6 1: [LBar;
+7 -1: classes
+23 -1: java/net/URLClassLoader
+17 -1: sun/misc/Launcher
+163 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)[Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+12 -1: updateAndGet
+90 -1: (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+9 -1: increment
+27 -1: (Ljava/lang/CharSequence;)V
+16 -1: Ljava/io/Reader;
+27 -1: java/io/PushbackInputStream
+6 -1: (JFZ)V
+17 -1: getAppClassLoader
+35 -1: sun/reflect/generics/tree/Signature
+9 -1: elementAt
+27 -1: (Ljava/lang/CharSequence;)Z
+10 -1: readDouble
+37 -1: ([B)Ljava/nio/charset/CharsetEncoder;
+46 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V
+4 -1: park
+36 -1: java/lang/NegativeArraySizeException
+49 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Z
+121 -1: <T:Ljava/lang/Object;U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
+101 -1: (Ljava/lang/annotation/Annotation;Ljava/lang/annotation/Annotation;)Ljava/lang/annotation/Annotation;
+12 -1: .$|()[{^?*+\\
+6 -1: manRef
+3 -1: 437
+15 -1: newStringUnsafe
+15 -1: constantPoolOop
+10 -1: getPackage
+24 -1: FastCharsetProvider.java
+18 -1: getAnnotationBytes
+187 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class<*>;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/security/AccessControlContext;
+33 -1: Cannot suppress a null exception.
+27 -1: sun/nio/cs/StandardCharsets
+33 -1: (BB)Ljava/lang/invoke/MemberName;
+61 -1: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
+10 -1: X-UTF-32LE
+5 -1: toMap
+89 -1: (Ljava/lang/Class<*>;Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodType;
+46 -1: ([Ljava/lang/Object;IILjava/util/Comparator;)V
+66 -1: ([Ljava/lang/reflect/Constructor;)[Ljava/lang/reflect/Constructor;
+22 -1: ()Ljava/nio/ByteOrder;
+20 -1: isMethodHandleInvoke
+25 -1: sun/net/www/URLConnection
+89 -1: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/lang/invoke/LambdaForm;>;
+49 -1: (Ljava/nio/charset/Charset;FFLjava/lang/String;)V
+17 -1: MIN_LOW_SURROGATE
+23 -1: AbstractCollection.java
+19 -1: (Ljava/util/Date;)I
+19 -1: (Ljava/util/Date;)J
+12 -1: cldrdata.jar
+4 -1: path
+77 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)V
+6 -1: MS1250
+37 -1: setJavaSecurityProtectionDomainAccess
+11 -1: isDelimiter
+5 -1: char0
+6 -1: MS1251
+5 -1: char1
+16 -1: getJavaNetAccess
+6 -1: MS1252
+6 -1: MS1253
+6 -1: MS1254
+51 -1: (Ljava/lang/Class;)Ljava/security/ProtectionDomain;
+6 -1: MS1257
+93 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class<*>;
+10 -1: access$300
+5 -1: (JZ)C
+19 -1: (Ljava/util/Date;)Z
+5 -1: (JZ)D
+26 -1: java/lang/Character$Subset
+10 -1: access$302
+5 -1: (JZ)F
+9 -1: emptyList
+5 -1: (JZ)I
+5 -1: (JZ)J
+23 -1: (Ljava/lang/Runnable;)V
+27 -1: java/lang/invoke/MemberName
+29 -1: ()Ljava/util/Comparator<TT;>;
+18 -1: retrieveDirectives
+7 -1: ([F[F)Z
+40 -1: (Lsun/misc/URLClassPath;Ljava/net/URL;)V
+5 -1: (JZ)S
+40 -1: (Ljava/util/function/IntUnaryOperator;)I
+5 -1: (JZ)V
+16 -1: parseAnnotations
+21 -1: (C)Ljava/lang/String;
+73 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Ljava/util/Map<TK;TV;>;
+15 -1: charset encoder
+17 -1: getDomainCombiner
+9 -1: EmptyList
+15 -1: java.vm.version
+19 -1: getResourceAsStream
+94 -1: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringEncoder;>;>;
+26 -1: java/util/HashMap$TreeNode
+22 -1: (Ljava/util/HashMap;)V
+23 -1: sun/misc/URLClassPath$1
+65 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;)Ljava/net/URLClassLoader;
+20 -1: Hashtable Enumerator
+23 -1: sun/misc/URLClassPath$2
+10 -1: Array.java
+8 -1: FT_LIMIT
+24 -1: ()[Ljava/lang/Throwable;
+23 -1: sun/misc/URLClassPath$3
+14 -1: java/io/Writer
+5 -1: chars
+76 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/NavigableMap<TK;TV;>;
+6 -1:  final
+5 -1: error
+34 -1: java/lang/ApplicationShutdownHooks
+29 -1: Lsun/launcher/LauncherHelper;
+30 -1: ()Ljava/util/Enumeration<TE;>;
+47 -1: (Ljava/util/List;)Ljava/lang/invoke/MethodType;
+9 -1: scriptKey
+5 -1: BYTES
+12 -1: getException
+69 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/MethodType;
+14 -1: Illegal Load: 
+189 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V
+66 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask
+29 -1: getJavaIOFileDescriptorAccess
+11 -1: toCodePoint
+15 -1: setCreationTime
+18 -1: NULL_CAUSE_MESSAGE
+8 -1: elements
+32 -1: ()Ljava/nio/charset/CoderResult;
+8 -1: utf-32be
+7 -1: addDate
+4 -1: Cast
+23 -1: sun/misc/JavaLangAccess
+8 -1: 0{1,12}$
+27 -1: (Ljava/util/ArrayList;III)V
+11 -1: lastIndexOf
+14 -1: getCodeSources
+53 -1: (Lsun/util/calendar/CalendarDate;Ljava/lang/String;)V
+17 -1: cachedConstructor
+7 -1: forName
+74 -1: (Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I
+47 -1: (Ljava/lang/Object;)Lsun/reflect/FieldAccessor;
+8 -1: getDebug
+18 -1: currentClassLoader
+49 -1: Illegal leading minus sign on unsigned string %s.
+20 -1: toLowerCaseCharArray
+38 -1: java/util/concurrent/ConcurrentHashMap
+8 -1: isHidden
+92 -1: (Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V
+29 -1: java/lang/ArithmeticException
+26 -1: (Ljava/io/OutputStream;Z)V
+66 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
+38 -1: Ljava/util/Map<Ljava/lang/String;TT;>;
+16 -1: getFindClassTime
+34 -1: ([J)Ljava/util/Spliterator$OfLong;
+24 -1: UnmodifiableNavigableSet
+32 -1: java/lang/ClassNotFoundException
+3 -1: \\n 
+6 -1: SEALED
+14 -1: Flushable.java
+3 -1: HST
+24 -1: (Ljava/lang/Object;JII)Z
+13 -1: toSecondOfDay
+16 -1: thenComparingInt
+26 -1: java/lang/NoSuchFieldError
+18 -1: java/util/Locale$1
+25 -1: [Ljava/util/HashMap$Node;
+75 -1: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+11 -1: x-mswin-936
+32 -1: java/lang/management/MemoryUsage
+25 -1: (JS)Ljava/nio/ByteBuffer;
+25 -1: java/lang/ref/Finalizer$1
+25 -1: java/lang/ref/Finalizer$2
+21 -1: (Ljava/util/BitSet;)V
+25 -1: java/lang/ref/Finalizer$3
+83 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;Ljava/util/Comparator<-TT;>;)TT;
+24 -1: sun/nio/ch/Interruptible
+21 -1: (Ljava/util/BitSet;)Z
+72 -1: ([Ljava/security/ProtectionDomain;Ljava/security/AccessControlContext;)V
+54 -1: Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>;
+34 -1: getConstructorParameterAnnotations
+4 -1: name
+92 -1: <E:Ljava/lang/Enum<TE;>;>Ljava/lang/Object;Ljava/lang/Comparable<TE;>;Ljava/io/Serializable;
+11 -1: FORM_OFFSET
+13 -1: getAliasTable
+5 -1: (DD)D
+23 -1: reflectionFactoryAccess
+221 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
+59 -1: (Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
+6 -1: DELETE
+10 -1: returnType
+5 -1: (DD)I
+51 -1: ()Lsun/reflect/generics/repository/FieldRepository;
+8 -1: delegate
+12 -1: OTHER_LETTER
+18 -1: getTransitionIndex
+3 -1: HUP
+10 -1: (IIII[CI)V
+10 -1: ISO_8859-1
+17 -1: ArrayEncoder.java
+10 -1: ISO_8859-2
+34 -1: java/lang/reflect/AnnotatedElement
+10 -1: ISO_8859-4
+27 -1: sun/nio/cs/UTF_16LE$Decoder
+10 -1: ISO_8859-5
+13 -1: prefetchWrite
+9 -1: getFloatB
+10 -1: ISO_8859-7
+37 -1: (I)Ljava/lang/invoke/LambdaForm$Name;
+10 -1: ISO_8859-9
+10 -1: getActions
+11 -1: negateExact
+10 -1: isAbstract
+9 -1: getFloatL
+29 -1: java/lang/ClassValue$Identity
+14 -1: java/io/Reader
+8 -1: getOwner
+24 -1: java/lang/AssertionError
+17 -1: MethodHandle.java
+19 -1: classRedefinedCount
+10 -1: cachedYear
+15 -1: getAndIncrement
+26 -1: java.protocol.handler.pkgs
+14 -1: cleanSomeSlots
+27 -1: java/util/Spliterator$OfInt
+31 -1: getRawExecutableTypeAnnotations
+20 -1: ensureInitialization
+7 -1: os.arch
+57 -1: (Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V
+21 -1: UNSAFE_COPY_THRESHOLD
+20 -1: toUnsignedBigInteger
+82 -1: (Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection<Ljava/lang/Thread;>;
+15 -1: Reflection.java
+12 -1: decryptBlock
+3 -1: \\r 
+8 -1: newArray
+8 -1: Category
+36 -1: java/lang/reflect/GenericDeclaration
+22 -1: (Ljava/lang/String;Z)V
+8 -1: suspend0
+10 -1: getSigners
+22 -1: (Ljava/lang/String;Z)Z
+31 -1: Unable to create temporary file
+117 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
+17 -1: channelsAvailable
+9 -1: Date.java
+13 -1: toIndex < 0: 
+18 -1: mark > position: (
+11 -1: loadConvert
+4 -1: july
+42 -1: (Ljava/math/BigInteger;)Ljava/lang/String;
+6 -1: enable
+47 -1: (Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
+6 -1: unpack
+13 -1: setDayOfMonth
+19 -1: name can't be empty
+16 -1: getExtensionKeys
+15 -1: getAndDecrement
+36 -1: Ljava/lang/ClassValue$ClassValueMap;
+38 -1: (Ljava/lang/Class;Ljava/lang/String;)V
+11 -1: csISOlatin0
+9 -1: retention
+23 -1: system protocol handler
+9 -1: nullsLast
+15 -1: refKindIsStatic
+3 -1:  (\n
+48 -1: sun/launcher/LauncherHelper$ResourceBundleHolder
+29 -1: ()Ljava/util/LinkedList<TE;>;
+11 -1: csISOlatin9
+31 -1: ([CII)Ljava/lang/StringBuilder;
+29 -1: (II)Ljava/lang/StringBuilder;
+7 -1: pdcache
+4 -1: june
+12 -1: ;/?:@&=+$,[]
+141 -1: ([Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)[Ljava/lang/invoke/LambdaForm$Name;
+32 -1: ()[Ljava/util/WeakHashMap$Entry;
+110 -1: (Ljava/lang/Class<*>;ILjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+81 -1: (Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
+46 -1: String value %s exceeds range of unsigned int.
+6 -1: close0
+6 -1: (JDZ)V
+160 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Type;Ljava/lang/reflect/AnnotatedElement;
+12 -1: LinkedValues
+24 -1: java/nio/HeapCharBufferR
+23 -1: jvmVersionInfoAvailable
+16 -1: classLoaderDepth
+33 -1: (Lsun/nio/ch/DirectBuffer;IIIII)V
+32 -1: java/nio/file/attribute/FileTime
+50 -1: java/util/concurrent/ConcurrentHashMap$CounterCell
+73 -1: (Lsun/misc/URLClassPath$JarLoader;Lsun/misc/JarIndex;)Lsun/misc/JarIndex;
+60 -1: (Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
+25 -1: Ljava/lang/ref/Finalizer;
+12 -1: utf-32be-bom
+40 -1: (Ljava/lang/String;ILjava/lang/Object;)V
+9 -1: THROW_UCS
+23 -1: java/util/AbstractMap$1
+23 -1: java/util/AbstractMap$2
+10 -1: x-utf-32be
+4 -1: (S)B
+60 -1: (Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/LambdaForm;
+20 -1: ResourceBundleHolder
+4 -1: (S)I
+13 -1: getSuppressed
+17 -1: jdk_micro_version
+4 -1: (S)J
+9 -1: isNumeric
+10 -1: variantKey
+8 -1: utf-32le
+47 -1: java/util/concurrent/ConcurrentHashMap$MapEntry
+25 -1: ()Ljava/lang/Class<-TT;>;
+6 -1: closed
+4 -1: (S)S
+15 -1: setStandardTime
+10 -1: ShortCache
+4 -1: (S)V
+40 -1: sun/net/www/MessageHeader$HeaderIterator
+17 -1: jdk_major_version
+8 -1: FXHelper
+6 -1: CENTIM
+19 -1: java/security/Guard
+46 -1: java.lang.invoke.MethodHandle.DUMP_CLASS_FILES
+4 -1: ENUM
+27 -1: Ljava/lang/SecurityManager;
+39 -1: ([Ljava/lang/Class;[Ljava/lang/Class;)Z
+11 -1: getFieldAt0
+12 -1: user.variant
+28 -1: (Ljava/io/DataInputStream;)V
+44 -1: ([JLjava/util/function/LongBinaryOperator;)V
+7 -1: getRoot
+3 -1:  + 
+16 -1: identityHashCode
+25 -1: java/security/Permissions
+16 -1: Ljava/net/Proxy;
+23 -1: java/io/ExpiringCache$1
+5 -1:  more
+10 -1: formatList
+49 -1: (Ljava/lang/String;)Lsun/launcher/LauncherHelper;
+29 -1: Relative path in absolute URI
+11 -1: checkMapped
+8 -1: Checksum
+8 -1: " Radix:
+9 -1: getAndAdd
+9 -1: implReady
+16 -1: SynchronizedList
+30 -1: [Ljava/lang/StackTraceElement;
+5 -1: right
+13 -1: UTF_16BE.java
+4 -1: HEAD
+11 -1: isInvocable
+6 -1: ENDCOM
+15 -1: getPropertiesEx
+6 -1: Unsafe
+7 -1: IBM-819
+37 -1: : 0 <= i2 && i2 < names.length: 0 <= 
+19 -1: filterAndAddHeaders
+22 -1: nativeParkEventPointer
+18 -1: checkPositionIndex
+13 -1: invalid url: 
+25 -1:  out of range from input 
+9 -1: loadClass
+12 -1: encodingName
+9 -1: x-JIS0208
+38 -1: (Ljava/lang/Class;Ljava/lang/Object;)Z
+28 -1: (I)Ljava/lang/reflect/Field;
+17 -1: getJvmVersionInfo
+6 -1: LIJFDV
+21 -1: (D)Ljava/lang/String;
+7 -1: oomeMsg
+30 -1: java/io/InvalidObjectException
+25 -1: java/io/FilterInputStream
+32 -1: Ljava/net/ContentHandlerFactory;
+13 -1: toUnsignedInt
+17 -1: reconstitutionPut
+37 -1: (Ljava/lang/Object;)Ljava/lang/Class;
+14 -1: getContentType
+43 -1: java/util/Collections$SynchronizedSortedSet
+24 -1: (II)Ljava/nio/file/Path;
+25 -1: JAVAFX_APPLICATION_MARKER
+29 -1: (IC)Ljava/lang/StringBuilder;
+13 -1: java/util/Set
+10 -1: clearError
+64 -1: (Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;
+25 -1: java/io/FileInputStream$1
+8 -1: getFirst
+36 -1: (Lsun/reflect/ConstructorAccessor;)V
+84 -1: (Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/NavigableMap;
+42 -1: (Ljava/lang/CharSequence;)Ljava/io/Writer;
+52 -1: ([Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+6 -1: (IFI)V
+62 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Queue<TE;>;
+17 -1: getHeaderFieldInt
+16 -1: CheckedSortedMap
+39 -1: (ZILjava/lang/String;)Ljava/lang/Class;
+10 -1: getterName
+10 -1: Asia/Tokyo
+4 -1: Node
+7 -1: rotate1
+13 -1: Stream closed
+7 -1: rotate2
+9 -1: checkExec
+17 -1: NF_checkExactType
+18 -1: ReverseComparator2
+18 -1: arrayElementGetter
+97 -1: (Ljava/util/ArrayPrefixHelpers$DoubleCumulateTask;Ljava/util/function/DoubleBinaryOperator;[DII)V
+9 -1: iso8859-1
+9 -1: iso8859-2
+9 -1: iso8859-4
+9 -1: iso8859-5
+9 -1: iso8859-7
+16 -1:  getPermissions 
+9 -1: iso8859-9
+9 -1: fromClass
+17 -1:  with modifiers "
+8 -1: isBooted
+24 -1: getCommonPoolParallelism
+10 -1: initialize
+47 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/Set<TT;>;
+17 -1: checkElementIndex
+14 -1: openConnection
+47 -1: (Ljava/lang/Thread;Lsun/nio/ch/Interruptible;)V
+12 -1: isAuthorized
+17 -1: ReduceEntriesTask
+7 -1: command
+24 -1: ArithmeticException.java
+24 -1: ensureOpenOrZipException
+67 -1: (Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate;
+39 -1: Ljava/lang/invoke/MethodHandles$Lookup;
+31 -1: Enclosing constructor not found
+34 -1: ()Lsun/util/calendar/BaseCalendar;
+25 -1: (JLjava/lang/Object;JJJ)V
+12 -1:  > toIndex: 
+22 -1: LocaleObjectCache.java
+19 -1: sun/misc/Launcher$1
+31 -1: java/util/HashMap$EntryIterator
+8 -1: contains
+60 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
+53 -1: (I[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+19 -1: java/io/PrintStream
+42 -1: java/lang/Math$RandomNumberGeneratorHolder
+100 -1: <K:Ljava/lang/Object;>(I)Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;Ljava/lang/Boolean;>;
+14 -1: getCapturedArg
+14 -1: getCodeSigners
+20 -1: mark() not supported
+56 -1: (Lsun/misc/URLClassPath;I)Lsun/misc/URLClassPath$Loader;
+20 -1: java/lang/StrictMath
+14 -1: annotationType
+3 -1: IET
+4 -1: lang
+13 -1: JarEntry.java
+9 -1: ([CIIII)I
+9 -1: canEncode
+5 -1: extra
+30 -1: java/lang/ref/ReferenceQueue$1
+37 -1: java/nio/channels/ReadableByteChannel
+73 -1: (Ljava/util/Map$Entry<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;)Z
+24 -1: java/io/BufferedReader$1
+10 -1: x-utf-32le
+16 -1: methodDescriptor
+25 -1: (IJ)Ljava/nio/ByteBuffer;
+18 -1: getSystemResources
+46 -1: (Ljava/lang/String;I)Ljava/util/regex/Pattern;
+46 -1: (Ljava/net/URL;)Lsun/misc/URLClassPath$Loader;
+20 -1: calendars.properties
+25 -1: implOnUnmappableCharacter
+12 -1: signers_name
+40 -1: (ZILjava/util/Locale;)Ljava/lang/String;
+8 -1: (TE;)TE;
+50 -1: ()Lsun/util/locale/provider/LocaleProviderAdapter;
+11 -1: key is null
+7 -1: encrypt
+21 -1: millisUntilExpiration
+55 -1: Unable to parse property sun.reflect.inflationThreshold
+9 -1: checkExit
+5 -1: SHORT
+43 -1: java/util/Collections$UnmodifiableSortedSet
+10 -1: ISO8859_15
+16 -1: verifyParameters
+24 -1: buildAnnotatedInterfaces
+15 -1: refKindIsSetter
+45 -1: (JLjava/util/function/BiConsumer<-TK;-TV;>;)V
+23 -1: (Ljava/lang/Object;IC)V
+90 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
+30 -1: (Ljava/net/URL;)Ljava/net/URI;
+60 -1: (BLjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;)V
+43 -1: (Ljava/util/Collection;Ljava/lang/Object;)I
+44 -1: (Ljava/net/URLConnection;)Ljava/lang/Object;
+17 -1: Stream not marked
+11 -1: targetCheck
+127 -1: (Ljava/lang/Class<*>;ILjava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
+11 -1: debugString
+112 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+43 -1: (Ljava/util/Collection;Ljava/lang/Object;)V
+15 -1: NF_staticOffset
+22 -1: CASE_INSENSITIVE_ORDER
+6 -1: unpark
+29 -1: (Ljava/lang/CharSequence;II)I
+59 -1: Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
+19 -1: defaultFormatLocale
+7 -1: combine
+58 -1: (Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;
+29 -1: (Ljava/lang/CharSequence;II)V
+35 -1: sun/util/calendar/BaseCalendar$Date
+57 -1: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
+75 -1: ([Ljava/lang/reflect/Member;[Ljava/lang/String;)[Ljava/lang/reflect/Member;
+15 -1: MethodType_init
+5 -1: (JF)V
+20 -1: AUTOSELECT_FILTERING
+12 -1: invokeStatic
+18 -1: readFileDescriptor
+22 -1: java/lang/Terminator$1
+72 -1: (Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
+17 -1: EMPTY_STACK_TRACE
+13 -1: isSamePackage
+32 -1: ()Ljava/security/DomainCombiner;
+10 -1: decodeLoop
+30 -1: DIRECTIONALITY_EUROPEAN_NUMBER
+112 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/lang/String;
+33 -1: (Ljava/util/function/Predicate;)Z
+35 -1: logincontext  login context results
+17 -1: sun/nio/cs/UTF_16
+13 -1: SingletonList
+5 -1:  end=
+7 -1: getURLs
+17 -1: traceInstructions
+22 -1: generateCustomizedCode
+9 -1: NO_CHANGE
+11 -1: Number.java
+49 -1: <T:Ljava/lang/Object;>(ITT;)Ljava/util/List<TT;>;
+19 -1: checkSpecifyHandler
+8 -1: setValue
+30 -1: (Ljava/net/URL;)Ljava/net/URL;
+22 -1: (Ljava/lang/Object;C)V
+19 -1: Negative capacity: 
+24 -1: ArrayStoreException.java
+52 -1: (Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer;
+14 -1: linkMethodImpl
+42 -1: java/util/InvalidPropertiesFormatException
+4 -1: last
+19 -1: getLocalizedMessage
+65 -1: (Ljava/text/MessageFormat;[Ljava/lang/String;)[Ljava/lang/String;
+61 -1: Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/Object;>;
+40 -1: (I[CII)Ljava/lang/AbstractStringBuilder;
+27 -1: java.launcher.opt.datamodel
+29 -1: (Ljava/lang/reflect/Method;)V
+19 -1: SPECIFICATION_TITLE
+123 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;ILjava/lang/Class;)Lsun/reflect/SerializationConstructorAccessorImpl;
+32 -1: (I[CII)Ljava/lang/StringBuilder;
+29 -1: (Ljava/lang/reflect/Method;)Z
+23 -1: (Z[B)Ljava/lang/String;
+27 -1: sun/nio/cs/Surrogate$Parser
+32 -1: (Ljavax/security/auth/Subject;)Z
+29 -1: ()Ljava/lang/invoke/Invokers;
+7 -1: getPool
+7 -1: textOut
+12 -1: getEntryTime
+14 -1: classModifiers
+47 -1: (Ljava/util/Locale$Category;)Ljava/util/Locale;
+32 -1: getInheritedAccessControlContext
+4 -1: rcbt
+37 -1: (Ljava/lang/Class<*>;Ljava/io/File;)Z
+25 -1: AccessControlContext.java
+22 -1: FileURLConnection.java
+12 -1: NaturalOrder
+34 -1: sun/util/calendar/CalendarSystem$1
+94 -1: ([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
+17 -1: No enum constant 
+7 -1: ([DII)V
+8 -1: register
+23 -1: FINAL_QUOTE_PUNCTUATION
+27 -1: ACCESS_CLIPBOARD_PERMISSION
+15 -1: verifyConstants
+20 -1: (Ljava/io/Writer;I)V
+45 -1: (Ljava/lang/String;)Ljava/lang/reflect/Field;
+24 -1: linkMethodHandleConstant
+43 -1: (Ljava/io/OutputStream;Ljava/lang/String;)V
+125 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Comparator<-TV;>;)Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
+14 -1: ALL_PERMISSION
+12 -1: createObject
+10 -1: CRC32.java
+14 -1: reservedMemory
+22 -1: ensureCapacityInternal
+11 -1: FormatData_
+9 -1: maxMemory
+27 -1: (I)Ljava/util/ListIterator;
+8 -1: UTF-16BE
+27 -1: AbstractSequentialList.java
+10 -1: access$400
+16 -1: Locale settings:
+10 -1: access$402
+12 -1: HashSet.java
+24 -1: java/lang/Long$LongCache
+30 -1: [Ljava/lang/reflect/Parameter;
+11 -1: single_step
+45 -1: (Ljava/lang/String;)Lsun/security/util/Debug;
+97 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/SimpleMethodHandle;
+16 -1: indexOfBangSlash
+7 -1: region=
+26 -1: ([BII)Ljava/lang/Class<*>;
+8 -1: bitCount
+3 -1: INT
+67 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/function/IntFunction<+TT;>;)V
+35 -1: newGetFloatIllegalArgumentException
+11 -1: ([DII[DII)V
+22 -1: makePreparedLambdaForm
+3 -1:  < 
+35 -1: sun/management/GarbageCollectorImpl
+4 -1: (*)*
+7 -1: getPort
+18 -1: java/io/FileSystem
+7 -1: getNode
+38 -1: (Ljava/lang/Object;I)Ljava/lang/Class;
+36 -1: $SwitchMap$java$util$Locale$Category
+18 -1: securityCheckCache
+5 -1: cdate
+10 -1: childValue
+19 -1: getMainClassFromJar
+70 -1: <T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)TT;
+20 -1: unsuspendSomeThreads
+29 -1: sun.classloader.findClassTime
+11 -1: plusSeconds
+3 -1:  = 
+4 -1: Lock
+7 -1: regions
+38 -1: ()Ljava/lang/reflect/Constructor<TT;>;
+25 -1: parseParameterAnnotations
+20 -1: getSystemGMTOffsetID
+33 -1: [Cc][Oo][Dd][Ee][Bb][Aa][Ss][Ee]=
+37 -1: (Ljava/lang/String;I)Ljava/lang/Byte;
+10 -1: permission
+78 -1: (Ljava/lang/reflect/Constructor;)Lsun/reflect/generics/scope/ConstructorScope;
+28 -1: (Lsun/misc/JavaLangAccess;)V
+26 -1: GET_CLASSLOADER_PERMISSION
+24 -1: (J)Ljava/nio/ByteBuffer;
+20 -1: getUnresolvedActions
+49 -1: (I[BIILsun/security/util/ManifestEntryVerifier;)V
+5 -1: (ZJ)V
+14 -1: isClassOnlyJar
+35 -1: ()[Ljava/util/HashMap$Node<TK;TV;>;
+23 -1: ()Ljava/util/SortedMap;
+29 -1: HistoricallyNamedCharset.java
+30 -1: no leading reference parameter
+8 -1: csCESU-8
+3 -1:  > 
+13 -1: invoke_LLLL_L
+109 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;+TV;>;)Ljava/util/NavigableMap<TK;TV;>;
+13 -1: invoke_LLLL_V
+46 -1: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Field;
+5 -1: offer
+12 -1: isoLanguages
+61 -1: (Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V
+44 -1: sun/reflect/BootstrapConstructorAccessorImpl
+12 -1: BaseIterator
+58 -1: (IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;
+23 -1: initializeOSEnvironment
+62 -1: ([Ljava/security/cert/Certificate;)[Ljava/security/CodeSigner;
+3 -1:  >>
+13 -1: searchEntries
+7 -1: setDate
+3 -1: red
+3 -1: ref
+10 -1: EMPTY_LIST
+3 -1: rem
+78 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/List<TE;>;
+9 -1: scanToken
+6 -1: greek8
+9 -1: basicType
+12 -1: getFromClass
+43 -1: averageCharsPerByte exceeds maxCharsPerByte
+8 -1: isDaemon
+7 -1: nonNull
+17 -1: Invalid default: 
+45 -1: (Lsun/misc/URLClassPath;Ljava/lang/String;Z)V
+18 -1: java/lang/String$1
+11 -1: copyMethods
+15 -1: sun/misc/Signal
+5 -1: float
+18 -1: StreamDecoder.java
+19 -1: no such constructor
+14 -1: bad arity for 
+14 -1: divideUnsigned
+10 -1: CODING_END
+3 -1: IST
+14 -1: HeaderIterator
+9 -1: september
+20 -1: makeVarargsCollector
+6 -1: L_PATH
+45 -1: (Ljava/lang/String;)Ljava/io/File$PathStatus;
+24 -1: URI scheme is not "file"
+85 -1: (Ljava/lang/Class<TT;>;Ljava/lang/Class<TV;>;Ljava/lang/String;Ljava/lang/Class<*>;)V
+27 -1: java/util/function/Supplier
+17 -1: checkedCollection
+8 -1: MapEntry
+81 -1: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
+34 -1: java/security/ProtectionDomain$Key
+14 -1: List length = 
+39 -1: ([Ljava/lang/Object;)Ljava/lang/String;
+87 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+7 -1: unparse
+28 -1: jarFileHasClassPathAttribute
+40 -1: (Lsun/misc/JavaIOFileDescriptorAccess;)V
+30 -1: (Ljava/lang/reflect/Field;ZZ)V
+22 -1: GetPropertyAction.java
+8 -1: RUNNABLE
+10 -1: exprString
+13 -1: getAnnotation
+19 -1: class can't be null
+22 -1: defaultAssertionStatus
+8 -1: getName0
+16 -1: quoteReplacement
+15 -1: getMemberVMInfo
+42 -1: (Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
+16 -1: cachedLambdaForm
+16 -1: addFinalRefCount
+12 -1: getMethodAt0
+8 -1: ([ZII)[Z
+44 -1: (Ljava/lang/Object;TV;Ljava/lang/Object;)TV;
+4 -1: [TT;
+29 -1: Ljava/lang/invoke/LambdaForm;
+28 -1: java/util/DualPivotQuicksort
+61 -1: ()Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;TV;>;
+17 -1: registerDirectory
+8 -1: jarFiles
+69 -1: (Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;
+54 -1: [Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+15 -1: getDefaultValue
+39 -1: sun/util/calendar/ZoneInfoFile$Checksum
+20 -1: DISABLE_JAR_CHECKING
+12 -1: CONTENT_TYPE
+46 -1: array type not assignable to trailing argument
+60 -1: <T:Ljava/lang/Object;>([TT;II)Ljava/util/stream/Stream<TT;>;
+47 -1: java.lang.invoke.MethodHandle.COMPILE_THRESHOLD
+9 -1: toInstant
+152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/NavigableMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/NavigableMap<TK;TV;>;
+7 -1: L_ALPHA
+29 -1: java/lang/AbstractMethodError
+29 -1: java/util/jar/Attributes$Name
+15 -1: LOCALE_SETTINGS
+19 -1: (J)Ljava/lang/Long;
+4 -1: jar:
+17 -1: ensureInitialized
+13 -1: LAST_MODIFIED
+40 -1: ([Ljava/lang/String;)[Ljava/lang/String;
+7 -1: shuffle
+70 -1: (Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder;
+19 -1: isPackageAccessible
+17 -1: compileToBytecode
+11 -1: getPackages
+237 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
+53 -1: java/util/concurrent/ConcurrentHashMap$KeySpliterator
+26 -1: setURLStreamHandlerFactory
+47 -1: access        print all checkPermission results
+22 -1: sun/reflect/MethodInfo
+75 -1: (Ljava/lang/String;ZLjava/util/Set<Ljava/lang/String;>;)Lsun/misc/Resource;
+6 -1: KOI8-R
+14 -1: Character.java
+5 -1: (SS)I
+8 -1: unshared
+73 -1: (Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
+19 -1: replacementTreeNode
+10 -1: BA_REGULAR
+8 -1: UTF-16LE
+44 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)V
+22 -1: InputStreamReader.java
+17 -1: getInvocationType
+23 -1: getDeclaredConstructors
+48 -1: [Lsun/reflect/generics/tree/FormalTypeParameter;
+67 -1: (Ljava/util/Comparator;Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
+6 -1: koi8_r
+14 -1: ofTotalSeconds
+16 -1: content-encoding
+6 -1: koi8_u
+10 -1: getEncoded
+6 -1: ()[TT;
+43 -1: ([ILjava/util/function/IntUnaryOperator;I)V
+18 -1: getSecurityContext
+13 -1: LF_GEN_LINKER
+78 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
+49 -1: (Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V
+19 -1: LinkedEntryIterator
+23 -1: Warning: JIT compiler "
+7 -1: static 
+100 -1: (Ljava/lang/Class;ZLjava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Ljava/util/List;
+79 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;)Ljava/util/Collection<TT;>;
+10 -1: iso-ir-100
+10 -1: iso-ir-101
+13 -1: toUpperString
+31 -1: ()Ljava/util/Spliterator$OfInt;
+43 -1: Ljava/lang/StringIndexOutOfBoundsException;
+19 -1: Lsun/misc/JarIndex;
+7 -1: Version
+90 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
+10 -1: getHandler
+45 -1: (ILjava/lang/Object;)Ljava/lang/StringBuffer;
+28 -1: getDeclaredAnnotationsByType
+46 -1: ([Ljava/lang/Class;Ljava/lang/StringBuilder;)V
+53 -1: ()Ljava/util/Enumeration<Ljava/security/Permission;>;
+15 -1: addAllNonStatic
+10 -1: iso-ir-110
+14 -1:     Using VM: 
+17 -1: casReflectionData
+26 -1: (Lsun/util/PreHashedMap;)I
+24 -1: removeByNameAndSignature
+4 -1: OS X
+85 -1: (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Z
+16 -1: JarEntryIterator
+38 -1: Ljava/lang/Class<Ljava/lang/Integer;>;
+37 -1: Ljava/lang/Class<Ljava/lang/Double;>;
+28 -1: ([Ljava/util/HashMap$Node;)V
+34 -1: java/lang/reflect/GenericArrayType
+14 -1: annotationData
+26 -1: (Lsun/util/PreHashedMap;)V
+22 -1: checkPackageDefinition
+30 -1: ACCUMULATED_DAYS_IN_MONTH_LEAP
+12 -1: lowestOneBit
+64 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)V
+16 -1: asReadOnlyBuffer
+11 -1: getRealName
+17 -1: StringCoding.java
+10 -1: iso-ir-126
+11 -1: isSurrogate
+8 -1: setError
+138 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
+8 -1: (TK;)TK;
+4 -1: java
+136 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)TT;
+36 -1: ()Lsun/util/locale/LocaleExtensions;
+12 -1: doubleStream
+28 -1: ()Ljava/util/SimpleTimeZone;
+7 -1: :@&=+$,
+94 -1: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringDecoder;>;>;
+64 -1: (Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+19 -1: getSystemTimeZoneID
+18 -1: ReentrantLock.java
+8 -1: emptyMap
+16 -1: getSavedProperty
+249 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
+14 -1: KeySpliterator
+13 -1: findResources
+14 -1: forWrapperType
+8 -1: floorMod
+12 -1: isoCountries
+10 -1: CheckedSet
+21 -1: AbstractCalendar.java
+12 -1: IS_INVOCABLE
+45 -1: (Ljava/lang/Class;)Lsun/reflect/ConstantPool;
+19 -1: checkSecurityAccess
+13 -1: Invalid index
+28 -1: STACK_TRACE_ELEMENT_SENTINEL
+88 -1: (ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
+130 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+14 -1: aliases_IBM437
+10 -1: iso-ir-144
+10 -1: iso-ir-148
+35 -1: ()Ljava/nio/charset/CharsetDecoder;
+95 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+16 -1: UnmodifiableList
+40 -1: ()Ljava/util/concurrent/locks/Condition;
+9 -1: Path.java
+80 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/util/Map;
+36 -1: Ljava/lang/Class<Ljava/lang/Float;>;
+124 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/Object;
+20 -1: privateGetParameters
+24 -1: sun/nio/cs/StreamDecoder
+12 -1: getFreeSpace
+8 -1: US-ASCII
+22 -1: negativeZeroDoubleBits
+9 -1: putObject
+13 -1: linkToVirtual
+35 -1: Ljava/lang/Class<Ljava/lang/Long;>;
+15 -1: detectedCharset
+26 -1: java/lang/reflect/Modifier
+22 -1: JAVAFX_LAUNCH_MODE_JAR
+32 -1: java/net/URLStreamHandlerFactory
+7 -1: IBM-923
+80 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/String;
+13 -1: TRANSFERINDEX
+34 -1: (Lsun/nio/cs/StandardCharsets$1;)V
+23 -1: ()Ljava/io/InputStream;
+16 -1: ()Ljava/io/File;
+41 -1: (Ljava/lang/String;)Ljava/nio/ByteBuffer;
+22 -1: sun/reflect/Reflection
+23 -1: java/lang/AutoCloseable
+25 -1: BootstrapMethodError.java
+19 -1: EnclosingMethodInfo
+13 -1: transferIndex
+18 -1: java/lang/Compiler
+4 -1: zero
+29 -1: java/util/Arrays$NaturalOrder
+9 -1: language=
+37 -1: Ljava/util/ArrayList<Ljava/net/URL;>;
+73 -1: ()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
+16 -1: balanceInsertion
+82 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+11 -1: asIntBuffer
+27 -1: (Ljava/util/LinkedList;II)V
+13 -1: ofEpochSecond
+19 -1: sunjce_provider.jar
+21 -1: (F)Ljava/lang/String;
+32 -1:  >> does not contain binding << 
+21 -1: declaredPublicMethods
+5 -1: FIELD
+17 -1: getPrimitiveClass
+127 -1: (Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;Ljava/lang/Class;Ljava/lang/String;)V
+21 -1: replaceParameterTypes
+73 -1: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/security/PermissionCollection;>;
+21 -1: (Ljava/lang/Double;)I
+5 -1: floor
+4 -1: halt
+14 -1: newConstructor
+48 -1: (Ljava/util/function/BiFunction<-TK;-TV;+TV;>;)V
+17 -1: packageAccessLock
+15 -1: America/Phoenix
+19 -1: Incoming arguments:
+11 -1: V_Monotonic
+14 -1: decrementExact
+15 -1: updatePositions
+14 -1: toLocaleString
+12 -1: appendEscape
+7 -1: DISPLAY
+27 -1: sun/nio/cs/US_ASCII$Decoder
+13 -1: LITTLE_ENDIAN
+6 -1: isNull
+13 -1: TempDirectory
+6 -1: LM_JAR
+39 -1: JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
+10 -1: isCompiled
+36 -1: (Ljava/lang/AbstractStringBuilder;)Z
+3 -1: run
+17 -1: START_PUNCTUATION
+33 -1: Ljava/util/Stack<Ljava/net/URL;>;
+49 -1: (Ljava/lang/String;)Ljava/lang/invoke/LambdaForm;
+28 -1: java/security/DomainCombiner
+53 -1: (Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId;
+81 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)[Ljava/lang/reflect/AnnotatedType;
+43 -1: java/lang/management/GarbageCollectorMXBean
+11 -1: toTitleCase
+12 -1: getHoldCount
+4 -1: ()[B
+4 -1: ()[C
+4 -1: ()[J
+20 -1: (Ljava/io/File;IZZ)Z
+18 -1: fileTimeToUnixTime
+23 -1: java/nio/HeapCharBuffer
+30 -1: Ljava/lang/ref/ReferenceQueue;
+6 -1: rt.jar
+69 -1: (Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+21 -1: java/lang/ThreadLocal
+25 -1: Ljava/lang/reflect/Field;
+44 -1: (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
+93 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/MethodHandle;
+22 -1: getDayOfWeekDateBefore
+37 -1: [Lsun/reflect/generics/tree/TypeTree;
+83 -1: <E:Ljava/lang/Object;>(Ljava/util/Map<TE;Ljava/lang/Boolean;>;)Ljava/util/Set<TE;>;
+10 -1: readFields
+42 -1: (Ljava/net/URL;)Ljava/security/CodeSource;
+44 -1: (Ljava/lang/String;IIJ)Ljava/nio/ByteBuffer;
+27 -1: Ljava/util/Collection<TE;>;
+13 -1: checkResource
+7 -1: rename0
+51 -1: (C)Ljava/lang/invoke/BoundMethodHandle$SpeciesData;
+47 -1: sun/reflect/generics/repository/FieldRepository
+11 -1: readBoolean
+134 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
+13 -1: getZoneOffset
+17 -1: getJdkVersionInfo
+21 -1: sun/misc/MessageUtils
+23 -1: defaultAllowArraySyntax
+31 -1: java/util/concurrent/locks/Lock
+24 -1: java/lang/reflect/Method
+7 -1: toUpper
+17 -1: sun/misc/Signal$1
+51 -1: (JLjava/util/function/BiFunction<-TK;-TK;+TK;>;)TK;
+28 -1: (Ljava/lang/ref/Reference;)Z
+8 -1: nthreads
+26 -1: MapReduceEntriesToLongTask
+27 -1: (Ljava/util/NavigableSet;)V
+10 -1: savedProps
+25 -1: Lsun/security/util/Debug;
+12 -1: CR_MALFORMED
+13 -1: com.sun.proxy
+17 -1: CharSequence.java
+24 -1: (ILjava/lang/String;II)Z
+13 -1: findNextValue
+108 -1: <K::Ljava/lang/Comparable<-TK;>;V:Ljava/lang/Object;>()Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
+5 -1: (FF)F
+9 -1: typeClass
+5 -1: (FF)I
+11 -1: segmentMask
+7 -1: (JJJJ)V
+14 -1: aliases_CESU_8
+85 -1: (Ljava/lang/Class;Ljava/lang/invoke/MemberName;)Ljava/lang/invoke/DirectMethodHandle;
+15 -1: getCalendarDate
+21 -1: getDeclaredAnnotation
+8 -1: ([BIIB)I
+15 -1: stripExtensions
+14 -1: getISO3Country
+5 -1: short
+47 -1: String value %s exceeds range of unsigned long.
+34 -1: ()Ljava/security/ProtectionDomain;
+8 -1: ([BIIB)V
+23 -1: (Ljava/lang/Object;ID)V
+47 -1: (Ljava/lang/String;Ljava/nio/charset/Charset;)V
+29 -1: RuntimeVisibleTypeAnnotations
+24 -1: (Ljava/io/InputStream;)V
+39 -1: (Ljava/lang/Class;Ljava/lang/String;Z)V
+16 -1: convertPrimitive
+8 -1: (TK;)TV;
+24 -1: (Ljava/io/InputStream;)Z
+6 -1: start 
+243 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
+9 -1: asSpecial
+20 -1: java/text/Normalizer
+17 -1: DAYS_0000_TO_1970
+9 -1: toCharset
+20 -1: REPLACEALL_THRESHOLD
+20 -1: sun/net/util/URLUtil
+16 -1: findLoadedClass0
+14 -1: localedata.jar
+6 -1: Parser
+6 -1: start0
+4 -1: hash
+83 -1: (Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+29 -1: Ljava/lang/invoke/MemberName;
+8 -1: BOOT_TAG
+22 -1: MH_LINKER_ARG_APPENDED
+14 -1: comparingByKey
+47 -1: ([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
+6 -1: start=
+18 -1: StringBuilder.java
+7 -1: getLong
+12 -1: copyElements
+16 -1: highResFrequency
+11 -1: toGMTString
+10 -1: ISO_8859_1
+10 -1: ISO_8859_2
+6 -1: result
+10 -1: ISO_8859_4
+10 -1: ISO_8859_5
+10 -1: ISO_8859_7
+15 -1: unmodifiableSet
+10 -1: ISO_8859_9
+25 -1: NoClassDefFoundError.java
+42 -1: (Ljava/lang/String;)Ljava/util/LinkedList;
+14 -1: parallelPrefix
+22 -1: ARRAY_LONG_INDEX_SCALE
+6 -1: resume
+36 -1: Ljava/lang/invoke/LambdaForm$Hidden;
+50 -1: java/util/Collections$UnmodifiableRandomAccessList
+130 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
+6 -1: getInt
+13 -1: getCachedYear
+21 -1: CONNECTOR_PUNCTUATION
+73 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;ILjava/lang/Class;)V
+24 -1: [Lsun/util/calendar/Era;
+22 -1: (Ljava/lang/Object;D)V
+74 -1: (Ljava/security/AccessControlContext;)Ljava/security/AccessControlContext;
+109 -1: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Ljava/lang/Class$AnnotationData;Ljava/lang/Class$AnnotationData;)Z
+6 -1: ([CZ)V
+74 -1: (Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
+19 -1: TRADITIONAL_CHINESE
+125 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
+18 -1: unknown protocol: 
+57 -1: (Ljava/lang/reflect/Method;Lsun/reflect/MethodAccessor;)V
+13 -1: writeComments
+9 -1: Negotiate
+14 -1: Closeable.java
+10 -1: asSpreader
+122 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey;
+17 -1: jvm_minor_version
+9 -1: getDouble
+25 -1: Ljava/io/File$PathStatus;
+19 -1: averageCharsPerByte
+22 -1: getConstructorAccessor
+61 -1: (Ljava/lang/String;)Ljava/lang/management/MemoryManagerMBean;
+45 -1: (Ljava/lang/String;)Ljava/util/regex/Pattern;
+25 -1: (JC)Ljava/nio/ByteBuffer;
+20 -1: exclusiveOwnerThread
+85 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)V
+17 -1: getExtensionValue
+14 -1: getLoadAverage
+17 -1: GET_PD_PERMISSION
+6 -1: METHOD
+23 -1: sun/nio/cs/ISO_8859_1$1
+23 -1: (I[Ljava/lang/Object;)I
+4 1: zzz1
+13 -1: createWrapper
+4 1: zzz2
+4 1: zzz3
+33 -1:  greater than Character.MAX_RADIX
+37 -1: DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
+6 -1: BRIDGE
+20 -1: canonicalizeLanguage
+13 -1: setPermission
+46 -1: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
+3 -1: 646
+14 -1: java/lang/Long
+55 -1: java/util/concurrent/ConcurrentHashMap$SearchValuesTask
+38 -1: (IC)Ljava/lang/invoke/LambdaForm$Name;
+37 -1: (Ljava/lang/Class;)Ljava/lang/String;
+17 -1: javaUtilJarAccess
+23 -1: registerMethodsToFilter
+34 -1: (Ljava/nio/charset/Charset;[CII)[B
+11 -1: % VERSION 2
+37 -1: ([DI)Ljava/util/Spliterator$OfDouble;
+16 -1:     Stack Size: 
+52 -1: (Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+17 -1: putDoubleVolatile
+10 -1: access$500
+10 -1: access$502
+28 -1: malformed input around byte 
+13 -1: LF_INVSPECIAL
+32 -1: Non-positive averageCharsPerByte
+14 -1: NF_fieldOffset
+10 -1: access$508
+48 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/List<TT;>;
+17 -1: defaultReadObject
+17 -1: java/util/TimSort
+13 -1: resolveClass0
+92 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+20 -1: setLangReflectAccess
+30 -1: java/lang/reflect/TypeVariable
+56 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/Spliterator<TT;>;
+8 -1: VOLATILE
+10 -1: Big5-HKSCS
+23 -1: (Ljava/util/Locale$1;)V
+15 -1: ISO_8859-1:1987
+14 -1: no such method
+10 -1: null value
+8 -1: checkURL
+22 -1: ARRAY_BYTE_INDEX_SCALE
+27 -1: (Ljava/lang/ClassLoader;Z)V
+22 -1: java/lang/reflect/Type
+25 -1: java/net/JarURLConnection
+36 -1: java/util/WeakHashMap$KeySpliterator
+26 -1: ()Lsun/misc/JavaAWTAccess;
+50 -1: (I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+9 -1: toDegrees
+12 -1: lowSurrogate
+19 -1: getEnclosingMethod0
+7 -1: bytearr
+35 -1: (Ljava/util/List;Ljava/util/List;)I
+25 -1: [Ljava/lang/reflect/Type;
+34 -1: javaSecurityProtectionDomainAccess
+21 -1: java.launcher.X.usage
+37 -1: sun/util/locale/InternalLocaleBuilder
+33 -1: ()Ljava/lang/invoke/MethodHandle;
+3 -1: scl
+19 -1: synthesizeAllParams
+68 -1: Ljava/util/Map<Ljava/lang/String;[Ljava/security/cert/Certificate;>;
+6 -1: vclass
+35 -1: (Ljava/util/List;Ljava/util/List;)V
+59 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Float;>;
+13 -1: CallSite.java
+10 1: Bar loaded
+21 -1: ARRAY_INT_BASE_OFFSET
+49 -1: Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
+32 -1: [Ljava/lang/reflect/Constructor;
+4 -1: type
+34 -1: <T:Ljava/lang/Object;>([TT;II)[TT;
+25 -1: BufferedOutputStream.java
+23 -1: java/util/zip/ZipFile$1
+24 -1: ()Ljava/lang/ClassValue;
+50 -1: (Ljava/util/concurrent/CountedCompleter;[F[FIIII)V
+16 -1: getQueuedThreads
+26 -1: getJavaNetHttpCookieAccess
+8 -1: setExtra
+8 -1: implRead
+20 -1: linkMethod => throw 
+76 -1: (Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I
+11 -1: KeyIterator
+39 -1: Ljava/util/List<Ljava/lang/Throwable;>;
+3 -1: " "
+36 -1: Ljava/lang/IllegalArgumentException;
+11 -1: checkBounds
+30 -1: sun/nio/cs/FastCharsetProvider
+11 -1: toLongArray
+107 -1: (Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Class<*>;IILjava/lang/String;[B)Ljava/lang/reflect/Field;
+8 -1:  (build 
+39 -1: (Ljava/nio/Buffer;ILjava/nio/Buffer;I)V
+31 -1: [Ljava/lang/reflect/Executable;
+3 -1: set
+21 -1: PhantomReference.java
+41 -1: java/util/Collections$CheckedNavigableMap
+53 -1: Can not make a java.lang.Class constructor accessible
+12 -1: ([CII[CIII)I
+55 -1: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Void;>;
+12 -1: MICROSECONDS
+11 -1: writeBuffer
+52 -1:               and domain that didn't have permission
+37 -1: java/nio/channels/WritableByteChannel
+26 -1: getRawClassTypeAnnotations
+15 -1: putCharVolatile
+33 -1: java/security/InvalidKeyException
+19 -1: Ljava/io/Closeable;
+83 -1: Lsun/util/locale/LocaleObjectCache<Ljava/util/Locale$LocaleKey;Ljava/util/Locale;>;
+10 -1: SetFromMap
+24 -1: JavaFX-Application-Class
+13 -1: asShortBuffer
+10 -1: getReifier
+15 -1: isPositionIndex
+18 -1: SignalHandler.java
+3 -1: JST
+28 -1: (Ljava/io/FileDescriptor;I)I
+28 -1: getStackAccessControlContext
+16 -1: updateByteBuffer
+27 -1: ()Ljava/net/ContentHandler;
+25 -1: (JD)Ljava/nio/ByteBuffer;
+39 -1: ()Lsun/misc/JavaIOFileDescriptorAccess;
+107 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+42 -1: sun/misc/PerfCounter$WindowsClientCounters
+8 -1: addExact
+28 -1: (Ljava/io/FileDescriptor;I)V
+36 -1: ([Ljava/lang/String;)Ljava/util/Map;
+21 -1: ()Ljava/lang/Process;
+4 -1: UTF8
+5 -1: mkdir
+10 -1: transient 
+3 -1: sgp
+15 -1: balanceDeletion
+161 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;
+15 -1: SynchronizedMap
+40 -1: sun.misc.URLClassPath.disableJarChecking
+92 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/io/Serializable;
+17 -1: removeEldestEntry
+35 -1: (I)Ljava/lang/Class$AnnotationData;
+24 -1: Ljava/util/Locale$Cache;
+13 -1: STANDARD_TIME
+17 -1: sun/nio/cs/MS1252
+99 -1: <K:Ljava/lang/Object;>()Ljava/util/concurrent/ConcurrentHashMap$KeySetView<TK;Ljava/lang/Boolean;>;
+23 -1: java/util/LinkedHashSet
+9 -1: iso8859_1
+9 -1: iso8859_2
+9 -1: iso8859_4
+66 -1: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)[TA;
+9 -1: iso8859_5
+9 -1: iso8859_7
+9 -1: iso8859_9
+21 -1: Ljava/util/Formatter;
+6 -1: isPath
+21 -1: makeReferenceIdentity
+24 -1: sun/net/ApplicationProxy
+23 -1: ClassCastException.java
+11 -1: MethodArray
+12 -1: SingletonMap
+41 -1: java/util/ArrayPrefixHelpers$CumulateTask
+7 -1: seconds
+20 -1: ClassRepository.java
+14 -1: allocateMemory
+24 -1: java.launcher.jar.error1
+24 -1: java.launcher.jar.error2
+24 -1: java.launcher.jar.error3
+45 -1: (Ljava/lang/String;Ljava/util/jar/Manifest;)Z
+3 -1: sin
+7 -1: (J[II)I
+3 -1: Itr
+18 -1: findBootstrapClass
+10 -1: getElement
+15 -1: ISO_8859-4:1988
+34 -1: newGetLongIllegalArgumentException
+7 -1: pending
+17 -1: isNotContinuation
+6 -1: EXTSIG
+13 -1: searchMethods
+32 -1: Lsun/misc/JavaUtilZipFileAccess;
+33 -1: ([Ljava/lang/reflect/Parameter;)V
+31 -1: defaultUncaughtExceptionHandler
+89 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind<*>;)Ljava/nio/file/WatchKey;
+5 -1: ASCII
+28 -1: ()Lsun/reflect/ConstantPool;
+20 -1: isJavaIdentifierPart
+6 -1: EXTSIZ
+34 -1: Lsun/misc/JavaNetHttpCookieAccess;
+34 -1: ClassLoader object not initialized
+7 -1: CHECKED
+16 -1: encodeBufferLoop
+37 -1: (Ljava/time/Instant;)Ljava/util/Date;
+24 -1: (Ljava/util/Map$Entry;)Z
+50 -1: java/util/concurrent/ConcurrentHashMap$KeyIterator
+31 -1: ()[Ljava/lang/ClassValue$Entry;
+31 -1: java/lang/IllegalStateException
+43 -1: (Ljava/lang/Appendable;Ljava/util/Locale;)V
+6 -1: CENVEM
+53 -1: Ljava/util/ArrayList<Lsun/misc/URLClassPath$Loader;>;
+17 -1: getHeaderFieldKey
+71 -1: (Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;
+6 -1: CENVER
+17 -1: cleanStaleEntries
+9 -1: linkFirst
+57 -1: (Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
+8 -1: val$file
+27 -1: Invalid parameter modifiers
+6 -1: append
+57 -1: ()Lsun/reflect/generics/repository/ConstructorRepository;
+65 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask
+39 -1: (Ljava/lang/String;)Ljava/lang/Integer;
+25 -1: lambda$parallelSetAll$191
+25 -1: lambda$parallelSetAll$192
+25 -1: lambda$parallelSetAll$193
+23 -1: INSERTIONSORT_THRESHOLD
+17 -1: java/time/Instant
+25 -1: lambda$parallelSetAll$194
+14 -1: dynamicInvoker
+9 -1: iso646-us
+8 -1: position
+29 -1: java/nio/channels/FileChannel
+27 -1: java/util/stream/Collectors
+64 -1: (Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
+10 -1: INDEX_NAME
+15 -1: getCommentBytes
+67 -1: (Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream;
+22 -1: privateGetPublicFields
+32 -1: java/util/BitSet$1BitSetIterator
+12 -1: PERF_MODE_RO
+89 -1: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;Z)Ljava/lang/ClassValue$Entry;
+30 -1: java/security/PrivilegedAction
+18 -1: host can't be null
+26 -1: package name can't be null
+12 -1: PERF_MODE_RW
+10 -1: isEnqueued
+18 -1: argSlotToParameter
+37 -1: (II)Ljava/lang/AbstractStringBuilder;
+5 -1: tabAt
+53 -1: (Ljava/lang/Object;)Ljava/lang/AbstractStringBuilder;
+11 -1: PATH_OFFSET
+18 -1: unicodebigunmarked
+15 -1: ConditionObject
+6 -1: KOREAN
+13 -1: isNamePresent
+24 -1: ()Ljava/lang/Class<TE;>;
+14 -1: isStandardTime
+8 -1: ([IIII)I
+9 -1: WeakEntry
+12 -1: javaIOAccess
+17 -1: key can't be null
+129 -1: Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/file/Path;>;Ljava/lang/Iterable<Ljava/nio/file/Path;>;Ljava/nio/file/Watchable;
+8 -1:  handler
+8 -1: ([IIII)V
+10 -1: atBugLevel
+18 -1: makeGuardWithCatch
+18 -1: currentLoadedClass
+11 -1: getCodeBase
+67 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+TT;>;)Ljava/util/List<TT;>;
+12 -1: JarFile.java
+19 -1: (C)Ljava/io/Writer;
+22 -1: createURLStreamHandler
+23 -1: sun/nio/cs/ArrayDecoder
+13 -1: setAccessible
+18 -1: stripOffParameters
+101 -1: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
+18 -1: Ljava/util/Random;
+16 -1: Pacific/Honolulu
+13 -1: useOldMapping
+65 -1: (Ljava/lang/invoke/LambdaForm$NamedFunction;[Ljava/lang/Object;)V
+14 -1: filterArgument
+12 -1: LF_MH_LINKER
+25 -1: isDirectMemoryPageAligned
+49 -1: (Ljava/util/BitSet;)Ljava/util/function/Supplier;
+54 -1: (Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;TV;)V
+16 -1: java/time/ZoneId
+4 -1: zfot
+18 -1: isSameClassPackage
+6 -1: julian
+8 -1: (TT;)TT;
+22 -1: java/util/jar/Manifest
+7 -1: charOut
+16 -1: getOffsetsByWall
+19 -1: Illegal replacement
+139 -1: <E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/List<TE;>;Ljava/util/RandomAccess;Ljava/lang/Cloneable;Ljava/io/Serializable;
+96 -1: <T:Ljava/lang/Object;>(Ljava/lang/reflect/Constructor<TT;>;)Ljava/lang/reflect/Constructor<TT;>;
+15 -1: Annotation.java
+24 -1: (Ljava/lang/Class<*>;)[B
+6 -1: CODING
+34 -1: ([Ljava/lang/ClassValue$Entry;II)V
+6 -1: IGNORE
+62 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
+29 -1: specificToGenericStringHeader
+12 -1: helpTransfer
+8 -1: fastTime
+62 -1: (Ljava/net/URLConnection;[Ljava/lang/Class;)Ljava/lang/Object;
+18 -1: Unhandled signal: 
+8 -1: isStrict
+15 -1: ISO_8859-7:1987
+13 -1: getWeekLength
+14 -1: jvmBuildNumber
+40 -1: (Ljava/lang/String;)Ljava/util/Iterator;
+6 -1: short0
+6 -1: short1
+73 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;)TT;
+10 -1: removeNode
+8 -1: setFloat
+18 -1: cspc862latinhebrew
+11 -1: setTimeZone
+34 -1: java/lang/reflect/AccessibleObject
+25 -1: MapReduceKeysToDoubleTask
+25 -1: java/lang/ref/Reference$1
+24 -1: java/nio/HeapByteBufferR
+15 -1: jdkMicroVersion
+117 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B[B)V
+8 -1: (TT;)TV;
+16 -1: Permissions.java
+22 -1: Ljava/util/Comparator;
+17 -1: getDaylightSaving
+25 -1: ([BIILjava/lang/String;)V
+9 -1: stillborn
+11 -1: maxPosition
+28 -1: java/util/ArrayPrefixHelpers
+73 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/SortedMap<TK;TV;>;
+14 -1: useCanonCaches
+5 -1: clean
+16 -1: checkPermission2
+34 -1: sun.misc.launcher.useSharedArchive
+13 -1: shutdownHooks
+5 -1: clear
+240 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
+67 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TV;+TU;>;)TU;
+6 -1: cp1250
+6 -1: cp1251
+6 -1: cp1252
+13 -1: getZipMessage
+6 -1: cp1253
+28 -1: (J)Ljava/lang/ref/Reference;
+6 -1: cp1254
+54 -1: (ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
+6 -1: cp1257
+10 -1: deepEquals
+17 -1: WRITE_BUFFER_SIZE
+13 -1: copyFromArray
+40 -1: java/util/Collections$ReverseComparator2
+36 -1: sun/reflect/generics/visitor/Reifier
+19 -1: averageBytesPerChar
+13 -1: javaAWTAccess
+6 -1: cp5346
+61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/nio/charset/Charset;>;
+6 -1: cp5347
+6 -1: cp5348
+6 -1: cp5349
+5 -1: field
+23 -1: ()Ljava/nio/LongBuffer;
+103 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
+37 -1: (I)Ljava/lang/Character$UnicodeBlock;
+11 -1: offsetAfter
+79 -1: Ljava/util/HashMap<Ljava/security/CodeSource;Ljava/security/ProtectionDomain;>;
+27 -1: invocationHandlerReturnType
+17 -1: POSITIVE_INFINITY
+11 -1: maybeRebind
+3 -1: str
+18 -1: setSecurityManager
+9 -1: signature
+18 -1: corrupted jar file
+89 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable;
+87 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+6 -1: CENATT
+6 -1: cp5350
+12 -1: AF_GETSTATIC
+38 -1: (TE;Ljava/util/LinkedList$Node<TE;>;)V
+8 -1: isLoaded
+6 -1: CENATX
+6 -1: cp5353
+18 -1: Africa/Addis_Ababa
+35 -1: sun/usagetracker/UsageTrackerClient
+11 -1: toUpperCase
+22 -1: java/util/zip/Inflater
+10 -1: iso_8859-1
+10 -1: iso_8859-2
+3 -1: sum
+7 -1: x-Johab
+10 -1: iso_8859-4
+10 -1: iso_8859-5
+85 -1: (Ljava/security/DomainCombiner;Ljava/lang/Class;)Ljava/security/AccessControlContext;
+11 -1: activeCount
+49 -1: (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z
+51 -1: (Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;
+10 -1: iso_8859-7
+19 -1: appendVmErgoMessage
+10 -1: iso_8859-9
+14 -1: getClassLoader
+6 -1: (CJJ)Z
+15 -1: Lsun/misc/Perf;
+7 -1: getTree
+27 -1: Ljava/text/Normalizer$Form;
+11 -1: ISO-2022-JP
+69 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)Ljava/lang/Object;
+50 -1: java/lang/invoke/DirectMethodHandle$StaticAccessor
+15 -1: fxLauncherClass
+35 -1: (Ljava/net/URL;Ljava/lang/String;)V
+16 -1: getAndAccumulate
+35 -1: (Ljava/net/URL;Ljava/lang/String;)Z
+32 -1: Non-positive averageBytesPerChar
+35 -1: Ljava/lang/Class<Ljava/lang/Void;>;
+15 -1: CLASS_MODIFIERS
+12 -1: checkedQueue
+13 -1: enumConstants
+10 -1: getFactory
+95 -1: Ljava/util/concurrent/ConcurrentMap<TK;Lsun/util/locale/LocaleObjectCache$CacheEntry<TK;TV;>;>;
+13 -1: Africa/Harare
+57 -1: (JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
+11 -1: ISO-2022-KR
+19 -1: $assertionsDisabled
+13 -1: PROXY_PACKAGE
+17 -1: copyFromLongArray
+81 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/LinkedHashMap$Entry<TK;TV;>;
+11 -1: checkDelete
+38 -1: sun/management/ManagementFactoryHelper
+7 -1: UTC1900
+20 -1: getBootstrapResource
+23 -1: ()Ljava/lang/Throwable;
+16 -1: CALLER_SENSITIVE
+26 -1: checkSystemClipboardAccess
+32 -1: Can't set default locale to NULL
+16 -1: fxLauncherMethod
+4 -1:  >= 
+8 -1: provider
+9 -1: Finalizer
+78 -1: (Ljava/io/FileDescriptor;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
+13 -1: emptyIterator
+15 -1: getZipFileCount
+21 -1: isJavaIdentifierStart
+9 -1: connected
+11 -1: (ITK;TV;I)V
+16 -1: America/Honolulu
+22 -1: SynchronizedCollection
+28 -1: java/util/zip/ZipConstants64
+29 -1: inheritedAccessControlContext
+29 -1: ()[Ljava/security/CodeSigner;
+85 -1: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/sun/management/GcInfo;)V
+25 -1: (Ljava/nio/CharBuffer;Z)V
+15 -1: java/io/Console
+101 -1: (Ljava/lang/Class<*>;Lsun/reflect/annotation/AnnotationType;Lsun/reflect/annotation/AnnotationType;)Z
+9 -1: | resolve
+81 -1: (BLjava/lang/invoke/MemberName;Ljava/lang/Class<*>;)Ljava/lang/invoke/MemberName;
+33 -1: (Ljava/nio/charset/Charset;FF[B)V
+49 -1: (Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
+66 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
+29 -1: ([Ljava/util/HashMap$Node;I)V
+13 -1: filterMethods
+4 -1: jcal
+61 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)[Ljava/lang/Class<*>;
+6 -1: which=
+46 -1: (Ljava/math/BigInteger;)Ljava/math/BigInteger;
+4 -1: date
+18 -1: internalMemberName
+6 -1: (JJI)Z
+30 -1: [Ljava/lang/invoke/LambdaForm;
+60 -1: <T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
+15 -1: ReservationNode
+42 -1: java/lang/ThreadLocal$ThreadLocalMap$Entry
+6 -1: setIn0
+4 -1: sort
+8 -1: ibm00858
+110 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;IILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class;
+28 -1: Ljava/lang/ClassValue$Entry;
+22 -1: ensureExplicitCapacity
+6 -1: rotate
+14 -1: closeRequested
+30 -1: ([CII)Ljava/lang/StringBuffer;
+10 -1: LM_UNKNOWN
+15 -1: Comparable.java
+13 -1: getByteBuffer
+9 -1: getScheme
+15 -1: done with meta!
+17 -1: checkForTypeAlias
+7 -1: getKeys
+7 -1: SIG_DFL
+30 -1: Ljava/nio/charset/CoderResult;
+16 -1: returnTypesMatch
+19 -1: getClassAccessFlags
+18 -1: JavaNioAccess.java
+9 -1: setDouble
+23 -1: Ljava/util/zip/ZipFile;
+83 -1: (JLjava/util/function/ToIntFunction<-TK;>;ILjava/util/function/IntBinaryOperator;)I
+11 -1: ACCESS_READ
+15 -1: nativeByteOrder
+5 -1: hours
+7 -1: toArray
+7 -1: Encoder
+12 -1: resolveClass
+29 -1: (Ljava/io/FileDescriptor;JJ)V
+14 -1: redefinedCount
+8 -1: getTotal
+11 -1: iso_8859-13
+11 -1: iso_8859-15
+9 -1: expected 
+18 -1: getDeclaredMethods
+11 -1: elementData
+6 -1: intern
+10 -1: countryKey
+6 -1: setInt
+39 -1: Could not create extension class loader
+24 -1: SELF_SUPPRESSION_MESSAGE
+14 -1: argToSlotTable
+42 -1: Ljava/util/HashMap<TE;Ljava/lang/Object;>;
+5 -1:  \t\n\r\x0c
+4 -1: read
+12 -1: Objects.java
+7 -1: aliases
+29 -1: sun/reflect/LangReflectAccess
+6 -1: prefix
+15 -1: superInterfaces
+10 -1: getDoInput
+30 -1: java/nio/CharBufferSpliterator
+6 -1: KOI8_R
+12 -1: Asia/Kolkata
+6 -1: KOI8_U
+6 -1: LOCSIG
+15 -1: UA-Java-Version
+92 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap<TK;TV;>;Ljava/util/Map<TK;TV;>;
+14 -1: CertificateRep
+17 -1: getSystemResource
+85 -1: (JLjava/util/function/ToLongFunction<-TV;>;JLjava/util/function/LongBinaryOperator;)J
+27 -1: java/lang/reflect/Parameter
+5 -1: quote
+8 -1: not MH: 
+46 -1: java/util/Collections$UnmodifiableCollection$1
+6 -1: putVal
+6 -1: LOCSIZ
+6 -1: Atomic
+3 -1: 737
+38 -1: java/lang/UnsupportedClassVersionError
+27 -1: ()Ljava/lang/StringBuilder;
+41 -1: sun/net/www/protocol/jar/JarURLConnection
+60 -1: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
+59 -1: <T:Ljava/lang/Object;>(TT;TT;Ljava/util/Comparator<-TT;>;)I
+54 -1: java/util/concurrent/locks/AbstractOwnableSynchronizer
+7 -1: getHost
+36 -1: (F)Ljava/lang/AbstractStringBuilder;
+69 -1: <U:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;)Ljava/lang/Class<+TU;>;
+4 -1: Form
+103 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;+TV;>;)Ljava/util/SortedMap<TK;TV;>;
+6 -1: spread
+8 -1: addHours
+13 -1: contentEquals
+47 -1: (Ljava/lang/String;Ljava/security/Permission;)V
+12 -1: newCondition
+23 -1: (Ljava/lang/Object;IZ)V
+26 -1: (Ljava/util/LinkedList;I)V
+13 -1: ConstantValue
+18 -1: URLConnection.java
+12 -1: Boolean.java
+75 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/net/URLStreamHandlerFactory;)V
+21 -1: EMPTY_THROWABLE_ARRAY
+153 -1: (Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;Ljava/lang/Class<*>;[Ljava/lang/String;)Ljava/util/Map<Ljava/lang/Class<*>;[Ljava/lang/String;>;
+18 -1: getUnresolvedCerts
+13 -1: Negative time
+28 -1: java/util/WeakHashMap$KeySet
+8 -1: slashify
+16 -1: isOtherLowercase
+17 -1: putObjectVolatile
+5 -1: ERASE
+12 -1: filterFields
+40 -1: Ljava/lang/ReflectiveOperationException;
+12 -1: VM settings:
+57 -1: (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+10 -1: access$600
+11 -1: ] return =>
+13 -1: user.timezone
+23 -1: USER_AGENT_JAVA_VERSION
+27 -1: (Ljava/util/HashMap$Node;)V
+19 -1: filterNTLMResponses
+28 -1: (Lsun/misc/VMNotification;)V
+37 -1: ()[[Ljava/lang/annotation/Annotation;
+45 -1: ()Lcom/sun/management/DiagnosticCommandMBean;
+3 -1: tan
+31 -1: getDirectlyAndIndirectlyPresent
+7 -1: prepend
+35 -1: (I)Lsun/util/calendar/CalendarDate;
+8 -1: val$dirs
+4 -1: test
+28 -1: Non-positive maxCharsPerByte
+83 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>;
+12 -1: JAVA_VERSION
+24 -1: ([Ljava/lang/Thread;IZ)I
+70 -1: (Ljava/lang/invoke/LambdaForm$Name;)Ljava/lang/invoke/LambdaForm$Name;
+57 -1: <T:Ljava/lang/Object;>([TT;Ljava/util/Comparator<-TT;>;)V
+42 -1: (Ljava/lang/Class<*>;[I)Ljava/lang/Object;
+27 -1: java/lang/SecurityManager$1
+32 -1: java/security/SignatureException
+27 -1: java/lang/SecurityManager$2
+4 -1: .jar
+20 -1: parameterAnnotations
+31 -1: DIRECTIONALITY_BOUNDARY_NEUTRAL
+21 -1: hasClassPathAttribute
+17 -1: checkParentAccess
+35 -1: java/security/PermissionsEnumerator
+6 -1: FORMAT
+92 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<Ljava/util/Map$Entry<TK;TV;>;+TU;>;)TU;
+3 -1: 775
+11 -1: PROBE_LIMIT
+111 -1: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
+11 -1: AF_PUTFIELD
+22 -1: (Ljava/lang/Object;Z)V
+20 -1: getGenericReturnType
+9 -1: val$extcl
+13 -1: inClassLoader
+37 -1: sun.urlClassLoader.readClassBytesTime
+35 -1: (JLjava/util/function/BiConsumer;)V
+28 -1: getContentHandlerPkgPrefixes
+10 -1: getChannel
+78 -1: <T:Ljava/lang/Object;>(Ljava/util/List<+TT;>;TT;Ljava/util/Comparator<-TT;>;)I
+16 -1: parseMemberValue
+4 -1: regn
+47 -1: ([Ljava/lang/Object;III)Ljava/util/Spliterator;
+11 -1:  but found 
+6 -1: adjust
+11 -1: isLowerCase
+29 -1: sun/reflect/ReflectionFactory
+98 -1: <E:Ljava/lang/Object;>(Ljava/util/SortedSet<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/SortedSet<TE;>;
+18 -1: [Ljava/lang/Error;
+5 -1: entry
+14 -1: refreshVersion
+8 -1: (IIIII)V
+22 -1: unmodifiableCollection
+6 -1: putAll
+22 -1: offsetByCodePointsImpl
+26 -1: (Ljava/lang/String;[BII)[C
+46 -1: (Ljava/net/URLClassLoader;Ljava/lang/String;)V
+4 -1: /LF=
+9 -1: Bits.java
+30 -1: [Ljava/util/WeakHashMap$Entry;
+19 -1: getLastModifiedTime
+44 -1: [Ljava/lang/Thread$UncaughtExceptionHandler;
+11 -1: getZoneInfo
+6 -1: lookup
+19 -1: MapReduceValuesTask
+18 -1: isVarargsCollector
+38 -1: java/util/jar/JarFile$JarEntryIterator
+11 -1: getJarIndex
+9 -1: getByName
+42 -1: (Ljava/lang/Object;JLjava/lang/Object;JJ)V
+71 -1: (Ljava/lang/invoke/LambdaForm$Name;I)Ljava/lang/invoke/LambdaForm$Name;
+30 -1: java/net/ContentHandlerFactory
+54 -1: (Ljava/lang/Class<*>;I)Ljava/lang/invoke/MethodHandle;
+12 -1: getSignature
+9 -1: parseLong
+25 -1: DEBUG_METHOD_HANDLE_NAMES
+15 -1: runFinalization
+13 -1: 0000000000000
+28 -1: ()[Ljava/lang/reflect/Field;
+37 -1: ([Ljava/lang/ClassValue$Entry<*>;II)V
+13 -1: gcInfoBuilder
+64 -1: (JLjava/util/function/BiFunction;Ljava/util/function/Consumer;)V
+5 -1: cnfe1
+8 -1: setShort
+28 -1: (C)Ljava/lang/StringBuilder;
+44 -1: (Ljava/nio/LongBuffer;)Ljava/nio/LongBuffer;
+70 -1: (Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class<*>;
+33 -1: java/lang/TypeNotPresentException
+5 -1: \n    
+20 -1: acquireInterruptibly
+21 -1: (I)Ljava/lang/String;
+24 -1: (Ljava/io/PrintWriter;)V
+16 -1: convertArguments
+32 -1: Ljava/net/MalformedURLException;
+15 -1: linkToInterface
+39 -1: java/lang/Throwable$PrintStreamOrWriter
+10 -1: iso8859_13
+13 -1: hasPrimitives
+10 -1: iso8859_15
+145 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/invoke/CallSite;
+8 -1: equalPDs
+28 -1: (Ljava/io/FileDescriptor;J)V
+7 -1: newLine
+43 -1: (Ljava/lang/Class<*>;I)Ljava/lang/Class<*>;
+8 -1: addEntry
+30 -1: java/util/WeakHashMap$EntrySet
+14 -1: USE_OLDMAPPING
+39 -1: (Ljava/io/DataInput;)Ljava/lang/String;
+12 -1: LF_EX_LINKER
+27 -1: java/lang/invoke/MethodType
+23 -1: JavaSecurityAccess.java
+23 -1: isLocalOrAnonymousClass
+19 -1: Expanded arguments:
+18 -1: sun/nio/cs/Unicode
+40 -1: ()Ljava/nio/charset/spi/CharsetProvider;
+23 -1: ([BLjava/lang/String;)V
+7 -1: default
+13 -1: highestOneBit
+9 -1: isDefault
+28 -1: (IF)Ljava/lang/StringBuffer;
+31 -1: ()Ljava/util/ListIterator<TE;>;
+4 -1: base
+23 -1: newPermissionCollection
+7 -1: version
+15 -1: Permission.java
+41 -1: java/lang/invoke/LambdaForm$NamedFunction
+8 -1: isQueued
+24 -1: ([Ljava/lang/Class<*>;)I
+64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask
+16 -1: checkInitialized
+37 -1: java/lang/ClassLoader$ParallelLoaders
+5 -1: ([B)I
+23 -1: Lsun/misc/URLClassPath;
+9 -1: usr_paths
+10 -1: Queue.java
+43 -1: (Ljava/io/File;Ljava/nio/charset/Charset;)V
+64 -1: (Ljava/lang/invoke/MethodTypeForm;)Ljava/lang/invoke/MemberName;
+3 -1: tid
+23 -1: JarIndex-Version: 1.0\n\n
+33 -1: (I)Ljava/nio/charset/CoderResult;
+5 -1: ([B)V
+10 -1: isInstance
+25 -1: unmappableCharacterAction
+11 -1: queueLength
+5 -1: ([B)Z
+10 -1: freeMemory
+47 -1: java/util/ArrayPrefixHelpers$DoubleCumulateTask
+52 -1: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V
+41 -1: Ljava/util/Collections$ReverseComparator;
+16 -1: copyToShortArray
+206 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;ILjava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)Z
+38 -1: sun/launcher/LauncherHelper$SizePrefix
+17 -1: ACCESS_PERMISSION
+17 -1: ReverseComparator
+30 -1: ()Ljava/lang/ClassValue$Entry;
+17 -1: AF_PUTSTATIC_INIT
+6 -1: (IIB)I
+19 -1: java/nio/file/Files
+35 -1: (Z)[Ljava/lang/reflect/Constructor;
+20 -1: INVALID_FIELD_OFFSET
+17 -1: initializeHeaders
+10 -1: management
+10 -1: targetType
+61 -1: (Ljava/util/SortedSet;Ljava/lang/Class;)Ljava/util/SortedSet;
+5 -1: ascii
+8 -1: validate
+78 -1: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/lang/Object;>;
+25 -1: sun/nio/cs/UTF_16$Decoder
+36 -1: sun/management/DiagnosticCommandImpl
+24 -1: unmodifiableNavigableMap
+18 -1: canonicalizeScript
+29 -1: Lsun/misc/JavaSecurityAccess;
+74 -1: ([JLjava/util/function/IntToLongFunction;)Ljava/util/function/IntConsumer;
+38 -1: DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
+11 -1: languageTag
+33 -1: java/lang/invoke/VolatileCallSite
+18 -1: setRequestProperty
+6 -1: 0x%02X
+20 -1: (Ljava/lang/Float;)I
+35 -1: (Ljava/nio/charset/CoderResult$1;)V
+24 -1: (Ljava/lang/Object;JJB)V
+21 -1: synchronizedSortedSet
+59 -1: (Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
+30 -1: av.length == arity: av.length=
+7 -1: $VALUES
+27 -1: RandomNumberGeneratorHolder
+3 -1: tlr
+43 -1: java/util/ArraysParallelSortHelpers$FJFloat
+28 -1: ()[Ljava/io/File$PathStatus;
+26 -1: invalid extra field length
+13 -1: getExtensions
+7 -1: PARAMS0
+7 -1: PARAMS1
+30 -1: [Ljava/lang/invoke/MemberName;
+7 -1: PARAMS2
+31 -1: java/lang/AbstractStringBuilder
+161 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V
+4 -1: repl
+19 -1: ()Ljava/lang/Class;
+24 -1: BufferedInputStream.java
+9 -1: sizeCache
+8 -1: READLINK
+9 -1: metaIndex
+18 -1: getLocalizedObject
+6 -1: filter
+58 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+140 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
+24 -1: Ljava/util/HashMap$Node;
+35 -1: (Lsun/nio/cs/FastCharsetProvider;)V
+8 -1: dispatch
+19 -1: sun.stderr.encoding
+130 -1: (Ljava/util/List<Ljava/util/Locale$LanguageRange;>;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/util/List<Ljava/lang/String;>;
+51 -1: Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
+30 -1: sun.reflect.inflationThreshold
+20 -1: MutableCallSite.java
+26 -1: invokeWithArgumentsTracing
+7 -1: getters
+38 -1: ()[Ljava/lang/reflect/TypeVariable<*>;
+46 -1: ([DLjava/util/function/DoubleBinaryOperator;)V
+5 -1: klass
+13 -1: publicMethods
+37 -1: ()[Ljava/lang/reflect/Constructor<*>;
+126 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
+6 -1: FJLong
+20 -1: canBeStaticallyBound
+17 -1: getTimezoneOffset
+9 -1: ALL_TYPES
+3 -1: toV
+8 -1: packages
+15 -1: codePointBefore
+10 -1: getCountry
+13 -1: getDSTSavings
+100 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)Lsun/nio/cs/StreamDecoder;
+50 -1: java/util/ArraysParallelSortHelpers$FJFloat$Sorter
+20 -1: hasNonVoidPrimitives
+7 -1: syncAll
+41 -1: domain        dump all domains in context
+59 -1: Ljava/util/Hashtable<Ljava/lang/Integer;Lsun/misc/Signal;>;
+16 -1: ForEachEntryTask
+18 -1: vminfoIsConsistent
+26 -1: (ZLjava/util/Comparator;)V
+9 -1: Lock.java
+31 -1: Lsun/reflect/ReflectionFactory;
+8 -1: (I[BII)I
+23 -1: doesExtendFXApplication
+87 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+11 -1: windows-31j
+28 -1: sun/misc/URLClassPath$Loader
+17 -1: getEntryAfterMiss
+47 -1: ([Ljava/lang/reflect/Field;Ljava/lang/String;)J
+44 -1: Ljava/util/List<Ljava/security/Permission;>;
+10 -1: openStream
+31 -1: Ljava/net/UnknownHostException;
+19 -1: bad reference kind 
+29 -1: ()Ljava/nio/MappedByteBuffer;
+9 -1: H_UPALPHA
+37 -1: (Ljava/util/function/UnaryOperator;)V
+25 -1: FAKE_METHOD_HANDLE_INVOKE
+4 -1: peek
+25 -1: java/util/Hashtable$Entry
+18 -1: getMemberRefInfoAt
+37 -1: Ljava/util/WeakHashMap$Entry<TK;TV;>;
+14 -1: resolvedHandle
+27 -1: ()Ljava/util/Iterator<TV;>;
+61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/reflect/Method;>;
+6 -1: static
+50 -1: (Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath;
+38 -1: (Ljava/lang/Class;)[Ljava/lang/Object;
+41 -1: (Ljava/util/SortedSet;Ljava/lang/Class;)V
+41 -1: java/lang/invoke/WrongMethodTypeException
+5 -1: group
+10 -1: readObject
+13 -1: getParentFile
+14 -1: daylightSaving
+15 -1: eagerValidation
+36 -1: (Ljava/io/File;)Lsun/misc/MetaIndex;
+18 -1: reduceEntriesToInt
+15 -1: INITIAL_ENTRIES
+18 -1: AtomicInteger.java
+7 -1: .length
+128 -1: Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/CharBuffer;>;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/Readable;
+6 -1: asList
+21 -1: unmodifiableSortedSet
+22 -1: ([B)Ljava/util/BitSet;
+5 -1: check
+64 -1: (Ljava/util/jar/JarFile;Lsun/misc/MetaIndex;)Lsun/misc/JarIndex;
+35 -1: ()Ljava/nio/charset/CharsetEncoder;
+4 -1: oome
+25 -1: ()Lsun/misc/URLClassPath;
+27 -1: (Ljava/io/FilePermission;)V
+29 -1: IllegalArgumentException.java
+17 -1: jvmSpecialVersion
+21 -1: Ljava/util/ArrayList;
+13 -1: packagePrefix
+27 -1: (Ljava/io/FilePermission;)Z
+11 -1: canonicalID
+82 -1: Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/String;>;Ljava/io/Serializable;
+24 -1: java.launcher.opt.footer
+13 -1: NativeLibrary
+37 -1: (Ljava/lang/String;J)Ljava/lang/Long;
+16 -1: longBitsToDouble
+6 -1: getKey
+22 -1: (JLjava/lang/String;)V
+14 -1: ensureCapacity
+69 -1: (Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+22 -1: java/lang/Thread$State
+50 -1: ()Ljava/util/Iterator<Ljava/nio/charset/Charset;>;
+4 -1: 7bit
+46 -1: (Ljava/lang/Class<+Ljava/lang/ClassLoader;>;)Z
+76 -1: (ILjava/util/List<Ljava/lang/Class<*>;>;)[Ljava/lang/invoke/LambdaForm$Name;
+3 -1: ttb
+12 -1: UTF_16LE_BOM
+9 -1: remainder
+40 -1: ()Lsun/reflect/generics/visitor/Reifier;
+22 -1: [Ljava/lang/Throwable;
+17 -1: EMPTY_ENUMERATION
+13 -1: erasedInvoker
+46 -1: Ljava/nio/charset/IllegalCharsetNameException;
+10 -1: UnicodeBig
+53 -1: ()Ljava/util/Map<Ljava/io/File;Lsun/misc/MetaIndex;>;
+12 -1: MAX_EXPONENT
+10 -1: Enumerator
+15 -1: charset decoder
+11 -1: AF_GETFIELD
+12 -1: | getInvoker
+74 -1: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
+14 -1: toUnsignedLong
+46 -1: java/lang/invoke/MethodHandleNatives$Constants
+29 -1: java version "1.8.0-internal"
+21 -1: ([Ljava/lang/Class;)I
+16 -1: UPPERCASE_LETTER
+22 -1: newConstantPerfCounter
+6 -1: signum
+9 -1: getField0
+38 -1: java/nio/charset/CoderMalfunctionError
+21 -1: [Ljava/lang/Runnable;
+11 -1: putIfAbsent
+30 -1: java/util/Collections$EmptySet
+22 -1: (I)[Ljava/lang/String;
+34 -1: Ljava/security/SecurityPermission;
+49 -1: ([Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+190 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V
+22 -1: Not an annotation type
+34 -1: java/io/ObjectInputStream$GetField
+50 -1: (Lsun/reflect/FieldInfo;)Ljava/lang/reflect/Field;
+32 -1: Ljava/lang/NoSuchFieldException;
+70 -1: (Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)Ljava/lang/Object;
+9 -1: mergeSort
+77 -1: (ITK;TV;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+21 -1: sun/nio/cs/ISO_8859_1
+8 -1: DST_MASK
+21 -1: Ljava/lang/Throwable;
+108 -1: (Ljava/lang/ref/SoftReference<Ljava/lang/Class$ReflectionData<TT;>;>;I)Ljava/lang/Class$ReflectionData<TT;>;
+32 -1: java/util/Arrays$LegacyMergeSort
+59 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/Class<TT;>;>;
+16 -1: parseUnsignedInt
+36 -1: ([D)Ljava/util/Spliterator$OfDouble;
+26 -1: SPECIFY_HANDLER_PERMISSION
+13 -1: primitiveType
+17 -1: threadStartFailed
+21 -1: (J)Ljava/lang/String;
+23 -1: setClassAssertionStatus
+28 -1: java/util/Hashtable$EntrySet
+28 -1: Non-positive maxBytesPerChar
+19 -1: getApplicationClass
+14 -1: SentinelHolder
+15 -1: staticFieldBase
+25 -1: setDefaultRequestProperty
+66 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask
+8 -1: threadID
+9 -1: getFields
+15 -1: LineNumberTable
+38 -1: java/util/Collections$CheckedSortedSet
+14 -1: jdkBuildNumber
+6 -1: divide
+46 -1: (Ljava/io/BufferedWriter;Ljava/lang/String;Z)V
+20 -1: java/lang/Terminator
+92 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/lang/String;Ljava/net/URL;Ljava/util/jar/JarEntry;)V
+6 -1: force0
+10 -1: getThreads
+34 -1: java/util/IllformedLocaleException
+115 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/FieldRepository;
+9 -1: testFlags
+11 -1: getLanguage
+36 -1: java/util/function/IntBinaryOperator
+12 -1: Suppressed: 
+10 -1: isMandated
+23 -1: MethodAccessorImpl.java
+28 -1: (Ljava/util/zip/ZipEntry;)[B
+27 -1: Ljava/util/Hashtable$Entry;
+5 -1: table
+10 -1: Short.java
+19 -1: ReferenceQueue.java
+8 -1: setTabAt
+26 -1: ()Lsun/invoke/empty/Empty;
+53 -1: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
+74 -1: (ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+19 -1: changeParameterType
+61 -1: Ljava/util/Map<Ljava/lang/String;Ljava/security/Permission;>;
+23 -1: (Ljava/lang/Object;IF)V
+32 -1: (I)Ljava/util/ListIterator<TE;>;
+6 -1: unread
+12 -1: isSubclassOf
+6 -1: (JJJ)V
+3 -1: Key
+105 -1: (Ljava/util/HashMap<TK;TV;>;[Ljava/util/HashMap$Node<TK;TV;>;ITK;TV;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+14 -1: x-utf-16le-bom
+22 -1: ()Ljava/nio/IntBuffer;
+104 -1: (Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+21 -1: removeFirstOccurrence
+21 -1: sun/misc/DoubleConsts
+23 -1: ()Ljava/util/SortedSet;
+11 -1: getManEntry
+23 -1: URI is not hierarchical
+7 -1: replace
+16 -1: getDisplayScript
+11 -1: ISO_8859-15
+16 -1: permuteArguments
+5 -1: (JI)C
+41 -1: Error decoding percent encoded characters
+22 -1: ([I)Ljava/lang/String;
+31 -1: java/lang/management/ThreadInfo
+9 -1: useCaches
+22 -1: withInternalMemberName
+5 -1: (JI)I
+5 -1: (JI)J
+67 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;
+95 -1: (Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration<Ljava/lang/String;>;
+7 -1: release
+56 -1: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
+5 -1: (JI)V
+46 -1: (Ljava/util/Iterator;I)Ljava/util/Spliterator;
+18 -1: verifyMemberAccess
+9 -1: warning: 
+23 -1: java/lang/reflect/Field
+67 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V
+10 -1: SizePrefix
+15 -1: setJavaIOAccess
+6 -1: (JI)[B
+10 -1: ST_FLUSHED
+10 -1: resolution
+9 -1: ST_CODING
+16 -1: sun/misc/Cleaner
+21 -1: (Ljava/lang/Class;)[B
+18 -1: WeakReference.java
+41 -1: (Ljava/util/List;Ljava/util/Comparator;)V
+18 -1: printPropertyValue
+3 -1: 813
+22 -1: setRunFinalizersOnExit
+4 -1: init
+44 -1: ()Ljava/util/Iterator<Ljava/nio/file/Path;>;
+3 -1: 819
+12 -1: listIterator
+8 -1: , arity=
+24 -1: (Ljava/util/ArrayList;)I
+49 -1: (IJLjava/io/FileDescriptor;Ljava/lang/Runnable;)V
+10 -1: principals
+17 -1: x-ISO-2022-CN-CNS
+22 -1: (Ljava/lang/Object;F)V
+14 -1: setReadTimeout
+19 -1: getProtectionDomain
+13 -1: pathSeparator
+12 -1: getAndSetInt
+58 -1: (Ljava/util/List;Ljava/util/Collection;)Ljava/util/Locale;
+11 -1: setWritable
+4 -1: perf
+50 -1: ()Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;
+6 -1: LOCTIM
+6 -1: status
+11 -1: replaceName
+52 -1: (Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;
+9 -1: nextToken
+13 -1: dropArguments
+20 -1: RECOGNIZED_MODIFIERS
+14 -1: getInputStream
+9 -1: readFully
+25 -1: (CLjava/nio/CharBuffer;)I
+24 -1: sun/misc/PathPermissions
+10 -1: malformedN
+9 -1: n is null
+19 -1: instanceof Double: 
+13 -1: markSupported
+26 -1: fromMethodDescriptorString
+43 -1: [Ljava/util/concurrent/locks/ReentrantLock;
+17 -1: parseUnsignedLong
+33 -1: Lsun/misc/URLClassPath$JarLoader;
+26 -1: (Ljava/io/OutputStream;I)V
+6 -1: L_DASH
+17 -1: EmptyNavigableMap
+19 -1: CharsetDecoder.java
+18 -1: makeDynamicInvoker
+12 -1: URLUtil.java
+27 -1: ()Ljava/util/Iterator<TT;>;
+9 -1: initTable
+11 -1: getFragment
+7 -1: isLower
+20 -1: getMethodOrFieldType
+29 -1: java/util/function/BiFunction
+10 -1: access$700
+3 -1: 850
+7 -1: UTC2037
+43 -1: java/util/ArraysParallelSortHelpers$FJShort
+9 -1: toSTZTime
+10 -1: access$702
+3 -1: 852
+8 -1: hashCode
+3 -1: 855
+44 -1: (Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
+3 -1: 857
+3 -1: 858
+5 -1: erase
+55 -1: ()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
+47 -1: (Ljava/util/Iterator;JI)Ljava/util/Spliterator;
+38 -1: Ljava/nio/charset/spi/CharsetProvider;
+22 -1: can't deserialize enum
+13 -1: LF_EX_INVOKER
+18 -1: java/text/Collator
+18 -1: Zero length string
+49 -1: <T:Ljava/lang/Object;>()Ljava/util/Iterator<TT;>;
+5 -1: amd64
+12 -1: getNameCount
+7 -1: inCheck
+52 -1: (Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
+53 -1: (ILjava/lang/CharSequence;II)Ljava/lang/StringBuffer;
+21 -1: java/util/WeakHashMap
+8 -1:  throws 
+52 -1: (Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
+55 -1: Ljava/lang/ref/SoftReference<Ljava/util/jar/Manifest;>;
+16 -1: emptyEnumeration
+3 -1: 862
+89 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;ILjava/lang/Class;)Ljava/util/List;
+3 -1: 866
+55 -1: Lsun/reflect/generics/repository/ConstructorRepository;
+35 -1: (Ljava/lang/ref/ReferenceQueue$1;)V
+33 -1: java/util/Collections$CheckedList
+18 -1: prefetchReadStatic
+7 -1: (JI[I)I
+78 -1: (Ljava/lang/ThreadLocal$ThreadLocalMap;)Ljava/lang/ThreadLocal$ThreadLocalMap;
+7 -1: ordinal
+22 -1: FilterInputStream.java
+26 -1: java/util/zip/ZipConstants
+28 -1: JVM cannot find invoker for 
+43 -1: sun/reflect/generics/parser/SignatureParser
+51 -1: (Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)V
+73 -1: (Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
+17 -1: StringBuffer.java
+62 -1: ([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V
+6 -1: equals
+9 -1: formatter
+3 -1: 874
+35 -1: newGetShortIllegalArgumentException
+74 -1: (Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
+3 -1: ucp
+60 -1: ([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
+6 -1: create
+17 -1: makeReinvokerForm
+18 -1: csisolatincyrillic
+15 -1: incrementAndGet
+24 -1: maybeInstantiateVerifier
+33 -1: ()Ljava/nio/channels/FileChannel;
+6 -1: class 
+16 -1: getAnnotatedType
+43 -1: (Ljava/lang/reflect/Type;)Ljava/lang/Class;
+9 -1: HASH_BITS
+12 -1: placeInCache
+38 -1: java/util/Collections$SynchronizedList
+89 -1: (Ljava/net/URL;Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)Ljava/security/CodeSource;
+22 -1: (Ljava/lang/String;I)B
+20 -1: Ljava/util/TimeZone;
+16 -1: sun.java.command
+28 -1: java/util/WeakHashMap$Values
+10 -1: X-UTF-16BE
+22 -1: (Ljava/lang/String;I)I
+26 -1: java/nio/DirectCharBufferS
+99 -1: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class<*>;
+22 -1: (Ljava/lang/String;I)J
+26 -1: java/nio/DirectCharBufferU
+54 -1: (Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal;
+21 -1: java/util/AbstractSet
+37 -1: (Ljava/lang/String;)Ljava/lang/Short;
+36 -1: Ljava/nio/charset/CoderResult$Cache;
+22 -1: (Ljava/lang/String;I)S
+15 -1: Ljava/util/Map;
+59 -1: (Ljava/lang/reflect/Type;)Ljava/lang/reflect/AnnotatedType;
+22 -1: (Ljava/lang/String;I)V
+10 -1: getAddress
+25 -1: java/nio/DirectIntBufferS
+11 -1: IMPL_LOOKUP
+3 -1: uee
+7 -1: addTime
+37 -1: sun/security/action/GetPropertyAction
+25 -1: java/nio/DirectIntBufferU
+21 -1: javaUtilZipFileAccess
+34 -1: java/util/Collections$CheckedQueue
+11 -1: readResolve
+22 -1: (Ljava/lang/String;I)Z
+11 -1: findVirtual
+63 -1: (Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
+22 -1: getDeclaredAnnotations
+16 -1: Collections.java
+18 -1: invalid entry size
+49 -1: java/util/concurrent/ConcurrentHashMap$TableStack
+32 -1: java/util/AbstractSequentialList
+4 -1: int0
+16 -1: MAXIMUM_CAPACITY
+53 -1: ()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
+4 -1: int1
+4 -1: int2
+4 -1: int3
+119 -1: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;I)Lsun/reflect/MethodAccessor;
+7 -1: variant
+39 -1: Lsun/reflect/annotation/AnnotationType;
+11 -1: arrayOffset
+24 -1: ()Ljava/util/LinkedList;
+31 -1: java/lang/ClassCircularityError
+17 -1: java/lang/Package
+10 -1: ccsid00858
+27 -1: java/io/ExpiringCache$Entry
+16 -1: newFieldAccessor
+67 -1: (Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
+99 -1: Lsun/reflect/generics/repository/GenericDeclRepository<Lsun/reflect/generics/tree/ClassSignature;>;
+53 -1: (Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)V
+53 -1: Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+58 -1: <T:Ljava/lang/Object;>([TT;)Ljava/util/stream/Stream<TT;>;
+54 -1: (Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Z
+8 -1: Kerberos
+29 -1: ()Ljava/nio/channels/Channel;
+12 -1: java_version
+45 -1: (Lsun/reflect/DelegatingMethodAccessorImpl;)V
+10 -1: canConvert
+136 -1: (Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+26 -1: getDayOfWeekDateOnOrBefore
+7 -1: INVALID
+10 -1: TERMINATED
+41 -1: Ljava/security/cert/CertificateException;
+74 -1: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;
+30 -1: [Ljava/lang/invoke/MethodType;
+13 -1: getMethodName
+7 -1: Factory
+34 -1: (Ljava/util/function/BiConsumer;)V
+11 -1: unlinkFirst
+37 -1: lambda$getDeclaredAnnotationsByType$0
+77 -1: (Ljava/nio/ByteBuffer;ILjava/nio/CharBuffer;II)Ljava/nio/charset/CoderResult;
+20 -1: java/util/ArrayDeque
+65 -1: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
+49 -1: (Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$1;)V
+22 -1: (J)Ljava/time/Instant;
+17 -1: URLClassPath.java
+6 -1: 8859_1
+25 -1: stopRemoteManagementAgent
+6 -1: 8859_2
+17 -1: containsNullValue
+6 -1: 8859_4
+6 -1: 8859_5
+26 -1: (Ljava/nio/ByteBuffer;IC)V
+76 -1: (Ljava/lang/Runnable;Ljava/security/AccessControlContext;)Ljava/lang/Thread;
+6 -1: 8859_7
+6 -1: 8859_9
+8 -1: setHours
+9 -1: File.java
+21 -1: isIdentifierIgnorable
+5 -1: ([C)I
+4 -1: (B)I
+10 -1: codesource
+77 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/security/AccessControlContext;)V
+4 -1: (B)J
+6 -1: isFair
+30 -1: java/lang/NullPointerException
+10 -1: IMPL_NAMES
+13 -1: Runnable.java
+26 -1: Ill-formed extension key: 
+17 -1: ()[Ljava/io/File;
+18 -1: javaSecurityAccess
+16 -1: equalsIgnoreCase
+4 -1: (B)V
+5 -1: ([C)V
+25 -1: Ljava/io/FileInputStream;
+14 -1: trackJavaUsage
+20 -1: Ljava/io/FileSystem;
+10 -1: iso_8859_1
+4 -1: (B)Z
+30 -1: java/lang/NoClassDefFoundError
+152 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/HashMap$TreeNode<TK;TV;>;Ljava/util/HashMap$TreeNode<TK;TV;>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+19 -1: java/lang/Cloneable
+55 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;I)V
+27 -1: (Ljava/nio/ByteBuffer;IJZ)V
+21 -1: ()Lsun/misc/JarIndex;
+72 -1: ([Ljava/security/CodeSource;)Ljava/util/Enumeration<Ljava/lang/String;>;
+64 -1: (Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
+20 -1: invalid entry crc-32
+9 -1: BASECOUNT
+29 -1: java/security/BasicPermission
+52 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
+7 -1: ([B[B)Z
+17 -1: EMPTY_ELEMENTDATA
+61 -1: (Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
+49 -1: (ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
+29 -1: sun/reflect/MagicAccessorImpl
+121 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ConstructorRepository;
+6 -1: ([II)I
+40 -1: (Ljava/lang/String;I)Ljava/lang/Integer;
+25 -1: java.content.handler.pkgs
+63 -1: ()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>;
+13 -1: parameterList
+6 -1: rebind
+16 -1: isSuperInterface
+6 -1: ([II)V
+14 -1: currentRuntime
+9 -1: BA_EXISTS
+15 -1: END_PUNCTUATION
+15 -1: no such method 
+19 -1: getAndVerifyPackage
+4 -1: wrap
+24 -1: checkAwtEventQueueAccess
+7 -1: ibm-437
+4 -1: open
+47 -1: (Ljava/nio/ByteBuffer;[BI)Ljava/nio/ByteBuffer;
+21 -1: ADDRESS_BITS_PER_WORD
+13 -1: isConstructor
+12 -1: getUseCaches
+27 -1: sun/util/locale/LocaleUtils
+4 -1: koi8
+23 -1: getParameterAnnotations
+9 -1: providers
+57 -1: ([Ljava/lang/Object;Ljava/util/function/BinaryOperator;)V
+24 -1: Lsun/misc/JavaNetAccess;
+22 -1: ([J)Ljava/lang/String;
+7 -1: p-1022$
+6 -1: isType
+63 -1: Ljava/util/Map<Ljava/lang/String;Lsun/util/calendar/ZoneInfo;>;
+21 -1: pageAlignDirectMemory
+18 -1: getManifestDigests
+37 -1: [Ljava/lang/reflect/AccessibleObject;
+7 -1: decrypt
+54 -1: (Lsun/misc/URLClassPath$JarLoader;)Ljava/util/HashMap;
+32 -1: lambda$comparingByKey$bbdbfea9$1
+21 -1: hasGenericInformation
+31 -1: java/nio/charset/CharsetEncoder
+15 -1: setTargetNormal
+3 -1: ulp
+18 -1: argumentTypesMatch
+12 -1: getDayOfYear
+8 -1: closeAll
+76 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/ref/SoftReference<TV;>;
+6 -1: concat
+9 -1: getLongAt
+16 -1: hasBeenFinalized
+32 -1: [Ljava/util/Hashtable$Entry<**>;
+23 -1: CheckedRandomAccessList
+106 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;
+21 -1: defineClassInPackage.
+11 -1: ([III[III)V
+8 -1: toZoneId
+34 -1: SUBCLASS_IMPLEMENTATION_PERMISSION
+55 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+8 -1: isDirect
+10 -1: ALL_ACCESS
+12 -1: isRegistered
+29 -1: ForEachTransformedMappingTask
+5 -1: LIJFD
+23 -1: (Ljava/util/TimeZone;)V
+23 -1: (Ljava/util/TimeZone;)Z
+20 -1: java/lang/Appendable
+29 -1: Lsun/util/calendar/Gregorian;
+9 -1: charValue
+8 -1: ONE_HOUR
+38 -1: (Ljava/util/Locale;)Ljava/lang/String;
+7 -1: script=
+10 -1: X-UTF-16LE
+7 -1: ENTRIES
+6 -1: detach
+38 -1: certpath      PKIX CertPathBuilder and
+14 -1: setLanguageTag
+13 -1: isAlphaString
+13 -1: interpretName
+9 -1: dayOfWeek
+88 -1: (Ljava/lang/Class;ZLjava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;
+91 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/MethodHandle;
+13 -1: addTypeString
+17 -1: VectorSpliterator
+12 -1: MILLISECONDS
+6 -1: CENCOM
+10 -1: KeySetView
+18 -1: getTargetException
+7 -1: H_ALPHA
+32 -1: sun/util/locale/BaseLocale$Cache
+25 -1: [Ljava/lang/CharSequence;
+7 -1: Builder
+4 -1: left
+19 -1: BootClassPathHolder
+12 -1: publicFields
+11 -1: windows-437
+9 -1: EMPTY_SET
+26 -1: GET_STACK_TRACE_PERMISSION
+6 -1: copyOf
+14 -1: aliases_IBM737
+9 -1: writeLong
+35 -1: (JLjava/util/concurrent/TimeUnit;)Z
+70 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>;
+22 -1: getAnnotatedReturnType
+41 -1: (Ljava/lang/String;[BII)Ljava/lang/Class;
+8 -1: ,maxpri=
+29 -1: handleParameterNumberMismatch
+26 -1: ts            timestamping
+11 -1: checkListen
+10 -1: SourceFile
+44 -1: (Ljava/lang/String;)Ljava/util/jar/JarEntry;
+17 -1: weakCompareAndSet
+9 -1: timestamp
+21 -1: (Z)Ljava/lang/String;
+12 -1: doneWithMeta
+20 -1: makeCollectArguments
+52 -1: (JLjava/util/function/BiFunction;)Ljava/lang/Object;
+10 -1: searchKeys
+48 -1: sun/reflect/SerializationConstructorAccessorImpl
+69 -1: (Ljava/lang/reflect/Constructor<*>;)Lsun/reflect/ConstructorAccessor;
+19 -1: ()Lsun/misc/Unsafe;
+11 -1: deepEquals0
+7 -1: GB18030
+13 -1: ValueIterator
+75 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+28 -1: java/util/PropertyPermission
+6 -1: CENCRC
+3 -1: url
+3 -1: L_L
+19 -1: Certificate too big
+33 -1: sun/reflect/DelegatingClassLoader
+16 -1: lambda$stream$57
+11 -1: BitSet.java
+13 -1: sun/misc/Perf
+26 -1: Ljava/util/SimpleTimeZone;
+7 -1: (BBBB)I
+24 -1: sun/misc/FloatingDecimal
+21 -1: sun/util/PreHashedMap
+8 -1: utf-16be
+11 -1: isInherited
+83 -1: (Ljava/util/Properties;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V
+52 -1: (Ljava/lang/Class;Ljava/security/ProtectionDomain;)V
+11 -1: getDoOutput
+18 -1: asVarargsCollector
+22 -1: NoSuchMethodError.java
+18 -1: getStackTraceDepth
+30 -1: (Ljava/io/File;)Ljava/net/URL;
+15 -1: CURRENCY_SYMBOL
+24 -1: Lsun/misc/JavaNioAccess;
+6 -1: NATIVE
+22 -1: Lsun/misc/PerfCounter;
+63 -1: java/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask
+30 -1:  less than Character.MIN_RADIX
+17 -1: isCallerSensitive
+8 -1: shutdown
+11 -1: STATE_GREEN
+4 -1: next
+10 -1: tryPresize
+16 -1: CONSTRUCTOR_NAME
+3 -1: MAY
+21 -1: java.security.manager
+20 -1: Lsun/misc/Contended;
+16 -1: DISPLAY_LANGUAGE
+6 -1: KeySet
+9 -1: getScript
+3 -1: utc
+17 -1: TRACE_INTERPRETER
+39 -1: (Ljava/lang/Object;I)Ljava/lang/String;
+19 -1: getFieldAtIfLoaded0
+15 -1: methodFilterMap
+54 -1: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;
+45 -1: java/security/cert/Certificate$CertificateRep
+43 -1: (Ljava/lang/String;)Lsun/util/calendar/Era;
+34 -1: java/security/cert/X509Certificate
+19 -1: versionsInitialized
+11 -1: isDirectory
+14 -1: aliases_IBM775
+38 -1: (Ljava/util/function/Consumer<-TE;>;)V
+38 -1: (Ljava/lang/String;)Ljava/util/Locale;
+40 -1: (Ljava/lang/String;Z)Lsun/misc/Resource;
+14 -1: setDefaultZone
+14 -1: highResCounter
+78 -1: (Ljava/lang/ClassValue$Version;Ljava/lang/Object;)Ljava/lang/ClassValue$Entry;
+16 -1: defaultUseCaches
+40 -1: (Ljava/util/zip/ZipFile;)Ljava/util/Map;
+24 -1: isSupplementaryCodePoint
+15 -1: ISO_8859_1.java
+13 -1: multiplyExact
+126 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
+8 -1: classMap
+8 -1: wildcard
+19 -1: getSimpleBinaryName
+17 -1: illegal signature
+14 -1:  == basicType(
+17 -1: ZipConstants.java
+32 -1: [Ljava/lang/VirtualMachineError;
+27 -1: ()Ljava/util/stream/Stream;
+24 -1: (Ljava/lang/Exception;)V
+21 -1: java/util/Enumeration
+13 -1: newSetFromMap
+8 -1: getenv.*
+20 -1: sun/management/Agent
+21 -1: sun/nio/cs/US_ASCII$1
+7 -1: comment
+15 -1: appendAuthority
+11 -1: hasWrappers
+10 -1: dstOffset 
+24 -1: sun/reflect/ConstantPool
+75 -1: (Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;
+52 -1: (Ljava/util/jar/JarFile;)Ljava/util/jar/JarVerifier;
+70 -1: Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>;
+14 -1: previousSetBit
+17 -1: AF_GETSTATIC_INIT
+15 -1: ArrayDeque.java
+7 -1: boolean
+25 -1: (I)Ljava/math/BigInteger;
+146 -1: (Ljava/lang/ref/ReferenceQueue<Ljava/lang/Class<*>;>;Ljava/util/concurrent/ConcurrentMap<+Ljava/lang/ref/WeakReference<Ljava/lang/Class<*>;>;*>;)V
+8 -1: getClass
+8 -1: user.dir
+6 -1: VALUES
+5 -1: raise
+39 -1: (JLjava/util/function/Consumer<-TV;>;)V
+107 -1: <T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
+5 -1: print
+8 -1: readChar
+55 -1: (JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
+56 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysTask
+60 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Double;>;
+102 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;)Ljava/util/SortedMap<TK;TV;>;
+23 -1: printModifiersIfNonzero
+14 -1: getterFunction
+15 -1: ISO-10646-UCS-2
+14 -1: canonizeString
+13 -1: getTotalSpace
+24 -1: synchronizedNavigableSet
+100 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;)TT;
+4 -1: ioex
+24 -1: ()Ljava/nio/FloatBuffer;
+14 -1: toBinaryString
+7 -1: Segment
+34 -1: ()Lsun/misc/JavaUtilZipFileAccess;
+17 -1: setTargetVolatile
+22 -1: (Ljava/util/List<*>;)V
+51 -1: (ILjava/lang/CharSequence;)Ljava/lang/StringBuffer;
+22 -1: (Ljava/util/List<*>;)Z
+5 -1: (FI)F
+11 -1: parseMethod
+8 -1: Compiled
+19 -1: java/util/SortedMap
+7 -1: setByte
+12 -1: getFieldType
+8 -1: pageSize
+14 -1: getCallerClass
+9 -1: ensureObj
+18 -1: refKindHasReceiver
+10 -1: getZoneIds
+24 -1: (Ljava/nio/CharBuffer;)I
+47 -1: ()Lsun/reflect/generics/parser/SignatureParser;
+8 -1: getIndex
+24 -1: (Ljava/lang/Thread;TT;)V
+18 -1: (Ljava/util/Map;)V
+18 -1: (Ljava/util/Map;)Z
+6 -1: random
+10 -1: putAddress
+64 -1: (Ljava/util/function/Consumer<-Ljava/util/Map$Entry<TK;TV;>;>;)V
+24 -1: (Ljava/nio/CharBuffer;)V
+8 -1: canCache
+24 -1: (Ljava/nio/CharBuffer;)Z
+9 -1: getIntAt0
+4 -1: sqrt
+8 -1: makeLong
+54 -1: ([Ljava/lang/Object;Ljava/util/function/IntFunction;)V
+5 -1: (JJ)I
+26 -1: javaIOFileDescriptorAccess
+5 -1: (JJ)J
+15 -1:  != basicType: 
+36 -1: Ljava/lang/ref/ReferenceQueue<-TT;>;
+5 -1: words
+16 -1: sun.jnu.encoding
+32 -1: (Ljava/lang/invoke/LambdaForm;)V
+22 -1: ensureClassInitialized
+16 -1: Ljava/util/List;
+14 -1: varargsInvoker
+5 -1: (JJ)V
+20 -1: java/util/Properties
+12 -1: getImplClass
+21 -1: argumentTypesToString
+5 -1: (JJ)Z
+50 -1: java/util/Collections$SynchronizedRandomAccessList
+17 -1: makeWrappedMember
+21 -1: UnmodifiableSortedSet
+22 -1: (ILjava/lang/Class;Z)V
+3 -1: MIT
+13 -1: bootClassPath
+50 -1: (JLjava/util/function/Function;)Ljava/lang/Object;
+74 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap$Node<TK;TV;>;
+45 -1: (Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
+12 -1: advanceProbe
+10 -1: encoderFor
+14 -1: DataInput.java
+16 -1: java/lang/Double
+3 -1: 912
+3 -1: 914
+3 -1: abs
+3 -1: 915
+13 -1: currentThread
+17 -1: ClassDefiner.java
+32 -1: sun/misc/Launcher$ExtClassLoader
+16 -1: Current state = 
+12 -1: elementCount
+10 -1: unmaskNull
+8 -1: csibm857
+32 -1: java/net/UnknownServiceException
+10 -1: x-utf-16be
+3 -1: acc
+37 -1: Ljava/util/List<Ljava/io/Closeable;>;
+23 -1: ([Ljava/lang/Thread;Z)I
+17 -1: impliesIgnoreMask
+23 -1: getGenericComponentType
+51 -1: ()Lsun/reflect/generics/repository/ClassRepository;
+34 -1: " not found. Will use interpreter.
+38 -1: ()Ljava/security/AccessControlContext;
+6 -1: final 
+8 -1: utf-16le
+3 -1: 920
+3 -1: 923
+5 -1: (I)[C
+43 -1: (Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
+8 -1: csibm862
+34 -1: (Ljava/lang/ref/Reference<+TT;>;)Z
+8 -1: csibm866
+20 -1: getParameterizedType
+7 -1: (II[C)V
+20 -1: [Ljava/lang/Package;
+84 -1: (Ljava/lang/String;Ljava/security/ProtectionDomain;)Ljava/security/ProtectionDomain;
+28 -1: SynchronizedRandomAccessList
+18 -1: sun/misc/VMSupport
+61 -1: java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+3 -1: add
+16 -1: ZipEntryIterator
+11 -1: next_target
+87 -1: (Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class<*>;
+4 -1: amod
+12 -1: markedSkipLF
+55 -1: java/util/concurrent/ConcurrentHashMap$EntrySpliterator
+5 -1:  lim=
+29 -1: java/security/PermissionsHash
+50 -1: (Ljava/lang/CharSequence;II)Ljava/lang/Appendable;
+19 -1: makePairwiseConvert
+58 -1: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)V
+8 -1: contents
+11 -1: user.region
+17 -1: RandomAccess.java
+13 -1: singletonList
+13 -1: policy,access
+64 -1: Ljava/util/Map<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;
+25 -1: (Ljava/lang/Appendable;)V
+19 -1: (Ljava/util/List;)V
+43 -1: (Ljava/lang/ClassLoader;Ljava/lang/Class;)V
+19 -1: (Ljava/util/List;)Z
+15 -1: America/Chicago
+25 -1: (II)Ljava/nio/CharBuffer;
+12 -1: getDayOfWeek
+8 -1: ([BIIZ)V
+28 -1: (Ljava/lang/reflect/Field;)I
+28 -1: (Ljava/lang/reflect/Field;)J
+18 -1: getDeclaringClass0
+11 -1: counterTime
+30 -1: (Ljava/util/Collection<TE;>;)V
+28 -1: (Ljava/lang/reflect/Field;)V
+31 -1: (IIIILjava/io/FileDescriptor;)V
+25 -1: java/net/SocketPermission
+20 -1: bad parameter count 
+18 -1: getHeaderFieldLong
+26 -1: GetReflectionFactoryAction
+19 -1: MIN_TRANSFER_STRIDE
+17 -1: java/nio/Bits$1$1
+7 -1: getSize
+33 -1: java/util/function/ToLongFunction
+46 -1: (IILjava/lang/String;)Ljava/lang/StringBuffer;
+10 -1: access$800
+65 -1: sun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache
+26 -1: (Ljava/lang/ClassLoader;)V
+25 -1: java/util/IdentityHashMap
+26 -1: (Ljava/lang/ClassLoader;)Z
+91 -1: <T:Ljava/lang/Object;>(Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
+26 -1: ([CIILjava/lang/String;I)I
+12 -1: canonicalize
+3 -1: val
+8 -1: putCharB
+12 -1: UTF_32LE_BOM
+60 -1: (Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;
+44 -1: (Lsun/misc/SignalHandler;Lsun/misc/Signal;)V
+26 -1: (Ljava/util/Enumeration;)V
+11 -1: INVALIDATED
+8 -1: putCharL
+22 -1: (II)Ljava/lang/String;
+7 -1: hasNext
+5 -1: WRITE
+20 -1: MIN_INITIAL_CAPACITY
+13 -1: propertyNames
+9 -1: Gregorian
+13 -1: getExpiration
+7 -1: minutes
+7 -1: ostream
+9 -1: java.lang
+17 -1: forceStandardTime
+9 -1: initWords
+41 -1: java/lang/Thread$UncaughtExceptionHandler
+9 -1: theUnsafe
+27 -1: ForEachTransformedEntryTask
+10 -1: forEncoder
+31 -1: needsClassLoaderPermissionCheck
+5 -1: ctime
+25 -1: ()Ljava/nio/DoubleBuffer;
+8 -1: getValue
+66 -1: (Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
+42 -1: (Ljava/io/InputStream;Ljava/lang/String;)V
+6 -1: august
+14 -1: compileClasses
+13 -1: javaNetAccess
+22 -1: interpretWithArguments
+4 -1: url:
+14 -1: EMPTY_ITERATOR
+60 -1: Ljava/util/WeakHashMap<Ljava/io/Closeable;Ljava/lang/Void;>;
+24 -1: java/util/jar/Attributes
+12 -1: getOrDefault
+19 -1: Pacific/Guadalcanal
+33 -1: ()Ljava/lang/reflect/Constructor;
+38 -1: java/util/Collections$UnmodifiableList
+13 -1: basicTypeChar
+22 -1: (Ljava/lang/String;J)J
+14 -1: memberDefaults
+42 -1: (Ljava/lang/Class<*>;[Ljava/lang/String;)V
+38 -1: (Ljava/util/function/Consumer<-TK;>;)V
+16 -1: LF_NEWINVSPECIAL
+10 -1: classDepth
+28 -1: [Ljava/io/ObjectStreamField;
+46 -1: (Ljava/util/Collection;)Ljava/util/Collection;
+91 -1: ([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+11 -1: getLocation
+39 -1: (Ljava/lang/Class;[Ljava/lang/Class;Z)V
+9 -1: loadTable
+55 -1: Directory separator should not appear in library name: 
+7 -1: setTime
+14 -1: getConstructor
+4 -1: urls
+25 -1: dispatchUncaughtException
+77 -1: (ILjava/lang/Object;Ljava/lang/Class<*>;)Ljava/util/HashMap$TreeNode<TK;TV;>;
+8 -1: modCount
+8 -1: Opening 
+6 -1: ENDHDR
+4 -1: cnfe
+34 -1: DIRECTIONALITY_PARAGRAPH_SEPARATOR
+10 -1: Asia/Amman
+3 -1: MST
+28 -1: DIRECTIONALITY_ARABIC_NUMBER
+3 -1: all
+4 -1: enum
+8 -1: copyWith
+12 -1: ([JI[IIJII)I
+29 -1: Ljava/lang/annotation/Target;
+7 -1: Thread-
+14 -1: x-utf-32le-bom
+38 -1: (ILjava/lang/management/MemoryUsage;)V
+33 -1: Signal already used by VM or OS: 
+27 -1: (I)Ljava/lang/StringBuffer;
+25 -1: java/text/Normalizer$Form
+10 -1: x-utf-16le
+34 -1:  can not access a member of class 
+27 -1: (Ljava/nio/ByteBuffer;IFZ)V
+28 -1: (Ljava/lang/ClassValue<*>;)V
+16 -1: INITIAL_CAPACITY
+23 -1: DirectMethodHandle.java
+18 -1: reduceValuesToLong
+41 -1: (Ljava/lang/String;Ljava/lang/Class<*>;)V
+6 -1: unwrap
+12 -1: threadStatus
+5 -1: (DI)D
+11 -1: fieldOffset
+52 -1: java/util/concurrent/ConcurrentHashMap$EntryIterator
+14 -1: ACCESS_EXECUTE
+44 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;
+29 -1: ([Ljava/lang/ThreadGroup;IZ)I
+18 -1: LocalVariableTable
+17 -1: ConstantPool.java
+26 -1: (Ljava/nio/ByteBuffer;ID)V
+4 -1: (C)B
+3 -1: and
+4 -1: head
+126 -1: (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory;
+4 -1: (C)C
+16 -1: Pacific/Auckland
+7 -1: Thread[
+5 -1: ([D)I
+4 -1: (C)I
+98 -1: <U:Ljava/lang/Object;>([Ljava/lang/reflect/Constructor<TU;>;)[Ljava/lang/reflect/Constructor<TU;>;
+11 -1: fileHandler
+30 -1: DIRECTIONALITY_NONSPACING_MARK
+10 -1: (this Map)
+14 -1: malformedCache
+5 -1: ([D)V
+4 -1: (C)V
+26 -1: getUnicodeLocaleAttributes
+4 -1: (C)Z
+81 -1: (JLjava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)J
+46 -1: [Ljava/util/concurrent/ConcurrentHashMap$Node;
+20 -1:     Max. Heap Size: 
+24 -1: Ljava/lang/reflect/Type;
+13 -1: EmptyIterator
+8 -1: allocate
+7 -1: FLUSHED
+8 -1: exitVM.*
+59 -1: (Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
+19 -1: reduceEntriesToLong
+15 -1: getISOLanguages
+13 -1: CONSTANT_ZERO
+23 -1: (I)Ljava/util/Iterator;
+96 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;
+11 -1: isSynthetic
+7 -1: lineBuf
+30 -1: java/lang/annotation/Inherited
+65 -1: <E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Iterable<TE;>;
+35 -1: (Ljava/lang/String;)[Ljava/io/File;
+27 -1: java/security/cert/CertPath
+26 -1: startRemoteManagementAgent
+9 -1: shiftLeft
+5 -1: stack
+42 -1: (Ljava/lang/Class<*>;[Ljava/lang/Object;)V
+11 -1: CheckedList
+10 -1: replaceAll
+86 -1: (Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
+24 -1: (I)Ljava/nio/CharBuffer;
+13 -1: image/vnd.fpx
+15 -1: iso_8859-1:1987
+19 -1: (Ljava/lang/Long;)I
+22 -1: sun/misc/SignalHandler
+15 -1: ifModifiedSince
+42 -1: (Ljava/lang/Class;)Ljava/lang/ClassLoader;
+105 -1: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Class;I[Ljava/lang/invoke/MemberName;)I
+22 -1: Negative timeout value
+38 -1: Ljava/io/UnsupportedEncodingException;
+11 -1: removeRange
+13 -1: Compiler.java
+6 -1: Sorter
+8 -1: aliasSet
+10 -1: UNASSIGNED
+34 -1: lambda$comparingByValue$1065357e$1
+34 -1: ()Ljava/lang/Class$AnnotationData;
+25 -1: sun/misc/Launcher$Factory
+15 -1: getLongVolatile
+8 -1: vmloader
+10 -1: unicodebig
+10 -1: closeables
+31 -1: JavaIOFileDescriptorAccess.java
+7 -1:  static
+3 -1: arg
+21 -1: library can't be null
+42 -1: java/util/ArraysParallelSortHelpers$FJByte
+22 -1: getDeclaringExecutable
+19 -1: runFinalizersOnExit
+20 -1: simpleTimeZoneParams
+13 -1: Modifier.java
+14 -1: pkcs11keystore
+6 -1: shared
+30 -1: java/net/MalformedURLException
+26 -1: ()[Lsun/util/calendar/Era;
+13 -1: x-MS950-HKSCS
+10 -1: relativize
+40 -1: (Ljava/lang/String;JJ)Ljava/lang/String;
+31 -1: java/util/HashMap$ValueIterator
+29 -1: MODIFY_THREADGROUP_PERMISSION
+38 -1: (Ljava/lang/String;)Ljava/lang/Object;
+7 -1: destroy
+37 -1: (Ljava/util/List;)[Ljava/lang/String;
+18 -1: (Ljava/io/File;Z)V
+32 -1: Ljava/util/HashMap$Node<TK;TV;>;
+18 -1: interfaceModifiers
+34 -1: java/util/LinkedList$LLSpliterator
+7 -1: REF_???
+23 -1: java/net/ContentHandler
+20 -1: <compiledLambdaForm>
+17 -1: [Ljava/lang/Byte;
+6 -1: exitVM
+3 -1: att
+27 -1: sun/nio/cs/UTF_16BE$Encoder
+6 -1: exists
+28 -1: Ljava/util/Collection<+TE;>;
+48 -1: (Ljava/lang/CharSequence;)Ljava/lang/Appendable;
+6 -1: getMap
+52 -1: ([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;
+11 -1: stackTrace[
+21 -1: slowCheckMemberAccess
+33 -1: ReflectiveOperationException.java
+9 -1: versionId
+56 -1: Wrong number of parameters in MethodParameters attribute
+14 -1: isLowSurrogate
+8 -1: csPCp852
+16 -1: copyConstructors
+25 -1: ()Ljava/util/Spliterator;
+9 -1: closeLock
+17 -1: readUnsignedShort
+7 -1: 8859_13
+7 -1: 8859_15
+13 -1: TARGET_OFFSET
+26 -1: (Ljava/util/Hashtable;IZ)V
+44 -1: (Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;
+46 -1: (Ljava/lang/reflect/Type;)Ljava/lang/Class<*>;
+25 -1: DEFAULT_CONCURRENCY_LEVEL
+36 -1: Ljava/util/List<Ljava/lang/String;>;
+29 -1: sun.nio.PageAlignDirectMemory
+37 -1: (Ljava/lang/Class;I)Ljava/lang/Class;
+12 -1: encryptBlock
+8 -1: parentOf
+5 -1: H_HEX
+11 -1: getFloatAt0
+24 -1: VirtualMachineError.java
+18 -1: getDeclaredClasses
+59 -1: (Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer;
+42 -1: (Ljava/util/List<Ljava/lang/Class<*>;>;)[C
+37 -1: (Ljava/lang/String;)Ljava/lang/Float;
+13 -1: Iterator.java
+25 -1: (Ljava/io/PrintStream;I)V
+9 -1: getObject
+19 -1: [Ljava/lang/String;
+7 -1: SIZECTL
+11 -1: isUnderflow
+27 -1: sun.nio.MaxDirectMemorySize
+21 -1: isNonPublicProxyClass
+13 -1: toCalendarDOW
+9 -1: Type.java
+14 -1: aliases_IBM850
+17 -1: emptyNavigableMap
+14 -1: aliases_IBM852
+14 -1: aliases_IBM855
+14 -1: aliases_IBM857
+14 -1: aliases_IBM858
+15 -1: iso_8859-4:1988
+13 -1: UnicodeScript
+8 -1: getCharB
+17 -1: constructorMethod
+27 -1: java/util/function/Function
+20 -1: getProtectionDomain0
+8 -1: getCharL
+32 -1: ([Ljava/io/File;)[Ljava/net/URL;
+51 -1: (Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
+7 -1: getenv.
+5 -1: stale
+14 -1: aliases_IBM862
+32 -1: java/util/spi/LocaleNameProvider
+14 -1: aliases_IBM866
+51 -1: ([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
+6 -1: CENDSK
+36 -1: java/util/Comparators$NullComparator
+34 -1: UnsafeStaticFieldAccessorImpl.java
+17 -1: staticFieldOffset
+12 -1: prefetchRead
+4 -1: help
+34 -1: (Ljava/util/concurrent/TimeUnit;)J
+8 -1: getChars
+19 -1: java/lang/Throwable
+34 -1: Annotation Type:\n   Member types: 
+55 -1: (Ljava/lang/Class<*>;Ljava/security/ProtectionDomain;)V
+14 -1: aliases_IBM874
+17 -1: getDisplayVariant
+24 -1: Ljava/net/NetPermission;
+15 -1: jvmMinorVersion
+11 -1: subSequence
+3 -1: x86
+6 -1: double
+14 -1: checkSlotCount
+20 -1: java/net/InetAddress
+14 -1: Principal.java
+8 -1: $,;:@&=+
+17 -1: ByteBuffered.java
+21 -1: sun.misc.Perf.getPerf
+11 -1: finishEntry
+27 -1: sun.timezone.ids.oldmapping
+26 -1: (ZLjava/io/OutputStream;)V
+41 -1: (Ljava/lang/String;Z)Ljava/lang/Class<*>;
+32 -1: generateSerializationConstructor
+6 -1: Value 
+40 -1: (Ljava/lang/String;Ljava/lang/String;Z)V
+16 -1: previousClearBit
+7 -1: theProp
+51 -1: (Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
+39 -1: com.sun.javafx.application.LauncherImpl
+21 -1: URLStreamHandler.java
+4 -1:  in 
+14 -1: BIT_INDEX_MASK
+125 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Comparator<-TK;>;)Ljava/util/Comparator<Ljava/util/Map$Entry<TK;TV;>;>;
+49 -1: (Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
+10 -1: scaleValue
+27 -1: (Ljava/nio/ByteBuffer;IDZ)V
+78 -1: (Ljava/util/Collection<Ljava/lang/reflect/Field;>;[Ljava/lang/reflect/Field;)V
+53 -1: <T:Ljava/lang/Object;>(I)Ljava/util/Enumeration<TT;>;
+38 -1: java/lang/IncompatibleClassChangeError
+60 -1: java/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask
+23 -1: not a method or field: 
+35 -1: Ljava/nio/BufferUnderflowException;
+4 -1: i386
+13 -1: US_ASCII.java
+80 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/lang/reflect/AnnotatedType;
+21 -1: initializeSystemClass
+6 -1: ([CI)I
+18 -1: getBooleanProperty
+35 -1: java/util/function/ToDoubleFunction
+37 -1: (Ljava/lang/String;)Ljava/lang/Class;
+28 -1: MapReduceEntriesToDoubleTask
+38 -1: java/util/LinkedHashMap$LinkedEntrySet
+8 -1: copySign
+6 -1: ([CI)V
+55 -1: sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+12 -1: parseBoolean
+3 -1: NET
+3 -1: NEW
+6 -1: Values
+17 -1: getJavaLangAccess
+9 -1: LocaleKey
+3 -1: :-1
+30 -1: (Ljava/io/ObjectInputStream;)V
+3 -1: NFC
+3 -1: NFD
+18 -1: SIMPLIFIED_CHINESE
+28 -1: ()Ljava/lang/reflect/Method;
+9 -1: localInit
+37 -1: sun/util/locale/LocaleSyntaxException
+15 -1: LambdaForm.java
+5 -1: rtype
+8 -1:  field "
+50 -1: (Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
+80 -1: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)V
+36 -1: java/lang/invoke/MethodHandleNatives
+22 -1: (Ljava/util/Map<**>;)Z
+22 -1: Ljava/lang/Class<TV;>;
+7 -1: SubList
+14 -1: connect,accept
+19 -1: declaredAnnotations
+38 -1: Ljava/lang/ThreadLocal$ThreadLocalMap;
+11 -1: isSpaceChar
+10 -1: offerFirst
+20 -1: sun/nio/ByteBuffered
+17 -1: packageDefinition
+7 -1: trigger
+35 -1: [Ljava/lang/invoke/LambdaForm$Name;
+19 -1: sun.stdout.encoding
+5 -1: start
+26 -1: (Ljava/util/HashMap;IIII)V
+65 -1: (JLjava/util/function/Consumer<-Ljava/util/Map$Entry<TK;TV;>;>;)V
+6 -1: LOCVER
+3 -1: ://
+42 -1: (CLjava/lang/Class<*>;Ljava/lang/Object;)Z
+6 -1: friday
+45 -1: sun/reflect/DelegatingConstructorAccessorImpl
+15 -1: iso_8859-7:1987
+15 -1: newCalendarDate
+24 -1: getAnnotatedReceiverType
+32 -1: java/util/NoSuchElementException
+50 -1: (Ljava/util/NavigableSet;)Ljava/util/NavigableSet;
+26 -1: java/text/SimpleDateFormat
+16 -1: threadInitNumber
+55 -1: <T:Ljava/lang/Object;>(TT;)Ljava/util/Spliterator<TT;>;
+23 -1: (Ljava/lang/Object;)TT;
+3 1: bar
+37 -1: getFunctionalInterfaceMethodSignature
+5 -1: state
+39 -1: [Ljava/lang/reflect/GenericDeclaration;
+22 -1: sun/net/ProgressSource
+13 -1: LLSpliterator
+93 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TT;>;Ljava/util/Iterator<TT;>;
+5 -1: JAPAN
+11 -1: SPACE_TOTAL
+20 -1: CharsetProvider.java
+12 -1: CR_UNDERFLOW
+7 -1: ITALIAN
+11 -1: getCallerPD
+13 -1: isMemberClass
+38 -1: (Ljava/util/function/Consumer<-TT;>;)V
+18 -1: malformedForLength
+14 -1: ReflectionData
+34 -1: (BZI)Ljava/lang/invoke/LambdaForm;
+16 -1: forPrimitiveType
+31 -1:  field found in java.lang.Class
+60 -1: (Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V
+18 -1: DescendingIterator
+25 -1: (IZLjava/lang/Runnable;)V
+35 -1: ()[Ljava/lang/reflect/TypeVariable;
+3 -1: bcp
+23 -1: (Ljava/lang/Object;)TV;
+25 -1: setDefaultAssertionStatus
+10 -1: ([BIIIII)V
+150 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;)Ljava/util/concurrent/ConcurrentHashMap$Node<TK;TV;>;
+14 -1:    Inherited: 
+17 -1: fileTimeToWinTime
+7 -1: ([BI)[B
+26 -1: java/io/OutputStreamWriter
+58 -1: <T:Ljava/lang/Object;>(Ljava/util/ListIterator<+TT;>;I)TT;
+39 -1: sun/reflect/annotation/AnnotationParser
+71 -1: (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream;
+47 -1: Ljava/util/concurrent/locks/ReentrantLock$Sync;
+44 -1: (Ljava/util/Collection;[Ljava/lang/Object;)Z
+43 -1: ([ILjava/util/function/IntBinaryOperator;)V
+29 -1: reverseAllValidSurrogatePairs
+20 -1: Ljava/nio/file/Path;
+20 -1: getGenericSignature0
+42 -1: (Ljava/lang/String;Ljava/lang/Class<*>;Z)V
+8 -1: manEntry
+64 -1: (Ljava/lang/String;)Ljava/util/Enumeration<Lsun/misc/Resource;>;
+36 -1: newGetDoubleIllegalArgumentException
+63 -1: (Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;
+30 -1:     Ergonomics Machine Class: 
+40 -1: ()Ljava/util/Map<Ljava/lang/String;TT;>;
+50 -1: (Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
+30 -1: CHECK_MEMBER_ACCESS_PERMISSION
+22 -1: (Ljava/lang/Boolean;)I
+10 -1: V_Variable
+68 -1: java/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask
+61 -1: (Ljava/lang/String;IILjava/lang/String;)Ljava/nio/ByteBuffer;
+21 -1: accessClassInPackage.
+44 -1: java/util/WeakHashMap$WeakHashMapSpliterator
+11 -1: nextElement
+9 -1: separator
+48 -1: java/util/zip/ZipFile$ZipFileInflaterInputStream
+44 -1: java/security/UnresolvedPermissionCollection
+10 -1: access$900
+44 -1: java/util/ArraysParallelSortHelpers$FJDouble
+84 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
+52 -1: (Ljava/lang/ref/Finalizer;)Ljava/lang/ref/Finalizer;
+19 -1: getDeclaredMethods0
+29 -1: (IJ)Ljava/lang/StringBuilder;
+11 -1: Member.java
+61 -1: (Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMBean;
+35 -1: java/lang/AssertionStatusDirectives
+23 -1: Declaring class is null
+56 -1: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
+12 -1: java/io/File
+41 -1: java/util/ConcurrentModificationException
+47 -1: (Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;
+19 -1: parameterClassCache
+8 -1: US_ASCII
+15 -1: tryMonitorEnter
+22 -1: Ljava/util/Collection;
+67 -1: (Lsun/misc/Signal;Lsun/misc/SignalHandler;)Lsun/misc/SignalHandler;
+27 -1: (Lsun/misc/JavaNioAccess;)V
+9 -1: DigitOnes
+5 -1: write
+31 -1: NF_internalMemberNameEnsureInit
+18 -1: comparableClassFor
+20 -1: defineAnonymousClass
+49 -1: (Ljava/io/InputStream;Lsun/net/ProgressSource;J)V
+31 -1: java/lang/NumberFormatException
+17 -1: remainderUnsigned
+62 -1: <T::Ljava/lang/Comparable<-TT;>;>()Ljava/util/Comparator<TT;>;
+4 -1: Kind
+20 -1: (Ljava/lang/Short;)I
+8 -1: OfDouble
+51 -1: ([Ljava/lang/Object;Ljava/lang/invoke/MethodType;)Z
+22 -1: [Ljava/util/Map$Entry;
+13 -1: instanceClass
+29 -1: ()Ljava/lang/SecurityManager;
+12 -1: isUnmappable
+17 -1: getAllStackTraces
+19 -1: LinkedValueIterator
+7 -1: isDigit
+10 -1: rangeCheck
+89 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/invoke/MemberName;>;
+13 -1: getMethodType
+21 -1: FileOutputStream.java
+22 -1: ()Ljava/text/Collator;
+64 -1: <T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;)TT;
+15 -1: defaultTimeZone
+14 -1: emptySortedMap
+35 -1: (Ljava/util/function/IntConsumer;)V
+45 -1: java/util/Collections$CheckedRandomAccessList
+11 -1: getPriority
+7 -1: signals
+6 -1: Subset
+15 -1: invokeInterface
+16 -1: nameRefsAreLegal
+38 -1: (Ljava/lang/Object;)Ljava/lang/Object;
+37 -1: Ljava/util/Collections$EmptyIterator;
+9 -1: Perf.java
+20 -1: java/math/BigInteger
+38 -1: java/util/WeakHashMap$ValueSpliterator
+71 -1: (Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
+50 -1: (Ljava/lang/invoke/MemberName;Ljava/lang/Object;)V
+21 -1: [Ljava/lang/Class<*>;
+13 -1: getProperties
+63 -1: (Ljava/lang/Class<*>;[B[Ljava/lang/Object;)Ljava/lang/Class<*>;
+65 -1: (Ljava/util/Set<Ljava/lang/Class<*>;>;)[Ljava/lang/reflect/Field;
+21 -1: sun/util/calendar/Era
+21 -1: Ljava/nio/CharBuffer;
+23 -1: (Ljava/lang/Object;JS)V
+24 -1: oracle/jrockit/jfr/VMJFR
+15 -1: access allowed 
+34 -1: ()Lsun/util/calendar/CalendarDate;
+97 -1: (Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
+44 -1: ([Ljava/lang/Object;[Ljava/lang/Object;III)V
+48 -1: (Ljava/util/Collection;I)Ljava/util/Spliterator;
+11 -1: SimpleEntry
+63 -1: (Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;)V
+8 -1: putFloat
+20 -1: linkToCallSiteMethod
+8 -1: invokers
+35 -1: (J)Lsun/util/calendar/BaseCalendar;
+6 -1: FRENCH
+26 -1: getRawParameterAnnotations
+9 -1: wordIndex
+29 -1: JNI_COPY_FROM_ARRAY_THRESHOLD
+20 -1: sun/nio/cs/Surrogate
+48 -1: (Lsun/misc/JavaSecurityProtectionDomainAccess;)V
+45 -1: (Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V
+3 -1: NST
+14 -1: getHeaderField
+27 -1: (Ljava/util/jar/JarFile;Z)V
+10 -1: findNative
+38 -1: The following can be used with access:
+29 -1: convertCertArrayToSignerArray
+4 -1: .DSA
+12 -1: dependencies
+12 -1: SYNCHRONIZED
+14 -1: x-euc-jp-linux
+28 -1: URLStreamHandlerFactory.java
+11 -1: checkPtypes
+68 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
+13 -1: addDayOfMonth
+10 -1: isAncestor
+16 -1: entryDislocation
+12 -1: tableSizeFor
+29 -1: (ID)Ljava/lang/StringBuilder;
+19 -1: getLastRuleInstance
+24 -1: getGenericParameterTypes
+8 -1: ,offset=
+37 -1: (Ljava/net/URL;Ljava/lang/String;II)V
+13 -1: UTF_16LE.java
+12 -1: setTimestamp
+31 -1: AtomicReferenceFieldUpdaterImpl
+6 -1: L_URIC
+4 -1: (D)D
+14 -1: DeqSpliterator
+13 -1: LF_INVVIRTUAL
+171 -1: <U:Ljava/lang/Object;W:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/Class<TW;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TU;TW;>;
+4 -1: (D)I
+22 -1: Ljava/lang/Class<TT;>;
+4 -1: (D)J
+196 -1: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+13 -1: ,transitions=
+30 -1: (Lsun/net/www/MessageHeader;)I
+4 -1: (D)V
+12 -1: segmentShift
+4 -1: (D)Z
+14 -1: Reference.java
+26 -1: [Ljava/lang/reflect/Field;
+26 -1: java/nio/DirectByteBufferR
+31 -1: lambda$thenComparing$36697e65$1
+30 -1: (Lsun/net/www/MessageHeader;)V
+55 -1: No java.nio.charset.StandardCharsets instances for you!
+59 -1: (Ljava/lang/Class<*>;Ljava/lang/Object;Ljava/lang/Object;)I
+19 -1: thenComparingDouble
+31 -1: ()Ljava/lang/invoke/LambdaForm;
+9 -1: getMillis
+21 -1: StandardCharsets.java
+15 -1: postDefineClass
+8 -1: getExtra
+3 -1: box
+10 -1: nextSetBit
+27 -1: java/util/ArrayList$SubList
+43 -1: (Ljava/util/concurrent/ConcurrentHashMap;)V
+52 -1: (Lsun/misc/URLClassPath;)Ljava/net/URLStreamHandler;
+7 -1: putLong
+40 -1: <T::Ljava/lang/Comparable<-TT;>;>([TT;)V
+8 -1: ([DII)[D
+8 -1: ([SIIS)I
+8 -1: argument
+12 -1: linkCallSite
+56 -1: <T:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<TT;>;
+15 -1: returnSlotCount
+68 -1: (Ljava/lang/String;[Ljava/lang/Class<*>;Z)Ljava/lang/reflect/Method;
+20 -1: defaultDisplayLocale
+21 -1: (Ljava/util/Vector;)V
+49 -1: (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V
+12 -1: isAlphabetic
+5 -1: perms
+13 -1: dosToJavaTime
+8 -1: ([SIIS)V
+7 -1: valueOf
+27 -1: Ljava/util/LinkedList$Node;
+41 -1: (Ljava/lang/String;I)Ljava/lang/Class<*>;
+38 -1: ()Ljava/nio/charset/CodingErrorAction;
+4 -1: MASK
+5 -1: Field
+101 -1: (Ljava/lang/Class;Ljava/nio/ByteBuffer;Lsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/lang/Object;
+56 -1: (Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
+9 -1: SURROGATE
+72 -1: (Ljava/lang/invoke/DirectMethodHandle$StaticAccessor;)Ljava/lang/Object;
+19 -1: PARAMETER_MODIFIERS
+48 -1: ([Ljava/lang/Object;II)Ljava/util/stream/Stream;
+56 -1: (TK;TV;Ljava/util/function/BiFunction<-TV;-TV;+TV;>;)TV;
+118 -1: <U:Ljava/lang/Object;>(JLjava/util/function/BiFunction<-TK;-TV;+TU;>;Ljava/util/function/BiFunction<-TU;-TU;+TU;>;)TU;
+29 -1: (Lsun/nio/ch/Interruptible;)V
+45 -1: Ljava/lang/ref/Reference<Ljava/lang/Object;>;
+17 -1: isHeldExclusively
+3 -1: NYI
+15 -1: getByteVolatile
+20 -1: compareAndSwapObject
+29 -1: (Z)[Ljava/lang/reflect/Field;
+7 -1: ([SII)V
+13 -1: toLanguageTag
+18 -1: StreamEncoder.java
+25 -1: (IF)Ljava/nio/ByteBuffer;
+18 -1: afterNodeInsertion
+11 -1: accessOrder
+60 -1: Lsun/reflect/annotation/TypeAnnotation$TypeAnnotationTarget;
+20 -1: META-INF/MANIFEST.MF
+18 -1: getSuperInterfaces
+26 -1: (Ljava/nio/ByteBuffer;IZ)C
+26 -1: (Ljava/nio/ByteBuffer;IZ)D
+9 -1: PROTECTED
+18 -1:  not visible from 
+26 -1: java/lang/RuntimeException
+26 -1: (Ljava/nio/ByteBuffer;IZ)F
+20 -1: java/net/FileNameMap
+15 -1: insertArguments
+8 -1: diagprop
+26 -1: (Ljava/nio/ByteBuffer;IZ)I
+26 -1: (Ljava/nio/ByteBuffer;IZ)J
+20 -1: createContentHandler
+11 -1: getProtocol
+26 -1: (Ljava/nio/ByteBuffer;IZ)S
+33 -1: Ljava/lang/NoSuchMethodException;
+19 -1: entry name too long
+40 -1: java/util/jar/JarVerifier$VerifierStream
+6 -1: server
+7 -1: OCTOBER
+26 -1: sun/invoke/util/VerifyType
+6 -1: domain
+9 -1: getUnsafe
+5 -1: ([Z)I
+4 -1: cons
+42 -1: ()Ljava/lang/ReflectiveOperationException;
+4 -1: byte
+29 -1: java/util/function/BiConsumer
+24 -1: getJavaUtilZipFileAccess
+37 -1: ([Ljava/lang/Object;)Ljava/util/List;
+27 -1: timeout can not be negative
+62 -1: Ljava/util/Map<Ljava/io/InputStream;Ljava/util/zip/Inflater;>;
+16 -1: getOurStackTrace
+34 -1: (J)Ljava/lang/ref/Reference<+TT;>;
+50 -1: Lsun/reflect/generics/repository/MethodRepository;
+20 -1: MIN_BYTE_BUFFER_SIZE
+3 -1: buf
+13 -1: getAttributes
+6 -1: GERMAN
+38 -1: java/security/NoSuchAlgorithmException
+20 -1: Direct buffer memory
+6 -1: (IIZ)V
+27 -1: JVMTI_THREAD_STATE_RUNNABLE
+26 -1: [Ljava/io/File$PathStatus;
+36 -1: (Ljava/util/List;Ljava/lang/Class;)V
+13 -1: JarIndex.java
+34 -1: java/lang/Character$CharacterCache
+8 -1: csIBM857
+10 -1: LineReader
+28 -1: Ljava/lang/RuntimeException;
+30 -1: ()Ljava/util/Enumeration<TV;>;
+12 -1: getSeparator
+124 -1: (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;
+97 -1: Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/ref/WeakReference<Ljava/nio/charset/CoderResult;>;>;
+21 -1: ConstantCallSite.java
+40 -1: sun/util/locale/provider/LocaleResources
+101 -1: <U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
+4 -1: copy
+23 -1: sun/security/util/Debug
+10 -1: isAbsolute
+34 -1: (Ljava/lang/invoke/MethodHandle;)V
+34 -1: (Ljava/lang/invoke/MethodHandle;)Z
+48 -1: ()[Ljava/util/concurrent/ConcurrentHashMap$Node;
+34 -1: (Lsun/reflect/LangReflectAccess;)V
+8 -1: csIBM862
+8 -1: csIBM866
+64 -1: java/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask
+39 -1: No java.util.Objects instances for you!
+68 -1: (Ljava/util/PrimitiveIterator$OfInt;JI)Ljava/util/Spliterator$OfInt;
+19 -1: Illegal class name 
+24 -1: uncaughtExceptionHandler
+12 -1: runFinalizer
+23 -1: java/io/FileInputStream
+41 -1: (Ljava/lang/Class<*>;Ljava/lang/String;)V
+98 -1: (Ljava/util/HashMap$Node<TK;TV;>;Ljava/util/HashMap$Node<TK;TV;>;)Ljava/util/HashMap$Node<TK;TV;>;
+30 -1: java/nio/charset/CoderResult$1
+20 -1: SourceDebugExtension
+30 -1: java/nio/charset/CoderResult$2
+69 -1: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)Z
+14 -1: 1.8.0-internal
+16 -1: ReduceValuesTask
+13 -1: toLowerString
+14 -1: newPrintStream
+13 -1: unicodelittle
+19 -1: getClassLoadingLock
+9 -1: DigitTens
+80 -1: (Ljava/lang/Class<*>;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
+12 -1: sun_eu_greek
+21 -1: getBootstrapClassPath
+9 -1: volatile 
+15 -1: UnmodifiableMap
+21 -1: enumConstantDirectory
+10 -1: getContent
+4 -1: cosh
+74 -1: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
+11 -1: ([JII[JII)V
+28 -1: java/lang/reflect/Executable
+17 -1: MapReduceKeysTask
+6 -1: isOpen
+17 -1: AnnotationDefault
+17 -1: Already connected
+27 -1: (Lsun/misc/JavaNetAccess;)V
+34 -1: ([BILjava/nio/charset/Charset;Z)[B
+55 -1: Ljava/lang/invoke/DirectMethodHandle$EnsureInitialized;
+8 -1: Set.java
+10 -1: DEAD_ENTRY
+7 -1: nextInt
+3 -1: wtb
+23 -1: java/util/Collections$1
+86 -1: (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier;
+23 -1: java/util/Collections$2
+23 -1: java/util/Collections$3
+18 -1: DoubleCumulateTask
+22 -1: skip value is negative
+85 -1: (Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;
+5 -1: \\[\\]$
+34 -1: Ljava/util/NoSuchElementException;
+3 -1: NaN
+30 -1: sun/util/calendar/CalendarDate
+10 -1: V_Constant
+20 -1: java/lang/Comparable
+9 -1: text/html
+20 -1: -9223372036854775808
+20 -1: DataInputStream.java
+20 -1:    Member defaults: 
+35 -1: Ljava/lang/ref/ReferenceQueue$Lock;
+8 -1: getBytes
+17 -1: CodePointIterator
+11 -1: Signal.java
+19 -1: javaHomePrefixCache
+12 -1: replaceFirst
+37 -1: Ljava/lang/IndexOutOfBoundsException;
+39 -1: (Ljava/lang/String;ZI)Ljava/lang/Class;
+21 -1: initSystemClassLoader
+28 -1: America/Indiana/Indianapolis
+47 -1: (Ljava/security/Permission;Ljava/lang/Object;)V
+27 -1: java/net/URISyntaxException
+21 -1: createSecurityManager
+7 -1: suspend
+12 -1: L_UNRESERVED
+17 -1: checkMemberAccess
+12 -1: CoreCounters
+19 -1: java/net/HttpCookie
+8 -1: isGetter
+17 -1: setDaylightSaving
+27 -1: java.launcher.javafx.error1
+53 -1: java/util/concurrent/ConcurrentHashMap$CollectionView
+16 -1: readUnsignedByte
+47 -1: (Ljava/lang/String;)Ljava/net/URLStreamHandler;
+40 -1: (Z)[Ljava/lang/reflect/Constructor<TT;>;
+14 -1: javaLangAccess
+5 -1: apply
+8 -1: getFloat
+15 -1: getD3DAvailable
+25 -1: startLocalManagementAgent
+7 -1: RUNTIME
+22 -1: LocalVariableTypeTable
+8 -1: doOutput
+16 -1: CheckedSortedSet
+10 -1: zoneOffset
+64 -1: (Ljava/security/Permission;)Ljava/security/PermissionCollection;
+13 -1: hasUnresolved
+13 -1: user.language
+11 -1: getDoubleAt
+14 -1: getQueueLength
+37 -1: java/nio/DirectByteBuffer$Deallocator
+6 -1: ASHIFT
+9 -1: checkPath
+80 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljava/lang/Class;)V
+6 -1: CENEXT
+16 -1: doubleToLongBits
+11 -1: copyToArray
+9 -1: copyField
+36 -1: ()Lsun/util/calendar/Gregorian$Date;
+53 -1: (ILjava/lang/Object;)Ljava/util/HashMap$Node<TK;TV;>;
+44 -1: (TK;TV;Ljava/lang/ref/ReferenceQueue<TV;>;)V
+35 -1: java/util/Collections$EmptyIterator
+38 -1: sealing violation: can't seal package 
+37 -1: (Ljava/util/Queue;Ljava/lang/Class;)V
+129 -1: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B[B)V
+18 -1: HashMapSpliterator
+8 -1: putShort
+23 -1: (Ljava/lang/Object;II)V
+7 -1: GERMANY
+13 -1: toTitleString
+102 -1: (Ljava/util/ArrayPrefixHelpers$CumulateTask;Ljava/util/function/BinaryOperator;[Ljava/lang/Object;II)V
+44 -1: ([Ljava/lang/Object;)Ljava/util/Spliterator;
+6 -1: unused
+25 -1: java/net/URLClassLoader$1
+25 -1: java/net/URLClassLoader$2
+25 -1: java/net/URLClassLoader$3
+25 -1: java/net/URLClassLoader$4
+12 -1: getFixedDate
+25 -1: java/net/URLClassLoader$5
+4 -1: time
+25 -1: java/net/URLClassLoader$6
+25 -1: java/net/URLClassLoader$7
+14 -1: historicalName
+12 -1: normalizeKey
+13 -1: MIN_SURROGATE
+41 -1: java/nio/charset/CharacterCodingException
+18 -1: java/lang/Iterable
+8 -1: ([JII)[J
+103 -1: Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;>;
+18 -1: putBooleanVolatile
+5 -1: Entry
+11 -1: CounterCell
+12 -1: monitorEnter
+10 -1: skipBuffer
+15 -1: hasMoreElements
+24 -1: newIllegalStateException
+24 -1: Ljava/lang/LinkageError;
+12 -1: getEntryFlag
+44 -1: (Ljava/lang/Throwable$PrintStreamOrWriter;)V
+18 -1: java/nio/IntBuffer
+17 -1: jdk_minor_version
+28 -1: DIRECTIONALITY_RIGHT_TO_LEFT
+15 -1: getAndSetObject
+7 -1: sizeCtl
+15 -1: Ljava/util/Set;
+32 -1: (I)Ljava/lang/invoke/LambdaForm;
+16 -1: runFinalization0
+30 -1: Ljava/lang/reflect/Executable;
+15 -1: compareUnsigned
+5 -1: nkeys
+31 -1: Ljava/nio/channels/FileChannel;
+40 -1: sun/reflect/generics/tree/ClassSignature
+22 -1: (Ljava/lang/Object;I)B
+22 -1: (Ljava/lang/Object;I)C
+22 -1: (Ljava/lang/Object;I)D
+7 -1: JANUARY
+30 -1: newGetIllegalArgumentException
+22 -1: (Ljava/lang/Object;I)F
+22 -1: (Ljava/lang/Object;I)I
+22 -1: (Ljava/lang/Object;I)J
+28 -1: generateNamedFunctionInvoker
+38 -1: (Ljava/lang/String;)Ljava/time/ZoneId;
+19 -1: lambda$codePoints$2
+4 -1: Null
+7 -1: setEras
+15 -1: lambda$chars$15
+14 -1: CollectionView
+24 -1: (C)Ljava/io/PrintStream;
+22 -1: (Ljava/lang/Object;I)S
+96 -1: (Ljava/security/AccessControlContext;Lsun/security/util/Debug;Ljava/security/ProtectionDomain;)V
+17 -1: getJulianCalendar
+22 -1: (Ljava/lang/Object;I)V
+17 -1: getMethodAccessor
+9 -1: not owner
+35 -1: java/lang/reflect/ParameterizedType
+15 -1: ValueCollection
+22 -1: (Ljava/lang/Object;I)Z
+4 -1: utf8
+5 -1: CHINA
+9 -1: sprintf0d
+18 -1: java/nio/file/Path
+35 -1: DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
+30 -1: URI has an authority component
+43 -1: (Ljava/lang/Object;)Ljava/util/Spliterator;
+15 -1: <no principals>
+62 -1: (Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
+6 -1: ([ZZ)V
+10 -1: getContext
+12 -1: content-type
+99 -1: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
+51 -1: (Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;)V
+27 -1: Invalid constant pool index
+20 -1: getUnicodeLocaleType
+43 -1: Ljava/nio/charset/CharacterCodingException;
+113 -1: (Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap<Ljava/lang/String;Lsun/misc/URLClassPath$Loader;>;)V
+56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
+24 -1: Lsun/misc/SignalHandler;
+8 -1: readlink
+125 -1: (Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind<*>;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey;
+11 -1: initStatics
+15 -1: unmappableCache
+13 -1: fixMethodType
+25 -1: sun/net/www/MessageHeader
+3 -1: cdt
+27 -1: Ljava/util/Locale$Category;
+59 -1: (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
+8 -1: Accessor
+14 -1: mapLibraryName
+54 -1: (Lsun/misc/URLClassPath$JarLoader;)Lsun/misc/JarIndex;
+24 -1: ZoneOffsetTransitionRule
+7 -1: getChar
+3 -1: cee
+25 -1: MapReduceValuesToLongTask
+20 -1: declaredPublicFields
+44 -1: (Ljava/lang/ClassLoader;Ljava/lang/String;)J
+13 -1: removeElement
+20 -1: Ljava/nio/ByteOrder;
+8 -1: parallel
+67 -1: (Ljava/lang/reflect/Constructor;Lsun/reflect/ConstructorAccessor;)V
+22 -1: java/util/zip/ZipCoder
+8 -1: ([ZIIZ)V
+45 -1: (Ljava/lang/String;Ljava/lang/CharSequence;)Z
+8 -1: february
+40 -1: java/util/zip/ZipFile$ZipFileInputStream
+47 -1: java/nio/charset/Charset$ExtendedProviderHolder
+13 -1: IEEEremainder
+15 -1: sun/misc/Perf$1
+9 -1: abstract 
+20 -1: ()Ljava/time/ZoneId;
+7 -1: ONE_DAY
+92 -1: (Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node;
+45 -1: (Ljava/util/ListIterator;I)Ljava/lang/Object;
+16 -1: Buffer size <= 0
+9 -1: checkName
+11 -1: getJarEntry
+20 -1: Replacement too long
+53 -1: (Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;
+12 -1: isWhitespace
+15 -1: csISOLatinGreek
+70 -1: (Ljava/lang/reflect/Constructor<*>;Lsun/reflect/ConstructorAccessor;)V
+20 -1: TypeAnnotationTarget
+3 -1: No 
+27 -1: Lsun/reflect/FieldAccessor;
+12 -1: doPrivileged
+83 -1: (JLjava/util/function/ToIntFunction<-TV;>;ILjava/util/function/IntBinaryOperator;)I
+60 -1: (Ljava/nio/file/attribute/FileTime;)Ljava/util/zip/ZipEntry;
+11 -1: changeEntry
+18 -1: MessageHeader.java
+51 -1: ([Ljava/lang/String;Ljava/util/Map;)Ljava/util/Map;
+9 -1: castEntry
+16 -1: ACCESS_MODIFIERS
+11 -1: newInstance
+24 -1: lastIndexOfSupplementary
+13 -1: JZENTRY_EXTRA
+5 -1: LONGS
+7 -1: domain 
+16 -1: protocolPathProp
+21 -1: java/util/Hashtable$1
+10 -1: isSameDate
+23 -1: (I)Ljava/nio/file/Path;
+33 -1: java/util/PrimitiveIterator$OfInt
+7 -1: ([II)[I
+8 -1: variant=
+29 -1: (Ljava/util/Collection<*>;Z)Z
+38 -1:  already loaded in another classloader
+10 -1: setSeconds
+9 -1: makeShort
+59 -1: ClassLoader.findLibrary failed to return an absolute path: 
+26 -1: java/util/jar/JarException
+9 -1: setCharAt
+13 -1: initCauseFrom
+13 -1: val$fieldName
+18 -1: MIN_HIGH_SURROGATE
+60 -1: (Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)B
+25 -1: getDayOfWeekFromFixedDate
+10 -1: maybeReBox
+9 -1: getHandle
+60 -1: (Lsun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule;)I
+59 -1: ([Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<TT;>;
+3 -1: cis
+11 -1: getIssuerDN
+9 -1: codebase=
+80 -1: (ILjava/lang/invoke/BoundMethodHandle$SpeciesData;)Ljava/lang/invoke/LambdaForm;
+29 -1: addThreadDumpForSynchronizers
+6 -1: FRANCE
+77 -1: <T:Ljava/lang/Object;U:Ljava/lang/Object;>([TU;ILjava/lang/Class<+[TT;>;)[TT;
+45 -1: <T:Ljava/lang/Object;>()Ljava/util/List<TT;>;
+16 -1: putFloatVolatile
+34 -1: (Ljava/lang/Class;)Ljava/util/Map;
+28 -1: ()Ljava/security/Permission;
+28 -1: (Ljava/lang/CharSequence;I)I
+51 -1: ()Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
+25 -1: (II)Ljava/nio/ByteBuffer;
+20 -1: BasicPermission.java
+5 -1: isNaN
+48 -1: (Ljava/lang/Throwable;)Ljava/lang/InternalError;
+10 -1: ONE_MINUTE
+55 -1: (Ljava/lang/invoke/DirectMethodHandle$StaticAccessor;)J
+13 -1: DAYS_IN_MONTH
+7 -1: domains
+10 -1: isUnshared
+58 -1: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Long;>;
+47 -1: (Ljava/util/List;)Ljava/security/cert/CertPath;
+28 -1: ()Ljava/util/Enumeration<*>;
+34 -1: sun/misc/Launcher$ExtClassLoader$1
+22 -1: (CLjava/lang/Object;)Z
+64 -1: Ljava/lang/ref/WeakReference<Ljava/nio/charset/CharsetDecoder;>;
+7 -1: ENGLISH
+27 -1: (Ljava/util/zip/Inflater;)V
+24 -1: makeArrayElementAccessor
+72 -1: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodType;
+48 -1: (Ljava/util/jar/JarFile;)Ljava/util/Enumeration;
+48 -1: (Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
+15 -1: getNthDayOfWeek
+16 -1: printHelpMessage
+15 -1: getAbsoluteFile
+9 -1: OPEN_READ
+19 -1: willGMTOffsetChange
+28 -1: (Ljava/util/LinkedHashMap;)V
+37 -1: java/security/AllPermissionCollection
+5 -1: [id="
+34 -1: java/lang/invoke/BoundMethodHandle
+31 -1: ()Ljava/security/cert/CertPath;
+50 -1: java/util/ArraysParallelSortHelpers$FJShort$Sorter
+14 -1: StaticAccessor
+22 -1: synchronizedCollection
+53 -1: ([Ljava/io/File;)Ljava/security/AccessControlContext;
+37 -1: (Ljava/lang/Class;Ljava/lang/Class;)Z
+14 -1: codePointCount
+13 -1:  is param at 
+37 -1: Ljava/lang/invoke/MemberName$Factory;
+20 -1: annotationDataOffset
+31 -1: protocol doesn't support output
+11 -1: hostAddress
+12 -1: ,dstSavings=
+35 -1: java.lang.Integer.IntegerCache.high
+15 -1: ParallelLoaders
+48 -1: (Ljava/util/Locale;)Lsun/util/locale/BaseLocale;
+8 -1: getSize0
+22 -1: checkCreateClassLoader
+8 -1: transfer
+32 -1: (Lsun/misc/JavaSecurityAccess;)V
+26 -1: ()Ljava/net/URLConnection;
+3 -1: cmp
+9 -1: setMillis
+34 -1: sun/util/calendar/AbstractCalendar
+19 -1: getDirectBufferPool
+7 -1: ([FII)V
+28 -1: ([C)Ljava/lang/StringBuffer;
+54 -1: (Ljava/lang/Class<*>;)Ljava/security/ProtectionDomain;
+26 -1: (Ljava/nio/ByteBuffer;IF)V
+11 -1: discardMark
+71 -1: (Ljava/lang/Class;)Lsun/util/locale/provider/LocaleServiceProviderPool;
+30 -1: java/io/UTFDataFormatException
+53 -1: (Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
+48 -1: java/util/concurrent/ConcurrentHashMap$Traverser
+5 -1: ([F)I
+37 -1: (IC)Ljava/lang/AbstractStringBuilder;
+27 -1: Ljava/util/jar/JarVerifier;
+22 -1: java/util/Spliterators
+32 -1: java/lang/invoke/MutableCallSite
+20 -1: java/io/Serializable
+5 -1: ([F)V
+35 -1: (Ljava/security/ProtectionDomain;)V
+33 -1: ()Ljava/lang/ref/Reference<+TT;>;
+10 -1: unlinkLast
+6 -1: (JSZ)V
+8 -1: isStatic
+14 -1: subclassAudits
+23 -1: (Ljava/lang/String;)TT;
+17 -1: java.awt.headless
+9 -1: <Unknown>
+39 -1: Lsun/util/locale/LocaleSyntaxException;
+8 -1: location
+3 -1: cos
+27 -1: createGarbageCollectorMBean
+20 -1: MAX_MH_INVOKER_ARITY
+75 -1: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
+14 -1: Cloneable.java
+50 -1: (Lsun/reflect/DelegatingConstructorAccessorImpl;)V
+26 -1: sun/nio/ch/FileChannelImpl
+51 -1: (Ljava/lang/Class;Ljava/lang/reflect/Constructor;)V
+18 -1: Unknown byte order
+28 -1: ()[Lsun/invoke/util/Wrapper;
+21 -1: getReadClassBytesTime
+64 -1: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm;
+11 -1: setDelegate
+20 -1: (Ljava/util/List;)[C
+7 -1: usemmap
+22 -1: (CC)Ljava/lang/String;
+34 -1: sun/invoke/util/BytecodeDescriptor
+21 -1: getJavaSecurityAccess
+53 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
+7 -1: ibm-737
+19 -1: (Ljava/lang/Enum;)I
+4 -1: rint
+11 -1: Constructor
+9 -1: arraycopy
+35 -1: ([D)Ljava/util/stream/DoubleStream;
+13 -1: comparingLong
+40 -1: <T:Ljava/lang/Object;>Ljava/lang/Object;
+23 -1: OutputStreamWriter.java
+8 -1: getShort
+17 -1: CLASSPATH_LASTOCC
+13 -1: createNewFile
+14 -1: internalValues
+34 -1: Ljava/lang/IllegalAccessException;
+23 -1: (JILjava/lang/Object;)V
+27 -1: sun.misc.URLClassPath.debug
+45 -1: [Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+35 -1: ()Lsun/reflect/ConstructorAccessor;
+12 -1: classEnabled
+23 -1: cachedFixedDateNextJan1
+48 -1: (Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
+26 -1: (Ljava/lang/ThreadGroup;)V
+7 -1: setErr0
+6 -1: CENFLG
+26 -1: (Ljava/lang/ThreadGroup;)Z
+18 -1: sun/misc/MetaIndex
+3 -1: crc
+34 -1: (Z)Ljava/lang/invoke/MethodHandle;
+12 -1: replaceNames
+15 -1: java/util/Stack
+57 -1: Ljava/util/Vector<Ljava/lang/ClassLoader$NativeLibrary;>;
+89 -1: (JLjava/util/function/ToDoubleFunction<-TV;>;DLjava/util/function/DoubleBinaryOperator;)D
+24 -1: permission can't be null
+22 -1: Unable to connect to: 
+44 -1: (Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
+14 -1: floatToIntBits
+11 -1: getLastRule
+6 -1: EXTCRC
+26 -1: java/net/InetSocketAddress
+36 -1: (Lsun/misc/URLClassPath$JarLoader;)V
+27 3: sun/launcher/LauncherHelper
+8 -1: ecma-118
+49 -1: (Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL;
+13 -1: hashCodeValue
+5 -1: CESU8
+21 -1: appendVmSelectMessage
+13 -1: bindImmediate
+12 -1: closeLoaders
+16 -1: emptySpliterator
+28 -1: (J)Ljava/time/LocalDateTime;
+22 -1: [Ljava/lang/Character;
+5 -1: certs
+6 -1: (null)
+25 -1: java/io/ObjectInputStream
+27 -1: ([Ljava/lang/ThreadGroup;)I
+3 -1: cst
+3 -1: csu
+20 -1: java/nio/ShortBuffer
+53 -1: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
+4 -1: (Z)I
+24 -1: Ljava/io/FileDescriptor;
+6 -1: cclass
+10 -1: , profile 
+39 -1: (Ljava/lang/String;)Ljava/lang/Process;
+4 -1: (Z)V
+5 -1: toURI
+24 -1: ConstructorAccessor.java
+5 -1: toURL
+18 -1: addAllIfNotPresent
+4 -1: (Z)Z
+5 -1: parse
+11 -1: isPrimitive
+42 -1: (Ljava/io/File;)Ljava/lang/ProcessBuilder;
+36 -1: (Ljava/util/Date;)Ljava/lang/String;
+23 -1: getFormalTypeParameters
+13 -1: Resource.java
+7 -1: ibm-775
+6 -1: isEnum
+24 -1: setJavaUtilZipFileAccess
+21 -1: \t[CIRCULAR REFERENCE:
+51 -1: (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
+24 -1: (I)Ljava/nio/ByteBuffer;
+53 -1: sun/reflect/generics/repository/GenericDeclRepository
+3 -1: xor
+17 -1: invokeBasicMethod
+27 -1: java/lang/invoke/LambdaForm
+99 -1: (Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
+46 -1: Lsun/reflect/generics/factory/GenericsFactory;
+37 -1: sun/misc/Launcher$BootClassPathHolder
+10 -1: BindCaller
+24 -1: java/lang/reflect/Member
+32 -1: java/lang/management/ThreadState
+5 -1: (IB)V
+21 -1: RuntimeException.java
+5 -1: ended
+17 -1: java/util/TreeSet
+7 -1: : no !/
+16 -1: java/util/Vector
+9 -1: nextAfter
+22 -1: Ljava/lang/Deprecated;
+20 -1: requestedCharsetName
+37 -1: ([JIII)Ljava/util/Spliterator$OfLong;
+14 -1: internArgument
+11 -1: getTimeZone
+10 -1: isValidKey
+11 -1: LAST_RESULT
+43 -1: sun/reflect/annotation/TypeAnnotationParser
+13 -1: encodedInPath
+52 -1: (Ljava/security/PrivilegedAction;)Ljava/lang/Object;
+4 -1: LL_L
+34 -1: java/nio/charset/CodingErrorAction
+10 -1: copyFields
+11 -1: getConstant
+9 -1: threshold
+13 -1: aliases_UTF_8
+27 -1: (Ljava/util/ArrayDeque;II)V
+29 -1: Ljava/lang/ref/SoftReference;
+19 -1: indexedBinarySearch
+11 -1: containsKey
+81 -1: ([Ljava/lang/ClassValue$Entry;Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
+86 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<*>;II)Ljava/lang/invoke/MethodHandle;
+15 -1: cannot convert 
+25 -1: getSystemResourceAsStream
+46 -1: (Ljava/util/Properties;)Ljava/util/Properties;
+12 -1: reverseOrder
+16 -1: getSystemPackage
+8 -1: ([SII)[S
+19 -1: makeAccessException
+100 -1: <U:Ljava/lang/Object;>(JLjava/util/function/Function<-TK;+TU;>;Ljava/util/function/Consumer<-TU;>;)V
+39 -1: ([Ljava/lang/Class;I)[Ljava/lang/Class;
+19 -1: Ljava/lang/Boolean;
+6 -1: Hidden
+47 -1: java/lang/invoke/MethodHandleImpl$ArrayAccessor
+5 -1: APRIL
+8 -1: emptySet
+11 -1: getCombiner
+58 -1: (Ljava/lang/String;I[Ljava/lang/invoke/LambdaForm$Name;I)V
+24 -1: java.system.class.loader
+14 -1: Can't handle: 
+16 -1: isNullConversion
+38 -1: ()Ljava/util/HashMap$TreeNode<TK;TV;>;
+29 -1: referenceKindIsConsistentWith
+11 -1: flushBuffer
+8 -1: putField
+27 -1: ()Ljava/security/PublicKey;
+53 -1: ()Ljava/util/stream/Stream<Ljava/util/jar/JarEntry;>;
+10 -1: pathToURLs
+26 -1: throwIllegalStateException
+10 -1: markedChar
+14 -1: isNativeMethod
+36 -1: (I)Ljava/lang/AbstractStringBuilder;
+54 -1: java/util/concurrent/ConcurrentHashMap$ReservationNode
+45 -1: Lsun/misc/JavaSecurityProtectionDomainAccess;
+62 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;I)V
+7 -1: subList
+8 -1: UTF_32BE
+6 -1: U_None
+50 -1: sun/reflect/generics/repository/AbstractRepository
+62 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;I)Z
+43 -1: sun/net/www/protocol/file/FileURLConnection
+13 -1: setZoneOffset
+43 -1: Underlying input stream returned zero bytes
+54 -1: [a-zA-Z_$][a-zA-Z0-9_$]*([.][a-zA-Z_$][a-zA-Z0-9_$]*)*
+13 -1: containsValue
+44 -1: (Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
+25 -1: isNullReferenceConversion
+38 -1: Ljava/util/Vector<Ljava/lang/String;>;
+6 -1: toFile
+7 -1: getSlot
+17 -1: (Ljava/net/URI;)V
+32 -1: java.security.cert.Certificate: 
+24 -1: ()Lsun/misc/PerfCounter;
+11 -1: Asia/Hebron
+16 -1: createMemoryPool
+10 -1: addToCache
+29 -1: Ljava/lang/invoke/DontInline;
+39 -1: java/lang/ref/Finalizer$FinalizerThread
+58 -1: (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope;
+20 -1: getBooleanAttributes
+15 -1: parallelLockMap
+34 -1: java/util/Vector$VectorSpliterator
+21 -1: createMemoryPoolMBean
+15 -1: no content-type
+41 -1: Couldn't find 3-letter language code for 
+5 -1: slash
+34 -1: Ljava/lang/annotation/ElementType;
+8 -1: isSetter
+26 -1: (ZLjava/lang/String;JJJZ)V
+6 -1: GMT_ID
+73 -1: ()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Constructor<TT;>;>;
+56 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
+32 -1: (Ljava/util/Set;)Ljava/util/Set;
+4 -1: stop
+62 -1: (Ljava/lang/String;IILjava/lang/String;I)Ljava/nio/ByteBuffer;
+11 -1: genericInfo
+11 -1: listToArray
+26 -1: ()Ljava/util/jar/Manifest;
+13 -1: putOrderedInt
+5 -1: flush
+13 -1: ArrayAccessor
+4 -1: Name
+95 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+68 -1: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+23 -1: java/lang/ref/Reference
+37 -1: (Ljava/nio/file/attribute/FileTime;)J
+14 -1: MIN_CODE_POINT
+9 -1: ISO8859-1
+9 -1: ISO8859-2
+9 -1: ISO8859-5
+34 -1: ([CILjava/nio/charset/Charset;Z)[C
+9 -1: ISO8859-9
+9 -1: getUTF8At
+12 -1: java/net/URI
+67 -1: (Ljava/io/DataInput;Ljava/lang/String;)Lsun/util/calendar/ZoneInfo;
+22 -1: ListCompositionPattern
+67 -1: (Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;
+3 1: xxx
+12 -1: java/net/URL
+27 -1: Can't overwrite cause with 
+30 -1: sun/util/locale/BaseLocale$Key
+22 -1: forkSecondaryFinalizer
+23 -1: java/security/Principal
+8 -1: makeSite
+17 -1: NEGATIVE_INFINITY
+12 -1: addUnstarted
+12 -1: internalForm
+9 -1: cellsBusy
+23 -1: (Ljava/lang/Object;IJ)V
+13 -1: getParameters
+6 -1: H_PATH
+10 -1: L_REG_NAME
+139 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+6 -1: latin0
+10 -1: addSeconds
+6 -1: latin1
+6 -1: latin2
+6 -1: latin4
+6 -1: latin5
+17 -1: getWaitingThreads
+6 -1: latin9
+21 -1: java/util/Comparators
+10 -1: trimToSize
+96 -1: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;Ljava/lang/Object;)Ljava/util/Collection<TT;>;
+43 -1: ([JLjava/util/function/IntToLongFunction;)V
+23 -1: GET_COMBINER_PERMISSION
+20 -1: lambda$replaceAll$14
+5 -1: KOREA
+20 -1: getJvmSpecialVersion
+9 -1: dumpStack
+16 -1: CACHE_LOAD_LIMIT
+43 -1:               GSS LoginConfigImpl debugging
+26 -1: (DLjava/lang/Appendable;)V
+8 -1: forName0
+35 -1: java/lang/ClassLoader$NativeLibrary
+46 -1: java/util/concurrent/ConcurrentHashMap$Segment
+24 -1: getDeclaredAnnotationMap
+89 -1: java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+20 -1: java_runtime_version
+26 -1: java/util/stream/IntStream
+16 -1: Ljava/io/Writer;
+69 -1: ()Ljava/util/SortedMap<Ljava/lang/String;Ljava/nio/charset/Charset;>;
+15 -1: getClassLoader0
+6 -1: x86_64
+11 -1: isInterface
+15 -1: MODIFIER_SYMBOL
+44 -1: Note: Separate multiple options with a comma
+9 -1: recursive
+19 -1: java/nio/CharBuffer
+8 -1: capacity
+17 -1: validateMainClass
+50 -1: (Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
+22 -1: (Ljava/lang/Object;J)B
+22 -1: (Ljava/lang/Object;J)C
+22 -1: (Ljava/lang/Object;J)D
+17 -1: not a method type
+22 -1: (Ljava/lang/Object;J)F
+5 -1: count
+32 -1: AtomicReferenceFieldUpdater.java
+22 -1: (Ljava/lang/Object;J)I
+14 -1: methodAccessor
+22 -1: (Ljava/lang/Object;J)J
+7 -1: isError
+51 -1: (Ljava/nio/Buffer;II)Ljava/nio/charset/CoderResult;
+53 -1: (BZLjava/lang/Class<*>;)Ljava/lang/invoke/LambdaForm;
+25 -1:  <no signer certificates>
+5 -1: [pos=
+14 -1: lambda$chars$1
+9 -1: CELLVALUE
+16 -1: haveLeftoverChar
+22 -1: ([Ljava/lang/String;)V
+32 -1: java/lang/InstantiationException
+7 -1: SIG_IGN
+13 -1: ZipUtils.java
+50 -1: Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;
+22 -1: (Ljava/lang/Object;J)S
+69 -1: Ljava/util/HashMap<Ljava/lang/String;Lsun/misc/URLClassPath$Loader;>;
+16 -1: newInternalError
+22 -1: (Ljava/lang/Object;J)V
+9 -1: ABBR_MASK
+5 -1: array
+22 -1: (Ljava/lang/Object;J)Z
+13 -1: FilteringMode
+30 -1: java/util/stream/StreamSupport
+19 -1: retrieveDisplayName
+56 -1: (Ljava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
+10 -1: val$values
+9 -1: normalize
+28 -1: (II)Ljava/lang/CharSequence;
+16 -1: serialVersionUID
+7 -1: getPath
+25 -1: (ILjava/lang/Class<*>;Z)V
+13 -1: thenComparing
+51 -1: (Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
+36 -1: ()[Ljava/lang/annotation/Annotation;
+14 -1: MetaIndex.java
+8 -1: identity
+15 -1: findSystemClass
+24 -1: privateGetDeclaredFields
+27 -1: java/lang/ref/SoftReference
+19 -1: useCanonPrefixCache
+3 -1: dec
+3 -1: PLT
+8 -1: UTF_32LE
+17 -1: java/util/HashMap
+12 -1: toEpochMilli
+9 -1: intStream
+11 -1: Caused by: 
+31 -1: java/nio/charset/CharsetDecoder
+30 -1:               is being checked
+11 -1: parseHeader
+25 -1: ACCUMULATED_DAYS_IN_MONTH
+34 -1: newGetByteIllegalArgumentException
+21 -1: checkPropertiesAccess
+13 -1: StackMapTable
+8 -1: addCount
+51 -1: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
+9 -1: authority
+15 -1: iso-10646-ucs-2
+6 -1: SUNDAY
+22 -1: LocalGregorianCalendar
+9 -1: listRoots
+32 -1: Lsun/reflect/generics/tree/Tree;
+38 -1: [Ljava/util/WeakHashMap$Entry<TK;TV;>;
+11 -1: nativeOrder
+5 -1: long0
+5 -1: long1
+5 -1: long2
+5 -1: long3
+17 -1: capacityIncrement
+5 -1: long4
+97 -1: (Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
+31 -1: Ljava/lang/CharacterDataLatin1;
+5 -1: long5
+5 -1: long6
+5 -1: long7
+17 -1: reduceValuesToInt
+13 -1: package2certs
+13 -1: isTypeVisible
+30 -1: java/lang/ref/PhantomReference
+47 -1: ()Ljava/util/stream/Stream<Ljava/lang/String;>;
+9 -1: longValue
+3 -1: PNT
+10 -1: storeToXML
+10 -1: getMethod0
+12 -1: constantZero
+7 -1: promise
+116 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/MethodRepository;
+32 -1: DIRECTIONALITY_SEGMENT_SEPARATOR
+9 -1: byteOrder
+9 -1: isPromise
+4 -1: isOn
+6 -1: LOCCRC
+10 -1: setDefault
+9 -1: setHandle
+15 -1: java/nio/Buffer
+37 -1: (Ljava/lang/String;I)Ljava/lang/Long;
+10 -1: Float.java
+12 -1: showSettings
+27 -1: (Ljava/io/FileDescriptor;)I
+27 -1: (Ljava/io/FileDescriptor;)J
+21 -1: java/util/Spliterator
+22 -1: CodingErrorAction.java
+11 -1: isMalformed
+27 -1: java/util/PrimitiveIterator
+15 -1: THROW_EXCEPTION
+15 -1: copyToCharArray
+26 -1: ()Ljava/util/jar/JarEntry;
+27 -1: (Ljava/io/FileDescriptor;)V
+11 -1: getEncoding
+48 -1: (Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;I)V
+17 -1: java.runtime.name
+28 -1: (Lsun/invoke/util/Wrapper;)Z
+20 -1: annotationTypeOffset
+27 -1: (J)Ljava/lang/StringBuffer;
+15 -1: METHOD_RECEIVER
+10 -1: startEntry
+29 -1: (I)Ljava/lang/reflect/Member;
+7 -1: setOut0
+10 -1: getMethods
+26 -1: ()Lsun/misc/JavaNioAccess;
+18 -1: linkToTargetMethod
+8 -1: INSTANCE
+3 -1: dir
+41 -1: ([Ljava/net/URL;Ljava/lang/ClassLoader;)V
+9 -1: unboxCast
+58 -1: <T:Ljava/lang/Throwable;>(TT;)Lsun/invoke/empty/Empty;^TT;
+12 -1: java.version
+50 -1: (Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
+32 2: sun/net/www/protocol/jar/Handler
+20 -1: java/lang/Compiler$1
+9 -1: LongCache
+14 -1: FILL_THRESHOLD
+22 -1: getRawClassAnnotations
+9 -1: (JI[CII)I
+13 -1: hasMoreTokens
+13 -1: getSuperclass
+3 -1: PRC
+12 -1: MAX_PRIORITY
+14 -1: checkCacheLoad
+7 -1: lowMask
+8 -1: LM_CLASS
+7 -1: initIDs
+27 -1: Ljava/util/Collection<TV;>;
+3 -1: yes
+3 -1: PRT
+91 -1: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
+27 -1: ()Lsun/security/util/Debug;
+8 -1: VM start
+9 -1: setMemory
+7 -1: getName
+10 -1: findSignal
+19 -1: startsWithLocHeader
+37 -1: java/util/Collections$SynchronizedMap
+51 -1: (ICLjava/lang/Object;)Ljava/lang/invoke/LambdaForm;
+62 -1: (Ljava/util/Locale;)Lsun/util/locale/provider/LocaleResources;
+17 -1: lastParameterType
+9 -1: NO_PTYPES
+116 -1: <T:Ljava/lang/Object;>([Ljava/lang/ClassValue$Entry<*>;Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
+18 -1: DisplayNamePattern
+8 -1: getField
+5 -1: flags
+3 -1: PST
+17 -1: annotationDefault
+18 -1: java/nio/ByteOrder
+8 -1: highMask
+6 -1: ascii7
+29 -1: getGregorianYearFromFixedDate
+125 -1: (Ljava/lang/String;[Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;Ljava/lang/invoke/LambdaForm$Name;)V
+8 -1: =Lambda(
+29 -1: Ljava/util/WeakHashMap$Entry;
+18 -1: multiValueIterator
+74 -1: Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/io/ExpiringCache$Entry;>;
+13 -1: CONV_OP_LIMIT
+6 -1: sclSet
+81 -1: (Lsun/misc/URLClassPath$JarLoader;Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
+14 -1: appendFragment
+46 -1: java/util/Collections$SynchronizedNavigableMap
+36 -1: application/x-java-serialized-object
+13 -1: setNativeName
+53 -1: java/util/concurrent/ConcurrentHashMap$ForwardingNode
+16 -1: setJavaAWTAccess
+30 -1: methodHandleInvokeLinkerMethod
+15 -1: reduceKeysToInt
+20 -1: ensureCapacityHelper
+23 -1: createFileURLConnection
+12 -1: d3dAvailable
+69 -1: (Ljava/lang/Object;Ljava/lang/invoke/MethodHandle;)Ljava/lang/String;
+49 -1: java/util/ArraysParallelSortHelpers$FJLong$Sorter
+21 -1: explicitCastArguments
+24 -1: JAVAFX_LAUNCH_MODE_CLASS
+9 -1: invoke_MT
+18 -1: ensureMemberAccess
+74 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I
+36 -1: java/nio/charset/spi/CharsetProvider
+23 -1: (Ljava/lang/String;II)V
+14 -1: initProperties
+4 -1: (F)F
+35 -1: [[Ljava/lang/annotation/Annotation;
+4 -1: (F)I
+106 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/String;>;Ljava/lang/CharSequence;
+46 -1: java/lang/invoke/BoundMethodHandle$SpeciesData
+74 -1: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z
+24 -1: java.launcher.opt.header
+37 -1: ([Ljava/security/ProtectionDomain;Z)V
+10 -1: lineBuffer
+7 -1: ibm-813
+9 -1: isBuiltin
+4 -1: (F)V
+7 -1: ibm-819
+9 -1: H_ESCAPED
+4 -1: (F)Z
+20 -1: suppressedExceptions
+12 -1: UTF-32LE-BOM
+19 -1: CalendarSystem.java
+8 -1: readOnly
+81 -1: (JLjava/util/function/Function;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+32 -1: sun/misc/Launcher$AppClassLoader
+78 -1: Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/io/File;>;
+17 -1: [Ljava/lang/Enum;
+41 -1: java/util/Collections$CheckedNavigableSet
+8 -1: asSetter
+3 -1: dom
+41 -1: (I)[Ljava/util/WeakHashMap$Entry<TK;TV;>;
+16 -1: localeExtensions
+21 -1: sun/net/www/ParseUtil
+21 -1: Ljava/nio/ByteBuffer;
+29 -1: java/util/concurrent/TimeUnit
+25 -1: java/lang/CharacterData00
+15 -1: sun/misc/Unsafe
+28 -1: java/io/ByteArrayInputStream
+3 -1: dow
+25 -1: java/lang/CharacterData01
+25 -1: java/lang/CharacterData02
+6 -1: STORED
+11 -1: isTransient
+8 -1: function
+16 -1: getCanonicalFile
+13 -1: ,useDaylight=
+24 -1: domain (context is null)
+12 -1: Cleaner.java
+17 -1: CalendarDate.java
+49 -1: Lsun/reflect/generics/repository/FieldRepository;
+14 -1: forInputString
+25 -1: java/lang/CharacterData0E
+67 -1: (Ljava/lang/Object;Ljava/util/function/Supplier;)Ljava/lang/Object;
+19 -1: codePointBeforeImpl
+6 -1: script
+21 -1: systemNativeLibraries
+38 -1: ([Ljava/lang/Class;)Ljava/lang/String;
+14 -1: CONTENT_LENGTH
+19 -1: HeapCharBuffer.java
+22 -1: ExtendedProviderHolder
+41 -1: java/lang/invoke/InvokerBytecodeGenerator
+12 -1: basicInvoker
+26 -1: ([Ljava/lang/Comparable;)V
+10 -1: val$tclass
+47 -1: (Ljava/lang/Throwable;)Lsun/invoke/empty/Empty;
+18 -1: isLegalReplacement
+22 -1: spliteratorUnknownSize
+15 -1: SynchronizedSet
+16 -1: MethodParameters
+22 -1: desiredAssertionStatus
+29 -1: ()Ljava/util/ArrayDeque<TE;>;
+36 -1: ()Ljava/lang/reflect/Constructor<*>;
+66 -1: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/invoke/LambdaForm;>;
+58 -1: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+50 -1: (Ljava/util/concurrent/CountedCompleter;[J[JIIII)V
+14 -1: requireNonNull
+21 -1: java/lang/ThreadGroup
+95 -1: ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
+76 -1: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)V
+14 -1: reflectionData
+33 -1: Ljava/lang/invoke/MethodTypeForm;
+7 -1: tuesday
+31 -1: ()Lsun/misc/JavaSecurityAccess;
+14 -1: fieldFilterMap
+28 -1: ([Ljava/lang/ThreadGroup;Z)I
+7 -1: ibm-850
+83 -1: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;
+7 -1: ibm-852
+5 -1: cesu8
+14 -1: ForwardingNode
+29 -1: (Ljava/nio/ByteBuffer;IIIII)V
+7 -1: ibm-855
+12 -1: SingletonSet
+16 -1: isOtherUppercase
+15 -1: FIELD_UNDEFINED
+9 -1: makeEntry
+7 -1: ibm-857
+10 -1: extensions
+10 -1: longStream
+19 -1: getGenericSignature
+7 -1: newNode
+8 -1: jarNames
+25 -1: java/util/jar/JarVerifier
+49 -1: ()[Lsun/reflect/generics/tree/ClassTypeSignature;
+4 -1: wait
+115 -1: (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository;
+56 -1: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
+65 -1: (Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
+7 -1: ibm-862
+9 -1: ISO646-US
+7 -1: ibm-866
+16 -1: extendedProvider
+7 -1: ([C[C)Z
+93 -1: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
+8 -1: getHours
+21 -1: ()[Ljava/lang/String;
+187 -1: (Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V
+106 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/locks/ReentrantLock;Ljava/io/Serializable;
+24 -1: java/nio/file/FileSystem
+14 -1: ForEachKeyTask
+13 -1: defaultLocale
+20 -1: constructorModifiers
+13 -1: asWrapperType
+42 -1: (Ljava/lang/String;ZI)Ljava/lang/Class<*>;
+17 -1: BaseCalendar.java
+76 -1: (Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/CodeSigner;
+14 -1: isSynchronized
+27 -1: java/nio/DirectByteBuffer$1
+3 -1: ()B
+7 -1: ibm-874
+12 -1: exactInvoker
+3 -1: ()C
+39 -1: (Ljava/lang/Thread;Ljava/lang/Object;)V
+3 -1: ()D
+3 -1: ()F
+27 -1: [Ljava/lang/reflect/Method;
+10 -1: floatValue
+3 -1: ()I
+3 -1: ()J
+18 -1: getLocaleResources
+59 -1: java/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask
+67 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$Entry;)V
+11 -1: maxPriority
+11 -1: getStringAt
+60 -1: (Ljava/lang/ClassValue$Version;)Ljava/lang/ClassValue$Entry;
+3 -1: ()S
+49 -1: (Ljava/lang/String;)Ljava/io/ExpiringCache$Entry;
+42 -1: (III)Lsun/util/calendar/BaseCalendar$Date;
+82 -1: <T:Ljava/lang/Object;>(Ljava/util/Set<TT;>;Ljava/lang/Object;)Ljava/util/Set<TT;>;
+62 -1: ([BLsun/reflect/ConstantPool;Ljava/lang/Class;)Ljava/util/Map;
+3 -1: ()V
+24 -1: ()Ljava/nio/ShortBuffer;
+29 -1: file descriptor can't be null
+3 -1: ()Z
+7 -1: matcher
+66 -1: (Ljava/lang/reflect/Constructor;)Lsun/reflect/ConstructorAccessor;
+7 -1: matches
+12 -1: getAuthority
+16 -1: java/lang/Object
+5 -1: (IC)V
+17 -1: EmptyListIterator
+8 -1: charsets
+8 -1: sameFile
+47 -1: (TT;Ljava/util/function/UnaryOperator<TV;>;)TV;
+16 -1: overwrittenEntry
+15 -1: reinvokerTarget
+11 -1: isUpperCase
+5 -1: toUri
+9 -1: GMT+00:00
+33 -1: java/util/concurrent/ForkJoinPool
+10 -1: parseFloat
+53 -1: java/util/concurrent/ConcurrentHashMap$SearchKeysTask
+48 -1: (Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
+82 -1: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;ILjava/lang/Class<*>;)V
+15 -1: reduceCacheLoad
+76 -1: (Ljava/lang/Class<*>;[Ljava/lang/reflect/Method;)[Ljava/lang/reflect/Method;
+20 -1: singletonSpliterator
+24 -1: getTransitionEpochSecond
+24 -1: MapReduceValuesToIntTask
+13 -1: ALLOWED_FLAGS
+55 -1: (Ljava/lang/reflect/Field;Z)Lsun/reflect/FieldAccessor;
+34 -1: [Ljava/lang/annotation/Annotation;
+10 -1: readBuffer
+21 -1: Illegal month value: 
+31 -1: java/security/SecureClassLoader
+12 -1: reinitialize
+5 -1: limit
+4 -1: grow
+15 -1: getCreationTime
+7 -1: , from 
+25 -1: (Ljava/lang/ClassValue;)V
+13 -1: java.compiler
+37 -1: ()Ljava/util/Set<Ljava/lang/String;>;
+6 -1: FJChar
+16 -1: getFieldAccessor
+4 -1: eras
+11 -1: isSupported
+24 -1: ()Ljava/text/DateFormat;
+32 -1: java/util/Collections$CopiesList
+32 -1: java/io/NotSerializableException
+15 -1: typeAnnotations
+27 -1: defaultAllowUserInteraction
+57 -1: (Ljava/lang/String;I[Ljava/lang/invoke/LambdaForm$Name;)V
+18 -1: checkArgumentTypes
+71 -1: (Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar;
+10 -1: isMirrored
+27 -1: (I)Ljava/lang/Thread$State;
+26 -1: (Ljava/util/Collection;Z)Z
+6 -1: ibm367
+16 -1: isAssignableFrom
+7 -1: readUTF
+35 -1: Ljava/lang/ref/ReferenceQueue<TV;>;
+56 -1: ([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
+8 -1: MANDATED
+18 -1: canonicalizeRegion
+11 -1: checkAccept
+44 -1: (Ljava/net/Proxy;)Lsun/net/ApplicationProxy;
+8 -1: ECMA-118
+22 -1: ReflectPermission.java
+4 -1: _put
+41 -1: java.lang.invoke.MethodHandle.DEBUG_NAMES
+47 -1: java/util/concurrent/ConcurrentHashMap$TreeNode
+44 -1: (Ljava/net/URL;[Ljava/security/CodeSigner;)V
+5 -1: april
+44 -1: ([Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
+150 -1: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/ConcurrentHashMap$CollectionView<TK;TV;TK;>;Ljava/util/Set<TK;>;Ljava/io/Serializable;
+91 -1: (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
+26 -1: sun/net/util/IPAddressUtil
+8 -1: Modifier
+9 -1: isVarargs
+24 -1: -- listing properties --
+16 -1: hasAllPermission
+27 -1: MapReduceMappingsToLongTask
+29 -1: sharedGetParameterAnnotations
+9 -1: argCounts
+11 -1: toLocalTime
+89 -1: (Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MemberName;
+4 -1: ROOT
+20 -1: sun.reflect.noCaches
+18 -1: UnicodeBigUnmarked
+4 -1: Lazy
+35 -1: java/lang/invoke/SimpleMethodHandle
+20 -1: (I)Ljava/nio/Buffer;
+48 -1: ()Lsun/reflect/generics/tree/ClassTypeSignature;
+31 -1: (I[CII)Ljava/lang/StringBuffer;
+17 -1: America/Anchorage
+7 -1: markpos
+9 -1: enumerate
+11 -1: parseLocale
+24 -1: java.launcher.cls.error1
+46 -1: (ILjava/lang/Object;)Ljava/lang/StringBuilder;
+24 -1: java.launcher.cls.error2
+24 -1: java.launcher.cls.error3
+24 -1: java.launcher.cls.error4
+21 -1: java/util/ArrayList$1
+17 -1: getExceptionTypes
+24 -1: java.launcher.cls.error5
+30 -1: java/util/Spliterator$OfDouble
+10 -1: forDecoder
+8 -1: getEntry
+10 -1: checkGuard
+12 -1: checkInitted
+34 -1: Lsun/util/locale/LocaleExtensions;
+41 -1: java/util/ArraysParallelSortHelpers$FJInt
+10 -1: findStatic
+22 -1: setConstructorAccessor
+34 -1: Lsun/misc/URLClassPath$FileLoader;
+20 -1: not a reinvoker MH: 
+16 -1: LongCumulateTask
+11 -1: checkAccess
+14 -1: SearchKeysTask
+36 -1: ()[Ljava/lang/reflect/AnnotatedType;
+11 -1: initDefault
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/FieldAnnotationsTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test for field annotations.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/FieldAnnotationsApp.java test-classes/MyAnnotation.java
+ * @run driver FieldAnnotationsTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+// This is a test for the handling of multi-dimensional Arrays in MetaspaceClosure.
+//
+// We choose FieldAnnotations because they happen to be implemented as a multi-dimension
+// Array (Annotations::_fields_annotations, which is of type Array<Array<unsigned char>*>*,
+// and is handled by the template class PointerArrayRef<T> in metaspaceClosure.hpp).
+//
+// Specifically, we are testing the following C code, where _fields_annotations is non-NULL:
+//
+// void Annotations::metaspace_pointers_do(MetaspaceClosure* it) {
+//   ...
+//   it->push(&_fields_annotations);
+//
+// which will be matched with the function
+//
+// template <typename T> void MetaspaceClosure::push(Array<T*>** mpp, Writability w = _default)
+//
+public class FieldAnnotationsTest {
+    public static void main(String[] args) throws Exception {
+        String[] ARCHIVE_CLASSES = {"FieldAnnotationsApp", "MyAnnotation"};
+        String appJar = JarBuilder.build("FieldAnnotationsTest", ARCHIVE_CLASSES);
+
+        OutputAnalyzer dumpOutput = TestCommon.dump(
+                appJar, ARCHIVE_CLASSES);
+        TestCommon.checkDump(dumpOutput);
+
+        OutputAnalyzer execOutput = TestCommon.exec(appJar, "FieldAnnotationsApp");
+        TestCommon.checkExec(execOutput, "Field annotations are OK.");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/FreeUnusedMetadata.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unused metadata created during dump time should be freed from the CDS archive.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile test-classes/MethodNoReturn.jasm test-classes/Hello.java
+ * @run driver FreeUnusedMetadata
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class FreeUnusedMetadata {
+    static byte iconst_1 =  4;
+    static byte pop      = 87;
+    static byte[] pattern = { // This has the same sequence as in test-classes/MethodNoReturn.jasm
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        pop,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        iconst_1,
+        pop,
+        pop,
+        pop,
+        pop,
+        pop,
+        pop,
+        pop,
+        pop
+    };
+
+    public static void main(String[] args) throws Exception {
+        String[] ARCHIVE_CLASSES = {"Hello", "MethodNoReturn"};
+        String appJar = JarBuilder.build("FreeUnusedMetadata", ARCHIVE_CLASSES);
+
+        OutputAnalyzer dumpOutput = TestCommon.dump(
+                appJar, ARCHIVE_CLASSES);
+        TestCommon.checkDump(dumpOutput, "Loading classes to share");
+
+        OutputAnalyzer execOutput = TestCommon.exec(appJar, "Hello");
+        TestCommon.checkExec(execOutput, "Hello World");
+
+
+        String archive = TestCommon.getCurrentArchiveName();
+        System.out.println("Checking for pattern inside " + archive + "...");
+
+        byte[] data = Files.readAllBytes(Paths.get(archive));
+        int max = data.length - pattern.length;
+        for (int i=0; i<max; i++) {
+            if (data[i+0] == iconst_1 && data[i+1] == pop &&
+                data[i+2] == iconst_1 && data[i+3] == pop) {
+                boolean match = true;
+                for (int x=4; x<pattern.length; x++) {
+                    if (data[i+x] != pattern[x]) {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match) {
+                    throw new RuntimeException("method of unverifiable class should have been " +
+                        "removed from the archive " + archive +
+                        " , but was found at offset " + i);
+                }
+            }
+        }
+        System.out.println("Not found: method from unverifiable class has been removed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/GraalWithLimitedMetaspace.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test dumping with limited metaspace with loading of JVMCI related classes.
+ *          VM should not crash but CDS dump will abort upon failure in allocating metaspace.
+ * @requires vm.cds & vm.graal.enabled & vm.compMode == "Xmixed"
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build UseAppCDS_Test
+ * @run driver ClassFileInstaller -jar test.jar UseAppCDS_Test
+ * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
+ *      -XX:+TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
+ *      GraalWithLimitedMetaspace
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.io.*;
+
+public class GraalWithLimitedMetaspace {
+
+    // Class UseAppCDS_Test is loaded by the App loader
+
+    static final String TEST_OUT = "UseAppCDS_Test.main--executed";
+
+    private static final String TESTJAR = "./test.jar";
+    private static final String TESTNAME = "UseAppCDS_Test";
+    private static final String TESTCLASS = TESTNAME + ".class";
+
+    private static final String CLASSLIST_FILE = "./GraalWithLimitedMetaspace.classlist";
+    private static final String ARCHIVE_FILE = "./GraalWithLimitedMetaspace.jsa";
+    private static final String BOOTCLASS = "java.lang.Class";
+
+    public static void main(String[] args) throws Exception {
+
+        // dump loaded classes into a classlist file
+        dumpLoadedClasses(new String[] { BOOTCLASS, TESTNAME });
+
+
+        // create an archive using the classlist
+        dumpArchive();
+
+    }
+
+    public static List<String> toClassNames(String filename) throws IOException {
+        ArrayList<String> classes = new ArrayList<>();
+        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)))) {
+            for (; ; ) {
+                String line = br.readLine();
+                if (line == null) {
+                    break;
+                }
+                classes.add(line.replaceAll("/", "."));
+            }
+        }
+        return classes;
+    }
+
+    static void dumpLoadedClasses(String[] expectedClasses) throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+            "-XX:DumpLoadedClassList=" + CLASSLIST_FILE,
+            // trigger JVMCI runtime init so that JVMCI classes will be
+            // included in the classlist
+            "-XX:+UnlockExperimentalVMOptions",
+            "-XX:+EnableJVMCI",
+            "-XX:+EagerJVMCI",
+            "-cp",
+            TESTJAR,
+            TESTNAME,
+            TEST_OUT);
+
+        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-loaded-classes")
+            .shouldHaveExitValue(0)
+            .shouldContain(TEST_OUT);
+
+        List<String> dumpedClasses = toClassNames(CLASSLIST_FILE);
+
+        for (String clazz : expectedClasses) {
+            if (!dumpedClasses.contains(clazz)) {
+                throw new RuntimeException(clazz + " missing in " +
+                                           CLASSLIST_FILE);
+            }
+        }
+    }
+
+    static void dumpArchive() throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+            "-cp",
+            TESTJAR,
+            "-XX:SharedClassListFile=" + CLASSLIST_FILE,
+            "-XX:SharedArchiveFile=" + ARCHIVE_FILE,
+            "-Xlog:cds",
+            "-Xshare:dump",
+            "-XX:MetaspaceSize=12M",
+            "-XX:MaxMetaspaceSize=12M");
+
+        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-archive");
+        int exitValue = output.getExitValue();
+        if (exitValue == 1) {
+            output.shouldContain("Failed allocating metaspace object type");
+        } else if (exitValue == 0) {
+            output.shouldContain("Loading classes to share");
+        } else {
+            throw new RuntimeException("Unexpected exit value " + exitValue);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/HelloExtTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary a simple test for loading a class using the platform class loader
+ *          (which used to be called the "extension loader) in AppCDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile test-classes/HelloExt.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver HelloExtTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class HelloExtTest {
+
+  public static void main(String[] args) throws Exception {
+    JarBuilder.build("helloExt", "HelloExt");
+
+    String appJar = TestCommon.getTestJar("helloExt.jar");
+    JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+    String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
+    String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
+
+    TestCommon.dump(appJar,
+        TestCommon.list("javax/annotation/processing/FilerException", "[Ljava/lang/Comparable;"),
+        bootClassPath);
+
+    String prefix = ".class.load. ";
+    String class_pattern = ".*LambdaForm[$]MH[/][0123456789].*";
+    String suffix = ".*source: shared objects file.*";
+    String pattern = prefix + class_pattern + suffix;
+
+    TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, bootClassPath, "-Xlog:class+load", "HelloExt")
+        .assertNormalExit(output -> output.shouldNotMatch(pattern));
+
+
+    TestCommon.run("-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, bootClassPath, "-Xlog:class+load",
+            "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary",
+            "HelloExt")
+        .assertNormalExit(output ->  output.shouldNotMatch(class_pattern));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/HelloTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Hello World test for AppCDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver HelloTest
+ */
+
+public class HelloTest {
+  public static void main(String[] args) throws Exception {
+      TestCommon.test(JarBuilder.getOrCreateHelloJar(),
+          TestCommon.list("Hello"), "Hello");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/IgnoreEmptyClassPaths.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test the -XX:+IgnoreEmptyClassPaths flag
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/HelloMore.java
+ * @run driver IgnoreEmptyClassPaths
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class IgnoreEmptyClassPaths {
+
+  public static void main(String[] args) throws Exception {
+    String jar1 = JarBuilder.getOrCreateHelloJar();
+    String jar2 = JarBuilder.build("IgnoreEmptyClassPaths_more", "HelloMore");
+
+    String sep = File.pathSeparator;
+    String cp_dump = jar1 + sep + jar2 + sep;
+    String cp_exec = sep + jar1 + sep + sep + jar2 + sep;
+
+    TestCommon.testDump(cp_dump, TestCommon.list("Hello", "HelloMore"),
+                        "-XX:+TraceClassPaths", "-XX:+IgnoreEmptyClassPaths");
+
+    TestCommon.run(
+        "-verbose:class",
+        "-cp", cp_exec,
+        "-XX:+IgnoreEmptyClassPaths", // should affect classpath even if placed after the "-cp" argument
+        "-XX:+TraceClassPaths",
+        "HelloMore")
+      .assertNormalExit();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,269 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @summary Simple jar builder
+ *   Input: jarName className1 className2 ...
+ *     do not specify extensions, just the names
+ *     E.g. prot_domain ProtDomainA ProtDomainB
+ *   Output: A jar containing compiled classes, placed in a test classes folder
+ * @library /open/test/lib
+ */
+
+import jdk.test.lib.JDKToolFinder;
+import jdk.test.lib.compiler.CompilerUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import java.io.File;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import sun.tools.jar.Main;
+
+public class JarBuilder {
+    // to turn DEBUG on via command line: -DJarBuilder.DEBUG=[true, TRUE]
+    private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("JarBuilder.DEBUG", "false"));
+    private static final String classDir = System.getProperty("test.classes");
+
+    public static String getJarFilePath(String jarName) {
+        return classDir + File.separator + jarName + ".jar";
+    }
+
+    // jar all files under dir, with manifest file man, with an optional versionArgs
+    // for generating a multi-release jar.
+    // The jar command is as follows:
+    // jar cmf \
+    //  <path to output jar> <path to the manifest file>\
+    //   -C <path to the base classes> .\
+    //    --release 9 -C <path to the versioned classes> .
+    // the last line begins with "--release" corresponds to the optional versionArgs.
+    public static void build(String jarName, File dir, String man, String ...versionArgs)
+        throws Exception {
+        ArrayList<String> args = new ArrayList<String>();
+        if (man != null) {
+            args.add("cfm");
+        } else {
+            args.add("cf");
+        }
+        args.add(classDir + File.separator + jarName + ".jar");
+        if (man != null) {
+            args.add(man);
+        }
+        args.add("-C");
+        args.add(dir.getAbsolutePath());
+        args.add(".");
+        for (String verArg : versionArgs) {
+            args.add(verArg);
+        }
+        createJar(args);
+    }
+
+    public static String build(String jarName, String ...classNames)
+        throws Exception {
+
+        return createSimpleJar(classDir, getJarFilePath(jarName), classNames);
+    }
+
+    public static String build(boolean classesInWorkDir, String jarName, String ...classNames)
+        throws Exception {
+        if (classesInWorkDir) {
+            return createSimpleJar(".", getJarFilePath(jarName), classNames);
+        } else {
+            return build(jarName, classNames);
+        }
+    }
+
+
+    public static String buildWithManifest(String jarName, String manifest,
+        String jarClassesDir, String ...classNames) throws Exception {
+        String jarPath = getJarFilePath(jarName);
+        ArrayList<String> args = new ArrayList<String>();
+        args.add("cvfm");
+        args.add(jarPath);
+        args.add(System.getProperty("test.src") + File.separator + "test-classes"
+            + File.separator + manifest);
+        addClassArgs(args, jarClassesDir, classNames);
+        createJar(args);
+
+        return jarPath;
+    }
+
+
+    // Execute: jar uvf $jarFile -C $dir .
+    static void update(String jarFile, String dir) throws Exception {
+        String jarExe = JDKToolFinder.getJDKTool("jar");
+
+        ArrayList<String> args = new ArrayList<>();
+        args.add(jarExe);
+        args.add("uvf");
+        args.add(jarFile);
+        args.add("-C");
+        args.add(dir);
+        args.add(".");
+
+        executeProcess(args.toArray(new String[1]));
+    }
+
+
+    private static String createSimpleJar(String jarclassDir, String jarName,
+        String[] classNames) throws Exception {
+
+        ArrayList<String> args = new ArrayList<String>();
+        args.add("cf");
+        args.add(jarName);
+        addClassArgs(args, jarclassDir, classNames);
+        createJar(args);
+
+        return jarName;
+    }
+
+    private static void addClassArgs(ArrayList<String> args, String jarclassDir,
+        String[] classNames) {
+
+        for (String name : classNames) {
+            args.add("-C");
+            args.add(jarclassDir);
+            args.add(name + ".class");
+        }
+    }
+
+    public static void createModularJar(String jarPath,
+                                      String classesDir,
+                                      String mainClass) throws Exception {
+        ArrayList<String> argList = new ArrayList<String>();
+        argList.add("--create");
+        argList.add("--file=" + jarPath);
+        if (mainClass != null) {
+            argList.add("--main-class=" + mainClass);
+        }
+        argList.add("-C");
+        argList.add(classesDir);
+        argList.add(".");
+        createJar(argList);
+    }
+
+    private static void createJar(ArrayList<String> args) {
+        if (DEBUG) printIterable("createJar args: ", args);
+
+        Main jarTool = new Main(System.out, System.err, "jar");
+        if (!jarTool.run(args.toArray(new String[1]))) {
+            throw new RuntimeException("jar operation failed");
+        }
+    }
+
+    // Many AppCDS tests use the same simple "Hello.jar" which contains
+    // simple Hello.class and does not specify additional attributes.
+    // For this common use case, use this method to get the jar path.
+    // The method will check if the jar already exists
+    // (created by another test or test run), and will create the jar
+    // if it does not exist
+    public static String getOrCreateHelloJar() throws Exception {
+        String jarPath = getJarFilePath("hello");
+
+        File jarFile = new File(jarPath);
+        if (jarFile.exists()) {
+            return jarPath;
+        } else {
+            return build("hello", "Hello");
+        }
+    }
+
+    public static void compile(String dstPath, String source, String... extraArgs) throws Exception {
+        ArrayList<String> args = new ArrayList<String>();
+        args.add(JDKToolFinder.getCompileJDKTool("javac"));
+        args.add("-d");
+        args.add(dstPath);
+        if (extraArgs != null) {
+            for (String s : extraArgs) {
+                args.add(s);
+            }
+        }
+        args.add(source);
+
+        if (DEBUG) printIterable("compile args: ", args);
+
+        ProcessBuilder pb = new ProcessBuilder(args);
+        OutputAnalyzer output = new OutputAnalyzer(pb.start());
+        output.shouldHaveExitValue(0);
+    }
+
+    public static void compileModule(Path src,
+                                     Path dest,
+                                     String modulePathArg // arg to --module-path
+                                     ) throws Exception {
+        boolean compiled = false;
+        if (modulePathArg == null) {
+            compiled = CompilerUtils.compile(src, dest);
+        } else {
+            compiled = CompilerUtils.compile(src, dest,
+                                           "--module-path", modulePathArg);
+        }
+        if (!compiled) {
+            throw new RuntimeException("module did not compile");
+        }
+    }
+
+
+    public static void signJar() throws Exception {
+        String keyTool = JDKToolFinder.getJDKTool("keytool");
+        String jarSigner = JDKToolFinder.getJDKTool("jarsigner");
+        String classDir = System.getProperty("test.classes");
+        String FS = File.separator;
+
+        executeProcess(keyTool,
+            "-genkey", "-keystore", "./keystore", "-alias", "mykey",
+            "-storepass", "abc123", "-keypass", "abc123",
+            "-dname", "CN=jvmtest")
+            .shouldHaveExitValue(0);
+
+        executeProcess(jarSigner,
+           "-keystore", "./keystore", "-storepass", "abc123", "-keypass",
+           "abc123", "-signedjar", classDir + FS + "signed_hello.jar",
+           classDir + FS + "hello.jar", "mykey")
+           .shouldHaveExitValue(0);
+    }
+
+    private static OutputAnalyzer executeProcess(String... cmds)
+        throws Exception {
+
+        JarBuilder.printArray("executeProcess: ", cmds);
+        return ProcessTools.executeProcess(new ProcessBuilder(cmds));
+    }
+
+    // diagnostic
+    public static void printIterable(String msg, Iterable<String> l) {
+        StringBuilder sum = new StringBuilder();
+        for (String s : l) {
+            sum.append(s).append(' ');
+        }
+        System.out.println(msg + sum.toString());
+    }
+
+    public static void printArray(String msg, String[] l) {
+        StringBuilder sum = new StringBuilder();
+        for (String s : l) {
+            sum.append(s).append(' ');
+        }
+        System.out.println(msg + sum.toString());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/JvmtiAddPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary JvmtiEnv::AddToBootstrapClassLoaderSearch and JvmtiEnv::AddToSystemClassLoaderSearch should disable AppCDS
+ * @requires vm.cds
+ * @bug 8060592
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @compile test-classes/Hello.java
+ * @compile test-classes/JvmtiApp.java
+ * @run driver JvmtiAddPath
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class JvmtiAddPath {
+    static String use_whitebox_jar;
+    static String[] no_extra_matches = {};
+    static String[] check_appcds_enabled = {
+        "[class,load] ExtraClass source: shared object"
+    };
+    static String[] check_appcds_disabled = {
+        "[class,load] ExtraClass source: file:"
+    };
+
+    static void run(String cp, String... args) throws Exception {
+        run(no_extra_matches, cp, args);
+    }
+
+    static void run(String[] extra_matches, String cp, String... args) throws Exception {
+        String[] opts = {"-cp", cp, "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", use_whitebox_jar};
+        opts = TestCommon.concat(opts, args);
+        TestCommon.run(opts).assertNormalExit(extra_matches);
+    }
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("jvmti_addboot", "Hello");
+        JarBuilder.build("jvmti_addapp", "Hello");
+        JarBuilder.build("jvmti_app", "JvmtiApp", "ExtraClass");
+        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+
+        // In all the test cases below, appJar does not contain Hello.class. Instead, we
+        // append JAR file(s) that contain Hello.class to the boot classpath, the app
+        // classpath, or both, and verify that Hello.class is loaded by the expected ClassLoader.
+        String appJar = TestCommon.getTestJar("jvmti_app.jar");         // contains JvmtiApp.class
+        String addappJar = TestCommon.getTestJar("jvmti_addapp.jar");   // contains Hello.class
+        String addbootJar = TestCommon.getTestJar("jvmti_addboot.jar"); // contains Hello.class
+        String twoAppJars = appJar + File.pathSeparator + addappJar;
+        String wbJar = TestCommon.getTestJar("WhiteBox.jar");
+        use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        TestCommon.testDump(appJar, TestCommon.list("JvmtiApp", "ExtraClass"), use_whitebox_jar);
+
+        System.out.println("Test case 1: not adding any paths - Hello.class should not be found");
+        run(check_appcds_enabled, appJar, "-Xlog:class+load", "JvmtiApp", "noadd"); // appcds should be enabled
+
+        System.out.println("Test case 2: add to boot classpath only - should find Hello.class in boot loader");
+        String[] toCheck = (TestCommon.isDynamicArchive()) ? check_appcds_enabled
+                                                           : check_appcds_disabled;
+        run(toCheck, appJar, "-Xlog:class+load", "JvmtiApp", "bootonly", addbootJar); // appcds should be disabled
+
+        System.out.println("Test case 3: add to app classpath only - should find Hello.class in app loader");
+        run(appJar, "JvmtiApp", "apponly", addappJar);
+
+        System.out.println("Test case 4: add to boot and app paths - should find Hello.class in boot loader");
+        run(appJar, "JvmtiApp", "appandboot", addbootJar, addappJar);
+
+        System.out.println("Test case 5: add to app using -cp, but add to boot using JVMTI - should find Hello.class in boot loader");
+        run(twoAppJars, "JvmtiApp", "bootonly", addappJar);
+
+        System.out.println("Test case 6: add to app using AppCDS, but add to boot using JVMTI - should find Hello.class in boot loader");
+        TestCommon.testDump(twoAppJars, TestCommon.list("JvmtiApp", "ExtraClass", "Hello"), use_whitebox_jar);
+        if (!TestCommon.isDynamicArchive()) {
+            // skip for dynamic archive, the Hello class will be loaded from
+            // the dynamic archive
+            run(twoAppJars, "JvmtiApp", "bootonly", addappJar);
+        }
+
+        System.out.println("Test case 7: add to app using AppCDS, no JVMTI calls - should find Hello.class in app loader");
+        run(twoAppJars, "JvmtiApp", "noadd-appcds");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/LongClassListPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test the handling of long path to the classlist file.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver LongClassListPath
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.Arrays;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class LongClassListPath {
+    private static final int MAX_PATH = 260;
+    public static void main(String[] args) throws Exception {
+        String[] classes = {"hello"};
+        String classList =
+            CDSTestUtils.makeClassList(classes).getPath();
+        String archiveName = "LongClassListPath.jsa";
+
+        // Create a directory with long path and copy the classlist file to
+        // the directory.
+        Path classDir = Paths.get(System.getProperty("test.classes"));
+        Path destDir = classDir;
+        int subDirLen = MAX_PATH - classDir.toString().length() - 2;
+        if (subDirLen > 0) {
+            char[] chars = new char[subDirLen];
+            Arrays.fill(chars, 'x');
+            String subPath = new String(chars);
+            destDir = Paths.get(System.getProperty("test.classes"), subPath);
+        }
+        File longDir = destDir.toFile();
+        longDir.mkdir();
+        String destClassList = longDir.getPath() + File.separator + "LongClassListPath.classlist";
+        Files.copy(Paths.get(classList), Paths.get(destClassList), StandardCopyOption.REPLACE_EXISTING);
+
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-XX:ExtraSharedClassListFile=" + destClassList, "-cp", JarBuilder.getOrCreateHelloJar())
+            .setArchiveName(archiveName);
+        CDSTestUtils.createArchiveAndCheck(opts);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/LotsOfClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.util.ArrayList;
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+
+/*
+ * @test
+ * @summary Try to archive lots of classes by searching for classes from the jrt:/ file system. With JDK 12
+ *          this will produce an archive with over 30,000 classes.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @run driver/timeout=500 LotsOfClasses
+ */
+
+public class LotsOfClasses {
+
+    public static void main(String[] args) throws Throwable {
+        ArrayList<String> list = new ArrayList<>();
+        TestCommon.findAllClasses(list);
+
+        CDSOptions opts = new CDSOptions();
+        opts.setClassList(list);
+        opts.addSuffix("--add-modules");
+        opts.addSuffix("ALL-SYSTEM");
+        opts.addSuffix("-Xlog:hashtables");
+        opts.addSuffix("-Xmx500m");
+        opts.addSuffix("-Xlog:gc+region+cds");
+        opts.addSuffix("-Xlog:gc+region=trace");
+
+        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
+        CDSTestUtils.checkDump(out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/MissingSuperTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary When super class is missing during dumping, no crash should happen.
+ *
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/MissingSuper.java
+ * @run driver MissingSuperTest
+ */
+
+public class MissingSuperTest {
+
+  public static void main(String[] args) throws Exception {
+    // The classes "MissingSuperSup" and "MissingSuperIntf" are intentionally not
+    // included into the jar to provoke the test condition
+    JarBuilder.build("missing_super", "MissingSuper",
+        "MissingSuperSub", "MissingSuperImpl");
+
+    String appJar = TestCommon.getTestJar("missing_super.jar");
+    TestCommon.test(appJar, TestCommon.list("MissingSuper",
+        "MissingSuperSub",
+        "MissingSuperImpl"),
+        "MissingSuper");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,194 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test that CDS still works when the JDK is moved to a new directory
+ * @requires vm.cds
+ * @requires os.family == "linux"
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver MoveJDKTest
+ */
+
+// This test works only on Linux because it depends on symlinks and the name of the hotspot DLL (libjvm.so).
+// It probably doesn't work on Windows.
+// TODO: change libjvm.so to libjvm.dylib on MacOS, before adding "@requires os.family == mac"
+// TODO: test on solaris, before adding "@requires os.family == solaris"
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class MoveJDKTest {
+    public static void main(String[] args) throws Exception {
+        String java_home_src = System.getProperty("java.home");
+        String java_home_dst = System.getProperty("user.dir") + File.separator + "moved_jdk";
+
+        TestCommon.startNewArchiveName();
+        String jsaFile = TestCommon.getCurrentArchiveName();
+        String jsaOpt = "-XX:SharedArchiveFile=" + jsaFile;
+        {
+            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java", "-Xshare:dump", jsaOpt);
+            TestCommon.executeAndLog(pb, "dump");
+        }
+        {
+            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java",
+                                            "-Xshare:auto",
+                                            jsaOpt,
+                                            "-Xlog:class+path=info",
+                                            "-version");
+            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-src");
+            out.shouldNotContain("shared class paths mismatch");
+            out.shouldNotContain("BOOT classpath mismatch");
+        }
+
+        clone(new File(java_home_src), new File(java_home_dst));
+        System.out.println("============== Cloned JDK at " + java_home_dst);
+
+        // Test runtime with cloned JDK
+        {
+            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
+                                            "-Xshare:auto",
+                                            jsaOpt,
+                                            "-Xlog:class+path=info",
+                                            "-version");
+            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-dst");
+            out.shouldNotContain("shared class paths mismatch");
+            out.shouldNotContain("BOOT classpath mismatch");
+        }
+
+        // Test with bad JAR file name, hello.modules
+        String helloJar = JarBuilder.getOrCreateHelloJar();
+        String fake_modules = copyFakeModulesFromHelloJar();
+        String dumptimeBootAppendOpt = "-Xbootclasspath/a:" + fake_modules;
+        {
+            ProcessBuilder pb = makeBuilder(java_home_src + "/bin/java",
+                                            "-Xshare:dump",
+                                            dumptimeBootAppendOpt,
+                                            jsaOpt);
+            TestCommon.executeAndLog(pb, "dump");
+        }
+        {
+            String runtimeBootAppendOpt = dumptimeBootAppendOpt + System.getProperty("path.separator") + helloJar;
+            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
+                                            "-Xshare:auto",
+                                            runtimeBootAppendOpt,
+                                            jsaOpt,
+                                            "-Xlog:class+path=info",
+                                            "-version");
+            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-dst");
+            out.shouldNotContain("shared class paths mismatch");
+            out.shouldNotContain("BOOT classpath mismatch");
+        }
+
+        // Test with no modules image in the <java home>/lib directory
+        renameModulesFile(java_home_dst);
+        {
+            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
+                                            "-version");
+            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-missing-modules");
+            out.shouldHaveExitValue(1);
+            out.shouldContain("Failed setting boot class path.");
+        }
+    }
+
+    // Do a cheap clone of the JDK. Most files can be sym-linked. However, $JAVA_HOME/bin/java and $JAVA_HOME/lib/.../libjvm.so"
+    // must be copied, because the java.home property is derived from the canonicalized paths of these 2 files.
+    static void clone(File src, File dst) throws Exception {
+        if (dst.exists()) {
+            if (!dst.isDirectory()) {
+                throw new RuntimeException("Not a directory :" + dst);
+            }
+        } else {
+            if (!dst.mkdir()) {
+                throw new RuntimeException("Cannot create directory: " + dst);
+            }
+        }
+        for (String child : src.list()) {
+            if (child.equals(".") || child.equals("..")) {
+                continue;
+            }
+
+            File child_src = new File(src, child);
+            File child_dst = new File(dst, child);
+            if (child_dst.exists()) {
+                throw new RuntimeException("Already exists: " + child_dst);
+            }
+            if (child_src.isFile()) {
+                if (child.equals("libjvm.so") || child.equals("java")) {
+                    Files.copy(child_src.toPath(), /* copy data to -> */ child_dst.toPath());
+                } else {
+                    Files.createSymbolicLink(child_dst.toPath(),  /* link to -> */ child_src.toPath());
+                }
+            } else {
+                clone(child_src, child_dst);
+            }
+        }
+    }
+
+    static void renameModulesFile(String javaHome) throws Exception {
+        String modulesDir = javaHome + File.separator + "lib";
+        File origModules = new File(modulesDir, "modules");
+        if (!origModules.exists()) {
+            throw new RuntimeException("modules file not found");
+        }
+
+        File renamedModules = new File(modulesDir, "orig_modules");
+        if (renamedModules.exists()) {
+            throw new RuntimeException("found orig_modules unexpectedly");
+        }
+
+        boolean success = origModules.renameTo(renamedModules);
+        if (!success) {
+            throw new RuntimeException("rename modules file failed");
+        }
+    }
+
+    static ProcessBuilder makeBuilder(String... args) throws Exception {
+        System.out.print("[");
+        for (String s : args) {
+            System.out.print(" " + s);
+        }
+        System.out.println(" ]");
+        return new ProcessBuilder(args);
+    }
+
+    private static String copyFakeModulesFromHelloJar() throws Exception {
+        String classDir = System.getProperty("test.classes");
+        String newFile = "hello.modules";
+        String path = classDir + File.separator + newFile;
+
+        Files.copy(Paths.get(classDir, "hello.jar"),
+            Paths.get(classDir, newFile),
+            StandardCopyOption.REPLACE_EXISTING);
+        return path;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/MultiProcessSharing.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Run multiple processes with the same archive, ensure they share
+ *
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @compile test-classes/MultiProcClass.java
+ * @run driver MultiProcessSharing
+ */
+
+import java.io.File;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+
+public class MultiProcessSharing {
+    static String useWbJar;
+    static String sharedClass1Jar;
+    static boolean checkPmap = false;
+
+    public static void main(String[] args) throws Exception {
+        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        useWbJar = "-Xbootclasspath/a:" + wbJar;
+        sharedClass1Jar = JarBuilder.build("shared_class1", "MultiProcClass");
+
+        // create an archive
+        OutputAnalyzer out = TestCommon.dump(sharedClass1Jar,
+            TestCommon.list("MultiProcClass"), useWbJar);
+        TestCommon.checkDump(out);
+
+        // determine whether OK to use pmap for extra test verification
+        long myPid = ProcessHandle.current().pid();
+        checkPmap = (Platform.isLinux() && (MultiProcClass.runPmap(myPid, false) == 0));
+        System.out.println("MultiProcessSharing: checkPmap is " + checkPmap);
+
+        // use an archive in several processes concurrently
+        int numProcesses = 3;
+        Thread[] threads = new Thread[numProcesses];
+        ProcessHandler[] processHandlers = new ProcessHandler[numProcesses];
+        for (int i = 0; i < numProcesses; i++) {
+            processHandlers[i] = new ProcessHandler(i);
+            threads[i] = new Thread(processHandlers[i]);
+        }
+
+        for (Thread t : threads) {
+            t.start();
+        }
+
+        for (Thread t : threads) {
+            try {
+                t.join();
+            } catch (InterruptedException ie) {
+                throw ie;
+            }
+        }
+
+        // check results
+        for (ProcessHandler ph : processHandlers) {
+            TestCommon.checkExec(ph.out);
+            if (checkPmap && !TestCommon.isUnableToMap(ph.out)) {
+                checkPmapOutput(ph.out.getOutput());
+            }
+        }
+    }
+
+
+    static class ProcessHandler implements Runnable {
+        int processNumber;
+        OutputAnalyzer out;
+
+        ProcessHandler(int processNumber) {
+            this.processNumber = processNumber;
+        }
+
+        @Override
+        public void run() {
+            try {
+                out = TestCommon.exec(sharedClass1Jar,
+                   "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", useWbJar,
+                   "MultiProcClass", "" + processNumber, "" + checkPmap);
+            } catch (Exception e) {
+                throw new RuntimeException("Error occurred when using archive, exec()" + e);
+            }
+        }
+    }
+
+
+    private static void checkPmapOutput(String stdio) {
+        System.out.println("Checking pmap output ...");
+        String[] lines = stdio.split("\n");
+
+        boolean foundJsa = false;
+        boolean foundReadOnlyJsaSection = false;
+
+        for (String line : lines) {
+            if (line.contains(TestCommon.getCurrentArchiveName()))
+                System.out.println(line);
+                foundJsa = true;
+                if (line.contains("r--")) {
+                    foundReadOnlyJsaSection = true;
+                }
+
+                // On certain ARM platforms system maps r/o memory mapped files
+                // as r/x; see JDK-8145694 for details
+                if ( (Platform.isARM() || Platform.isAArch64()) && line.contains("r-x") ) {
+                    foundReadOnlyJsaSection = true;
+                }
+        }
+
+        Asserts.assertTrue(foundJsa && foundReadOnlyJsaSection);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/MultiReleaseJars.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test MultiReleaseJars
+ * @summary Test multi-release jar with AppCDS.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @run main/othervm/timeout=2400 MultiReleaseJars
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.io.IOException;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class MultiReleaseJars {
+
+    static final int MAJOR_VERSION = Runtime.version().major();
+    static final String MAJOR_VERSION_STRING = String.valueOf(MAJOR_VERSION);
+
+    static String[] getMain() {
+        String[] sts = {
+            "package version;",
+            "public class Main {",
+            "    public static void main(String[] args) {",
+            "        Version version = new Version();",
+            "        System.out.println(\"I am running on version \" + version.getVersion());",
+            "    }",
+            "}"
+        };
+        return sts;
+    }
+
+    static String[] getVersion(int version) {
+        String[] sts = {
+            "package version;",
+            "public class Version {",
+            "    public int getVersion(){ return " + version + "; }",
+            "}"
+        };
+        return sts;
+    }
+
+    static void writeFile(File file, String... contents) throws Exception {
+        if (contents == null) {
+            throw new java.lang.RuntimeException("No input for writing to file" + file);
+        }
+        try (
+             FileOutputStream fos = new FileOutputStream(file);
+             PrintStream ps = new PrintStream(fos)
+        ) {
+            for (String str : contents) {
+                ps.println(str);
+            }
+        }
+    }
+
+    /* version.jar entries and files:
+     * META-INF/
+     * META-INF/MANIFEST.MF
+     * version/
+     * version/Main.class
+     * version/Version.class
+     * META-INF/versions/
+     * META-INF/versions/<major-version>/
+     * META-INF/versions/<major-version>/version/
+     * META-INF/versions/<major-version>/version/Version.class
+     */
+    static void createClassFilesAndJar() throws Exception {
+        String tempDir = System.getProperty("test.classes");
+        File baseDir = new File(tempDir + File.separator + "base");
+        File vDir    = new File(tempDir + File.separator + MAJOR_VERSION_STRING);
+
+        baseDir.mkdirs();
+        vDir.mkdirs();
+
+        File fileMain = TestCommon.getOutputSourceFile("Main.java");
+        writeFile(fileMain, getMain());
+
+        File fileVersion = TestCommon.getOutputSourceFile("Version.java");
+        writeFile(fileVersion, getVersion(7));
+        JarBuilder.compile(baseDir.getAbsolutePath(), fileVersion.getAbsolutePath(), "--release", "7");
+        JarBuilder.compile(baseDir.getAbsolutePath(), fileMain.getAbsolutePath(),
+            "-cp", baseDir.getAbsolutePath(), "--release", MAJOR_VERSION_STRING);
+
+        String[] meta = {
+            "Multi-Release: true",
+            "Main-Class: version.Main"
+        };
+        File metainf = new File(tempDir, "mf.txt");
+        writeFile(metainf, meta);
+
+        fileVersion = TestCommon.getOutputSourceFile("Version.java");
+        writeFile(fileVersion, getVersion(MAJOR_VERSION));
+        JarBuilder.compile(vDir.getAbsolutePath(), fileVersion.getAbsolutePath(), "--release", MAJOR_VERSION_STRING);
+
+        JarBuilder.build("version", baseDir, metainf.getAbsolutePath(),
+            "--release", MAJOR_VERSION_STRING, "-C", vDir.getAbsolutePath(), ".");
+
+        // the following jar file is for testing case-insensitive "Multi-Release"
+        // attibute name
+        String[] meta2 = {
+            "multi-Release: true",
+            "Main-Class: version.Main"
+        };
+        metainf = new File(tempDir, "mf2.txt");
+        writeFile(metainf, meta2);
+        JarBuilder.build("version2", baseDir, metainf.getAbsolutePath(),
+            "--release", MAJOR_VERSION_STRING, "-C", vDir.getAbsolutePath(), ".");
+    }
+
+    static void checkExecOutput(OutputAnalyzer output, String expectedOutput) throws Exception {
+        try {
+            TestCommon.checkExec(output, expectedOutput);
+        } catch (java.lang.RuntimeException re) {
+            String cause = re.getMessage();
+            if (!expectedOutput.equals(cause)) {
+                throw re;
+            }
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+        // create version.jar which contains Main.class and Version.class.
+        // Version.class has two versions: 8 and the current version.
+        createClassFilesAndJar();
+
+        String mainClass          = "version.Main";
+        String loadInfo           = "[class,load] version.Version source: shared objects file";
+        String appClasses[]       = {"version/Main", "version/Version"};
+        String appJar             = TestCommon.getTestJar("version.jar");
+        String appJar2            = TestCommon.getTestJar("version2.jar");
+        String enableMultiRelease = "-Djdk.util.jar.enableMultiRelease=true";
+        String jarVersion         = null;
+        String expectedOutput     = null;
+
+        // 1. default to highest version
+        //    if META-INF/versions exists, no other commandline options like -Djdk.util.jar.version and
+        //    -Djdk.util.jar.enableMultiRelease passed to vm
+        OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
+        output.shouldContain("Loading classes to share: done.");
+        output.shouldHaveExitValue(0);
+
+        output = TestCommon.exec(appJar, mainClass);
+        checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
+
+        // 2. Test versions 7 and the current major version.
+        //    -Djdk.util.jar.enableMultiRelease=true (or force), default is true.
+        //    a) -Djdk.util.jar.version=7 does not exist in jar.
+        //        It will fallback to the root version which is also 7 in this test.
+        //    b) -Djdk.util.jar.version=MAJOR_VERSION exists in the jar.
+        for (int i : new int[] {7, MAJOR_VERSION}) {
+            jarVersion = "-Djdk.util.jar.version=" + i;
+            expectedOutput = "I am running on version " + i;
+            output = TestCommon.dump(appJar, appClasses, enableMultiRelease, jarVersion);
+            output.shouldContain("Loading classes to share: done.");
+            output.shouldHaveExitValue(0);
+
+            output = TestCommon.exec(appJar, mainClass);
+            checkExecOutput(output, expectedOutput);
+        }
+
+        // 3. For unsupported version, 5 and current major version + 1, the multiversion
+        // will be turned off, so it will use the default (root) version.
+        for (int i : new int[] {5, MAJOR_VERSION + 1}) {
+            jarVersion = "-Djdk.util.jar.version=" + i;
+            output = TestCommon.dump(appJar, appClasses, enableMultiRelease, jarVersion);
+            output.shouldHaveExitValue(0);
+            // With the fix for 8172218, multi-release jar is being handled in
+            // jdk corelib which doesn't emit the following warning message.
+            //output.shouldContain("JDK" + i + " is not supported in multiple version jars");
+
+            output = TestCommon.exec(appJar, mainClass);
+            if (i == 5)
+                checkExecOutput(output, "I am running on version 7");
+            else
+                checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
+        }
+
+        // 4. If explicitly disabled from command line for multiversion jar, it will use default
+        //    version at root regardless multiversion versions exists.
+        //    -Djdk.util.jar.enableMultiRelease=false (not 'true' or 'force')
+        for (int i = 6; i < MAJOR_VERSION + 1; i++) {
+            jarVersion = "-Djdk.util.jar.version=" + i;
+            output = TestCommon.dump(appJar, appClasses, "-Djdk.util.jar.enableMultiRelease=false", jarVersion);
+            output.shouldHaveExitValue(0);
+
+            output = TestCommon.exec(appJar, mainClass);
+            expectedOutput = "I am running on version 7";
+            checkExecOutput(output, expectedOutput);
+        }
+
+        // 5. Sanity test with -Xbootclasspath/a
+        //    AppCDS behaves the same as the non-AppCDS case. A multi-release
+        //    jar file in the -Xbootclasspath/a will be ignored.
+        output = TestCommon.dump(appJar, appClasses, "-Xbootclasspath/a:" + appJar, enableMultiRelease, jarVersion);
+        output.shouldContain("Loading classes to share: done.");
+        output.shouldHaveExitValue(0);
+
+        output = TestCommon.exec(appJar, "-Xbootclasspath/a:" + appJar, mainClass);
+        checkExecOutput(output, "I am running on version 7");
+
+        // 6. Sanity test case-insensitive "Multi-Release" attribute name
+        output = TestCommon.dump(appJar2, appClasses);
+        output.shouldContain("Loading classes to share: done.");
+        output.shouldHaveExitValue(0);
+
+        output = TestCommon.exec(appJar2, mainClass);
+        checkExecOutput(output, "I am running on version " + MAJOR_VERSION_STRING);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/OldClassTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary classes with major version < JDK_6 (50) should not be included in CDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.org.objectweb.asm
+ *          java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run build TestCommon JarBuilder
+ * @run driver OldClassTest
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.nio.file.Files;
+
+import java.util.*;
+import jdk.internal.org.objectweb.asm.*;
+
+public class OldClassTest implements Opcodes {
+
+  public static void main(String[] args) throws Exception {
+    File jarSrcFile = new File(JarBuilder.getOrCreateHelloJar());
+
+    File dir = new File(System.getProperty("test.classes", "."));
+    File jarFile = new File(dir, "OldClassTest_old.jar");
+    String jar = jarFile.getPath();
+
+    if (!jarFile.exists() || jarFile.lastModified() < jarSrcFile.lastModified()) {
+      createTestJarFile(jarSrcFile, jarFile);
+    } else {
+      System.out.println("Already up-to-date: " + jarFile);
+    }
+
+    String appClasses[] = TestCommon.list("Hello");
+
+    // CASE 1: pre-JDK 6 compiled classes should be excluded from the dump
+    OutputAnalyzer output = TestCommon.dump(jar, appClasses);
+    TestCommon.checkExecReturn(output, 0, true, "Pre JDK 6 class not supported by CDS");
+
+    TestCommon.run(
+        "-cp", jar,
+        "Hello")
+      .assertNormalExit("Hello Unicode world (Old)");
+
+    // CASE 2: if we exlcude old version of this class, we should not pick up
+    //         the newer version of this class in a subsequent classpath element.
+    String classpath = jar + File.pathSeparator + jarSrcFile.getPath();
+    output = TestCommon.dump(classpath, appClasses);
+    TestCommon.checkExecReturn(output, 0, true, "Pre JDK 6 class not supported by CDS");
+
+    TestCommon.run(
+        "-cp", classpath,
+        "Hello")
+      .assertNormalExit("Hello Unicode world (Old)");
+  }
+
+  static void createTestJarFile(File jarSrcFile, File jarFile) throws Exception {
+    jarFile.delete();
+    Files.copy(jarSrcFile.toPath(), jarFile.toPath());
+
+    File dir = new File(System.getProperty("test.classes", "."));
+    File outdir = new File(dir, "old_class_test_classes");
+    outdir.delete();
+    outdir.mkdir();
+
+    writeClassFile(new File(outdir, "Hello.class"), makeOldHello());
+
+    JarBuilder.update(jarFile.getPath(), outdir.getPath());
+  }
+
+  static void writeClassFile(File file, byte bytecodes[]) throws Exception {
+    try (FileOutputStream fos = new FileOutputStream(file)) {
+        fos.write(bytecodes);
+      }
+  }
+
+/* makeOldHello() was obtained using JDK8. We use a method name > 128 that would
+   trigger a call to java.lang.Character.isJavaIdentifierStart() during class
+   file parsing.
+
+cat > Hello.java <<EOF
+public class Hello {
+    public static void main(String args[]) {
+        System.out.println(\u1234());
+    }
+    static String \u1234() {
+        return "Hello Unicode world (Old)";
+    }
+}
+EOF
+javac Hello.java
+java jdk.internal.org.objectweb.asm.util.ASMifier Hello.class
+
+ */
+
+  static byte[] makeOldHello() throws Exception {
+    ClassWriter cw = new ClassWriter(0);
+    FieldVisitor fv;
+    MethodVisitor mv;
+    AnnotationVisitor av0;
+
+      cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "Hello", null, "java/lang/Object", null);
+
+    {
+      mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
+      mv.visitCode();
+      mv.visitVarInsn(ALOAD, 0);
+      mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
+      mv.visitInsn(RETURN);
+      mv.visitMaxs(1, 1);
+      mv.visitEnd();
+    }
+    {
+      mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
+      mv.visitCode();
+      mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+      mv.visitMethodInsn(INVOKESTATIC, "Hello", "\u1234", "()Ljava/lang/String;", false);
+      mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
+      mv.visitInsn(RETURN);
+      mv.visitMaxs(2, 1);
+      mv.visitEnd();
+    }
+    {
+      mv = cw.visitMethod(ACC_STATIC, "\u1234", "()Ljava/lang/String;", null, null);
+      mv.visitCode();
+      mv.visitLdcInsn("Hello Unicode world (Old)");
+      mv.visitInsn(ARETURN);
+      mv.visitMaxs(1, 0);
+      mv.visitEnd();
+    }
+    cw.visitEnd();
+
+    return cw.toByteArray();
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/PackageSealing.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of package.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile test-classes/C1.java
+ * @compile test-classes/C2.java
+ * @compile test-classes/PackageSealingTest.java
+ * @compile test-classes/Hello.java
+ * @run driver PackageSealing
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class PackageSealing {
+    public static void main(String args[]) throws Exception {
+        String[] classList = {"sealed/pkg/C1", "pkg/C2", "PackageSealingTest"};
+        String appJar = ClassFileInstaller.writeJar("pkg_seal.jar",
+            ClassFileInstaller.Manifest.fromSourceFile("test-classes/package_seal.mf"),
+            "PackageSealingTest", "sealed/pkg/C1", "pkg/C2");
+
+        String helloJar = JarBuilder.getOrCreateHelloJar();
+        String jars = helloJar + File.pathSeparator + appJar;
+
+        // test shared package from -cp path
+        TestCommon.testDump(jars, TestCommon.list(classList));
+        OutputAnalyzer output;
+        output = TestCommon.exec(jars, "PackageSealingTest");
+        TestCommon.checkExec(output, "OK");
+
+        // test shared package from -Xbootclasspath/a
+        TestCommon.dump(helloJar, TestCommon.list(classList),
+                        "-Xbootclasspath/a:" + appJar);
+        output = TestCommon.exec(helloJar, "-Xbootclasspath/a:" + appJar, "PackageSealingTest");
+        TestCommon.checkExec(output, "OK");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ParallelLoad2.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Load app classes from CDS archive in parallel threads. Similar to ParallelLoad.java, but each class in its own JAR
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/ParallelLoad.java
+ * @compile test-classes/ParallelClasses.java
+ * @run driver ParallelLoad2
+ */
+
+import java.io.File;
+
+public class ParallelLoad2 {
+  public static int MAX_CLASSES = 40;
+  public static void main(String[] args) throws Exception {
+    JarBuilder.build("parallel_load2", "ParallelLoad", "ParallelLoadThread", "ParallelLoadWatchdog");
+    for (int i=0; i<MAX_CLASSES; i++) {
+      JarBuilder.build("parallel_load2_" + i, "ParallelClass" + i);
+    }
+
+    String cp = TestCommon.getTestJar("parallel_load2.jar");
+    for (int i=0; i<MAX_CLASSES; i++) {
+      cp += File.pathSeparator + TestCommon.getTestJar("parallel_load2_" + i + ".jar");
+    }
+
+    String[] class_list = new String[MAX_CLASSES + 2];
+    for (int i=0; i<MAX_CLASSES; i++) {
+      class_list[i] = "ParallelClass" + i;
+    }
+    class_list[class_list.length - 1] = "ParallelLoad";
+    class_list[class_list.length - 2] = "ParallelLoadThread";
+
+    TestCommon.test(cp, class_list,
+                          "ParallelLoad");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ParallelLoadTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Load app classes from CDS archive in parallel threads
+ * @library /test/lib
+ * @requires vm.cds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/ParallelLoad.java
+ * @compile test-classes/ParallelClasses.java
+ * @run driver ParallelLoadTest
+ */
+
+public class ParallelLoadTest {
+    public static final int MAX_CLASSES = 40;
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("parallel_load", getClassList(true));
+        String appJar = TestCommon.getTestJar("parallel_load.jar");
+        TestCommon.test(appJar, getClassList(false), "ParallelLoad");
+    }
+
+    private static String[] getClassList(boolean includeWatchdog) {
+        int extra = includeWatchdog ? 3 : 2;
+        String[] classList = new String[MAX_CLASSES + extra];
+
+        int i;
+        for (i=0; i<MAX_CLASSES; i++) {
+            classList[i] = "ParallelClass" + i;
+        }
+
+        classList[i++] = "ParallelLoad";
+        classList[i++] = "ParallelLoadThread";
+        if (includeWatchdog)
+            classList[i++] = "ParallelLoadWatchdog";
+
+        return classList;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/PrintSharedArchiveAndExit.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary test the -XX:+PrintSharedArchiveAndExit flag
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/HelloMore.java
+ * @run main/othervm/timeout=3600 PrintSharedArchiveAndExit
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class PrintSharedArchiveAndExit {
+  private static void check(OutputAnalyzer output, int ret, boolean checkContain, String... matches) throws Exception {
+    // Tests specific to this test
+    TestCommon.checkExecReturn(output, ret, checkContain, matches);
+
+    // In all test case, we should never print out the following due to
+    // PrintSharedArchiveAndExit. JVM should have been terminated
+    // before reaching these outputs.
+    TestCommon.checkExecReturn(output, ret, false,
+                               "Usage:",            // JVM help message
+                               "java version",      // JVM version
+                               "Hello World");      // output from the Hello.class in hello.jar
+  }
+
+  private static void log(String msg) {
+    System.out.println(">---------------------------------------------------------------------");
+    System.out.println(msg);
+    System.out.println("<---------------------------------------------------------------------");
+  }
+
+  public static void main(String[] args) throws Exception {
+    String appJar = JarBuilder.getOrCreateHelloJar();
+    String appJar2 = JarBuilder.build("PrintSharedArchiveAndExit-more", "HelloMore");
+
+    String cp = appJar + File.pathSeparator + appJar2;
+    String lastCheckMsg = "checking shared classpath entry: " + appJar2; // the last JAR to check
+
+    TestCommon.testDump(cp, TestCommon.list("Hello", "HelloMore"));
+
+    log("Normal execution -- all the JAR paths should be checked");
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
+
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit",
+        "-XX:+PrintSharedDictionary")  // Test PrintSharedDictionary as well.
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg, "java.lang.Object"));
+
+    log("Normal execution -- Make sure -version, help message and app main()\n" +
+        "class are not invoked. These are checked inside check().");
+    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "-version")
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
+
+    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "-help")
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
+
+    TestCommon.run("-cp", cp, "-XX:+PrintSharedArchiveAndExit", "Hello")
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
+
+    log("Execution with simple errors -- with 'simple' errors like missing or modified\n" +
+        "JAR files, the VM should try to continue to print the remaining information.\n" +
+        "Use an invalid Boot CP -- all the JAR paths should be checked");
+    TestCommon.run(
+        "-cp", cp,
+        "-Xbootclasspath/a:foo.jar",
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[BOOT classpath mismatch, "));
+
+    log("Use an App CP shorter than the one at dump time -- all the JAR paths should be checked");
+    TestCommon.run(
+        "-cp", ".",
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "Run time APP classpath is shorter than the one at dump time: ."));
+
+    log("Use an invalid App CP -- all the JAR paths should be checked.\n" +
+        "Non-existing jar files will be ignored.");
+    String invalidCP = "non-existing-dir" + File.pathSeparator + cp;
+    TestCommon.run(
+        "-cp", invalidCP,
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 0, true, lastCheckMsg));
+
+    log("Changed modification time of hello.jar -- all the JAR paths should be checked");
+    (new File(appJar)).setLastModified(System.currentTimeMillis() + 2000);
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[Timestamp mismatch]"));
+
+    log("Even if hello.jar is out of date, we should still be able to print the dictionary.");
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit",
+        "-XX:+PrintSharedDictionary")  // Test PrintSharedDictionary as well.
+      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "java.lang.Object"));
+
+
+    log("Remove hello.jar -- all the JAR paths should be checked");
+    (new File(appJar)).delete();
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit")
+      .ifNoMappingFailure(output -> check(output, 1, true, lastCheckMsg, "[Required classpath entry does not exist: " + appJar + "]"));
+
+    log("Execution with major errors -- with 'major' errors like the JSA file\n" +
+        "is missing, we should stop immediately to avoid crashing the JVM.");
+    TestCommon.run(
+        "-cp", cp,
+        "-XX:+PrintSharedArchiveAndExit",
+        "-XX:SharedArchiveFile=./no-such-fileappcds.jsa")
+      .ifNoMappingFailure(output -> check(output, 1, false, lastCheckMsg));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ProhibitedPackage.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of prohibited package.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile test-classes/ProhibitedHelper.java test-classes/Prohibited.jasm
+ * @run driver ProhibitedPackage
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ProhibitedPackage {
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("prohibited_pkg", "java/lang/Prohibited", "ProhibitedHelper");
+
+        String appJar = TestCommon.getTestJar("prohibited_pkg.jar");
+
+        // Test support for customer loaders
+        if (Platform.areCustomLoadersSupportedForCDS() &&
+            !TestCommon.isDynamicArchive()) {
+            String classlist[] = new String[] {
+                "java/lang/Object id: 1",
+                "java/lang/Prohibited id: 2 super: 1 source: " + appJar
+            };
+
+            // Make sure a class in a prohibited package for a custom loader
+            // will be ignored during dumping.
+            TestCommon.dump(appJar,  classlist, "-Xlog:cds")
+                .shouldContain("Dumping")
+                .shouldContain("[cds] Prohibited package for non-bootstrap classes: java/lang/Prohibited.class")
+                .shouldHaveExitValue(0);
+        }
+
+
+        // Make sure a class in a prohibited package for a non-custom loader
+        // will be ignored during dumping.
+        TestCommon.dump(appJar,
+                        TestCommon.list("java/lang/Prohibited", "ProhibitedHelper"),
+                        "-Xlog:class+load")
+            .shouldContain("Dumping")
+            .shouldNotContain("[info][class,load] java.lang.Prohibited source: ")
+            .shouldHaveExitValue(0);
+
+        // Try loading the class in a prohibited package with various -Xshare
+        // modes. The class shouldn't be loaded and appropriate exceptions
+        // are expected.
+
+        OutputAnalyzer output;
+
+        // -Xshare:on
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, "ProhibitedHelper")
+          .assertNormalExit("Prohibited package name: java.lang");
+
+        // -Xshare:auto
+        output = TestCommon.execAuto(
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, "ProhibitedHelper");
+        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
+        TestCommon.checkExec(output, opts, "Prohibited package name: java.lang");
+
+        // -Xshare:off
+        output = TestCommon.execOff(
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            "-cp", appJar, "ProhibitedHelper");
+        output.shouldContain("Prohibited package name: java.lang");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/ProtectionDomain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of protection domain.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/ProtDomain.java
+ * @compile test-classes/ProtDomainB.java
+ * @compile test-classes/JimageClassProtDomain.java
+ * @run driver ProtectionDomain
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ProtectionDomain {
+  public static void main(String[] args) throws Exception {
+    JarBuilder.build("prot_domain", "ProtDomain", "ProtDomainB", "ProtDomainOther",
+                     "ProtDomainBOther", "JimageClassProtDomain");
+
+    String appJar = TestCommon.getTestJar("prot_domain.jar");
+    TestCommon.testDump(appJar,
+         TestCommon.list("ProtDomain",
+                         "ProtDomainBOther",
+                         "java/util/Dictionary",
+                         "com/sun/tools/javac/Main",
+                         "jdk/nio/zipfs/ZipInfo",
+                         "java/net/URL",
+                         "sun/rmi/rmic/Main",
+                         "com/sun/jndi/dns/DnsName"));
+
+    // First class is loaded from CDS, second class is loaded from JAR
+    TestCommon.run("-cp", appJar, "ProtDomain")
+        .assertNormalExit("Protection Domains match");
+
+    // First class is loaded from JAR, second class is loaded from CDS
+    TestCommon.run("-cp", appJar, "ProtDomainB")
+        .assertNormalExit("Protection Domains match");
+
+    // Test ProtectionDomain for application and extension module classes from the
+    // "modules" jimage
+    TestCommon.run("-cp", appJar, "JimageClassProtDomain")
+        .assertNormalExit(output -> output.shouldNotContain(
+                          "Failed: Protection Domains do not match"));
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/RelativePath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test relative paths specified in the -cp.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/HelloMore.java
+ * @run driver RelativePath
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+import java.util.Arrays;
+import jdk.test.lib.Platform;
+
+public class RelativePath {
+
+  private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+  public static void main(String[] args) throws Exception {
+    String appJar = JarBuilder.getOrCreateHelloJar();
+    String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
+
+    // dump an archive with only the jar name in the -cp
+    int idx = appJar.lastIndexOf(File.separator);
+    String jarName = appJar.substring(idx + 1);
+    String jarDir = appJar.substring(0, idx);
+    TestCommon.testDump(jarDir, jarName, TestCommon.list("Hello"));
+
+    // copy the jar file to another dir. Specify the jar file without
+    // a directory path.
+    Path srcPath = Paths.get(appJar);
+    Path destDir = Files.createTempDirectory(USER_DIR, "deploy");
+    Path destPath = destDir.resolve(jarName);
+    Files.copy(srcPath, destPath, REPLACE_EXISTING, COPY_ATTRIBUTES);
+    TestCommon.runWithRelativePath(
+        destDir.toString(),
+        "-Xshare:on",
+        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
+        "-cp", jarName + File.pathSeparator + appJar2,
+        "-Xlog:class+load=trace,class+path=info",
+        "HelloMore")
+        .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+            });
+
+    // Long path test
+    // Create a long directory path and copy the appJar there.
+    final int MAX_PATH = 260;
+    destDir = Paths.get(jarDir);
+    int subDirLen = MAX_PATH - jarDir.length() - 3;
+    if (subDirLen > 0) {
+        char[] chars = new char[subDirLen];
+        Arrays.fill(chars, 'x');
+        String subPath = new String(chars);
+        destDir = Paths.get(jarDir, subPath);
+    }
+    File longDir = destDir.toFile();
+    longDir.mkdir();
+    String destJar = longDir.getPath() + File.separator + jarName;
+    Files.copy(Paths.get(appJar), Paths.get(destJar), REPLACE_EXISTING);
+    // Create an archive with the appJar in the long directory path.
+    TestCommon.testDump(destJar, TestCommon.list("Hello"));
+
+    // Run with -cp containing the appJar and another jar appended.
+    TestCommon.run(
+        "-cp", destJar + File.pathSeparator + appJar2,
+        "-Xlog:class+load=trace,class+path=info",
+        "HelloMore")
+        .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+            });
+
+    // Dump an archive with a specified JAR file in -classpath
+    TestCommon.testDump(appJar, TestCommon.list("Hello"));
+
+    // compose a relative path to the hello.jar
+    String newHello = TestCommon.composeRelPath(appJar);
+
+    // create a sym link to the original hello.jar
+    File linkedHello = null;
+    if (!Platform.isWindows()) {
+        linkedHello = TestCommon.createSymLink(appJar);
+    }
+
+    // PASS:1) same appJar but referred to via a relative path
+    TestCommon.run(
+        "-cp", newHello + File.pathSeparator + appJar2,
+        "-Xlog:class+load=trace,class+path=info",
+        "HelloMore")
+      .assertNormalExit();
+
+    // PASS:2) relative path starting with "."
+    TestCommon.runWithRelativePath(
+        jarDir,
+        "-Xshare:on",
+        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
+        "-cp", "." + File.separator + jarName + File.pathSeparator + appJar2,
+        "-Xlog:class+load=trace,class+path=info",
+        "HelloMore")
+        .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+            });
+
+    // PASS:3) relative path starting with ".."
+    idx = jarDir.lastIndexOf(File.separator);
+    String jarSubDir = jarDir.substring(idx + 1);
+    TestCommon.runWithRelativePath(
+        jarDir,
+        "-Xshare:on",
+        "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName(),
+        "-cp", ".." + File.separator + jarSubDir + File.separator + jarName
+               + File.pathSeparator + appJar2,
+        "-Xlog:class+load=trace,class+path=info",
+        "HelloMore")
+        .assertNormalExit(output -> {
+                output.shouldContain("Hello source: shared objects file")
+                      .shouldHaveExitValue(0);
+            });
+
+    // PASS:4) a jar linked to the original hello.jar
+    if (!Platform.isWindows()) {
+        TestCommon.run(
+            "-cp", linkedHello.getPath() + File.pathSeparator + appJar2,
+            "HelloMore")
+          .assertNormalExit();
+    }
+
+    final String errorMessage1 = "Unable to use shared archive";
+    final String errorMessage2 = "shared class paths mismatch";
+    // FAIL: 1) runtime with classpath different from the one used in dump time
+    // (runtime has an extra jar file prepended to the class path)
+    TestCommon.run(
+        "-cp", appJar2 + File.pathSeparator + newHello,
+        "HelloMore")
+        .assertAbnormalExit(errorMessage1, errorMessage2);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/RewriteBytecodesTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Use ClassLoader.defineClass() to load a class with rewritten bytecode. Make sure
+ *          the archived class with the same name is not loaded.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/RewriteBytecodes.java test-classes/Util.java test-classes/Super.java test-classes/Child.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver RewriteBytecodesTest
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class RewriteBytecodesTest {
+  public static void main(String[] args) throws Exception {
+    String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+    String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+    String appJar = JarBuilder.build("dynamic_define", "RewriteBytecodes", "Util", "Super", "Child");
+    String superClsFile = (new File(System.getProperty("test.classes", "."), "Super.class")).getPath();
+
+    TestCommon.dump(appJar, TestCommon.list("RewriteBytecodes", "Super", "Child"),
+                    // command-line arguments ...
+                    use_whitebox_jar);
+
+    OutputAnalyzer output = TestCommon.exec(appJar,
+                    // command-line arguments ...
+                    "--add-opens=java.base/java.lang=ALL-UNNAMED",
+                    use_whitebox_jar,
+                    "-XX:+UnlockDiagnosticVMOptions",
+                    "-XX:+WhiteBoxAPI",
+                    "RewriteBytecodes", superClsFile);
+    TestCommon.checkExec(output);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,479 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary SharedArchiveConsistency
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.compiler
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @build sun.hotspot.WhiteBox
+ * @compile test-classes/Hello.java
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
+ */
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Utils;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.channels.FileChannel;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+import java.nio.file.StandardOpenOption;
+import static java.nio.file.StandardOpenOption.READ;
+import static java.nio.file.StandardOpenOption.WRITE;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import sun.hotspot.WhiteBox;
+
+public class SharedArchiveConsistency {
+    public static WhiteBox wb;
+    public static int offset_magic;     // CDSFileMapHeaderBase::_magic
+    public static int offset_version;   // CDSFileMapHeaderBase::_version
+    public static int offset_jvm_ident; // FileMapHeader::_jvm_ident
+    public static int sp_offset_crc;    // CDSFileMapRegion::_crc
+    public static int offset_paths_misc_info_size;
+    public static int file_header_size = -1;// total size of header, variant, need calculation
+    public static int CDSFileMapRegion_size; // size of CDSFileMapRegion
+    public static int sp_offset;       // offset of CDSFileMapRegion
+    public static int sp_used_offset;  // offset of CDSFileMapRegion::_used
+    public static int size_t_size;     // size of size_t
+    public static int int_size;        // size of int
+
+    public static File jsa;        // will be updated during test
+    public static File orgJsaFile; // kept the original file not touched.
+    // The following should be consistent with the enum in the C++ MetaspaceShared class
+    public static String[] shared_region_name = {
+        "mc",          // MiscCode
+        "rw",          // ReadWrite
+        "ro",          // ReadOnly
+        "md",          // MiscData
+        "first_closed_archive",
+        "last_closed_archive",
+        "first_open_archive",
+        "last_open_archive"
+    };
+
+    public static int num_regions = shared_region_name.length;
+    public static String[] matchMessages = {
+        "Unable to use shared archive",
+        "An error has occurred while processing the shared archive file.",
+        "Checksum verification failed.",
+        "The shared archive file has been truncated."
+    };
+
+    public static void getFileOffsetInfo() throws Exception {
+        wb = WhiteBox.getWhiteBox();
+        offset_magic = wb.getOffsetForName("FileMapHeader::_magic");
+        offset_version = wb.getOffsetForName("FileMapHeader::_version");
+        offset_jvm_ident = wb.getOffsetForName("FileMapHeader::_jvm_ident");
+        sp_offset_crc = wb.getOffsetForName("CDSFileMapRegion::_crc");
+        try {
+            int nonExistOffset = wb.getOffsetForName("FileMapHeader::_non_exist_offset");
+            System.exit(-1); // should fail
+        } catch (Exception e) {
+            // success
+        }
+
+        sp_offset = wb.getOffsetForName("FileMapHeader::_space[0]") - offset_magic;
+        sp_used_offset = wb.getOffsetForName("CDSFileMapRegion::_used") - sp_offset_crc;
+        size_t_size = wb.getOffsetForName("size_t_size");
+        CDSFileMapRegion_size  = wb.getOffsetForName("CDSFileMapRegion_size");
+    }
+
+    public static int getFileHeaderSize(FileChannel fc) throws Exception {
+        if (file_header_size != -1) {
+            return file_header_size;
+        }
+        // this is not real header size, it is struct size
+        int_size = wb.getOffsetForName("int_size");
+        file_header_size = wb.getOffsetForName("file_header_size");
+        offset_paths_misc_info_size = wb.getOffsetForName("FileMapHeader::_paths_misc_info_size") -
+            offset_magic;
+        int path_misc_info_size   = (int)readInt(fc, offset_paths_misc_info_size, int_size);
+        file_header_size += path_misc_info_size;
+        System.out.println("offset_paths_misc_info_size = " + offset_paths_misc_info_size);
+        System.out.println("path_misc_info_size   = " + path_misc_info_size);
+        System.out.println("file_header_size      = " + file_header_size);
+        file_header_size = (int)align_up_page(file_header_size);
+        System.out.println("file_header_size (aligned to page) = " + file_header_size);
+        return file_header_size;
+    }
+
+    public static long align_up_page(long l) throws Exception {
+        // wb is obtained in getFileOffsetInfo() which is called first in main() else we should call
+        // WhiteBox.getWhiteBox() here first.
+        int pageSize = wb.getVMPageSize();
+        return (l + pageSize -1) & (~ (pageSize - 1));
+    }
+
+    private static long getRandomBetween(long start, long end) throws Exception {
+        if (start > end) {
+            throw new IllegalArgumentException("start must be less than end");
+        }
+        Random aRandom = Utils.getRandomInstance();
+        int d = aRandom.nextInt((int)(end - start));
+        if (d < 1) {
+            d = 1;
+        }
+        return start + d;
+    }
+
+    public static long readInt(FileChannel fc, long offset, int nbytes) throws Exception {
+        ByteBuffer bb = ByteBuffer.allocate(nbytes);
+        bb.order(ByteOrder.nativeOrder());
+        fc.position(offset);
+        fc.read(bb);
+        return  (nbytes > 4 ? bb.getLong(0) : bb.getInt(0));
+    }
+
+    public static void writeData(FileChannel fc, long offset, ByteBuffer bb) throws Exception {
+        fc.position(offset);
+        fc.write(bb);
+    }
+
+    public static FileChannel getFileChannel(File jsaFile) throws Exception {
+        List<StandardOpenOption> arry = new ArrayList<StandardOpenOption>();
+        arry.add(READ);
+        arry.add(WRITE);
+        return FileChannel.open(jsaFile.toPath(), new HashSet<StandardOpenOption>(arry));
+    }
+
+    public static void modifyJsaContentRandomly(File jsaFile) throws Exception {
+        FileChannel fc = getFileChannel(jsaFile);
+        // corrupt random area in the data areas
+        long[] used    = new long[num_regions];       // record used bytes
+        long start0, start, end, off;
+        int used_offset, path_info_size;
+
+        int bufSize;
+        System.out.printf("%-24s%12s%12s%16s\n", "Space Name", "Used bytes", "Reg Start", "Random Offset");
+        start0 = getFileHeaderSize(fc);
+        for (int i = 0; i < num_regions; i++) {
+            used[i] = get_region_used_size_aligned(fc, i);
+            start = start0;
+            for (int j = 0; j < i; j++) {
+                start += align_up_page(used[j]);
+            }
+            end = start + used[i];
+            if (start == end) {
+                continue; // Ignore empty regions
+            }
+            off = getRandomBetween(start, end);
+            System.out.printf("%-24s%12d%12d%16d\n", shared_region_name[i], used[i], start, off);
+            if (end - off < 1024) {
+                bufSize = (int)(end - off + 1);
+            } else {
+                bufSize = 1024;
+            }
+            ByteBuffer bbuf = ByteBuffer.wrap(new byte[bufSize]);
+            writeData(fc, off, bbuf);
+        }
+        if (fc.isOpen()) {
+            fc.close();
+        }
+    }
+
+    static long get_region_used_size_aligned(FileChannel fc, int region) throws Exception {
+        long n = sp_offset + CDSFileMapRegion_size * region + sp_used_offset;
+        long alignment = WhiteBox.getWhiteBox().metaspaceReserveAlignment();
+        long used = readInt(fc, n, size_t_size);
+        used = (used + alignment - 1) & ~(alignment - 1);
+        return used;
+    }
+
+    public static boolean modifyJsaContent(int region, File jsaFile) throws Exception {
+        FileChannel fc = getFileChannel(jsaFile);
+        byte[] buf = new byte[4096];
+        ByteBuffer bbuf = ByteBuffer.wrap(buf);
+
+        long total = 0L;
+        long[] used = new long[num_regions];
+        System.out.printf("%-24s%12s\n", "Space name", "Used bytes");
+        for (int i = 0; i < num_regions; i++) {
+            used[i] = get_region_used_size_aligned(fc, i);
+            System.out.printf("%-24s%12d\n", shared_region_name[i], used[i]);
+            total += used[i];
+        }
+        System.out.printf("%-24s%12d\n", "Total: ", total);
+        long header_size = getFileHeaderSize(fc);
+        long region_start_offset = header_size;
+        for (int i=0; i<region; i++) {
+            region_start_offset += used[i];
+        }
+        if (used[region] == 0) {
+            System.out.println("Region " + shared_region_name[region] + " is empty. Nothing to corrupt.");
+            return false;
+        }
+        System.out.println("Corrupt " + shared_region_name[region] + " section, start = " + region_start_offset
+                           + " (header_size + 0x" + Long.toHexString(region_start_offset-header_size) + ")");
+        long bytes_written = 0L;
+        while (bytes_written < used[region]) {
+            writeData(fc, region_start_offset + bytes_written, bbuf);
+            bbuf.clear();
+            bytes_written += 4096;
+        }
+        if (fc.isOpen()) {
+            fc.close();
+        }
+        return true;
+    }
+
+    public static void modifyJsaHeader(File jsaFile) throws Exception {
+        FileChannel fc = getFileChannel(jsaFile);
+        // screw up header info
+        byte[] buf = new byte[getFileHeaderSize(fc)];
+        ByteBuffer bbuf = ByteBuffer.wrap(buf);
+        writeData(fc, 0L, bbuf);
+        if (fc.isOpen()) {
+            fc.close();
+        }
+    }
+
+    public static void modifyJvmIdent() throws Exception {
+        FileChannel fc = getFileChannel(jsa);
+        int headerSize = getFileHeaderSize(fc);
+        System.out.println("    offset_jvm_ident " + offset_jvm_ident);
+        byte[] buf = new byte[256];
+        ByteBuffer bbuf = ByteBuffer.wrap(buf);
+        writeData(fc, (long)offset_jvm_ident, bbuf);
+        if (fc.isOpen()) {
+            fc.close();
+        }
+    }
+
+    public static void modifyHeaderIntField(long offset, int value) throws Exception {
+        FileChannel fc = getFileChannel(jsa);
+        int headerSize = getFileHeaderSize(fc);
+        System.out.println("    offset " + offset);
+        byte[] buf = ByteBuffer.allocate(4).putInt(value).array();
+        ByteBuffer bbuf = ByteBuffer.wrap(buf);
+        writeData(fc, offset, bbuf);
+        if (fc.isOpen()) {
+            fc.close();
+        }
+    }
+
+    public static void copyFile(File from, File to) throws Exception {
+        if (to.exists()) {
+            if(!to.delete()) {
+                throw new IOException("Could not delete file " + to);
+            }
+        }
+        to.createNewFile();
+        setReadWritePermission(to);
+        Files.copy(from.toPath(), to.toPath(), REPLACE_EXISTING);
+    }
+
+    // Copy file with bytes deleted or inserted
+    // del -- true, deleted, false, inserted
+    public static void copyFile(File from, File to, boolean del) throws Exception {
+        try (
+            FileChannel inputChannel = new FileInputStream(from).getChannel();
+            FileChannel outputChannel = new FileOutputStream(to).getChannel()
+        ) {
+            long size = inputChannel.size();
+            int init_size = getFileHeaderSize(inputChannel);
+            outputChannel.transferFrom(inputChannel, 0, init_size);
+            int n = (int)getRandomBetween(0, 1024);
+            if (del) {
+                System.out.println("Delete " + n + " bytes at data start section");
+                inputChannel.position(init_size + n);
+                outputChannel.transferFrom(inputChannel, init_size, size - init_size - n);
+            } else {
+                System.out.println("Insert " + n + " bytes at data start section");
+                outputChannel.position(init_size);
+                outputChannel.write(ByteBuffer.wrap(new byte[n]));
+                outputChannel.transferFrom(inputChannel, init_size + n , size - init_size);
+            }
+        }
+    }
+
+    public static void restoreJsaFile() throws Exception {
+        Files.copy(orgJsaFile.toPath(), jsa.toPath(), REPLACE_EXISTING);
+    }
+
+    public static void setReadWritePermission(File file) throws Exception {
+        if (!file.canRead()) {
+            if (!file.setReadable(true)) {
+                throw new IOException("Cannot modify file " + file + " as readable");
+            }
+        }
+        if (!file.canWrite()) {
+            if (!file.setWritable(true)) {
+                throw new IOException("Cannot modify file " + file + " as writable");
+            }
+        }
+    }
+
+    public static void testAndCheck(String[] execArgs) throws Exception {
+        OutputAnalyzer output = TestCommon.execCommon(execArgs);
+        String stdtxt = output.getOutput();
+        System.out.println("Note: this test may fail in very rare occasions due to CRC32 checksum collision");
+        for (String message : matchMessages) {
+            if (stdtxt.contains(message)) {
+                // match any to return
+                return;
+            }
+        }
+        TestCommon.checkExec(output);
+    }
+
+    // dump with hello.jsa, then
+    // read the jsa file
+    //   1) run normal
+    //   2) modify header
+    //   3) keep header correct but modify content in each region specified by shared_region_name[]
+    //   4) update both header and content, test
+    //   5) delete bytes in data begining
+    //   6) insert bytes in data begining
+    //   7) randomly corrupt data in each region specified by shared_region_name[]
+    public static void main(String... args) throws Exception {
+        // must call to get offset info first!!!
+        getFileOffsetInfo();
+        Path currentRelativePath = Paths.get("");
+        String currentDir = currentRelativePath.toAbsolutePath().toString();
+        System.out.println("Current relative path is: " + currentDir);
+        // get jar file
+        String jarFile = JarBuilder.getOrCreateHelloJar();
+
+        // dump (appcds.jsa created)
+        TestCommon.testDump(jarFile, null);
+
+        // test, should pass
+        System.out.println("1. Normal, should pass but may fail\n");
+
+        String[] execArgs = {"-Xlog:cds", "-cp", jarFile, "Hello"};
+        // tests that corrupt contents of the archive need to run with
+        // VerifySharedSpaces enabled to detect inconsistencies
+        String[] verifyExecArgs = {"-Xlog:cds", "-XX:+VerifySharedSpaces", "-cp", jarFile, "Hello"};
+
+        OutputAnalyzer output = TestCommon.execCommon(execArgs);
+
+        try {
+            TestCommon.checkExecReturn(output, 0, true, "Hello World");
+        } catch (Exception e) {
+            TestCommon.checkExecReturn(output, 1, true, matchMessages[0]);
+        }
+
+        // get current archive name
+        jsa = new File(TestCommon.getCurrentArchiveName());
+        if (!jsa.exists()) {
+            throw new IOException(jsa + " does not exist!");
+        }
+
+        setReadWritePermission(jsa);
+
+        // save as original untouched
+        orgJsaFile = new File(new File(currentDir), "appcds.jsa.bak");
+        copyFile(jsa, orgJsaFile);
+
+        // modify jsa header, test should fail
+        System.out.println("\n2. Corrupt header, should fail\n");
+        modifyJsaHeader(jsa);
+        output = TestCommon.execCommon(execArgs);
+        output.shouldContain("The shared archive file has a bad magic number");
+        output.shouldNotContain("Checksum verification failed");
+
+        copyFile(orgJsaFile, jsa);
+        // modify _jvm_ident and _paths_misc_info_size, test should fail
+        System.out.println("\n2a. Corrupt _jvm_ident and _paths_misc_info_size, should fail\n");
+        modifyJvmIdent();
+        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
+        output = TestCommon.execCommon(execArgs);
+        output.shouldContain("The shared archive file was created by a different version or build of HotSpot");
+        output.shouldNotContain("Checksum verification failed");
+
+        copyFile(orgJsaFile, jsa);
+        // modify _magic and _paths_misc_info_size, test should fail
+        System.out.println("\n2b. Corrupt _magic and _paths_misc_info_size, should fail\n");
+        modifyHeaderIntField(offset_magic, 0x00000000);
+        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
+        output = TestCommon.execCommon(execArgs);
+        output.shouldContain("The shared archive file has a bad magic number");
+        output.shouldNotContain("Checksum verification failed");
+
+        copyFile(orgJsaFile, jsa);
+        // modify _version and _paths_misc_info_size, test should fail
+        System.out.println("\n2c. Corrupt _version and _paths_misc_info_size, should fail\n");
+        modifyHeaderIntField(offset_version, 0x00000000);
+        modifyHeaderIntField(offset_paths_misc_info_size, Integer.MAX_VALUE);
+        output = TestCommon.execCommon(execArgs);
+        output.shouldContain("The shared archive file has the wrong version");
+        output.shouldNotContain("Checksum verification failed");
+
+        File newJsaFile = null;
+        // modify content
+        System.out.println("\n3. Corrupt Content, should fail\n");
+        for (int i=0; i<num_regions; i++) {
+            newJsaFile = new File(TestCommon.getNewArchiveName(shared_region_name[i]));
+            copyFile(orgJsaFile, newJsaFile);
+            TestCommon.setCurrentArchiveName(newJsaFile.toString());
+            if (modifyJsaContent(i, newJsaFile)) {
+                testAndCheck(verifyExecArgs);
+            }
+        }
+
+        // modify both header and content, test should fail
+        System.out.println("\n4. Corrupt Header and Content, should fail\n");
+        newJsaFile = new File(TestCommon.getNewArchiveName("header-and-content"));
+        copyFile(orgJsaFile, newJsaFile);
+        TestCommon.setCurrentArchiveName(newJsaFile.toString());
+        modifyJsaHeader(newJsaFile);
+        modifyJsaContent(0, newJsaFile);  // this will not be reached since failed on header change first
+        output = TestCommon.execCommon(execArgs);
+        output.shouldContain("The shared archive file has a bad magic number");
+        output.shouldNotContain("Checksum verification failed");
+
+        // delete bytes in data section
+        System.out.println("\n5. Delete bytes at beginning of data section, should fail\n");
+        copyFile(orgJsaFile, jsa, true);
+        TestCommon.setCurrentArchiveName(jsa.toString());
+        testAndCheck(verifyExecArgs);
+
+        // insert bytes in data section forward
+        System.out.println("\n6. Insert bytes at beginning of data section, should fail\n");
+        copyFile(orgJsaFile, jsa, false);
+        testAndCheck(verifyExecArgs);
+
+        System.out.println("\n7. modify Content in random areas, should fail\n");
+        newJsaFile = new File(TestCommon.getNewArchiveName("random-areas"));
+        copyFile(orgJsaFile, newJsaFile);
+        TestCommon.setCurrentArchiveName(newJsaFile.toString());
+        modifyJsaContentRandomly(newJsaFile);
+        testAndCheck(verifyExecArgs);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/SharedBaseAddress.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test SharedBaseAddress
+ * @summary Test variety of values for SharedBaseAddress, in AppCDS mode,
+ *          making sure VM handles normal values as well as edge values
+ *          w/o a crash.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run main/timeout=240 SharedBaseAddress
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SharedBaseAddress {
+
+    // shared base address test table
+    private static final String[] testTable = {
+        "1g", "8g", "64g","512g", "4t",
+        "32t", "128t", "0",
+        "1", "64k", "64M"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+
+        for (String testEntry : testTable) {
+            System.out.println("sharedBaseAddress = " + testEntry);
+
+            OutputAnalyzer dumpOutput = TestCommon.dump(
+                appJar, new String[] {"Hello"}, "-XX:SharedBaseAddress=" + testEntry);
+            TestCommon.checkDump(dumpOutput, "Loading classes to share");
+
+            OutputAnalyzer execOutput = TestCommon.exec(appJar, "Hello");
+            TestCommon.checkExec(execOutput, "Hello World");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/SharedPackages.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of package.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/PackageTest.java
+ * @compile test-classes/JimageClassPackage.java
+ * @run driver SharedPackages
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SharedPackages {
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("pkg", "p/PackageTest", "JimageClassPackage");
+
+        String appJar = TestCommon.getTestJar("pkg.jar");
+        TestCommon.testDump(appJar, TestCommon.list("p/PackageTest",
+                                                    "java/util/Dictionary",
+                                                    "sun/tools/javac/Main",
+                                                    "jdk/nio/zipfs/ZipInfo",
+                                                    "java/net/URL",
+                                                    "sun/rmi/rmic/Main",
+                                                    "com/sun/jndi/dns/DnsName"));
+
+        OutputAnalyzer output;
+
+        // Test 1: shared class from Jar on the -cp
+        output = TestCommon.exec(appJar, "-verbose:class", "p.PackageTest");
+        TestCommon.checkExec(output, "Expected package");
+        if (!TestCommon.isUnableToMap(output))
+            output.shouldContain("Package is not sealed");
+
+        // Test 2: shared classes from "modules" jimage
+        output = TestCommon.exec(appJar, "-verbose:class",
+                                 "JimageClassPackage");
+        if (!TestCommon.isUnableToMap(output)) {
+            output.shouldNotContain("Unexpected package");
+            output.shouldNotContain("Package is not sealed");
+        }
+
+        // Test 3: shared class from Jar on the -Xbootclasspath/a
+        TestCommon.dump(
+            appJar, TestCommon.list("p/PackageTest"), "-Xbootclasspath/a:" + appJar);
+        output = TestCommon.exec(appJar, "-Xbootclasspath/a:" + appJar, "p.PackageTest");
+        if (!TestCommon.isUnableToMap(output)) {
+            output.shouldNotContain("Unexpected package");
+            output.shouldContain("Package is not sealed");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/SignedJar.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of signed JAR.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver SignedJar
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+
+public class SignedJar {
+    public static void main(String[] args) throws Exception {
+        String unsignedJar = JarBuilder.getOrCreateHelloJar();
+        JarBuilder.signJar();
+
+        // Test class exists in signed JAR
+        String signedJar = TestCommon.getTestJar("signed_hello.jar");
+        OutputAnalyzer output;
+        output = TestCommon.dump(signedJar, TestCommon.list("Hello"));
+        TestCommon.checkDump(output, "Skipping Hello: Signed JAR");
+
+        // At runtime, the Hello class should be loaded from the jar file
+        // instead of from the shared archive since a class from a signed
+        // jar shouldn't be dumped into the archive.
+        output = TestCommon.exec(signedJar, "-verbose:class", "Hello");
+        String expectedOutput = ".class,load. Hello source: file:.*signed_hello.jar";
+
+        try {
+            output.shouldMatch(expectedOutput);
+        } catch (Exception e) {
+            TestCommon.checkCommonExecExceptions(output, e);
+        }
+
+        // Test class exists in both signed JAR and unsigned JAR
+        String jars = signedJar + System.getProperty("path.separator") + unsignedJar;
+        output = TestCommon.dump(jars, TestCommon.list("Hello"));
+        TestCommon.checkDump(output, "Skipping Hello: Signed JAR");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/SpecifySysLoaderProp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary If -Djava.system.class.loader=xxx is specified in command-line, disable archived non-system classes
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *      jdk.jartool/sun.tools.jar
+ * @compile test-classes/TestClassLoader.java
+ * @compile test-classes/ReportMyLoader.java
+ * @compile test-classes/TrySwitchMyLoader.java
+ * @run driver SpecifySysLoaderProp
+ */
+
+import java.io.*;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SpecifySysLoaderProp {
+
+  public static void main(String[] args) throws Exception {
+    JarBuilder.build("sysloader", "TestClassLoader", "ReportMyLoader", "TrySwitchMyLoader");
+
+    String jarFileName = "sysloader.jar";
+    String appJar = TestCommon.getTestJar(jarFileName);
+    TestCommon.testDump(appJar, TestCommon.list("ReportMyLoader"));
+    String warning = "VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified";
+
+
+    // (0) Baseline. Do not specify -Djava.system.class.loader
+    //     The test class should be loaded from archive
+    TestCommon.run(
+        "-verbose:class",
+        "-cp", appJar,
+        "ReportMyLoader")
+      .assertNormalExit("[class,load] ReportMyLoader source: shared objects file",
+                        "ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@");
+
+    // (1) Try to execute the archive with -Djava.system.class.loader=no.such.Klass,
+    //     it should fail
+    TestCommon.run(
+        "-cp", appJar,
+        "-Djava.system.class.loader=no.such.Klass",
+        "ReportMyLoader")
+      .assertAbnormalExit(output -> {
+          output.shouldContain(warning);
+          output.shouldContain("ClassNotFoundException: no.such.Klass");
+        });
+
+    // (2) Try to execute the archive with -Djava.system.class.loader=TestClassLoader,
+    //     it should run, but archived non-system classes should be disabled
+    TestCommon.run(
+        "-verbose:class",
+        "-cp", appJar,
+        "-Djava.system.class.loader=TestClassLoader",
+        "ReportMyLoader")
+      .assertNormalExit("ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@", //<-this is still printed because TestClassLoader simply delegates to Launcher$AppLoader, but ...
+             "TestClassLoader.called = true", //<-but this proves that TestClassLoader was indeed called.
+             "TestClassLoader: loadClass(\"ReportMyLoader\",") //<- this also proves that TestClassLoader was indeed called.
+      .assertNormalExit(output -> {
+        output.shouldMatch(".class,load. TestClassLoader source: file:");
+        output.shouldMatch(".class,load. ReportMyLoader source: file:.*" + jarFileName);
+        });
+
+    // (3) Try to change the java.system.class.loader programmatically after
+    //     the app's main method is executed. This should have no effect in terms of
+    //     changing or switching the actual system class loader that's already in use.
+    TestCommon.run(
+        "-verbose:class",
+        "-cp", appJar,
+        "TrySwitchMyLoader")
+      .assertNormalExit("[class,load] ReportMyLoader source: shared objects file",
+             "TrySwitchMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@",
+             "ReportMyLoader's loader = jdk.internal.loader.ClassLoaders$AppClassLoader@",
+             "TestClassLoader.called = false");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/TestCommon.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,665 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import jdk.test.lib.Utils;
+import jdk.test.lib.BuildHelper;
+import jdk.test.lib.JDKToolFinder;
+import jdk.test.lib.Platform;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSTestUtils.Result;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+import jtreg.SkippedException;
+import cdsutils.DynamicDumpHelper;
+
+
+/**
+ * This is a test utility class for common AppCDS test functionality.
+ *
+ * Various methods use (String ...) for passing VM options. Note that the order
+ * of the VM options are important in certain cases. Many methods take arguments like
+ *
+ *    (String prefix[], String suffix[], String... opts)
+ *
+ * Note that the order of the VM options is:
+ *
+ *    prefix + opts + suffix
+ */
+public class TestCommon extends CDSTestUtils {
+    private static final String JSA_FILE_PREFIX = System.getProperty("user.dir") +
+        File.separator;
+
+    private static final SimpleDateFormat timeStampFormat =
+        new SimpleDateFormat("HH'h'mm'm'ss's'SSS");
+
+    private static final String timeoutFactor =
+        System.getProperty("test.timeout.factor", "1.0");
+
+    private static String currentArchiveName;
+
+    // Call this method to start new archive with new unique name
+    public static void startNewArchiveName() {
+        deletePriorArchives();
+        currentArchiveName = getNewArchiveName();
+    }
+
+    // Call this method to get current archive name
+    public static String getCurrentArchiveName() {
+        return currentArchiveName;
+    }
+
+    public static void setCurrentArchiveName(String archiveName) {
+        currentArchiveName = archiveName;
+    }
+
+    public static String getNewArchiveName() {
+        return getNewArchiveName(null);
+    }
+
+    public static String getNewArchiveName(String stem) {
+        if (stem == null) {
+            stem = "appcds";
+        }
+        return JSA_FILE_PREFIX + stem + "-" +
+            timeStampFormat.format(new Date()) + ".jsa";
+    }
+
+    // Attempt to clean old archives to preserve space
+    // Archives are large artifacts (20Mb or more), and much larger than
+    // most other artifacts created in jtreg testing.
+    // Therefore it is a good idea to clean the old archives when they are not needed.
+    // In most cases the deletion attempt will succeed; on rare occasion the
+    // delete operation will fail since the system or VM process still holds a handle
+    // to the file; in such cases the File.delete() operation will silently fail, w/o
+    // throwing an exception, thus allowing testing to continue.
+    public static void deletePriorArchives() {
+        File dir = new File(System.getProperty("user.dir"));
+        String files[] = dir.list();
+        for (String name : files) {
+            if (name.startsWith("appcds-") && name.endsWith(".jsa")) {
+                if (!(new File(dir, name)).delete())
+                    System.out.println("deletePriorArchives(): delete failed for file " + name);
+            }
+        }
+    }
+
+    // Create AppCDS archive using most common args - convenience method
+    // Legacy name preserved for compatibility
+    public static OutputAnalyzer dump(String appJar, String classList[],
+                                               String... suffix) throws Exception {
+        return createArchive(appJar, classList, suffix);
+    }
+
+    public static OutputAnalyzer dump(String appJarDir, String appJar, String classList[],
+                                               String... suffix) throws Exception {
+        return createArchive(appJarDir, appJar, classList, suffix);
+    }
+
+    // Create AppCDS archive using most common args - convenience method
+    public static OutputAnalyzer createArchive(String appJar, String classList[],
+                                               String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
+        opts.setClassList(classList);
+        opts.addSuffix(suffix);
+        return createArchive(opts);
+    }
+
+    public static OutputAnalyzer createArchive(String appJarDir, String appJar, String classList[],
+                                               String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
+        opts.setAppJarDir(appJarDir);
+        opts.setClassList(classList);
+        opts.addSuffix(suffix);
+        return createArchive(opts);
+    }
+
+    // Simulate -Xshare:dump with -XX:ArchiveClassesAtExit. See comments around patchJarForDynamicDump()
+    private static final Class tmp = DynamicDumpHelper.class;
+
+    // Create AppCDS archive using appcds options
+    public static OutputAnalyzer createArchive(AppCDSOptions opts)
+        throws Exception {
+        ArrayList<String> cmd = new ArrayList<String>();
+        startNewArchiveName();
+
+        for (String p : opts.prefix) cmd.add(p);
+
+        if (opts.appJar != null) {
+            cmd.add("-cp");
+            cmd.add(opts.appJar);
+            File jf = new File(opts.appJar);
+            if (DYNAMIC_DUMP && !jf.isDirectory()) {
+                patchJarForDynamicDump(opts.appJar);
+            }
+        } else {
+            cmd.add("-Djava.class.path=");
+        }
+
+        if (opts.archiveName == null) {
+            opts.archiveName = getCurrentArchiveName();
+        }
+
+        if (DYNAMIC_DUMP) {
+            cmd.add("-Xshare:on");
+            cmd.add("-XX:ArchiveClassesAtExit=" + opts.archiveName);
+
+            cmd.add("-Xlog:cds");
+            cmd.add("-Xlog:cds+dynamic");
+            boolean mainModuleSpecified = false;
+            boolean patchModuleSpecified = false;
+            for (String s : opts.suffix) {
+                if (s.length() == 0) {
+                    continue;
+                }
+                if (s.equals("-m")) {
+                    mainModuleSpecified = true;
+                }
+                if (s.startsWith("--patch-module=")) {
+                    patchModuleSpecified = true;
+                }
+                cmd.add(s);
+            }
+
+            if (opts.appJar != null) {
+                // classlist is supported only when we have a Jar file to patch (to insert
+                // cdsutils.DynamicDumpHelper)
+                if (opts.classList == null) {
+                    throw new RuntimeException("test.dynamic.dump requires classList file");
+                }
+
+                if (!mainModuleSpecified && !patchModuleSpecified) {
+                    cmd.add("cdsutils.DynamicDumpHelper");
+                    File classListFile = makeClassList(opts.classList);
+                    cmd.add(classListFile.getPath());
+                }
+            } else {
+                if (!mainModuleSpecified && !patchModuleSpecified) {
+                    // If you have an empty classpath, you cannot specify a classlist!
+                    if (opts.classList != null && opts.classList.length > 0) {
+                        throw new RuntimeException("test.dynamic.dump not supported empty classpath with non-empty classlist");
+                    }
+                    cmd.add("-version");
+                }
+            }
+        } else {
+            // static dump
+            cmd.add("-Xshare:dump");
+            cmd.add("-XX:SharedArchiveFile=" + opts.archiveName);
+
+            if (opts.classList != null) {
+                File classListFile = makeClassList(opts.classList);
+                cmd.add("-XX:ExtraSharedClassListFile=" + classListFile.getPath());
+            }
+            for (String s : opts.suffix) {
+                cmd.add(s);
+            }
+        }
+
+        String[] cmdLine = cmd.toArray(new String[cmd.size()]);
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
+        if (opts.appJarDir != null) {
+            pb.directory(new File(opts.appJarDir));
+        }
+        return executeAndLog(pb, "dump");
+    }
+
+    // This allows you to run the AppCDS tests with JFR enabled at runtime (though not at
+    // dump time, as that's uncommon for typical AppCDS users).
+    //
+    // To run in this special mode, add the following to your jtreg command-line
+    //    -Dtest.cds.run.with.jfr=true
+    //
+    // Some AppCDS tests are not compatible with this mode. See the group
+    // hotspot_appcds_with_jfr in ../../TEST.ROOT for details.
+    private static final boolean RUN_WITH_JFR = Boolean.getBoolean("test.cds.run.with.jfr");
+    // This method simulates -Xshare:dump with -XX:ArchiveClassesAtExit. This way, we
+    // can re-use many tests (outside of the ./dynamicArchive directory) for testing
+    // general features of JDK-8215311 (JEP 350: Dynamic CDS Archives).
+    //
+    // We insert the cdsutils/DynamicDumpHelper.class into the first Jar file in
+    // the classpath. We use this class to load all the classes specified in the classlist.
+    //
+    // There's no need to change the run-time command-line: in this special mode, two
+    // archives are involved. The command-line specifies only the top archive. However,
+    // the location of the base archive is recorded in the top archive, so it can be
+    // determined by the JVM at runtime start-up.
+    //
+    // To run in this special mode, specify the following in your jtreg command-line
+    //    -Dtest.dynamic.cds.archive=true
+    //
+    // Note that some tests are not compatible with this special mode, including
+    //    + Tests in ./dynamicArchive: these tests are specifically written for
+    //      dynamic archive, and do not use TestCommon.createArchive(), which works
+    //      together with patchJarForDynamicDump().
+    //    + Tests related to cached objects and shared strings: dynamic dumping
+    //      does not support these.
+    //    + Custom loader tests: DynamicDumpHelper doesn't support the required
+    //      classlist syntax. (FIXME).
+    //    + Extra symbols and extra strings.
+    // See the hotspot_appcds_dynamic in ../../TEST.ROOT for details.
+    //
+    // To run all tests that are compatible with this mode:
+    //    cd test/hotspot/jtreg
+    //    jtreg -Dtest.dynamic.cds.archive=true :hotspot_appcds_dynamic
+    //
+    private static void patchJarForDynamicDump(String cp) throws Exception {
+        System.out.println("patchJarForDynamicDump: classpath = " + cp);
+        String firstJar = cp;
+        int n = firstJar.indexOf(File.pathSeparator);
+        if (n > 0) {
+            firstJar = firstJar.substring(0, n);
+        }
+        String classDir = System.getProperty("test.classes");
+        String expected1 = classDir + File.separator;
+        String expected2 = System.getProperty("user.dir") + File.separator;
+
+        if (!firstJar.startsWith(expected1) && !firstJar.startsWith(expected2)) {
+            throw new RuntimeException("FIXME: jar file not at a supported location ('"
+                                       + expected1 + "', or '" + expected2 + "'): " + firstJar);
+        }
+
+        String replaceJar = firstJar + ".tmp";
+        String patchClass = "cdsutils/DynamicDumpHelper.class";
+        ZipFile zipFile = new ZipFile(firstJar);
+        byte[] buf = new byte[1024];
+        int len;
+        if (zipFile.getEntry(patchClass) == null) {
+            FileOutputStream fout = new FileOutputStream(replaceJar);
+            final ZipOutputStream zos = new ZipOutputStream(fout);
+
+            zos.putNextEntry(new ZipEntry(patchClass));
+            InputStream is = new FileInputStream(classDir + File.separator + patchClass);
+            while ((len = (is.read(buf))) > 0) {
+                zos.write(buf, 0, len);
+            }
+            zos.closeEntry();
+            is.close();
+
+            for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) {
+                ZipEntry entryIn = (ZipEntry) e.nextElement();
+                zos.putNextEntry(entryIn);
+                is = zipFile.getInputStream(entryIn);
+                while ((len = is.read(buf)) > 0) {
+                    zos.write(buf, 0, len);
+                }
+                zos.closeEntry();
+                is.close();
+            }
+
+            zos.close();
+            fout.close();
+            zipFile.close();
+
+            File oldFile = new File(firstJar);
+            File newFile = new File(replaceJar);
+            oldFile.delete();
+            newFile.renameTo(oldFile);
+            System.out.println("firstJar = " + firstJar + " Modified");
+        } else {
+            System.out.println("firstJar = " + firstJar);
+        }
+    }
+
+    // Execute JVM using AppCDS archive with specified AppCDSOptions
+    public static OutputAnalyzer runWithArchive(AppCDSOptions opts)
+        throws Exception {
+
+        ArrayList<String> cmd = new ArrayList<String>();
+
+        for (String p : opts.prefix) cmd.add(p);
+
+        cmd.add("-Xshare:" + opts.xShareMode);
+        cmd.add("-showversion");
+        cmd.add("-XX:SharedArchiveFile=" + getCurrentArchiveName());
+        cmd.add("-Dtest.timeout.factor=" + timeoutFactor);
+
+        if (opts.appJar != null) {
+            cmd.add("-cp");
+            cmd.add(opts.appJar);
+        }
+
+        for (String s : opts.suffix) cmd.add(s);
+
+        if (RUN_WITH_JFR) {
+            boolean usesJFR = false;
+            for (String s : cmd) {
+                if (s.startsWith("-XX:StartFlightRecording=") || s.startsWith("-XX:FlightRecorderOptions")) {
+                    System.out.println("JFR option might have been specified. Don't interfere: " + s);
+                    usesJFR = true;
+                    break;
+                }
+            }
+            if (!usesJFR) {
+                System.out.println("JFR option not specified. Enabling JFR ...");
+                cmd.add(0, "-XX:StartFlightRecording=dumponexit=true");
+                System.out.println(cmd);
+            }
+        }
+
+        String[] cmdLine = cmd.toArray(new String[cmd.size()]);
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
+        if (opts.appJarDir != null) {
+            pb.directory(new File(opts.appJarDir));
+        }
+        return executeAndLog(pb, "exec");
+    }
+
+
+    public static OutputAnalyzer execCommon(String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions());
+        opts.addSuffix(suffix);
+        return runWithArchive(opts);
+    }
+
+    // This is the new API for running a Java process with CDS enabled.
+    // See comments in the CDSTestUtils.Result class for how to use this method.
+    public static Result run(String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions());
+        opts.addSuffix(suffix);
+        return new Result(opts, runWithArchive(opts));
+    }
+
+    public static Result runWithRelativePath(String jarDir, String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions());
+        opts.setAppJarDir(jarDir);
+        opts.addSuffix(suffix);
+        return new Result(opts, runWithArchive(opts));
+    }
+
+    public static OutputAnalyzer exec(String appJar, String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
+        opts.addSuffix(suffix);
+        return runWithArchive(opts);
+    }
+
+    public static Result runWithModules(String prefix[], String upgrademodulepath, String modulepath,
+                                            String mid, String... testClassArgs) throws Exception {
+        AppCDSOptions opts = makeModuleOptions(prefix, upgrademodulepath, modulepath,
+                                               mid, testClassArgs);
+        return new Result(opts, runWithArchive(opts));
+    }
+
+    public static OutputAnalyzer execAuto(String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions());
+        opts.addSuffix(suffix).setXShareMode("auto");
+        return runWithArchive(opts);
+    }
+
+    public static OutputAnalyzer execOff(String... suffix) throws Exception {
+        AppCDSOptions opts = (new AppCDSOptions());
+        opts.addSuffix(suffix).setXShareMode("off");
+        return runWithArchive(opts);
+    }
+
+
+    private static AppCDSOptions makeModuleOptions(String prefix[], String upgrademodulepath, String modulepath,
+                                            String mid, String testClassArgs[]) {
+        AppCDSOptions opts = (new AppCDSOptions());
+
+        opts.addPrefix(prefix);
+        if (upgrademodulepath == null) {
+            opts.addSuffix("-p", modulepath, "-m", mid);
+        } else {
+            opts.addSuffix("--upgrade-module-path", upgrademodulepath,
+                           "-p", modulepath, "-m", mid);
+        }
+        opts.addSuffix(testClassArgs);
+        return opts;
+    }
+
+    public static OutputAnalyzer execModule(String prefix[], String upgrademodulepath, String modulepath,
+                                            String mid, String... testClassArgs)
+        throws Exception {
+        AppCDSOptions opts = makeModuleOptions(prefix, upgrademodulepath, modulepath,
+                                               mid, testClassArgs);
+        return runWithArchive(opts);
+    }
+
+    // A common operation: dump, then check results
+    public static OutputAnalyzer testDump(String appJar, String classList[],
+                                          String... suffix) throws Exception {
+        OutputAnalyzer output = dump(appJar, classList, suffix);
+        if (DYNAMIC_DUMP) {
+            if (isUnableToMap(output)) {
+                throw new SkippedException(UnableToMapMsg);
+            }
+            output.shouldContain("Written dynamic archive");
+        } else {
+            output.shouldContain("Loading classes to share");
+        }
+        output.shouldHaveExitValue(0);
+        return output;
+    }
+
+    public static OutputAnalyzer testDump(String appJarDir, String appJar, String classList[],
+                                          String... suffix) throws Exception {
+        OutputAnalyzer output = dump(appJarDir, appJar, classList, suffix);
+        if (DYNAMIC_DUMP) {
+            if (isUnableToMap(output)) {
+                throw new SkippedException(UnableToMapMsg);
+            }
+            output.shouldContain("Written dynamic archive");
+        } else {
+            output.shouldContain("Loading classes to share");
+        }
+        output.shouldHaveExitValue(0);
+        return output;
+    }
+
+    /**
+     * Simple test -- dump and execute appJar with the given classList in classlist.
+     */
+    public static OutputAnalyzer test(String appJar, String classList[], String... args)
+        throws Exception {
+        testDump(appJar, classList);
+
+        OutputAnalyzer output = exec(appJar, args);
+        return checkExec(output);
+    }
+
+
+    public static OutputAnalyzer checkExecReturn(OutputAnalyzer output, int ret,
+                           boolean checkContain, String... matches) throws Exception {
+        try {
+            for (String s : matches) {
+                if (checkContain) {
+                    output.shouldContain(s);
+                } else {
+                    output.shouldNotContain(s);
+                }
+            }
+            output.shouldHaveExitValue(ret);
+        } catch (Exception e) {
+            checkCommonExecExceptions(output, e);
+        }
+
+        return output;
+    }
+
+    // Convenience concatenation utils
+    public static String[] list(String ...args) {
+        return args;
+    }
+
+
+    public static String[] list(String arg, int count) {
+        ArrayList<String> stringList = new ArrayList<String>();
+        for (int i = 0; i < count; i++) {
+            stringList.add(arg);
+        }
+
+        String outputArray[] = stringList.toArray(new String[stringList.size()]);
+        return outputArray;
+    }
+
+
+    public static String[] concat(String... args) {
+        return list(args);
+    }
+
+
+    public static String[] concat(String prefix[], String... extra) {
+        ArrayList<String> list = new ArrayList<String>();
+        for (String s : prefix) {
+            list.add(s);
+        }
+        for (String s : extra) {
+            list.add(s);
+        }
+
+        return list.toArray(new String[list.size()]);
+    }
+
+    public static String[] concat(String prefix, String[] extra) {
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(prefix);
+        for (String s : extra) {
+            list.add(s);
+        }
+
+        return list.toArray(new String[list.size()]);
+    }
+
+    // ===================== Concatenate paths
+    public static String concatPaths(String... paths) {
+        String prefix = "";
+        String s = "";
+        for (String p : paths) {
+            s += prefix;
+            s += p;
+            prefix = File.pathSeparator;
+        }
+        return s;
+    }
+
+
+    public static String getTestJar(String jar) {
+        File jarFile = CDSTestUtils.getTestArtifact(jar, true);
+        if (!jarFile.isFile()) {
+            throw new RuntimeException("Not a regular file: " + jarFile.getPath());
+        }
+        return jarFile.getPath();
+    }
+
+
+    public static String getTestDir(String d) {
+        File dirFile = CDSTestUtils.getTestArtifact(d, true);
+        if (!dirFile.isDirectory()) {
+            throw new RuntimeException("Not a directory: " + dirFile.getPath());
+        }
+        return dirFile.getPath();
+    }
+
+    public static boolean checkOutputStrings(String outputString1,
+                                             String outputString2,
+                                             String split_regex) {
+        String[] sa1 = outputString1.split(split_regex);
+        String[] sa2 = outputString2.split(split_regex);
+        Arrays.sort(sa1);
+        Arrays.sort(sa2);
+
+        int i = 0;
+        for (String s : sa1) {
+            if (!s.equals(sa2[i])) {
+                throw new RuntimeException(s + " is different from " + sa2[i]);
+            }
+            i ++;
+        }
+        return true;
+    }
+
+    static Pattern pattern;
+
+    static void findAllClasses(ArrayList<String> list) throws Throwable {
+        // Find all the classes in the jrt file system
+        pattern = Pattern.compile("/modules/[a-z.]*[a-z]+/([^-]*)[.]class");
+        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        Path base = fs.getPath("/modules/");
+        findAllClassesAtPath(base, list);
+    }
+
+    private static void findAllClassesAtPath(Path p, ArrayList<String> list) throws Throwable {
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
+            for (Path entry: stream) {
+                Matcher matcher = pattern.matcher(entry.toString());
+                if (matcher.find()) {
+                    String className = matcher.group(1);
+                    list.add(className);
+                }
+                try {
+                    findAllClassesAtPath(entry, list);
+                } catch (Throwable t) {}
+            }
+        }
+    }
+
+    public static String composeRelPath(String appJar) {
+         int idx = appJar.lastIndexOf(File.separator);
+         String jarName = appJar.substring(idx + 1);
+         String jarDir = appJar.substring(0, idx);
+         String lastDir = jarDir.substring(jarDir.lastIndexOf(File.separator));
+         String relPath = jarDir + File.separator + ".." + File.separator + lastDir;
+         String newJar = relPath + File.separator + jarName;
+         return newJar;
+    }
+
+
+    public static File createSymLink(String appJar) throws Exception {
+         int idx = appJar.lastIndexOf(File.separator);
+         String jarName = appJar.substring(idx + 1);
+         String jarDir = appJar.substring(0, idx);
+         File origJar = new File(jarDir, jarName);
+         String linkedJarName = "linked_" + jarName;
+         File linkedJar = null;
+         if (!Platform.isWindows()) {
+             linkedJar = new File(jarDir, linkedJarName);
+             if (linkedJar.exists()) {
+                 linkedJar.delete();
+             }
+             Files.createSymbolicLink(linkedJar.toPath(), origJar.toPath());
+         }
+         return linkedJar;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/TestWithProfiler.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @bug 8145221
+ * @summary After creating an AppCDS archive, run the test with the JFR profiler
+ *          enabled, and keep calling a method in the archive in a tight loop.
+ *          This is to test the safe handling of trampoline functions by the
+ *          profiler.
+ * @requires vm.hasJFR & vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/MyThread.java
+ * @compile test-classes/TestWithProfilerHelper.java
+ * @run driver TestWithProfiler
+ */
+
+import jdk.test.lib.BuildHelper;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class TestWithProfiler {
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("myThread", "MyThread", "TestWithProfilerHelper");
+        String appJar = TestCommon.getTestJar("myThread.jar");
+        OutputAnalyzer output = TestCommon.dump(appJar,
+            TestCommon.list("MyThread", "TestWithProfilerHelper"));
+        TestCommon.checkDump(output);
+        output = TestCommon.exec(appJar,
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-Xint",
+            "-XX:+FlightRecorder",
+            "-XX:StartFlightRecording=duration=15s,filename=myrecording.jfr,settings=profile,dumponexit=true",
+            "TestWithProfilerHelper");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/TraceLongClasspath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary ensure -XX:+TraceClassPaths showing entire expecting app classpath
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @compile test-classes/Super.java
+ * @run driver TraceLongClasspath
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class TraceLongClasspath {
+
+    final static String ps = File.pathSeparator;
+
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String dummyJar = JarBuilder.build("dummy", "Super");
+
+        String longClassPath =
+            dummyJar + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/user-patch.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/abc-startup.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/features/com.foobar.db.jdbc7-dms.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/jdk/lib/tools.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/server/lib/someapps.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/../foobar_common/modules/net.xy.batcontrib_1.1.0.0_1-0b3/lib/bat-contrib.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/modules/features/foobar.aas.common.kkkkkkkkkkk.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.common.adapters_11.1.1/foobar.abc.common.adapters.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.plane.adapter_12.1.3/foobar.plane.adapter.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/lib/ccccccccar-common.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/communications/modules/config.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/communications/modules/userprefs-config.jar" + ps +
+            "/scratch/xxxx/yyyy/XXXXXX/aaaaaaaa/xxxxxxx/xxxxxxxx.us.foobar.com/CommonDomain/config/abc-infra" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/qqqqqq-all-1.6.5.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/foobar.abc.thread.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/thread-rrrrrrr-ext-aas.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.adapter_11.1.1/foobar.abc.adapter.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.ccc_11.1.1/foobar.abc.ccc.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-configuration.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-lang.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/bbb/lib/commons-logging.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.wccore/foobar-ppppppp-api.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.ooo_12.1.3/ooo-manifest.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/internal/features/rrr_aaxyxx_foobar.rrr.aas.classpath.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.thread_11.1.1/rrrrrrrr-api.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/commons-xxx-1.1.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/abc/abc/modules/foobar.abc.mgmt_11.1.1/abc-infra-mgmt.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/eee/archives/eee-eee.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/marchnet.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/marchclient.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/aaserver/common/march/lib/march.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/jlib/iiiloader.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/xxxxxxyyzzzzz/classes-xxxxxxyyzzzzz.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_core.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_codec.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/wwcontent/cde/iii/components/mmmmmmm/lib/abc_imageio.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/jdk/lib/tools.jar" + ps +
+            "/scratch/xxxx/yyyy/ZZZZZZ/aaaaaaaaaa/xx/foobar_common/modules/foobar.ooo_12.1.3/ooo-manifest.jar";
+
+        String myCP = longClassPath + ps + appJar;
+        // Dump an archive with a specified JAR file in -classpath
+        TestCommon.testDump(myCP, TestCommon.list("Hello"));
+
+        // Then try to execute the archive with a different classpath and with -XX:+TraceClassPaths.
+        // The diagnosis "expecting" app classpath trace should show the entire classpath.
+        TestCommon.run(
+            "-XX:+TraceClassPaths", "-Xlog:cds",
+            "-cp", appJar,
+            "Hello")
+            .assertAbnormalExit(output -> {
+                output.shouldContain("Unable to use shared archive");
+                output.shouldContain("shared class paths mismatch");
+                // the "expecting" app classpath from -XX:+TraceClassPaths should not
+                // be truncated
+                output.shouldContain(myCP);
+              });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/UnusedCPDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8209385
+ * @summary non-empty dir in -cp should be fine during dump time if only classes
+ *          from the system modules are being loaded even though some are
+ *          defined to the PlatformClassLoader and AppClassLoader.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run main/othervm -Dtest.cds.copy.child.stdout=false UnusedCPDuringDump
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class UnusedCPDuringDump {
+
+    public static void main(String[] args) throws Exception {
+        File dir = new File(System.getProperty("user.dir"));
+        File emptydir = new File(dir, "emptydir");
+        emptydir.mkdir();
+        String appJar = JarBuilder.getOrCreateHelloJar();
+
+        OutputAnalyzer output = TestCommon.dump(dir.getPath(),
+            TestCommon.list("sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo",
+                            "com/sun/tools/sjavac/client/ClientMain"),
+                            "-Xlog:class+path=info,class+load=debug");
+        TestCommon.checkDump(output,
+                             "[class,load] sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo",
+                             "for instance a 'jdk/internal/loader/ClassLoaders$PlatformClassLoader'",
+                             "[class,load] com.sun.tools.sjavac.client.ClientMain",
+                             "for instance a 'jdk/internal/loader/ClassLoaders$AppClassLoader'");
+
+        String jsaOpt = "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName();
+        TestCommon.run("-cp", appJar, jsaOpt, "-Xlog:class+path=info,class+load=debug", "Hello")
+            .assertNormalExit("Hello World");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/UseAppCDS_Test.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+public class UseAppCDS_Test {
+    // args are from UseAppCDS:
+    // args[0] = TEST_OUT
+    public static void main(String[] args) {
+        System.out.println(args[0]);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/VerifierTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,409 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.nio.file.Files;
+
+import java.util.*;
+import jdk.internal.org.objectweb.asm.*;
+
+/**
+ * The testsets contained in this class are executed by ./VerifierTest_*.java, so that
+ * individual testsets can be executed in parallel to shorten the total time required.
+ */
+public class VerifierTest implements Opcodes {
+    // Test verification settings for dumping & runtime
+    static final String VFY_ALL = "-Xverify:all";
+    static final String VFY_REMOTE = "-Xverify:remote"; // default
+    static final String VFY_NONE = "-XX:+UnlockDiagnosticVMOptions, -XX:-BytecodeVerificationRemote, -XX:-BytecodeVerificationLocal";
+
+    static final String ERR =
+        "ERROR: class VerifierTestC was loaded unexpectedly";
+    static final String MAP_FAIL =
+        "shared archive file was created with less restrictive verification setting";
+    static final String VFY_ERR = "java.lang.VerifyError";
+    static final String PASS_RESULT = "Hi, how are you?";
+    static final String VFY_INFO_MESSAGE =
+        "All non-system classes will be verified (-Xverify:remote) during CDS dump time.";
+    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
+
+    enum Testset1Part {
+        A, B
+    }
+
+    public static void main(String[] args) throws Exception {
+        String subCaseId = args[0];
+        String jarName_verifier_test_tmp = "verifier_test_tmp" + "_" + subCaseId;
+        String jarName_verifier_test = "verifier_test" + "_" + subCaseId;
+        String jarName_greet = "greet" + "_" + subCaseId;
+        String jarName_hi = "hi" + "_" + subCaseId;
+
+
+        JarBuilder.build(jarName_verifier_test_tmp, "VerifierTest0", "VerifierTestA",
+                         "VerifierTestB", "VerifierTestC", "VerifierTestD", "VerifierTestE",
+                         "UnverifiableBase", "UnverifiableIntf", "UnverifiableIntfSub");
+        JarBuilder.build(jarName_greet, "Greet");
+        JarBuilder.build(jarName_hi, "Hi", "Hi$MyClass");
+
+        File dir = new File(System.getProperty("test.classes", "."));
+        File jarSrcFile = new File(dir, jarName_verifier_test_tmp + ".jar");
+        File jarFile = new File(dir, jarName_verifier_test + ".jar");
+        String jar = jarFile.getPath();
+
+        if (!jarFile.exists() || jarFile.lastModified() < jarSrcFile.lastModified()) {
+            createTestJarFile(jarSrcFile, jarFile);
+        } else {
+            System.out.println("Already up-to-date: " + jarFile);
+        }
+
+        String noAppClasses[] = TestCommon.list("");
+        String appClasses[] = TestCommon.list("UnverifiableBase",
+                                              "UnverifiableIntf",
+                                              "UnverifiableIntfSub",
+                                              "VerifierTestA",
+                                              "VerifierTestB",
+                                              "VerifierTestC",
+                                              "VerifierTestD",
+                                              "VerifierTestE",
+                                              "VerifierTest0");
+
+
+        switch (subCaseId) {
+        case "0":         testset_0(jar, noAppClasses, appClasses);                 return;
+        case "1A":        testset_1(jar, noAppClasses, appClasses, Testset1Part.A); return;
+        case "1B":        testset_1(jar, noAppClasses, appClasses, Testset1Part.B); return;
+        case "2":         testset_2(jarName_greet, jarName_hi);                   return;
+        default:
+            throw new RuntimeException("Unknown option: " + subCaseId);
+        }
+    }
+
+    static void testset_0(String jar, String[] noAppClasses, String[] appClasses) throws Exception {
+        // Unverifiable classes won't be included in the CDS archive.
+        // Dumping should not fail.
+        OutputAnalyzer output = TestCommon.dump(jar, appClasses);
+        output.shouldHaveExitValue(0);
+        if (output.getStdout().contains("Loading clases to share")) {
+            // last entry in appClasses[] is a verifiable class
+            for (int i = 0; i < (appClasses.length - 1); i++) {
+                output.shouldContain("Verification failed for " + appClasses[i]);
+                output.shouldContain("Removed error class: " + appClasses[i]);
+            }
+        }
+    }
+
+    static void checkRuntimeOutput(OutputAnalyzer output, String expected) throws Exception {
+        output.shouldContain(expected);
+        if (expected.equals(PASS_RESULT) ||
+            expected.equals(VFY_ERR)) {
+            output.shouldHaveExitValue(0);
+        } else {
+            output.shouldNotHaveExitValue(0);
+        }
+    }
+
+    static void testset_1(String jar, String[] noAppClasses, String[] appClasses, Testset1Part part)
+        throws Exception
+    {
+        String config[][] = {
+            // {dump_list, dumptime_verification_setting,
+            //  runtime_verification_setting, expected_output_str},
+
+            // Dump app/ext with -Xverify:remote
+            {"app",   VFY_REMOTE, VFY_REMOTE, VFY_ERR},
+            {"app",   VFY_REMOTE, VFY_ALL,    MAP_FAIL},
+            {"app",   VFY_REMOTE, VFY_NONE,   ERR },
+            // Dump app/ext with -Xverify:all
+            {"app",   VFY_ALL,    VFY_REMOTE, VFY_ERR },
+            {"app",   VFY_ALL,    VFY_ALL,    VFY_ERR },
+            {"app",   VFY_ALL,    VFY_NONE,   ERR },
+            // Dump app/ext with verifier turned off
+            {"app",   VFY_NONE,   VFY_REMOTE, VFY_ERR},
+            {"app",   VFY_NONE,   VFY_ALL,    MAP_FAIL},
+            {"app",   VFY_NONE,   VFY_NONE,   ERR },
+            // Dump sys only with -Xverify:remote
+            {"noApp", VFY_REMOTE, VFY_REMOTE, VFY_ERR},
+            {"noApp", VFY_REMOTE, VFY_ALL,    VFY_ERR},
+            {"noApp", VFY_REMOTE, VFY_NONE,   ERR},
+            // Dump sys only with -Xverify:all
+            {"noApp", VFY_ALL, VFY_REMOTE,    VFY_ERR},
+            {"noApp", VFY_ALL, VFY_ALL,       VFY_ERR},
+            {"noApp", VFY_ALL, VFY_NONE,      ERR},
+            // Dump sys only with verifier turned off
+            {"noApp", VFY_NONE, VFY_REMOTE,   VFY_ERR},
+            {"noApp", VFY_NONE, VFY_ALL,      VFY_ERR},
+            {"noApp", VFY_NONE, VFY_NONE,     ERR},
+        };
+
+        int loop_start, loop_stop;
+
+        // Further break down testset_1 into two parts (to be invoked from VerifierTest_1A.java
+        // and VerifierTest_1B.java) to improve parallel test execution time.
+        switch (part) {
+        case A:
+            loop_start = 0;
+            loop_stop  = 9;
+            break;
+        case B:
+        default:
+            assert part == Testset1Part.B;
+            loop_start = 9;
+            loop_stop  = config.length;
+            break;
+        }
+
+        String prev_dump_setting = "";
+        for (int i = loop_start; i < loop_stop; i ++) {
+            String dump_list[] = config[i][0].equals("app") ? appClasses :
+                noAppClasses;
+            String dump_setting = config[i][1];
+            String runtime_setting = config[i][2];
+            String expected_output_str = config[i][3];
+            System.out.println("Test case [" + i + "]: dumping " + config[i][0] +
+                               " with " + dump_setting +
+                               ", run with " + runtime_setting);
+            if (!dump_setting.equals(prev_dump_setting)) {
+                String dump_arg1;
+                String dump_arg2;
+                String dump_arg3;
+                // Need to break this into two separate arguments.
+                if (dump_setting.equals(VFY_NONE)) {
+                    dump_arg1 = "-XX:+UnlockDiagnosticVMOptions";
+                    dump_arg2 = "-XX:-BytecodeVerificationRemote";
+                    dump_arg3 = "-XX:-BytecodeVerificationLocal";
+                } else {
+                    // Redundant args should be harmless.
+                    dump_arg1 = dump_arg2 = dump_arg3 = dump_setting;
+                }
+
+                OutputAnalyzer dumpOutput = TestCommon.dump(
+                                                            jar, dump_list, dump_arg1, dump_arg2,
+                                                            dump_arg3, CDS_LOGGING,
+                                                            // FIXME: the following options are for working around a GC
+                                                            // issue - assert failure when dumping archive with the -Xverify:all
+                                                            "-Xms256m",
+                                                            "-Xmx256m");
+                if (dump_setting.equals(VFY_NONE) &&
+                    runtime_setting.equals(VFY_REMOTE)) {
+                    dumpOutput.shouldContain(VFY_INFO_MESSAGE);
+                }
+            }
+            String runtime_arg1;
+            String runtime_arg2;
+            String runtime_arg3;
+            if (runtime_setting.equals(VFY_NONE)) {
+                runtime_arg1 = "-XX:+UnlockDiagnosticVMOptions";
+                runtime_arg2 = "-XX:-BytecodeVerificationRemote";
+                runtime_arg3 = "-XX:-BytecodeVerificationLocal";
+            } else {
+                // Redundant args should be harmless.
+                runtime_arg1 = runtime_arg2 = runtime_arg3 = runtime_setting;
+            }
+            TestCommon.run("-cp", jar,
+                           runtime_arg1, runtime_arg2, runtime_arg3,
+                           "VerifierTest0")
+                .ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
+            prev_dump_setting = dump_setting;
+        }
+    }
+
+    static void testset_2(String jarName_greet, String jarName_hi) throws Exception {
+        String appClasses[];
+        String jar;
+
+        // The following section is for testing the scenarios where
+        // the classes are verifiable during dump time.
+        appClasses = TestCommon.list("Hi",
+                                     "Greet",
+                                     "Hi$MyClass");
+        jar = TestCommon.getTestJar(jarName_hi + ".jar") + File.pathSeparator +
+            TestCommon.getTestJar(jarName_greet + ".jar");
+        String config2[][] = {
+            // {dump_list, dumptime_verification_setting,
+            //  runtime_verification_setting, expected_output_str},
+
+            // Dump app/ext with -Xverify:remote
+            {"app",   VFY_REMOTE, VFY_REMOTE, PASS_RESULT},
+            {"app",   VFY_REMOTE, VFY_ALL,    MAP_FAIL},
+            {"app",   VFY_REMOTE, VFY_NONE,   PASS_RESULT },
+            // Dump app/ext with -Xverify:all
+            {"app",   VFY_ALL,    VFY_REMOTE, PASS_RESULT },
+            {"app",   VFY_ALL,    VFY_ALL,    PASS_RESULT },
+            {"app",   VFY_ALL,    VFY_NONE,   PASS_RESULT },
+            // Dump app/ext with verifier turned off
+            {"app",   VFY_NONE,   VFY_REMOTE, PASS_RESULT},
+            {"app",   VFY_NONE,   VFY_ALL,    MAP_FAIL},
+            {"app",   VFY_NONE,   VFY_NONE,   PASS_RESULT },
+        };
+        String prev_dump_setting = "";
+        for (int i = 0; i < config2.length; i ++) {
+            // config2[i][0] is always set to "app" in this test
+            String dump_setting = config2[i][1];
+            String runtime_setting = config2[i][2];
+            String expected_output_str = config2[i][3];
+            System.out.println("Test case [" + i + "]: dumping " + config2[i][0] +
+                               " with " + dump_setting +
+                               ", run with " + runtime_setting);
+            if (!dump_setting.equals(prev_dump_setting)) {
+                String dump_arg1;
+                String dump_arg2;
+                String dump_arg3;
+                if (dump_setting.equals(VFY_NONE)) {
+                    dump_arg1 = "-XX:+UnlockDiagnosticVMOptions";
+                    dump_arg2 = "-XX:-BytecodeVerificationRemote";
+                    dump_arg3 = "-XX:-BytecodeVerificationLocal";
+                } else {
+                    // Redundant args should be harmless.
+                    dump_arg1 = dump_arg2 = dump_arg3 = dump_setting;
+                }
+                OutputAnalyzer dumpOutput = TestCommon.dump(
+                                                            jar, appClasses, dump_arg1, dump_arg2,
+                                                            dump_arg3, CDS_LOGGING,
+                                                            // FIXME: the following options are for working around a GC
+                                                            // issue - assert failure when dumping archive with the -Xverify:all
+                                                            "-Xms256m",
+                                                            "-Xmx256m");
+                if (dump_setting.equals(VFY_NONE) &&
+                    runtime_setting.equals(VFY_REMOTE)) {
+                    dumpOutput.shouldContain(VFY_INFO_MESSAGE);
+                }
+            }
+            String runtime_arg1;
+            String runtime_arg2;
+            String runtime_arg3;
+            if (runtime_setting.equals(VFY_NONE)) {
+                runtime_arg1 = "-XX:+UnlockDiagnosticVMOptions";
+                runtime_arg2 = "-XX:-BytecodeVerificationRemote";
+                runtime_arg3 = "-XX:-BytecodeVerificationLocal";
+            } else {
+                // Redundant args should be harmless.
+                runtime_arg1 = runtime_arg2 = runtime_arg3 = runtime_setting;
+            }
+            TestCommon.run("-cp", jar,
+                           runtime_arg1, runtime_arg2, runtime_arg3,
+                           "Hi")
+                .ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
+           prev_dump_setting = dump_setting;
+        }
+    }
+
+    static void createTestJarFile(File jarSrcFile, File jarFile) throws Exception {
+        jarFile.delete();
+        Files.copy(jarSrcFile.toPath(), jarFile.toPath());
+
+        File dir = new File(System.getProperty("test.classes", "."));
+        File outdir = new File(dir, "verifier_test_classes");
+        outdir.mkdir();
+
+        writeClassFile(new File(outdir, "UnverifiableBase.class"), makeUnverifiableBase());
+        writeClassFile(new File(outdir, "UnverifiableIntf.class"), makeUnverifiableIntf());
+
+        JarBuilder.update(jarFile.getPath(), outdir.getPath());
+    }
+
+    static void writeClassFile(File file, byte bytecodes[]) throws Exception {
+        try (FileOutputStream fos = new FileOutputStream(file)) {
+            fos.write(bytecodes);
+        }
+    }
+
+    // This was obtained using JDK8: java jdk.internal.org.objectweb.asm.util.ASMifier tmpclasses/UnverifiableBase.class
+    static byte[] makeUnverifiableBase() throws Exception {
+        ClassWriter cw = new ClassWriter(0);
+        FieldVisitor fv;
+        MethodVisitor mv;
+        AnnotationVisitor av0;
+
+        cw.visit(V1_8, ACC_SUPER, "UnverifiableBase", null, "java/lang/Object", null);
+        {
+            fv = cw.visitField(ACC_FINAL + ACC_STATIC, "x", "LVerifierTest;", null, null);
+            fv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(0, "<init>", "()V", null, null);
+            mv.visitCode();
+            mv.visitVarInsn(ALOAD, 0);
+            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(1, 1);
+            mv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(NEW, "VerifierTest0");
+            mv.visitInsn(DUP);
+            mv.visitMethodInsn(INVOKESPECIAL, "VerifierTest0", "<init>", "()V", false);
+            mv.visitFieldInsn(PUTSTATIC, "UnverifiableBase", "x", "LVerifierTest;");
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(2, 0);
+            mv.visitEnd();
+        }
+        addBadMethod(cw);
+        cw.visitEnd();
+
+        return cw.toByteArray();
+    }
+
+    // This was obtained using JDK8: java jdk.internal.org.objectweb.asm.util.ASMifier tmpclasses/UnverifiableIntf.class
+    static byte[] makeUnverifiableIntf() throws Exception {
+        ClassWriter cw = new ClassWriter(0);
+        FieldVisitor fv;
+        MethodVisitor mv;
+        AnnotationVisitor av0;
+
+        cw.visit(V1_8, ACC_ABSTRACT + ACC_INTERFACE, "UnverifiableIntf", null, "java/lang/Object", null);
+
+        {
+            fv = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "x", "LVerifierTest0;", null, null);
+            fv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(NEW, "VerifierTest0");
+            mv.visitInsn(DUP);
+            mv.visitMethodInsn(INVOKESPECIAL, "VerifierTest0", "<init>", "()V", false);
+            mv.visitFieldInsn(PUTSTATIC, "UnverifiableIntf", "x", "LVerifierTest0;");
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(2, 0);
+            mv.visitEnd();
+        }
+        addBadMethod(cw);
+        cw.visitEnd();
+
+        return cw.toByteArray();
+    }
+
+    // Add a bad method to make the class fail verification.
+    static void addBadMethod(ClassWriter cw) throws Exception {
+        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "bad", "()V", null, null);
+        mv.visitCode();
+        mv.visitInsn(ARETURN); //  java.lang.VerifyError: Operand stack underflow
+        mv.visitMaxs(2, 2);
+        mv.visitEnd();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_0.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unverfiable app classes should not be archived.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * @modules jdk.jartool/sun.tools.jar
+ *          java.base/jdk.internal.org.objectweb.asm
+ * @compile test-classes/Greet.java
+ * @compile test-classes/Hi.java
+ * @compile test-classes/VerifierTest0.java
+ * @run main/othervm/timeout=3600 VerifierTest 0
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1A.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unverfiable app classes should not be archived.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * @modules jdk.jartool/sun.tools.jar
+ *          java.base/jdk.internal.org.objectweb.asm
+ * @compile test-classes/Greet.java
+ * @compile test-classes/Hi.java
+ * @compile test-classes/VerifierTest0.java
+ * @run main/othervm/timeout=3600 VerifierTest 1A
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1B.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unverfiable app classes should not be archived.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * @modules jdk.jartool/sun.tools.jar
+ *          java.base/jdk.internal.org.objectweb.asm
+ * @compile test-classes/Greet.java
+ * @compile test-classes/Hi.java
+ * @compile test-classes/VerifierTest0.java
+ * @run main/othervm/timeout=3600 VerifierTest 1B
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_2.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unverfiable app classes should not be archived.
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * @modules jdk.jartool/sun.tools.jar
+ *          java.base/jdk.internal.org.objectweb.asm
+ * @compile test-classes/Greet.java
+ * @compile test-classes/Hi.java
+ * @compile test-classes/VerifierTest0.java
+ * @run main/othervm/timeout=3600 VerifierTest 2
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/WideIloadTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @summary Test 'iload_w' bytecode in shared class
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Iloadw.jasm
+ * @compile test-classes/IloadwMain.java
+ * @run driver WideIloadTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class WideIloadTest {
+    public static void main(String args[]) throws Exception {
+        JarBuilder.build("iload_w", "Iloadw", "IloadwMain");
+        String appJar = TestCommon.getTestJar("iload_w.jar");
+        OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list(
+                                        "Iloadw", "IloadwMain"));
+        TestCommon.checkDump(dumpOutput);
+        OutputAnalyzer execOutput = TestCommon.exec(appJar, "IloadwMain");
+        TestCommon.checkExec(execOutput, "Passed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/WrongClasspath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary classpath mismatch between dump time and execution time
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver WrongClasspath
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class WrongClasspath {
+
+  public static void main(String[] args) throws Exception {
+    String appJar = JarBuilder.getOrCreateHelloJar();
+
+    // Dump an archive with a specified JAR file in -classpath
+    TestCommon.testDump(appJar, TestCommon.list("Hello"));
+
+    // Then try to execute the archive without -classpath -- it should fail
+    TestCommon.run(
+        /* "-cp", appJar, */ // <- uncomment this and the execution should succeed
+        "-Xlog:cds",
+        "Hello")
+        .assertAbnormalExit("Unable to use shared archive",
+                            "shared class paths mismatch");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/XShareAutoWithChangedJar.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test -Xshare:auto for AppCDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/Hello.java
+ * @run driver XShareAutoWithChangedJar
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class XShareAutoWithChangedJar {
+  public static void main(String[] args) throws Exception {
+    String appJar = JarBuilder.build("XShareAutoWithChangedJar", "Hello");
+
+    // 1. dump
+    OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"));
+    TestCommon.checkDump(output);
+
+    // 2. change the jar
+    JarBuilder.build("XShareAutoWithChangedJar", "Hello");
+
+    // 3. exec
+    output = TestCommon.execAuto("-cp", appJar, "Hello");
+    output.shouldContain("Hello World");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedIntegerCacheTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test primitive box caches integrity in various scenarios (IntegerCache etc)
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckIntegerCacheApp.java
+ * @run driver ClassFileInstaller -jar boxCache.jar CheckIntegerCacheApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ArchivedIntegerCacheTest
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ArchivedIntegerCacheTest {
+
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("boxCache.jar");
+
+        Path userDir = Paths.get(System.getProperty("user.dir"));
+        Path moduleDir = Files.createTempDirectory(userDir, "mods");
+
+        //
+        // Dump default archive
+        //
+        OutputAnalyzer output = TestCommon.dump(appJar,
+                TestCommon.list("CheckIntegerCacheApp"),
+                use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 1)
+        // - Default options
+        System.out.println("----------------------- Test case 1 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "CheckIntegerCacheApp",
+                "127",
+                "true");
+        TestCommon.checkExec(output);
+
+        // Test case 2)
+        // - Default archive
+        // - Larger -XX:AutoBoxCacheMax
+        System.out.println("----------------------- Test case 2 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "-XX:AutoBoxCacheMax=20000",
+                "CheckIntegerCacheApp",
+                "20000",
+                "false");
+        TestCommon.checkExec(output);
+
+        //
+        // Dump with -XX:AutoBoxCacheMax specified
+        //
+        output = TestCommon.dump(appJar,
+                TestCommon.list("CheckIntegerCacheApp"),
+                "-XX:AutoBoxCacheMax=20000",
+                use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 3)
+        // - Large archived cache
+        // - Default options
+        System.out.println("----------------------- Test case 3 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                "--module-path",
+                moduleDir.toString(),
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "CheckIntegerCacheApp",
+                "127",
+                "true");
+        TestCommon.checkExec(output);
+
+
+        // Test case 4)
+        // - Large archived cache
+        // - Matching options
+        System.out.println("----------------------- Test case 4 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                "--module-path",
+                moduleDir.toString(),
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "-XX:AutoBoxCacheMax=20000",
+                "CheckIntegerCacheApp",
+                "20000",
+                "true");
+        TestCommon.checkExec(output);
+
+        // Test case 5)
+        // - Large archived cache
+        // - Larger requested cache
+        System.out.println("----------------------- Test case 5 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                "--module-path",
+                moduleDir.toString(),
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "-XX:AutoBoxCacheMax=30000",
+                "CheckIntegerCacheApp",
+                "30000",
+                "false");
+        TestCommon.checkExec(output);
+
+        // Test case 6)
+        // - Cache is too large to archive
+        output = TestCommon.dump(appJar,
+                TestCommon.list("CheckIntegerCacheApp"),
+                "-XX:AutoBoxCacheMax=2000000",
+                "-Xmx1g",
+                "-XX:NewSize=1g",
+                "-Xlog:cds+heap=info",
+                "-Xlog:gc+region+cds",
+                "-Xlog:gc+region=trace",
+                use_whitebox_jar);
+        TestCommon.checkDump(output,
+            "Cannot archive the sub-graph referenced from [Ljava.lang.Integer; object",
+            "humongous regions have been found and may lead to fragmentation");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleComboTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test archived system module sub-graph and verify objects are archived.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckArchivedModuleApp.java
+ * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ArchivedModuleComboTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import sun.hotspot.WhiteBox;
+
+public class ArchivedModuleComboTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        Path userDir = Paths.get(System.getProperty("user.dir"));
+        Path moduleDir = Files.createTempDirectory(userDir, "mods");
+
+        //
+        // Dump without --module-path, without --show-module-resolution
+        //
+        OutputAnalyzer output = TestCommon.dump(appJar,
+                                    TestCommon.list("CheckArchivedModuleApp"),
+                                    use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 1)
+        // - Dump without --module-path, without --show-module-resolution
+        // - Run from -cp only and without --show-module-resolution
+        //     + archived boot layer module ModuleDescriptors should be used
+        //     + archived boot layer configuration should be used
+        System.out.println("----------------------- Test case 1 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes",
+                                 "yes");
+        TestCommon.checkExec(output);
+
+        // Test case 2)
+        // - Dump without --module-path, without --show-module-resolution
+        // - Run from -cp only and with --show-module-resolution
+        //     + archived boot layer module ModuleDescriptors should be used with
+        //       --show-module-resolution (requires resolution)
+        //     + archived boot layer Configuration should not be disabled
+        System.out.println("----------------------- Test case 2 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--show-module-resolution",
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes",
+                                 "no");
+        TestCommon.checkExec(output, "root java.base jrt:/java.base");
+
+        // Test case 3)
+        // - Dump without --module-path, without --show-module-resolution
+        // - Run with --module-path
+        //    + archived boot layer module ModuleDescriptors should be disabled
+        //    + archived boot layer Configuration should be disabled
+        System.out.println("----------------------- Test case 3 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no",
+                                 "no");
+        TestCommon.checkExec(output);
+
+        //
+        // Dump with --module-path specified (test case 4, 5). Use an
+        // empty directory as it's simple and still triggers the case
+        // where system module objects are not archived.
+        //
+        output = TestCommon.dump(appJar,
+                                 TestCommon.list("CheckArchivedModuleApp"),
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 4)
+        // - Dump with --module-path
+        // - Run from -cp only, no archived boot layer module ModuleDescriptors
+        //   and Configuration should be found.
+        System.out.println("----------------------- Test case 4 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no",
+                                 "no");
+        TestCommon.checkExec(output);
+
+        // Test case 5)
+        // - Dump with --module-path
+        // - Run with --module-path, no archived boot layer module ModuleDescriptors
+        //   and Configuration should be found.
+        System.out.println("----------------------- Test case 5 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no",
+                                 "no");
+        TestCommon.checkExec(output);
+
+        //
+        // Dump without --module-path, with --show-module-resolution
+        //
+        output = TestCommon.dump(appJar,
+                                 TestCommon.list("CheckArchivedModuleApp"),
+                                 "--show-module-resolution",
+                                 use_whitebox_jar);
+        TestCommon.checkDump(output, "root java.base jrt:/java.base");
+
+        // Test case 6)
+        // - Dump without --module-path, with --show-module-resolution
+        // - Run from -cp only and without --show-module-resolution
+        //     + archived boot layer module ModuleDescriptors should be used
+        //     + archived boot layer Configuration should be used
+        System.out.println("----------------------- Test case 6 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes",
+                                 "yes");
+        TestCommon.checkExec(output);
+
+        // Test case 7)
+        // - Dump without --module-path, with --show-module-resolution
+        // - Run from -cp only and with --show-module-resolution
+        //     + archived boot layer module ModuleDescriptors should be used with
+        //       --show-module-resolution (requires resolution)
+        //     + archived boot layer Configuration should be disabled
+        System.out.println("----------------------- Test case 7 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--show-module-resolution",
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes",
+                                 "no");
+        TestCommon.checkExec(output, "root java.base jrt:/java.base");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleCompareTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Compare archived system modules with non-archived.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile PrintSystemModulesApp.java
+ * @run driver ClassFileInstaller -jar app.jar PrintSystemModulesApp
+ * @run driver ArchivedModuleCompareTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class ArchivedModuleCompareTest {
+    public static void main(String[] args) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        // Test case 1)
+        // Compare the list of archived system module names with non-archived
+        // list. They must be the same.
+        System.out.println("---------------- Test case 1 -----------------");
+        OutputAnalyzer output = TestCommon.dump(appJar,
+                        TestCommon.list("PrintSystemModulesApp"));
+        TestCommon.checkDump(output);
+
+        output = TestCommon.execOff("-cp", appJar, "PrintSystemModulesApp");
+        output.shouldHaveExitValue(0);
+        String bootModules1 = output.getStdout();
+
+        output = TestCommon.exec(appJar, "PrintSystemModulesApp");
+        TestCommon.checkExec(output);
+        if (output.getStderr().contains("sharing")) {
+            String bootModules2 = output.getStdout();
+            TestCommon.checkOutputStrings(bootModules1, bootModules2, ", ");
+        }
+
+        // Test case 2)
+        // Verify --show-module-resolution output with the output from
+        // -Xshare:off run
+        System.out.println("---------------- Test case 2 -----------------");
+        output = TestCommon.execOff("-cp", appJar,
+                                    "--show-module-resolution",
+                                    "-version");
+        output.shouldHaveExitValue(0);
+        String moduleResolutionOut1 = output.getStdout();
+
+        output = TestCommon.exec(appJar,
+                                 "--show-module-resolution",
+                                 "-version");
+        TestCommon.checkExec(output);
+        if (output.getStderr().contains("sharing")) {
+            String moduleResolutionOut2 = output.getStdout();
+            TestCommon.checkOutputStrings(
+                moduleResolutionOut1, moduleResolutionOut2, "\n");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/*
+ * @test
+ * @summary Test archived module graph with custom runtime image
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.module
+ *          java.management
+ *          jdk.jlink
+ *          jdk.compiler
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckArchivedModuleApp.java
+ * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ArchivedModuleWithCustomImageTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.compiler.CompilerUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class ArchivedModuleWithCustomImageTest {
+    private static final String JAVA_HOME = System.getProperty("java.home");
+    private static final String TEST_MODULE = "test";
+    private static final Path jdkHome = Paths.get(System.getProperty("test.jdk"));
+    private static final Path jdkMods = jdkHome.resolve("jmods");
+    private static final Path testSrc = Paths.get(System.getProperty("test.src"));
+    private static final Path src = testSrc.resolve("src").resolve(TEST_MODULE);
+    private static final Path classes = Paths.get("classes");
+    private static final Path jmods = Paths.get("jmods");
+
+    public static void main(String[] args) throws Throwable {
+        if (Files.notExists(jdkMods)) {
+            System.out.println("No jmods/ in test JDK, not supported.");
+            return;
+        }
+
+        // compile test module class
+        if (!CompilerUtils.compile(src, classes)) {
+            throw new RuntimeException("Compilation failure.");
+        }
+
+        // create custom runtime image named 'myimage'
+        Files.createDirectories(jmods);
+        Path image = Paths.get("myimage");
+        runJmod(classes.toString(), TEST_MODULE);
+        runJlink(image, TEST_MODULE);
+
+        // test using 'myimage'
+        testArchivedModuleUsingImage(image);
+
+        Files.delete(jmods.resolve(TEST_MODULE + ".jmod"));
+    }
+
+    private static void runJlink(Path image, String modName) throws Throwable {
+        Path jlink = Paths.get(JAVA_HOME, "bin", "jlink");
+        OutputAnalyzer output = ProcessTools.executeProcess(jlink.toString(),
+                        "--output", image.toString(),
+                        "--add-modules", modName,
+                        "--module-path", jdkMods + File.pathSeparator + jmods);
+        output.shouldHaveExitValue(0);
+    }
+
+    private static void runJmod(String cp, String modName) throws Throwable {
+        Path jmod = Paths.get(JAVA_HOME, "bin", "jmod");
+        OutputAnalyzer output = ProcessTools.executeProcess(jmod.toString(),
+                       "create",
+                       "--class-path", cp,
+                       "--module-version", "1.0",
+                       "--main-class", "jdk.test.Test",
+                       jmods.resolve(modName + ".jmod").toString());
+        output.shouldHaveExitValue(0);
+    }
+
+    private static void testArchivedModuleUsingImage(Path image)
+                            throws Throwable {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+        Path customJava = Paths.get(image.toString(), "bin", "java");
+
+        // -Xshare:dump with custom runtime image
+        String[] dumpCmd = {
+            customJava.toString(),
+            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+            "-Xshare:dump"};
+        printCommand(dumpCmd);
+        ProcessBuilder pbDump = new ProcessBuilder();
+        pbDump.command(dumpCmd);
+        OutputAnalyzer output = TestCommon.executeAndLog(
+            pbDump, "custom.runtime.image.dump");
+        TestCommon.checkDump(output);
+
+        // Test case 1):
+        // test archived module graph objects are used with custome runtime image
+        System.out.println("------------------- Test case 1 -------------------");
+        String[] runCmd = {customJava.toString(),
+                           use_whitebox_jar,
+                           "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+                           "-cp",
+                           appJar,
+                           "-Xshare:on",
+                           "-XX:+UnlockDiagnosticVMOptions",
+                           "-XX:+WhiteBoxAPI",
+                           "CheckArchivedModuleApp",
+                           "yes",
+                           "yes"};
+        printCommand(runCmd);
+        ProcessBuilder pbRun = new ProcessBuilder();
+        pbRun.command(runCmd);
+        output = TestCommon.executeAndLog(pbRun, "custom.runtime.image.run");
+        output.shouldHaveExitValue(0);
+
+
+        // Test case 2):
+        // verify --show-module-resolution output
+        System.out.println("------------------- Test case 2 -------------------");
+
+        // myimage/bin/java -Xshare:off --show-module-resolution -version
+        String[] showModuleCmd1 = {customJava.toString(),
+                                   "-Xshare:off",
+                                   "--show-module-resolution",
+                                   "-version"};
+        printCommand(showModuleCmd1);
+        pbRun = new ProcessBuilder();
+        pbRun.command(showModuleCmd1);
+        output = TestCommon.executeAndLog(
+            pbRun, "custom.runtime.image.showModuleResolution.nocds");
+        output.shouldHaveExitValue(0);
+        String moduleResolutionOut1 = output.getStdout();
+
+        // myimage/bin/java -Xshare:on --show-module-resolution -version
+        //    -XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa
+        String[] showModuleCmd2 = {
+            customJava.toString(),
+            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+            "-Xshare:on",
+            "--show-module-resolution",
+            "-version"};
+        printCommand(showModuleCmd2);
+        pbRun = new ProcessBuilder();
+        pbRun.command(showModuleCmd2);
+        output = TestCommon.executeAndLog(
+            pbRun, "custom.runtime.image.showModuleResolution.cds");
+        if (output.getStderr().contains("sharing")) {
+            String moduleResolutionOut2 = output.getStdout();
+            TestCommon.checkOutputStrings(
+                moduleResolutionOut1, moduleResolutionOut2, "\n");
+        }
+    }
+
+    private static void printCommand(String opts[]) {
+        StringBuilder cmdLine = new StringBuilder();
+        for (String cmd : opts)
+            cmdLine.append(cmd).append(' ');
+        System.out.println("Command line: [" + cmdLine.toString() + "]");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckArchivedModuleApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.lang.module.Configuration;
+import java.lang.module.ModuleDescriptor;
+import java.util.List;
+import java.util.Set;
+import sun.hotspot.WhiteBox;
+
+//
+// Test archived system module graph when open archive heap objects are mapped:
+//
+public class CheckArchivedModuleApp {
+    static WhiteBox wb;
+    public static void main(String args[]) throws Exception {
+        wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        if (args.length != 2) {
+           throw new RuntimeException(
+               "FAILED. Incorrect argument length: " + args.length);
+        }
+
+        boolean expectArchivedDescriptors = "yes".equals(args[0]);
+        boolean expectArchivedConfiguration = "yes".equals(args[1]);
+        // -XX:+EnableJVMCI adds extra system modules, in which case the system
+        // module objects are not archived.
+        Boolean enableJVMCI = wb.getBooleanVMFlag("EnableJVMCI");
+        if (enableJVMCI != null && enableJVMCI) {
+            expectArchivedDescriptors = false;
+            expectArchivedConfiguration = false;
+        }
+
+        checkModuleDescriptors(expectArchivedDescriptors);
+        checkConfiguration(expectArchivedConfiguration);
+        checkEmptyConfiguration(expectArchivedConfiguration);
+    }
+
+    private static void checkModuleDescriptors(boolean expectArchivedDescriptors) {
+        Set<Module> modules = ModuleLayer.boot().modules();
+        for (Module m : modules) {
+            ModuleDescriptor md = m.getDescriptor();
+            String name = md.name();
+            if (expectArchivedDescriptors) {
+                if (wb.isShared(md)) {
+                    System.out.println(name + " is archived. Expected.");
+                } else {
+                    throw new RuntimeException(
+                        "FAILED. " + name + " is not archived. Expect archived.");
+                }
+            } else {
+                if (!wb.isShared(md)) {
+                    System.out.println(name + " is not archived. Expected.");
+                } else {
+                    throw new RuntimeException(
+                        "FAILED. " + name + " is archived. Expect not archived.");
+                }
+            }
+        }
+    }
+
+    private static void checkEmptyConfiguration(boolean expectArchivedConfiguration) {
+        // Configuration.EMPTY_CONFIGURATION uses the singletons,
+        // ListN.EMPTY_LIST, SetN.EMPTY_SET and MapN.EMPTY_MAP in
+        // ImmutableCollections for the 'parents', 'modules' and
+        // 'graph' fields. The ImmutableCollections singletons
+        // can be accessed via List.of(), Set.of() and Map.of() APIs.
+        // Configuration public APIs also allow access to the
+        // EMPTY_CONFIGURATION's 'parents' and 'modules'. When the
+        // archived java heap data is enabled at runtime, make sure
+        // the EMPTY_CONFIGURATION.parents and EMPTY_CONFIGURATION.modules
+        // are the archived ImmutableCollections singletons.
+        Configuration emptyCf = Configuration.empty();
+        List emptyCfParents = emptyCf.parents();
+        Set emptyCfModules = emptyCf.modules();
+        if (expectArchivedConfiguration) {
+            if (emptyCfParents == List.of() &&
+                wb.isShared(emptyCfParents)) {
+                System.out.println("Empty Configuration has expected parents.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. Unexpected parents for empty Configuration.");
+            }
+            if (emptyCfModules == Set.of() &&
+                wb.isShared(emptyCfModules)) {
+                System.out.println("Empty Configuration has expected module set.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. Unexpected module set for empty Configuration.");
+            }
+        }
+    }
+
+
+
+    private static void checkConfiguration(boolean expectArchivedConfiguration) {
+        Configuration cf = ModuleLayer.boot().configuration();
+
+        if (expectArchivedConfiguration) {
+            if (wb.isShared(cf)) {
+                System.out.println("Boot layer configuration is archived. Expected.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. Boot layer configuration is not archived.");
+            }
+        } else {
+            if (!wb.isShared(cf)) {
+                System.out.println("Boot layer configuration is not archived. Expected.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. Boot layer configuration is archived.");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedMirrorApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import sun.hotspot.WhiteBox;
+
+//
+// Test class mirror objects are cached when open archive heap objects are mapped:
+//  - Well-known shared library classes:
+//      java.lang.Object
+//      java.lang.String
+//  - Shared application class loaded by the system class loader
+//  - Shared application class loaded user defined class loader
+//
+public class CheckCachedMirrorApp {
+    static WhiteBox wb;
+    public static void main(String args[]) throws Exception {
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+
+        URLClassLoader loader = new URLClassLoader(urls);
+        Class hello = loader.loadClass("Hello");
+        System.out.println("Loaded " + hello + " from " + url + " using loader " + loader);
+
+        wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        // Well-known shared library classes
+        Class object_class = Object.class;
+        checkMirror(object_class, true);
+        Class string_class = String.class;
+        checkMirror(string_class, true);
+
+        // Shared app class
+        Class app_class = CheckCachedMirrorApp.class;
+        checkMirror(app_class, true);
+
+        // Hello is shared class and loaded by the 'loader' defined in current app.
+        // It should not have cached resolved_references.
+        Class class_with_user_defined_loader = hello;
+        checkMirror(class_with_user_defined_loader, false);
+    }
+
+    static void checkMirror(Class c, boolean mirrorShouldBeArchived) {
+        System.out.print("Check cached mirror for " + c);
+        if (wb.isSharedClass(c)) {
+            // Check if the Class object is cached
+            if (mirrorShouldBeArchived && wb.isShared(c)) {
+                System.out.println(c + " mirror is cached. Expected.");
+            } else if (!mirrorShouldBeArchived && !wb.isShared(c)) {
+                System.out.println(c + " mirror is not cached. Expected.");
+            } else if (mirrorShouldBeArchived && !wb.isShared(c)) {
+                throw new RuntimeException(
+                    "FAILED. " + c + " mirror is not cached.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. " + c + " mirror should not be cached.");
+            }
+        } else {
+          System.out.println("Class " + c + "is not shared, skipping the check for mirror");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedMirrorTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test archived mirror
+ * @requires vm.cds.archived.java.heap
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckCachedMirrorApp.java
+ * @compile ../test-classes/Hello.java
+ * @run driver ClassFileInstaller -jar app.jar CheckCachedMirrorApp
+ * @run driver ClassFileInstaller -jar hello.jar Hello
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver CheckCachedMirrorTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class CheckCachedMirrorTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+        String helloJarPath = ClassFileInstaller.getJarPath("hello.jar");
+
+        String classlist[] = new String[] {
+            "CheckCachedMirrorApp",            // built-in app loader
+            "java/lang/Object id: 1",          // boot loader
+            "Hello id: 2 super: 1 source: " + helloJarPath // custom loader
+        };
+
+        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
+        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
+                                                "-XX:+UnlockDiagnosticVMOptions",
+                                                "-XX:+WhiteBoxAPI",
+                                                "-Xlog:cds=debug",
+                                                "CheckCachedMirrorApp",
+                                                helloJarPath);
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedResolvedReferences.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test resolved_references
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckCachedResolvedReferencesApp.java
+ * @compile ../test-classes/Hello.java
+ * @run driver ClassFileInstaller -jar app.jar CheckCachedResolvedReferencesApp
+ * @run driver ClassFileInstaller -jar hello.jar Hello
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver CheckCachedResolvedReferences
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class CheckCachedResolvedReferences {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+        String helloJarPath = ClassFileInstaller.getJarPath("hello.jar");
+
+        String classlist[] = new String[] {
+            "CheckCachedResolvedReferencesApp",            // built-in app loader
+            "java/lang/Object id: 1",                      // boot loader
+            "Hello id: 2 super: 1 source: " + helloJarPath // custom loader
+        };
+
+        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
+        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
+                                                "-XX:+UnlockDiagnosticVMOptions",
+                                                "-XX:+WhiteBoxAPI",
+                                                "CheckCachedResolvedReferencesApp",
+                                                helloJarPath);
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckCachedResolvedReferencesApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import sun.hotspot.WhiteBox;
+
+public class CheckCachedResolvedReferencesApp {
+    public static void main(String args[]) throws Exception {
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+
+        URLClassLoader loader = new URLClassLoader(urls);
+        Class hello = loader.loadClass("Hello");
+        System.out.println("Loaded " + hello + " from " + url + " using loader " + loader);
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        // CheckCachedResolvedReferencesApp is shared class and loaded by the
+        // AppClassLoader. It should have cached resolved_references.
+        if (wb.isSharedClass(CheckCachedResolvedReferencesApp.class)) {
+            Object refs1 = wb.getResolvedReferences(CheckCachedResolvedReferencesApp.class);
+            if (refs1 != null && wb.isShared(refs1)) {
+                System.out.println(
+                    "resolved references from CheckCachedResolvedReferencesApp is cached");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. CheckCachedResolvedReferencesApp has no cached resolved references");
+            }
+        }
+
+        // Hello is shared class and loaded by the 'loader' defined in current app.
+        // It should not have cached resolved_references.
+        if (wb.isSharedClass(hello)) {
+            Object refs2 = wb.getResolvedReferences(hello);
+            if (refs2 != null) {
+                if (!wb.isShared(refs2)) {
+                    System.out.println("resolved references from hello is not cached");
+                } else {
+                    throw new RuntimeException(
+                        "FAILED. Hello has unexpected cached resolved references");
+                }
+            } else {
+                throw new RuntimeException("FAILED. Hello has no resolved references");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/CheckIntegerCacheApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+//
+// Help test archived box cache consistency.
+//
+// Takes two arguments:
+// 0: the expected maximum value expected to be archived
+// 1: if the values are expected to be retrieved from the archive or not
+//    (only applies to IntegerCache; other caches should always be mapped
+//    from archive)
+//
+public class CheckIntegerCacheApp {
+    static WhiteBox wb;
+
+    public static void main(String[] args) throws Exception {
+        wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        if (args.length != 2) {
+            throw new RuntimeException(
+                    "FAILED. Incorrect argument length: " + args.length);
+        }
+
+        boolean archivedExpected = Boolean.parseBoolean(args[1]);
+
+        // Base JLS compliance check
+        for (int i = -128; i <= 127; i++) {
+            if (Integer.valueOf(i) != Integer.valueOf(i)) {
+                throw new RuntimeException(
+                        "FAILED. All values in range [-128, 127] should be interned in cache: " + i);
+            }
+            if (Byte.valueOf((byte)i) != Byte.valueOf((byte)i)) {
+                throw new RuntimeException(
+                        "FAILED. All Byte values in range [-128, 127] should be interned in cache: " + (byte)i);
+            }
+            if (Short.valueOf((short)i) != Short.valueOf((short)i)) {
+                throw new RuntimeException(
+                        "FAILED. All Short values in range [-128, 127] should be interned in cache: " + (byte)i);
+            }
+            if (Long.valueOf(i) != Long.valueOf(i)) {
+                throw new RuntimeException(
+                        "FAILED. All Long values in range [-128, 127] should be interned in cache: " + i);
+            }
+            checkArchivedAsExpected(archivedExpected, Integer.valueOf(i));
+            checkArchivedAsExpected(true, Byte.valueOf((byte)i));
+            checkArchivedAsExpected(true, Short.valueOf((short)i));
+            checkArchivedAsExpected(true, Long.valueOf(i));
+
+            // Character cache only values 0 through 127
+            if (i >= 0) {
+                if (Character.valueOf((char)i) != Character.valueOf((char)i)) {
+                    throw new RuntimeException(
+                            "FAILED. All Character values in range [0, 127] should be interned in cache: " + i);
+                }
+                checkArchivedAsExpected(true, Character.valueOf((char)i));
+            }
+        }
+
+        int high = Integer.parseInt(args[0]);
+        if (Integer.valueOf(high) != Integer.valueOf(high)) {
+            throw new RuntimeException(
+                    "FAILED. Value expected to be retrieved from cache: " + high);
+        }
+        checkArchivedAsExpected(archivedExpected, Integer.valueOf(high));
+
+        if (Integer.valueOf(high + 1) == Integer.valueOf(high + 1)) {
+            throw new RuntimeException(
+                    "FAILED. Value not expected to be retrieved from cache: " + high);
+        }
+        checkArchivedAsExpected(false, Integer.valueOf(high + 1));
+        checkArchivedAsExpected(false, Short.valueOf((short)128));
+        checkArchivedAsExpected(false, Long.valueOf(128));
+        checkArchivedAsExpected(false, Character.valueOf((char)128));
+    }
+
+    private static void checkArchivedAsExpected(boolean archivedExpected, Object value) {
+        if (archivedExpected) {
+            if (!wb.isShared(value)) {
+                throw new RuntimeException(
+                        "FAILED. Value expected to be archived: " + value +
+                        " of type " + value.getClass().getName());
+            }
+        } else {
+            if (wb.isShared(value)) {
+                throw new RuntimeException(
+                        "FAILED. Value not expected to be archived: " + value +
+                        " of type " + value.getClass().getName());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DifferentHeapSizes.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test automatic relocation of archive heap regions dur to heap size changes.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm/timeout=160 -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. DifferentHeapSizes
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+import jdk.test.lib.cds.CDSTestUtils;
+
+public class DifferentHeapSizes {
+    static final String DEDUP = "-XX:+UseStringDeduplication"; // This increases code coverage.
+
+    static class Scenario {
+        int dumpSize;   // in MB
+        int runSizes[]; // in MB
+        Scenario(int ds, int... rs) {
+            dumpSize = ds;
+            runSizes = rs;
+        }
+    }
+
+    static Scenario[] scenarios = {
+        //           dump -Xmx ,         run -Xmx
+        new Scenario(        32,         32, 64, 512, 2048, 4097, 16374, 31000),
+        new Scenario(       128,         32, 64, 512, 2048, 4097, 16374, 31000, 40000),
+        new Scenario(      2048,         32, 512, 2600, 4097, 8500, 31000,      40000),
+        new Scenario(     17000,         32, 512, 2048, 4097, 8500, 31000,      40000),
+        new Scenario(     31000,         32, 512, 2048, 4097, 8500, 17000,      40000)
+    };
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.getOrCreateHelloJar();
+        String appJar = TestCommon.getTestJar("hello.jar");
+        String appClasses[] = TestCommon.list("Hello");
+
+        for (Scenario s : scenarios) {
+            String dumpXmx = "-Xmx" + s.dumpSize + "m";
+            OutputAnalyzer output = TestCommon.dump(appJar, appClasses, dumpXmx);
+
+            for (int runSize : s.runSizes) {
+                String runXmx = "-Xmx" + runSize + "m";
+                CDSTestUtils.Result result = TestCommon.run("-cp", appJar, "-showversion",
+                        "-Xlog:cds", runXmx, DEDUP, "Hello");
+                if (runSize < 32768) {
+                    result
+                        .assertNormalExit("Hello World")
+                        .assertNormalExit(out -> {
+                            out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP);
+                            out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE);
+                        });
+                } else {
+                    result.assertAbnormalExit(CDSTestUtils.MSG_COMPRESSION_MUST_BE_USED);
+                }
+            }
+        }
+
+        // Test various settings of -XX:HeapBaseMinAddress that would trigger
+        // "CDS heap data need to be relocated because the desired range ... is outside of the heap"
+        long default_base = WhiteBox.getWhiteBox().getSizeTVMFlag("HeapBaseMinAddress").longValue();
+        long M = 1024 * 1024;
+        long bases[] = new long[] {
+            /* dump xmx */   /* run xmx */   /* dump base */             /* run base */
+            128 * M,         128 * M,        default_base,               default_base + 256L * 1024 * 1024,
+            128 * M,         16376 * M,      0x0000000119200000L,        -1,
+        };
+
+        for (int i = 0; i < bases.length; i += 4) {
+            String dump_xmx  = getXmx(bases[i+0]);
+            String run_xmx   = getXmx(bases[i+1]);
+            String dump_base = getHeapBaseMinAddress(bases[i+2]);
+            String run_base  = getHeapBaseMinAddress(bases[i+3]);
+
+            TestCommon.dump(appJar, appClasses, dump_xmx, dump_base);
+            TestCommon.run("-cp", appJar, "-showversion", "-Xlog:cds", run_xmx, run_base, DEDUP, "Hello")
+                .assertNormalExit("Hello World")
+                .assertNormalExit(out -> {
+                        out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP);
+                        out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE);
+                    });
+        }
+    }
+
+    static String getXmx(long value) {
+        if (value < 0) {
+            return "-showversion"; // This is a harmless command line arg
+        } else {
+            return "-Xmx" + (value / 1024 / 1024) + "m";
+        }
+    }
+    static String getHeapBaseMinAddress(long value) {
+        if (value < 0) {
+            return "-showversion"; // This is a harmless command line arg
+        } else {
+            return "-XX:HeapBaseMinAddress=0x" + Long.toHexString(value);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DumpTimeVerifyFailure.config.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,3 @@
+VERSION: 1.0
+@SECTION: String
+26: shared_string_from_MyInner
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DumpTimeVerifyFailure.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Dump time should not crash if any class with shared strings fails verification due to missing dependencies.
+ * @bug 8186789
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile MyOuter.java MyException.java
+ * @run driver DumpTimeVerifyFailure
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class DumpTimeVerifyFailure {
+    public static void main(String[] args) throws Exception {
+        // App classes (see MyOuter.java):
+        //   MyOuter
+        //   MyInnder$MyOuter extends MyOuter
+        //   MyException
+        //
+        // MyOuter$MyInner.test() throws MyException.
+        // The missingMyException.jar file only includes MyOuter and
+        // MyOuter$MyInner classes, but not the MyException class.
+        // At dump time, MyOuter and MyOuter$MyInner classes fail
+        // verification due to missing MyException class.
+        String[] ARCHIVE_CLASSES = {"MyOuter", "MyOuter$MyInner"};
+        String appJar = JarBuilder.build("missingMyException", ARCHIVE_CLASSES);
+
+        OutputAnalyzer dumpOutput = TestCommon.dump(
+                appJar, ARCHIVE_CLASSES,
+                "-Xlog:verification",
+                "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("DumpTimeVerifyFailure.config.txt"));
+        TestCommon.checkDump(dumpOutput, "Loading classes to share");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStress.config.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,3 @@
+VERSION: 1.0
+@SECTION: String
+25: GCStressApp_shared_string
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.io.*;
+import java.util.*;
+import sun.hotspot.WhiteBox;
+
+// All strings in archived classes are shared
+public class GCStressApp {
+    static WhiteBox wb = WhiteBox.getWhiteBox();
+    static int[] arr;
+
+    static String get_shared_string() {
+        String shared_str = "GCStressApp_shared_string";
+        return shared_str;
+    }
+
+    static String get_shared_string1() {
+        String shared_str1 = "GCStressApp_shared_string1";
+        return shared_str1;
+    }
+
+    static void allocAlot() {
+        try {
+            Random random = new Random();
+            for (int i = 0; i < 1024 * 1024; i++) {
+                int len = random.nextInt(10000);
+                arr = new int[len];
+            }
+        } catch (java.lang.OutOfMemoryError e) { }
+    }
+
+    static void runGC() {
+        wb.fullGC();
+    }
+
+    public static void main(String args[]) throws Exception {
+        if (!wb.isSharedClass(GCStressApp.class)) {
+           System.out.println("GCStressApp is not shared. Possibly there was a mapping failure.");
+           return;
+        }
+
+        if (wb.areSharedStringsIgnored()) {
+          System.out.println("Shared strings are ignored.");
+          return;
+        }
+
+        Object refs = wb.getResolvedReferences(GCStressApp.class);
+        if (wb.isShared(refs)) {
+            String shared_str = get_shared_string();
+            String shared_str1 = get_shared_string1();
+
+            if (!wb.isShared(shared_str)) {
+                throw new RuntimeException("FAILED. GCStressApp_shared_string is not shared");
+            }
+
+            if (!wb.isShared(shared_str1)) {
+                throw new RuntimeException("FAILED. GCStressApp_shared_string1 is not shared");
+            }
+
+            allocAlot();
+            runGC();
+            runGC();
+            runGC();
+
+            System.out.println("Passed");
+        } else {
+            System.out.println(
+                "No cached resolved references. Open archive heap data is not used.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile GCStressApp.java
+ * @run driver ClassFileInstaller -jar gcstress.jar GCStressApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver GCStressTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class GCStressTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("gcstress.jar");
+        String appClasses[] = TestCommon.list("GCStressApp");
+
+        OutputAnalyzer output = TestCommon.dump(appJar, appClasses,
+                                                use_whitebox_jar,
+                                                "-Xms20M", "-Xmx20M");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-Xlog:cds=info",
+                                 "-Xms20M", "-Xmx20M",
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI","GCStressApp");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/InstrumentationAgent.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Premain-Class: InstrumentationRegisterClassFileTransformer
+Agent-Class: InstrumentationRegisterClassFileTransformer
+Can-Retransform-Classes: true
+Can-Redefine-Classes: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MirrorWithReferenceFieldsApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import sun.hotspot.WhiteBox;
+
+//
+// - Test static final String field with initial value in cached mirror should be also archived.
+// - GC should not crash when reference fields in cached mirror are updated at runtime
+//     - Reference fields are updated to point to runtime created objects
+//     - Reference fields are nullified
+//
+public class MirrorWithReferenceFieldsApp {
+
+    // Static String field with initial value
+    static final String archived_field = "abc";
+
+    // Static object field
+    static Object non_archived_field_1;
+
+    // Instance field
+    Integer non_archived_field_2;
+
+    public MirrorWithReferenceFieldsApp() {
+        non_archived_field_1 = new Object();
+        non_archived_field_2 = new Integer(1);
+    }
+
+    public static void main(String args[]) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        MirrorWithReferenceFieldsApp m = new MirrorWithReferenceFieldsApp();
+        m.test(wb);
+    }
+
+    public void test(WhiteBox wb) {
+        Class c = MirrorWithReferenceFieldsApp.class;
+        if (wb.isSharedClass(c)) {
+            // Check if the Class object is cached
+            if (wb.isShared(c)) {
+                System.out.println(c + " mirror is cached. Expected.");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. " + c + " mirror should be cached.");
+            }
+
+            // Check fields
+
+            if (wb.isShared(archived_field)) {
+                System.out.println("archived_field is archived as excepted");
+            } else {
+                throw new RuntimeException(
+                    "FAILED. archived_field is not archived.");
+            }
+
+            // GC should not crash
+            System.gc();
+            System.gc();
+            System.gc();
+
+            non_archived_field_1 = null;
+            non_archived_field_2 = null;
+
+            System.gc();
+            System.gc();
+            System.gc();
+
+            System.out.println("Done.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MirrorWithReferenceFieldsTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test archived mirror with reference fields
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile MirrorWithReferenceFieldsApp.java
+ * @run driver ClassFileInstaller -jar app.jar MirrorWithReferenceFieldsApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver MirrorWithReferenceFieldsTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class MirrorWithReferenceFieldsTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        String classlist[] = new String[] {
+            "MirrorWithReferenceFieldsApp",
+        };
+
+        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
+        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
+                                                "-XX:+UnlockDiagnosticVMOptions",
+                                                "-XX:+WhiteBoxAPI",
+                                                "-XX:+VerifyAfterGC",
+                                                "MirrorWithReferenceFieldsApp");
+        try {
+            TestCommon.checkExec(output, "Done");
+        } catch (Exception e) {
+            output.shouldContain("Archived open_archive_heap objects are not mapped");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MyException.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+public class MyException extends Exception {
+    public MyException(String msg) {
+        super(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/MyOuter.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+public class MyOuter {
+   public void exp() throws MyException {
+       throw new MyException("MyOuter exception");
+   }
+
+   public void test() throws Exception {
+       System.out.println("MyOuter");
+       try {
+          exp();
+       } catch (MyException e) {
+       }
+   }
+
+   public static final class MyInner extends MyOuter {
+       static String myString = "shared_string_from_MyInner";
+       public void test() {
+           System.out.println("MyInner");
+       }
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/OpenArchiveRegion.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test open archive heap regions
+ * @requires vm.cds.archived.java.heap
+ * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
+ * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
+ * vm options.
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @run driver OpenArchiveRegion
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class OpenArchiveRegion {
+    public static void main(String[] args) throws Exception {
+        JarBuilder.getOrCreateHelloJar();
+        String appJar = TestCommon.getTestJar("hello.jar");
+        String appClasses[] = TestCommon.list("Hello");
+
+        // Dump with open archive heap region, requires G1 GC
+        OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
+        TestCommon.checkDump(output, "oa0 space:");
+        output.shouldNotContain("oa0 space:         0 [");
+        output = TestCommon.exec(appJar, "Hello");
+        TestCommon.checkExec(output, "Hello World");
+        output = TestCommon.exec(appJar, "-XX:+UseSerialGC", "Hello");
+        TestCommon.checkExec(output, "Hello World");
+
+        // Dump with open archive heap region disabled when G1 GC is not in use
+        output = TestCommon.dump(appJar, appClasses, "-XX:+UseParallelGC");
+        TestCommon.checkDump(output);
+        output.shouldNotContain("oa0 space:");
+        output = TestCommon.exec(appJar, "Hello");
+        TestCommon.checkExec(output, "Hello World");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrimitiveTypesApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.lang.reflect.Field;
+import sun.hotspot.WhiteBox;
+
+//
+// Test primitive type class mirror objects are cached when open archive heap
+// objects are mapped.
+//
+public class PrimitiveTypesApp {
+    public static void main(String[] args) {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        FieldsTest ft = new FieldsTest();
+        ft.testBoolean(wb);
+        ft.testByte(wb);
+        ft.testChar(wb);
+        ft.testInt(wb);
+        ft.testShort(wb);
+        ft.testLong(wb);
+        ft.testFloat(wb);
+        ft.testDouble(wb);
+    }
+}
+
+class FieldsTest {
+    public boolean f_boolean;
+    public byte f_byte;
+    public char f_char;
+    public int f_int;
+    public short f_short;
+    public long f_long;
+    public float f_float;
+    public double f_double;
+
+    FieldsTest() {
+        f_byte = 1;
+        f_boolean = false;
+        f_char = 'a';
+        f_int = 1;
+        f_short = 100;
+        f_long = 2018L;
+        f_float = 1.0f;
+        f_double = 2.5;
+    }
+
+    void testBoolean(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_boolean");
+            f.setBoolean(this, true);
+            if (!f_boolean) {
+                throw new RuntimeException("FAILED. Field f_boolean has unexpected value: " + f_boolean);
+            }
+            checkPrimitiveType(wb, f, Boolean.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testByte(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_byte");
+            f.setByte(this, (byte)9);
+            if (f_byte != (byte)9) {
+                throw new RuntimeException("FAILED. Field f_byte has unexpected value: " + f_byte);
+            }
+            checkPrimitiveType(wb, f, Byte.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testChar(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_char");
+            f.setChar(this, 'b');
+            if (f_char != 'b') {
+                throw new RuntimeException("FAILED. Field f_char has unexpected value: " + f_char);
+            }
+            checkPrimitiveType(wb, f, Character.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testInt(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_int");
+            f.setInt(this, 9999);
+            if (f_int != 9999) {
+                throw new RuntimeException("FAILED. Field f_int has unexpected value: " + f_int);
+            }
+            checkPrimitiveType(wb, f, Integer.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testShort(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_short");
+            f.setShort(this, (short)99);
+            if (f_short != 99) {
+                throw new RuntimeException("FAILED. Field f_short has unexpected value: " + f_short);
+            }
+            checkPrimitiveType(wb, f, Short.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testLong(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_long");
+            f.setLong(this, 99L);
+            if (f_long != 99L) {
+                throw new RuntimeException("FAILED. Field f_long has unexpected value: " + f_long);
+            }
+            checkPrimitiveType(wb, f, Long.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testFloat(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_float");
+            f.setFloat(this, 9.9f);
+            if (f_float != 9.9f) {
+                throw new RuntimeException("FAILED. Field f_float has unexpected value: " + f_float);
+            }
+            checkPrimitiveType(wb, f, Float.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void testDouble(WhiteBox wb) {
+        try {
+            Field f = this.getClass().getDeclaredField("f_double");
+            f.setDouble(this, 9.9);
+            if (f_double != 9.9) {
+                throw new RuntimeException("FAILED. Field f_double has unexpected value: " + f_double);
+            }
+            checkPrimitiveType(wb, f, Double.TYPE);
+        } catch (NoSuchFieldException nsfe) {
+            throw new RuntimeException(nsfe);
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException(iae);
+        }
+    }
+
+    void checkPrimitiveType(WhiteBox wb, Field f, Class t) {
+        Class c = f.getType();
+        if (!(c.isPrimitive() && c == t)) {
+            throw new RuntimeException("FAILED. " + c + " is not primitive type " + t);
+        }
+        if (wb.isShared(c)) {
+            System.out.println(c + " is cached, expected");
+        } else {
+            throw new RuntimeException("FAILED. " + c + " is not cached.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrimitiveTypesTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test archived primitive type mirrors
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile PrimitiveTypesApp.java
+ * @run driver ClassFileInstaller -jar app.jar PrimitiveTypesApp FieldsTest
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver PrimitiveTypesTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class PrimitiveTypesTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        String classlist[] = new String[] {
+            "PrimitiveTypesApp",
+            "FieldsTest"
+        };
+
+        TestCommon.testDump(appJar, classlist, use_whitebox_jar);
+        OutputAnalyzer output = TestCommon.exec(appJar, use_whitebox_jar,
+                                                "-XX:+UnlockDiagnosticVMOptions",
+                                                "-XX:+WhiteBoxAPI",
+                                                "-XX:+VerifyAfterGC",
+                                                "PrimitiveTypesApp");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/PrintSystemModulesApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+//
+// Print the system module names
+//
+public class PrintSystemModulesApp {
+    public static void main(String args[]) throws Exception {
+        String modules = ModuleLayer.boot().toString();
+        System.out.println(modules + ", ");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassDefinition;
+import java.lang.instrument.Instrumentation;
+import java.lang.instrument.UnmodifiableClassException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.io.File;
+import java.security.CodeSigner;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+import sun.hotspot.WhiteBox;
+
+public class RedefineClassApp {
+    static WhiteBox wb = WhiteBox.getWhiteBox();
+
+    public static interface Intf {            // Loaded from Boot class loader (-Xbootclasspath/a).
+        public String get();
+    }
+    public static class Bar implements Intf { // Loaded from Boot class loader.
+        public String get() {
+            return "buzz";
+        }
+    }
+    public static class Foo implements Intf { // Loaded from AppClassLoader
+        public String get() {
+            return "buzz";
+        }
+    }
+
+    static int numTests = 0;
+    static int failed = 0;
+    static Instrumentation instrumentation;
+
+    public static void main(String args[]) throws Throwable {
+        if (wb.areSharedStringsIgnored()) {
+          System.out.println("Shared strings are ignored.");
+          return;
+        }
+
+        File bootJar = new File(args[0]);
+        File appJar  = new File(args[1]);
+
+        instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
+        System.out.println("INFO: instrumentation = " + instrumentation);
+
+        testBootstrapCDS("Bootstrap Loader", bootJar);
+        testAppCDSv1("Application Loader", appJar);
+
+        if (failed > 0) {
+            throw new RuntimeException("FINAL RESULT: " + failed + " out of " + numTests + " test case(s) have failed");
+        } else {
+            System.out.println("FINAL RESULT: All " + numTests + " test case(s) have passed!");
+        }
+
+        // Full GC. The cached objects in adjustable archive heap regions are
+        // scanned. The archive regions are verified. No error should be
+        // reported.
+        wb.fullGC();
+    }
+
+    static void testBootstrapCDS(String group, File jar) throws Throwable {
+        doTest(group, new Bar(), jar);
+    }
+
+    static void testAppCDSv1(String group, File jar) throws Throwable {
+        doTest(group, new Foo(), jar);
+    }
+
+    static void checkArchivedMirrorObject(Class klass) {
+        if (wb.areOpenArchiveHeapObjectsMapped()) {
+            if (!wb.isShared(klass)) {
+                failed ++;
+                System.out.println("FAILED. " + klass + " mirror object is not archived");
+                return;
+            }
+        }
+    }
+
+    static void doTest(String group, Intf object, File jar) throws Throwable {
+        numTests ++;
+
+        Class klass = object.getClass();
+        System.out.println();
+        System.out.println("++++++++++++++++++++++++++");
+        System.out.println("Test group: " + group);
+        System.out.println("Testing with classloader = " + klass.getClassLoader());
+        System.out.println("Testing with class       = " + klass);
+        System.out.println("Test is shared           = " + wb.isSharedClass(klass));
+        System.out.println("++++++++++++++++++++++++++");
+
+        // Check archived mirror object before redefine
+        checkArchivedMirrorObject(klass);
+
+        // Call get() before redefine. All strings in archived classes are shared.
+        String res = object.get();
+        System.out.println("get() returns " + res);
+        if (res.equals("buzz") && wb.isShared(res)) {
+            System.out.println("get() returns " + res + ", string is shared");
+        } else {
+            if (!res.equals("buzz")) {
+                System.out.println("FAILED. buzz is expected but got " + res);
+            } else {
+                System.out.println("FAILED. " + res + " is not shared");
+            }
+            failed ++;
+            return;
+        }
+        res = null; // release the local reference to the string
+
+        // Run GC
+        System.gc();
+        System.gc();
+        System.gc();
+
+        // Redefine the shared class
+        byte[] buff = Util.getClassFileFromJar(jar, klass.getName());
+        Util.replace(buff, "buzz", "huzz");
+        String f = "(failed)";
+        try {
+            instrumentation.redefineClasses(new ClassDefinition(klass, buff));
+            f = object.get();
+        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
+            e.printStackTrace();
+        }
+        if (f.equals("huzz")) {
+            System.out.println("PASSED: object.get() after redefinition returns " + f);
+        } else {
+            System.out.println("FAILED: object.get() after redefinition returns " + f);
+            failed ++;
+        }
+
+        // Run GC. Should not crash.
+        System.gc();
+        System.gc();
+        System.gc();
+
+        // Check archived mirror object after redefine and GC
+        checkArchivedMirrorObject(klass);
+
+        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++ (done)\n\n");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Redefine shared class. GC should not cause crash with cached resolved_references.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes /test/hotspot/jtreg/runtime/cds/appcds/jvmti
+ * @requires vm.cds.archived.java.heap
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ * @build sun.hotspot.WhiteBox
+ *        RedefineClassApp
+ *        InstrumentationClassFileTransformer
+ *        InstrumentationRegisterClassFileTransformer
+ * @run driver RedefineClassTest
+ */
+
+import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
+import java.io.File;
+import java.util.List;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class RedefineClassTest {
+    public static String bootClasses[] = {
+        "RedefineClassApp$Intf",
+        "RedefineClassApp$Bar",
+        "sun.hotspot.WhiteBox",
+    };
+    public static String appClasses[] = {
+        "RedefineClassApp",
+        "RedefineClassApp$Foo",
+    };
+    public static String sharedClasses[] = TestCommon.concat(bootClasses, appClasses);
+
+    public static String agentClasses[] = {
+        "InstrumentationClassFileTransformer",
+        "InstrumentationRegisterClassFileTransformer",
+        "Util",
+    };
+
+    public static void main(String[] args) throws Throwable {
+        runTest();
+    }
+
+    public static void runTest() throws Throwable {
+        String bootJar =
+            ClassFileInstaller.writeJar("RedefineClassBoot.jar", bootClasses);
+        String appJar =
+            ClassFileInstaller.writeJar("RedefineClassApp.jar", appClasses);
+        String agentJar =
+            ClassFileInstaller.writeJar("InstrumentationAgent.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("InstrumentationAgent.mf"),
+                                        agentClasses);
+
+        String bootCP = "-Xbootclasspath/a:" + bootJar;
+
+        String agentCmdArg;
+        agentCmdArg = "-javaagent:" + agentJar;
+
+        TestCommon.testDump(appJar, sharedClasses, bootCP, "-Xlog:gc+region=trace");
+
+        OutputAnalyzer out = TestCommon.execAuto("-cp", appJar,
+                bootCP,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "-Xlog:cds=info",
+                agentCmdArg,
+               "RedefineClassApp", bootJar, appJar);
+        out.reportDiagnosticSummary();
+
+        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
+        TestCommon.checkExec(out, opts);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/src/test/jdk/test/Test.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+package jdk.test;
+
+public class Test {
+    public static void main(String[] args) {
+        ClassLoader scl = ClassLoader.getSystemClassLoader();
+        ClassLoader cl1 = Test.class.getClassLoader();
+        Module testModule = Test.class.getModule();
+        ClassLoader cl2 = ModuleLayer.boot().findLoader(testModule.getName());
+
+        if (cl1 != scl)
+            throw new RuntimeException("Not loaded by system class loader");
+        if (cl2 != scl)
+            throw new RuntimeException("Not associated with system class loader");
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cacheObject/src/test/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ */
+
+module test {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/cdsutils/DynamicDumpHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+package cdsutils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
+/**
+ * This class is used to simulate -Xshare:dump with -XX:ArchiveClassesAtExit.
+ * It loads all classes specified in a classlist file. See patchJarForDynamicDump()
+ * in ../TestCommon.java for details.
+ */
+public class DynamicDumpHelper {
+    public static void main(String args[]) throws Throwable {
+        File file = new File(args[0]);
+
+        System.out.println("Loading classes to share...");
+        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+            String line;
+            while ((line = br.readLine()) != null) {
+                //System.out.println("Loading class: " + line);
+                line = line.replace('/', '.');
+                try {
+                    Class.forName(line);
+                } catch (java.lang.ClassNotFoundException ex) {
+                    try {
+                        Class.forName(line, true, null);
+                    } catch (java.lang.ClassNotFoundException cnfe) {
+                        System.out.println("Preload Warning: Cannot find " + line.replace('.', '/'));
+                    }
+                } catch (Throwable t) {
+                    System.out.println("Error: failed to load \"" + line + "\": " + t);
+                }
+            }
+        }
+        System.out.println("Loading classes to share: done.");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHello.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/*
+ * This test uses ldc to load an integer value via a condy bootstrap method.
+ */
+
+class CondyHello
+        version 55:0
+{
+
+public static Method condyBSM:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;"
+        throws java/lang/Throwable
+        stack 4 locals 6
+{
+                sipush          12345;
+                invokestatic    Method java/lang/Integer.valueOf:"(I)Ljava/lang/Integer;";
+                areturn;
+}
+
+public static Method I:"()I"
+        stack 1 locals 0
+{
+                ldc             Dynamic REF_invokeStatic:CondyHello.condyBSM:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;":I:"I";
+                ireturn;
+}
+
+public static Method doit:"()I"
+        stack 4 locals 1
+{
+                invokestatic    Method I:"()I";
+                ireturn;
+}
+
+} // end Class CondyHello 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHelloApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class CondyHelloApp {
+    public static void main(String[] args) throws Throwable {
+        int n;
+        if ((n = CondyHello.doit()) != 12345) {
+            throw new java.lang.RuntimeException("Expected 12345 but got " + n);
+        } else {
+            System.out.println("n = " + n + " (as expected)");
+        }
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(CondyHelloApp.class)) {
+            if (!wb.isSharedClass(CondyHello.class)) {
+                throw new java.lang.RuntimeException("CondyHello should be in shared space but is not.");
+            } else {
+                System.out.println("CondyHello.class is shared (as expected)");
+            }
+        }
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/condy/CondyHelloTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/*
+ * @test
+ * @summary Make sure CDS works with a minimal test case that uses a CONSTANT_Dynamic constant-pool entry
+ * @requires (vm.cds)
+ * @modules java.base/jdk.internal.misc
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @build CondyHello
+ * @build sun.hotspot.WhiteBox CondyHelloTest CondyHelloApp
+ * @run driver ClassFileInstaller -jar condy_hello.jar CondyHello CondyHelloApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver CondyHelloTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CondyHelloTest {
+
+    static String classes[] = {
+        "CondyHello",
+        "CondyHelloApp",
+    };
+
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("condy_hello.jar");
+
+        TestCommon.dump(appJar, TestCommon.list(classes), use_whitebox_jar);
+
+        TestCommon.run("-XX:+UnlockDiagnosticVMOptions",
+                       "-XX:+WhiteBoxAPI",
+                       "-cp", appJar,
+                       use_whitebox_jar,
+                       "CondyHelloApp")
+          .assertNormalExit();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatA.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests the format checking of class list format.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ * @run driver ClassListFormatA
+ */
+
+public class ClassListFormatA extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE A1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ClassListFormatA", "CustomLoadee",
+                                            "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib");
+        //----------------------------------------------------------------------
+        // TESTGROUP A: general bad input
+        //----------------------------------------------------------------------
+        dumpShouldFail(
+            "TESTCASE A1: bad input - interface: instead of interfaces:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee interface: 1"
+            ),
+            "Unknown input:");
+
+        dumpShouldFail(
+            "TESTCASE A2: bad input - negative IDs not allowed",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: -1"
+            ),
+            "Error: negative integers not allowed");
+
+        dumpShouldFail(
+            "TESTCASE A3: bad input - bad ID (not an integer)",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: xyz"
+            ),
+            "Error: expected integer");
+
+        if (false) {
+              // FIXME - classFileParser.cpp needs fixing.
+            dumpShouldFail(
+                "TESTCASE A4: bad input - bad ID (integer too big)",
+                appJar, classlist(
+                    "Hello",
+                    "java/lang/Object id: 2147483648" // <- this is 0x80000000
+                ),
+                "Error: expected integer");
+
+              // FIXME
+            dumpShouldFail(
+                "TESTCASE A5: bad input - bad ID (integer too big)",
+                appJar, classlist(
+                    "Hello",
+                    "java/lang/Object id: 21474836489" // bigger than 32-bit!
+                ),
+                "Error: expected integer");
+        }
+
+        // Good input:
+        dumpShouldPass(
+            "TESTCASE A6: extraneous spaces, tab characters and trailing new line characters",
+            appJar, classlist(
+                "Hello   ",                   // trailing spaces
+                "java/lang/Object\tid:\t1",   // \t instead of ' '
+                "CustomLoadee id: 2 super: 1 source: " + customJarPath,
+                "CustomInterface2_ia id: 3 super: 1 source: " + customJarPath + " ",
+                "CustomInterface2_ib id: 4 super: 1 source: " + customJarPath + "\t\t\r" ,
+                "CustomLoadee2 id: 5 super: 1 interfaces: 3 4 source: " + customJarPath      // preceding spaces
+            ));
+
+        int _max_allowed_line = 4096; // Must match ClassListParser::_max_allowed_line in C code.
+        int _line_buf_extra = 10;     // Must match ClassListParser::_line_buf_extra in C code.
+        StringBuffer sbuf = new StringBuffer();
+        for (int i=0; i<_max_allowed_line+1; i++) {
+          sbuf.append("x");
+        }
+
+        dumpShouldFail(
+            "TESTCASE A7: bad input - line too long",
+            appJar, classlist(
+                sbuf.toString()
+            ),
+            "input line too long (must be no longer than " + _max_allowed_line + " chars");
+
+        for (int i=0; i<_line_buf_extra + 1000; i++) {
+          sbuf.append("X");
+        }
+
+        dumpShouldFail(
+            "TESTCASE A8: bad input - line too long: try to overflow C buffer",
+            appJar, classlist(
+                sbuf.toString()
+            ),
+            "input line too long (must be no longer than " + _max_allowed_line + " chars");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatB.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ * @run driver ClassListFormatB
+ */
+
+public class ClassListFormatB extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE B1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ClassListFormatB", "CustomLoadee",
+                                            "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib");
+        //----------------------------------------------------------------------
+        // TESTGROUP B if source IS specified
+        //----------------------------------------------------------------------
+        dumpShouldFail(
+            "TESTCASE B1: if source: is specified, must specify super:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee id: 2 source: " + customJarPath
+            ),
+            "If source location is specified, super class must be also specified");
+
+        dumpShouldFail(
+            "TESTCASE B2: if source: is specified, must specify id:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee super: 1 source: " + customJarPath
+            ),
+            "If source location is specified, id must be also specified");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatBase.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+/**
+ * Base class for ClassListFormat[A,B,C...].java
+ */
+public class ClassListFormatBase {
+    protected static String RUN_ONLY_TEST = null;
+
+    static void dumpShouldFail(String caseHelp, String appJar, String[] appClasses,
+                               String... expected_errors) throws Throwable {
+        if (RUN_ONLY_TEST != null && !caseHelp.startsWith(RUN_ONLY_TEST)) {
+            System.out.println("Skipped via RUN_ONLY_TEST: " + caseHelp);
+            return;
+        }
+        System.out.println("------------------------------");
+        System.out.println(caseHelp);
+        System.out.println("------------------------------");
+
+        try {
+            OutputAnalyzer output = TestCommon.dump(appJar, appClasses);
+            output.shouldHaveExitValue(1);
+            for (String s : expected_errors) {
+                output.shouldContain(s);
+            }
+        } catch (Throwable t) {
+            System.out.println("FAILED CASE: " + caseHelp);
+            throw t;
+        }
+    }
+
+    static void dumpShouldPass(String caseHelp, String appJar, String[] appClasses,
+                               String... expected_msgs) throws Throwable {
+        if (RUN_ONLY_TEST != null && !caseHelp.startsWith(RUN_ONLY_TEST)) {
+            System.out.println("Skipped via RUN_ONLY_TEST: " + caseHelp);
+            return;
+        }
+        System.out.println("------------------------------");
+        System.out.println(caseHelp);
+        System.out.println("------------------------------");
+
+        try {
+            OutputAnalyzer output = TestCommon.dump(appJar, appClasses, "-Xlog:cds");
+            output.shouldHaveExitValue(0);
+            output.shouldContain("Dumping");
+            for (String s : expected_msgs) {
+                output.shouldContain(s);
+            }
+        } catch (Throwable t) {
+            System.out.println("FAILED CASE: " + caseHelp);
+            throw t;
+        }
+    }
+
+    static String[] classlist(String... args) {
+        return TestCommon.list(args);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatC.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ * @run driver ClassListFormatC
+ */
+
+public class ClassListFormatC extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE C1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ClassListFormatC", "CustomLoadee",
+                                                "CustomLoadee2", "CustomInterface2_ia",
+                                                "CustomInterface2_ib");
+
+        //----------------------------------------------------------------------
+        // TESTGROUP C: if source IS NOT specified
+        //----------------------------------------------------------------------
+        dumpShouldFail(
+            "TESTCASE C1: if source: is NOT specified, must NOT specify super:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee super: 1"
+            ),
+            "If source location is not specified, super class must not be specified");
+
+        dumpShouldFail(
+            "TESTCASE C2: if source: is NOT specified, must NOT specify interface:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee interfaces: 1"
+            ),
+            "If source location is not specified, interface(s) must not be specified");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatD.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ * @run driver ClassListFormatD
+ */
+
+public class ClassListFormatD extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE D1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ClassListFormatD", "CustomLoadee",
+                                                "CustomLoadee2", "CustomInterface2_ia",
+                                                "CustomInterface2_ib");
+
+        //----------------------------------------------------------------------
+        // TESTGROUP D: bad use of IDs
+        //----------------------------------------------------------------------
+        dumpShouldFail(
+            "TESTCASE D1: duplicated id:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee id: 1 super: 1 source: " + customJarPath
+            ),
+            "Duplicated ID 1 for class CustomLoadee");
+
+        dumpShouldFail(
+            "TESTCASE D2: bad ID for super:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee id: 2 super: 2 source: " + customJarPath
+            ),
+            "Super class id 2 is not yet loaded");
+
+        dumpShouldFail(
+            "TESTCASE D3: bad ID in interfaces:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee id: 2 super: 1 interfaces: 2 source: " + customJarPath
+            ),
+            "Interface id 2 is not yet loaded");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatE.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ * @run driver ClassListFormatE
+ */
+
+public class ClassListFormatE extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE E1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ClassListFormatE", "CustomLoadee",
+                                                "CustomLoadee2", "CustomInterface2_ia",
+                                                "CustomInterface2_ib");
+
+        //----------------------------------------------------------------------
+        // TESTGROUP E: super class and interfaces
+        //----------------------------------------------------------------------
+        dumpShouldFail(
+            "TESTCASE E1: missing interfaces: keyword",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomLoadee2 id: 1 super: 1 source: " + customJarPath
+            ),
+            "Class CustomLoadee2 implements the interface CustomInterface2_ia, but no interface has been specified in the input line");
+
+        dumpShouldFail(
+            "TESTCASE E2: missing one interface",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
+                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
+                "CustomLoadee2 id: 4 super: 1 interfaces: 2 source: " + customJarPath
+            ),
+            "The interface CustomInterface2_ib implemented by class CustomLoadee2 does not match any of the specified interface IDs");
+
+        dumpShouldFail(
+            "TESTCASE E3: specifying an interface that's not implemented by the class",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
+                "CustomLoadee id: 2 super: 1 interfaces: 2 source: " + customJarPath
+            ),
+            "The number of interfaces (1) specified in class list does not match the class file (0)");
+
+        dumpShouldFail(
+            "TESTCASE E4: repeating an ID in the interfaces: keyword",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
+                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
+                "CustomLoadee2 id: 4 super: 1 interfaces: 2 2 3 source: " + customJarPath
+            ),
+            "The number of interfaces (3) specified in class list does not match the class file (2)");
+
+        dumpShouldFail(
+            "TESTCASE E5: wrong super class",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                "CustomInterface2_ia id: 2 super: 1 source: " + customJarPath,
+                "CustomInterface2_ib id: 3 super: 1 source: " + customJarPath,
+                "CustomLoadee id: 4 super: 1 source: " + customJarPath,
+                "CustomLoadee2 id: 5 super: 4 interfaces: 2 3 source: " + customJarPath
+            ),
+            "The specified super class CustomLoadee (id 4) does not match actual super class java.lang.Object");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomLoaderApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+// This is a utlitity test class for loading classes-under-test
+// by means of custom class loader.
+// See AppCDS/jvmti/transformRelatedClasses/TransformRelatedClasses.java
+// for an example.
+// Use this test app in conjunction with other tests
+// to load and exercise classes using custom class loader(s).
+// This class is intended to be called by the "main test driver"
+// inside a child process, normally with sharing enabled.
+//
+// Arguments: customJarPath, loaderType, testClass
+//     customJarPath - a path to jar file containing classes for
+//         loading via this custom class loader, including the
+//         testClass
+//     loaderType - Currently only "unregistered"
+//         (Fingerprint verification method) is allowed
+//     testClass - the class to be loader; the test method with
+//         signature 'public static void test()' will be called
+//         on this class, so class must contain such method
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.logging.Logger;
+
+public class CustomLoaderApp {
+    public static void ping() {};
+
+    private static void log(String msg) {
+        System.out.println("CustomLoaderApp: " + msg);
+    }
+
+    public static void main(String[] args) throws Exception {
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+
+        String loaderType = args[1];
+        log("loaderType = " + loaderType);
+
+        String testClass = args[2];
+        log("testClass = " + testClass);
+
+        switch(loaderType) {
+        case "unregistered":
+            loadAndUseWithUnregisteredLoader(urls, testClass);
+            break;
+        default:
+            throw new IllegalArgumentException("loader type is wrong: " + loaderType);
+        }
+    }
+
+
+    // Load the test classes using unregistered loader
+    // (i.e. loader that is not using AppCDS API)
+    private static void loadAndUseWithUnregisteredLoader(URL[] urls, String testClass)
+        throws Exception {
+        URLClassLoader urlClassLoader = new URLClassLoader(urls);
+        callTestMethod(loadAndCheck(urlClassLoader, testClass));
+    }
+
+    private static Class loadAndCheck(ClassLoader loader, String className)
+        throws ClassNotFoundException {
+        Class c = loader.loadClass(className);
+        log("class =" + c);
+        log("loader = " + c.getClassLoader());
+
+        // Check that c is defined by the correct loader
+        if (c.getClassLoader() != loader) {
+            String msg = String.format("c.getClassLoader() equals to <%s>, expected <%s>",
+                                       c.getClassLoader(), loader);
+            throw new RuntimeException(msg);
+        }
+        return c;
+    }
+
+    private static void callTestMethod(Class c) throws Exception {
+        Method[] methods = c.getDeclaredMethods();
+        for (Method m : methods) {
+            log("method = " + m.getName());
+            if (m.getName().equals("test"))
+                m.invoke(null);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/HelloCustom.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Hello World test for AppCDS custom loader support
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /runtime/testlibrary
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
+ * @build sun.hotspot.WhiteBox ClassUnloadCommon
+ * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
+ * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver HelloCustom
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class HelloCustom {
+    public static void main(String[] args) throws Exception {
+        run();
+    }
+    public static void run(String... extra_runtime_args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
+
+        // Dump the archive
+        String classlist[] = new String[] {
+            "HelloUnload",
+            "java/lang/Object id: 1",
+            "CustomLoadee id: 2 super: 1 source: " + customJarPath
+        };
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, classlist,
+                            // command-line arguments ...
+                            use_whitebox_jar);
+
+        output = TestCommon.exec(appJar,
+                                 TestCommon.concat(extra_runtime_args,
+                                     // command-line arguments ...
+                                     use_whitebox_jar,
+                                     "-XX:+UnlockDiagnosticVMOptions",
+                                     "-XX:+WhiteBoxAPI",
+                                     "HelloUnload", customJarPath, "true", "true"));
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/HelloCustom_JFR.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Same as HelloCustom, but add -XX:StartFlightRecording=dumponexit=true to the runtime
+ *          options. This makes sure that the shared classes are compatible with both
+ *          JFR and JVMTI ClassFileLoadHook.
+ * @requires vm.hasJFR
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /runtime/testlibrary
+ * @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
+ * @build sun.hotspot.WhiteBox ClassUnloadCommon
+ * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
+ * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver HelloCustom_JFR
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class HelloCustom_JFR {
+    public static void main(String[] args) throws Exception {
+        HelloCustom.run("-XX:StartFlightRecording=dumponexit=true", "-Xlog:cds+jvmti=debug");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/LoaderSegregationTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Check that during dumping, the classes for BOOT/EXT/APP loaders are segregated from the
+ *          custom loader classes.
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/LoaderSegregation.java
+ *          test-classes/CustomLoadee.java test-classes/CustomLoadee2.java
+ *          test-classes/CustomInterface2_ia.java test-classes/CustomInterface2_ib.java
+ *          test-classes/CustomLoadee3.java test-classes/CustomLoadee3Child.java
+ *          test-classes/OnlyBuiltin.java
+ *          test-classes/OnlyUnregistered.java
+ *          ../test-classes/Util.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver LoaderSegregationTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+/**
+ * See "Handling of the classes in the AppCDS archive" at the top of
+ * systemDicrionatyShared.hpp.
+ *
+ * This test ensure that the 2 types of archived classes (BUILTIN and UNREGISTERED)
+ * are segregated at both dump-time and run time:
+ *
+ * [A] An archived BUILTIN class cannot be a subclass of a non-BUILTIN class.
+ * [B] An archived BUILTIN class cannot implement a non-BUILTIN interface.
+ * [C] BUILTIN and UNREGISTERED classes can be loaded only by their corresponding
+ *     type of loaders.
+ *
+ */
+public class LoaderSegregationTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        String appJar = JarBuilder.build("LoaderSegregation_app", "LoaderSegregation",
+                                         "CustomLoadee", "CustomLoadee2", "CustomLoadee3Child", "CustomInterface2_ia",
+                                         "OnlyBuiltin", "Util");
+
+        String app2Jar = JarBuilder.build("LoaderSegregation_app2", "CustomLoadee3", "CustomInterface2_ib");
+
+        String customJarPath = JarBuilder.build("LoaderSegregation_custom", "CustomLoadee",
+                                                "CustomLoadee2", "CustomInterface2_ia", "CustomInterface2_ib",
+                                                "CustomLoadee3", "CustomLoadee3Child",
+                                                "OnlyBuiltin", "OnlyUnregistered");
+
+        // Dump the archive
+        String classlist[] = new String[] {
+            "LoaderSegregation",
+            "java/lang/Object id: 1",
+
+            // These are the UNREGISTERED classes: they have "source:"
+            // but they don't have "loader:".
+            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
+
+            "CustomInterface2_ia id: 3 super: 1 source: " + customJarPath,
+            "CustomInterface2_ib id: 4 super: 1 source: " + customJarPath,
+            "CustomLoadee2 id: 5 super: 1 interfaces: 3 4 source: " + customJarPath,
+
+            "CustomLoadee3 id: 6 super: 1 source: " + customJarPath,
+            "CustomLoadee3Child id: 7 super: 6 source: " + customJarPath,
+
+            // At dump time, the following BUILTIN classes are loaded after the UNREGISTERED
+            // classes from above. However, at dump time, they cannot use the UNREGISTERED classes are their
+            // super or interface.
+            "CustomLoadee",          // can be loaded at dump time
+            "CustomLoadee2",         // cannot be loaded at dump time (interface missing)
+            "CustomLoadee3Child",    // cannot be loaded at dump time (super missing)
+
+            // Check that BUILTIN and UNREGISTERED classes can be loaded only by their
+            // corresponding type of loaders.
+            "OnlyBuiltin",
+            "OnlyUnregistered id: 9 super: 1 source: " + customJarPath,
+        };
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, classlist,
+                            // command-line arguments ...
+                            use_whitebox_jar);
+
+        output = TestCommon.exec(TestCommon.concatPaths(appJar, app2Jar),
+                                 // command-line arguments ...
+                                 "--add-opens=java.base/java.lang=ALL-UNNAMED",
+                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
+                                 use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "LoaderSegregation", customJarPath);
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestBase.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+/*
+ * This is a base class for the following test cases:
+ *   ParallelTestMultiFP.java
+ *   ParallelTestSingleFP.java
+ */
+public class ParallelTestBase {
+    public static final int MAX_CLASSES = 40; // must match ../test-classes/ParallelLoad.java
+    public static int NUM_THREADS = 4;        // must match ../test-classes/ParallelLoad.java
+
+    public static final int SINGLE_CUSTOM_LOADER = 1;
+    public static final int MULTI_CUSTOM_LOADER  = 2;
+
+    public static final int FINGERPRINT_MODE = 1;
+
+    public static void run(String[] args, int loaderType, int mode) throws Exception {
+        String[] cust_classes = new String[MAX_CLASSES];
+        String[] cust_list;
+
+        if (mode == FINGERPRINT_MODE) {
+            cust_list = new String[MAX_CLASSES];
+        } else {
+            cust_list = new String[MAX_CLASSES * NUM_THREADS];
+        }
+
+        for (int i = 0; i<MAX_CLASSES; i++) {
+            cust_classes[i] = "ParallelClass" + i;
+        }
+        String customJarPath = JarBuilder.build("ParallelTestBase", cust_classes);
+
+        for (int i = 0, n=0; i<MAX_CLASSES; i++) {
+            int super_id = 1;
+            if (mode == FINGERPRINT_MODE) {
+                // fingerprint mode -- no need to use the "loader:" option.
+                int id = i + 2;
+                cust_list[i] = cust_classes[i] + " id: " + id + " super: " + super_id + " source: " + customJarPath;
+            } else {
+                throw new RuntimeException("Only FINGERPRINT_MODE is supported");
+            }
+        }
+
+        String app_list[];
+        String mainClass;
+        String appJar;
+
+        if (mode == FINGERPRINT_MODE) {
+            appJar = JarBuilder.build("parallel_fp",
+                                      "ParallelLoad",
+                                      "ParallelLoadThread",
+                                      "ParallelLoadWatchdog");
+            app_list = new String[] {
+                "java/lang/Object id: 1",
+                "ParallelLoad",
+                "ParallelLoadThread",
+                "ParallelLoadWatchdog"
+            };
+            mainClass = "ParallelLoad";
+        } else {
+            throw new RuntimeException("Currently only FINGERPRINT_MODE is supported");
+        }
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, TestCommon.concat(app_list, cust_list));
+
+        String loaderTypeArg = (loaderType == SINGLE_CUSTOM_LOADER) ? "SINGLE_CUSTOM_LOADER" : "MULTI_CUSTOM_LOADER";
+        String modeArg = "FINGERPRINT_MODE";
+
+        output = TestCommon.exec(appJar,
+                                 // command-line arguments ...
+                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
+                                 mainClass, loaderTypeArg, modeArg, customJarPath);
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestMultiFP.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Load classes from CDS archive into multiple custom loader using parallel threads
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/ParallelLoad.java ../test-classes/ParallelClasses.java
+ * @run driver ParallelTestMultiFP
+ */
+
+public class ParallelTestMultiFP extends ParallelTestBase {
+    public static void main(String[] args) throws Exception {
+        ParallelTestBase.run(args, MULTI_CUSTOM_LOADER, FINGERPRINT_MODE);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestSingleFP.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Load classes from CDS archive into a single custom loader using parallel threads (finger print)
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/ParallelLoad.java ../test-classes/ParallelClasses.java
+ * @run driver ParallelTestSingleFP
+ */
+
+public class ParallelTestSingleFP extends ParallelTestBase {
+    public static void main(String[] args) throws Exception {
+        ParallelTestBase.run(args, SINGLE_CUSTOM_LOADER, FINGERPRINT_MODE);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProhibitedPackageNamesTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Make sure prohibited packages cannot be stored into archive for custom loaders.
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ClassListFormatBase.java ../test-classes/Hello.java test-classes/InProhibitedPkg.java
+ * @run driver ProhibitedPackageNamesTest
+ */
+
+public class ProhibitedPackageNamesTest extends ClassListFormatBase {
+    static {
+        // Uncomment the following line to run only one of the test cases
+        // ClassListFormatBase.RUN_ONLY_TEST = "TESTCASE PPN1";
+    }
+
+    public static void main(String[] args) throws Throwable {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String customJarPath = JarBuilder.build("ProhibitedPackageNames_custom", "java/InProhibitedPkg");
+
+        dumpShouldPass(
+            "TESTCASE PPN1: prohibited package name without loader:",
+            appJar, classlist(
+                "Hello",
+                "java/lang/Object id: 1",
+                // Without "loader:" keyword.
+                "java/InProhibitedPkg id: 2 super: 1 source: " + customJarPath
+            ),
+            "Prohibited package for non-bootstrap classes: java/InProhibitedPkg.class");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProtectionDomain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary AppCDS handling of protection domain in custom loaders.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ *
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/ProtDomain.java
+ * @run driver ProtectionDomain
+ */
+
+public class ProtectionDomain {
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.build("ProtectionDomain-app", "ProtDomain");
+
+        String customJar = JarBuilder.build("ProtectionDomain-custom",
+            "ProtDomainClassForArchive", "ProtDomainNotForArchive");
+        String[] classlist = new String[] {
+            "java/lang/Object id: 1",
+            "ProtDomain id: 2 super: 1 source: " + appJar,
+            "ProtDomainClassForArchive id: 3 super: 1 source: " + customJar
+        };
+
+        TestCommon.testDump(appJar, classlist);
+
+        // First class is loaded from CDS, second class is loaded from JAR
+        TestCommon.checkExec(TestCommon.exec(appJar, "-verbose:class", "ProtDomain", customJar),
+            "[class,load] ProtDomainClassForArchive source: shared objects file",
+            "[class,load] ProtDomainNotForArchive source: file");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/SameNameInTwoLoadersTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Testing the loading of a class with the same name in two different class loaders.
+ *
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ *
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/CustomLoadee.java
+ *     test-classes/CustomLoadee3.java
+ *     test-classes/SameNameUnrelatedLoaders.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver SameNameInTwoLoadersTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+
+public class SameNameInTwoLoadersTest {
+    private static String appJar;
+    private static String customJar;
+    private static String useWbParam;
+
+    public static void main(String[] args) throws Exception {
+        appJar = JarBuilder.build("SameNameInTwoLoadersTest",
+            "SameNameUnrelatedLoaders");
+
+        customJar = JarBuilder.build("SameNameInTwoLoadersTest_custom", "CustomLoadee", "CustomLoadee3");
+
+        useWbParam = "-Xbootclasspath/a:" +
+            JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");;
+
+        // ====== unrelated loaders
+        executeTestCase(getClassList_FP(),
+            "SameNameUnrelatedLoaders", "FpBoth");
+    }
+
+    private static void executeTestCase(String[] classlist,
+        String testClass, String testCaseId) throws Exception {
+        classlist[0] = testClass;
+
+        TestCommon.testDump(appJar, classlist, useWbParam);
+
+        OutputAnalyzer output = TestCommon.exec(appJar,
+                                 // command-line arguments ...
+                                 "--add-opens=java.base/java.security=ALL-UNNAMED",
+                                 useWbParam,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 testClass,
+                                 customJar, testCaseId);
+        TestCommon.checkExec(output);
+    }
+
+    // Single entry, no loader specified (FP method)
+    private static String[] getClassList_FP() {
+        return new String[] {
+            "SameNameUnrelatedLoaders",
+            "java/lang/Object id: 1",
+            "CustomLoadee id: 10 super: 1 source: " + customJar,
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnintendedLoadersTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Make sure classes intended for custom loaders cannot be loaded by BOOT/EXT/APP loaders
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/UnintendedLoaders.java test-classes/CustomLoadee.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver UnintendedLoadersTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class UnintendedLoadersTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        String appJar = JarBuilder.build("UnintendedLoaders_app", "UnintendedLoaders");
+        String customJarPath = JarBuilder.build("UnintendedLoaders_custom", "CustomLoadee");
+
+        // Dump the archive
+        String classlist[] = new String[] {
+            "UnintendedLoadersTest",
+            "java/lang/Object id: 1",
+
+            // Without "loader:" keyword.
+            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
+        };
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, classlist,
+                            // command-line arguments ...
+                            use_whitebox_jar);
+
+        output = TestCommon.exec(appJar,
+                                 // command-line arguments ...
+                                 use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "UnintendedLoaders");
+        TestCommon.checkExec(output);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnloadUnregisteredLoaderTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test the behavior when shared classes loaded by custom loaders are
+ *          unloaded.
+ * @requires vm.cds
+ * @requires vm.cds.custom.loaders
+ * @requires vm.opt.final.ClassUnloading
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/testlibrary
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox ClassUnloadCommon
+ * @compile test-classes/UnloadUnregisteredLoader.java test-classes/CustomLoadee.java
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller ClassUnloadCommon
+ * @run driver ClassFileInstaller ClassUnloadCommon$1
+ * @run driver ClassFileInstaller ClassUnloadCommon$TestFailure
+ * @run driver UnloadUnregisteredLoaderTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class UnloadUnregisteredLoaderTest {
+    public static void main(String[] args) throws Exception {
+        String appJar1 = JarBuilder.build("UnloadUnregisteredLoader_app1", "UnloadUnregisteredLoader");
+        String appJar2 = JarBuilder.build(true, "UnloadUnregisteredLoader_app2",
+                                          "ClassUnloadCommon", "ClassUnloadCommon$1", "ClassUnloadCommon$TestFailure");
+        String customJarPath = JarBuilder.build("UnloadUnregisteredLoader_custom", "CustomLoadee");
+        String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        String classpath = TestCommon.concatPaths(appJar1, appJar2);
+        String classlist[] = new String[] {
+            "UnloadUnregisteredLoader",
+            "ClassUnloadCommon",
+            "ClassUnloadCommon$1",
+            "ClassUnloadCommon$TestFailure",
+            "java/lang/Object id: 1",
+            "CustomLoadee id: 2 super: 1 source: " + customJarPath,
+        };
+
+        OutputAnalyzer output;
+        TestCommon.testDump(classpath, classlist,
+                            // command-line arguments ...
+                            use_whitebox_jar);
+
+        output = TestCommon.exec(classpath,
+                                 // command-line arguments ...
+                                 use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "UnloadUnregisteredLoader",
+                                 customJarPath);
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnsupportedPlatforms.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Ensure that support for AppCDS custom class loaders are not enabled on unsupported platforms.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile test-classes/SimpleHello.java
+ * @run driver UnsupportedPlatforms
+ */
+
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class UnsupportedPlatforms {
+    public static String PLATFORM_NOT_SUPPORTED_WARNING =
+        "AppCDS custom class loaders not supported on this platform";
+
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.build("UnsupportedPlatforms", "SimpleHello");
+
+        // Dump the archive
+        String classlist[] = new String[] {
+            "SimpleHello",
+            "java/lang/Object id: 1",
+            "CustomLoadee id: 2 super: 1 source: " + appJar
+        };
+
+        OutputAnalyzer out = TestCommon.dump(appJar, classlist);
+
+        if (Platform.areCustomLoadersSupportedForCDS()) {
+            out.shouldNotContain(PLATFORM_NOT_SUPPORTED_WARNING);
+            out.shouldHaveExitValue(0);
+        } else {
+            out.shouldContain(PLATFORM_NOT_SUPPORTED_WARNING);
+            out.shouldHaveExitValue(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomInterface2_ia.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+interface CustomInterface2_ia {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomInterface2_ib.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+interface CustomInterface2_ib {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class CustomLoadee {
+    public String toString() {
+        return "this is CustomLoadee";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee2.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class CustomLoadee2 implements CustomInterface2_ia, CustomInterface2_ib {
+    public String toString() {
+        return "this is CustomLoadee";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee3.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class CustomLoadee3 {
+    public String toString() {
+        return "this is CustomLoadee3";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee3Child.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class CustomLoadee3Child extends CustomLoadee3 {
+    public String toString() {
+        return "this is CustomLoadee3Child";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/Hello.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.*;
+import java.net.*;
+import sun.hotspot.WhiteBox;
+
+public class Hello {
+    public static void main(String args[]) throws Exception {
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+        System.out.println(path);
+        System.out.println(url);
+
+        URLClassLoader urlClassLoader = new URLClassLoader(urls);
+        Class c = urlClassLoader.loadClass("CustomLoadee");
+        System.out.println(c);
+        System.out.println(c.getClassLoader());
+
+        // [1] Check that CustomLoadee is defined by the correct loader
+        if (c.getClassLoader() != urlClassLoader) {
+            throw new RuntimeException("c.getClassLoader() == " + c.getClassLoader() +
+                                       ", expected == " + urlClassLoader);
+        }
+
+        // [2] Check that CustomLoadee is loaded from shared archive.
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(Hello.class)) {
+            if (!wb.isSharedClass(c)) {
+                throw new RuntimeException("wb.isSharedClass(c) should be true");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/HelloUnload.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import sun.hotspot.WhiteBox;
+
+public class HelloUnload {
+    private static String className = "CustomLoadee";
+
+    public static void main(String args[]) throws Exception {
+        if (args.length != 3) {
+            throw new RuntimeException("Unexpected number of arguments: expected 3, actual " + args.length);
+        }
+
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+        System.out.println(path);
+        System.out.println(url);
+
+        // unload the custom class loader
+        boolean doUnload = false;
+        if (args[1].equals("true")) {
+            doUnload = true;
+        } else if (args[1].equals("false")) {
+            doUnload = false;
+        } else {
+            throw new RuntimeException("args[1] can only be either \"true\" or \"false\", actual " + args[1]);
+        }
+
+        // should the CustomLoadee class be in the shared archive
+        boolean inArchive = false;
+        if (args[2].equals("true")) {
+            inArchive = true;
+        } else if (args[2].equals("false")) {
+            inArchive = false;
+        } else {
+            throw new RuntimeException("args[2] can only be either \"true\" or \"false\", actual " + args[1]);
+        }
+
+        URLClassLoader urlClassLoader =
+            new URLClassLoader("HelloClassLoader", urls, null);
+        Class c = Class.forName(className, true, urlClassLoader);
+        System.out.println(c);
+        System.out.println(c.getClassLoader());
+        Object o = c.newInstance();
+
+        // [1] Check that CustomLoadee is defined by the correct loader
+        if (c.getClassLoader() != urlClassLoader) {
+            throw new RuntimeException("c.getClassLoader() == " + c.getClassLoader() +
+                                       ", expected == " + urlClassLoader);
+        }
+
+        // [2] Check that CustomLoadee is loaded from shared archive.
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if(wb.isSharedClass(HelloUnload.class)) {
+            if (inArchive && !wb.isSharedClass(c)) {
+                throw new RuntimeException("wb.isSharedClass(c) should be true");
+            }
+        }
+
+        ClassUnloadCommon.failIf(!wb.isClassAlive(className), "should be live here");
+
+        if (doUnload) {
+            String loaderName = urlClassLoader.getName();
+            int loadedRefcount = wb.getSymbolRefcount(loaderName);
+            System.out.println("Refcount of symbol " + loaderName + " is " + loadedRefcount);
+
+            urlClassLoader = null; c = null; o = null;
+            ClassUnloadCommon.triggerUnloading();
+            System.out.println("Is CustomLoadee alive? " + wb.isClassAlive(className));
+            ClassUnloadCommon.failIf(wb.isClassAlive(className), "should have been unloaded");
+
+            int unloadedRefcount = wb.getSymbolRefcount(loaderName);
+            System.out.println("Refcount of symbol " + loaderName + " is " + unloadedRefcount);
+
+            // refcount of a permanent symbol will not be decremented
+            if (loadedRefcount != 65535) {
+                ClassUnloadCommon.failIf(unloadedRefcount != (loadedRefcount - 1), "Refcount must be decremented");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/InProhibitedPkg.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+package java;
+
+public class InProhibitedPkg {
+    static {
+        if (true) {
+            throw new RuntimeException("This class shouldn't be loaded by any loader other than BOOT");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/LoaderAPI.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Created-By: 1.9.0-internal (Oracle Corporation)
+Specification-Title: My Specification Title
+Specification-Version: 1.0
+Specification-Vendor: My Specification Vendor
+Implementation-Title: My Implementation Title
+Implementation-Version: 1.0
+Implementation-Vendor: My Implementation Vendor
+
+Name: pkg1/
+Implementation-Version: 2.0
+Sealed: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/LoaderSegregation.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.*;
+import java.net.*;
+import sun.hotspot.WhiteBox;
+
+public class LoaderSegregation {
+    // Use these definitions instead of literal strings, to avoid typos.
+    static final String ONLY_BUILTIN      = "OnlyBuiltin";
+    static final String ONLY_UNREGISTERED = "OnlyUnregistered";
+
+    public static void main(String args[]) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        // [A] An archived BUILTIN class cannot be a subclass of a non-BUILTIN class.
+        // [B] An archived BUILTIN class cannot implement a non-BUILTIN interface.
+        if (wb.isSharedClass(LoaderSegregation.class)) {
+            // [1] check that CustomLoadee is loadable from archive
+            if (!wb.isSharedClass(CustomLoadee.class)) {
+                throw new RuntimeException("wb.isSharedClass(CustomLoadee.class) should be true");
+            }
+
+            // [2] CustomInterface2_ia should be archived, even though it was not specified in the classlist.
+            //     It was successfully dumped as a side effect of attempting to load CustomLoadee2
+            //     during dump time. Note that CustomLoadee2 failed to dump because one of its interfaces,
+            //     CustomInterface2_ib, was not loadable from the BOOT/EXT/APP classpath. during dump time.
+            if (!wb.isSharedClass(CustomInterface2_ia.class)) {
+                throw new RuntimeException("wb.isSharedClass(CustomInterface2_ia.class) should be true");
+            }
+
+            // [3] Check that the BUILTIN versions of CustomLoadee2 and CustomLoadee3Child are loadable
+            //     at run time (since we have append LoaderSegregation_app2.jar the classpath),
+            //     but these classes must be loaded from the JAR file.
+            if (wb.isSharedClass(CustomLoadee2.class)) {
+                throw new RuntimeException("wb.isSharedClass(CustomLoadee2.class) should be false");
+            }
+            if (wb.isSharedClass(CustomLoadee3.class)) {
+                throw new RuntimeException("wb.isSharedClass(CustomLoadee3.class) should be false");
+            }
+            if (wb.isSharedClass(CustomLoadee3Child.class)) {
+                throw new RuntimeException("wb.isSharedClass(CustomLoadee3Child.class) should be false");
+            }
+        }
+
+        // [C] BUILTIN and UNREGISTERED classes can be loaded only by their corresponding
+        //     type of loaders.
+
+        String path = args[0];
+        File jarFile = new File(path);
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+        ClassLoader appLoader = LoaderSegregation.class.getClassLoader();
+
+        { // BUILTIN LOADER
+            try {
+                appLoader.loadClass(ONLY_UNREGISTERED);
+                throw new RuntimeException("BUILTIN loader cannot load archived UNREGISTERED class");
+            } catch (ClassNotFoundException expected) {}
+        }
+
+        { // UNREGISTERED LOADER
+            URLClassLoader urlClassLoader = new URLClassLoader(urls);
+            Class c2 = Util.defineClassFromJAR(urlClassLoader, jarFile, ONLY_BUILTIN);
+
+            if (c2.getClassLoader() != urlClassLoader) {
+                throw new RuntimeException("Error in test");
+            }
+
+            if (wb.isSharedClass(LoaderSegregation.class)) {
+                if (wb.isSharedClass(c2)) {
+                    throw new RuntimeException("wb.isSharedClass(c2) should be false - " +
+                                               "unregistered loader cannot load an archived BUILTIN class");
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/OnlyBuiltin.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+// See ../LoaderSegregationTest.java for details.
+//
+// This class is archived only as a BUILTIN class.
+public class OnlyBuiltin {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/OnlyUnregistered.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+// See ../LoaderSegregationTest.java for details.
+//
+// This class is archived only as a UNREGISTERED class.
+public class OnlyUnregistered {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/ProtDomain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.security.ProtectionDomain;
+import java.net.URLClassLoader;
+import java.net.URL;
+import java.io.File;
+
+// Intended to be called from test ProtectionDomain.java
+//
+// ProtDomainClassForArchive is     stored in CDS archive.
+// ProtDomainNotForArchive   is NOT stored in CDS archive.
+//
+// However, they should have the same ProtectionDomain instance.
+public class ProtDomain {
+    public static void main(String args[]) throws Exception {
+        String customLdrPath = args[0];
+
+        URL[] urls = new URL[] {new File(customLdrPath).toURI().toURL()};
+        URLClassLoader ldr = new URLClassLoader(urls);
+        ProtectionDomain domain1 = ldr.loadClass("ProtDomainClassForArchive").getProtectionDomain();
+        ProtectionDomain domain2 = ldr.loadClass("ProtDomainNotForArchive").getProtectionDomain();
+
+        System.out.println("domain1 = " + domain1);
+        System.out.println("domain2  = " + domain2);
+
+        if (domain1 != domain2)
+            throw new RuntimeException("Protection Domains do not match!");
+    }
+}
+
+class ProtDomainClassForArchive {}
+
+class ProtDomainNotForArchive {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/SameNameUnrelatedLoaders.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import sun.hotspot.WhiteBox;
+
+public class SameNameUnrelatedLoaders {
+    public static void main(String args[]) throws Exception {
+        String path = args[0];
+        String testCase = args[1];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+
+        ClassLoader appLoader = SameNameUnrelatedLoaders.class.getClassLoader();
+        URLClassLoader ldr01 = null;
+        URLClassLoader ldr02 = null;
+
+        switch (testCase) {
+            case "FpBoth":
+                ldr01 = new URLClassLoader(urls);
+                ldr02 = new URLClassLoader(urls);
+            break;
+
+            default:
+                throw new IllegalArgumentException("Invalid testCase ID");
+        }
+
+
+        Class class01 = ldr01.loadClass("CustomLoadee");
+        Class class02  = ldr02.loadClass("CustomLoadee");
+
+        System.out.println("class01 = " + class01);
+        System.out.println("class02 = " + class02);
+
+        if (class01.getClassLoader() != ldr01) {
+            throw new RuntimeException("class01 loaded by wrong loader");
+        }
+        if (class02.getClassLoader() != ldr02) {
+            throw new RuntimeException("class02 loaded by wrong loader");
+        }
+
+        if (true) {
+            if (class01.isAssignableFrom(class02)) {
+                throw new RuntimeException("assignable condition failed");
+            }
+
+            Object obj01 = class01.newInstance();
+            Object obj02 = class02.newInstance();
+
+            if (class01.isInstance(obj02)) {
+                throw new RuntimeException("instance relationship condition 01 failed");
+            }
+            if (class02.isInstance(obj01)) {
+                throw new RuntimeException("instance relationship condition 02 failed");
+            }
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(SameNameUnrelatedLoaders.class)) {
+            boolean class1Shared = wb.isSharedClass(class01);
+            boolean class2Shared = wb.isSharedClass(class02);
+
+            if (testCase.equals("FpBoth")) {
+                if (!class1Shared) {
+                    throw new RuntimeException("first class is not shared");
+                }
+
+                if (class2Shared) {
+                    throw new RuntimeException("second class is shared, " +
+                    "and it should not be - first come first serve violation");
+                }
+            } else {
+                if (! (class1Shared && class2Shared) )
+                    throw new RuntimeException("both classes expected to be shared, but are not");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/SimpleHello.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class SimpleHello {
+    public static void main(String[] args) {
+        System.out.println("Simple Hello");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/UnintendedLoaders.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class UnintendedLoaders {
+    public static void main(String[] args) throws Exception {
+        ClassLoader loaders[] = new ClassLoader[2];
+        loaders[0] = UnintendedLoaders.class.getClassLoader(); // app loader
+        loaders[1] = loaders[0].getParent();                   // platform loader
+
+        String[] names = {
+            "CustomLoadee",
+        };
+
+
+        for (int i=0; i<3; i++) {
+            for (String s : names) {
+                try {
+                    if (i <= 1) {
+                        System.out.println(loaders[i].loadClass(s));
+                    } else {
+                        System.out.println(Class.forName(s));
+                    }
+                } catch (ClassNotFoundException e) {
+                    System.out.println("Expected exception:" + e);
+                    continue;
+                }
+                throw new RuntimeException("The class \"" + s + "\" should not be resolved by the application or platform class loader");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/UnloadUnregisteredLoader.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import sun.hotspot.WhiteBox;
+
+public class UnloadUnregisteredLoader {
+    public static void main(String args[]) throws Exception {
+        String path = args[0];
+        URL url = new File(path).toURI().toURL();
+        URL[] urls = new URL[] {url};
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        String className = "CustomLoadee";
+
+        for (int i=0; i<5; i++) {
+            doit(urls, className, (i == 0));
+
+            ClassUnloadCommon.triggerUnloading();
+            ClassUnloadCommon.failIf(wb.isClassAlive(className), "should have been unloaded");
+        }
+    }
+
+  public static void doit(URL urls[], String className, boolean isFirstTime) throws Exception {
+        ClassLoader appLoader = UnloadUnregisteredLoader.class.getClassLoader();
+        URLClassLoader custLoader = new URLClassLoader(urls, appLoader);
+
+        Class klass = custLoader.loadClass(className);
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(UnloadUnregisteredLoader.class)) {
+            if (isFirstTime) {
+                // First time: we should be able to load the class from the CDS archive
+                if (!wb.isSharedClass(klass)) {
+                    throw new RuntimeException("wb.isSharedClass(klass) should be true for first time");
+                }
+            } else {
+                // Second time:  the class in the CDS archive is not available, because it has not been cleaned
+                // up (see bug 8140287), so we must load the class dynamically.
+                //
+                // FIXME: after 8140287 is fixed, class should be shard regardless of isFirstTime.
+                if (wb.isSharedClass(klass)) {
+                    throw new RuntimeException("wb.isSharedClass(klass) should be false for second time");
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/AppendClasspath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary At run time, it is OK to append new elements to the classpath that was used at dump time.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @compile ../test-classes/HelloMore.java
+ * @run driver AppendClasspath
+ */
+
+import java.io.File;
+
+public class AppendClasspath extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(AppendClasspath::testDefaultBase);
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
+
+        // Dump an archive with a specified JAR file in -classpath
+        dump(topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-cp", appJar, "Hello")
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+
+        // runtime with classpath containing the one used in dump time,
+        // i.e. the dump time classpath is a prefix of the runtime classpath.
+        run(topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar + File.pathSeparator + appJar2,
+            "HelloMore")
+            .assertNormalExit(output -> {
+                    output.shouldContain("Hello source: shared objects file")
+                          .shouldContain("Hello World ... More")
+                          .shouldHaveExitValue(0);
+                });
+
+        // reverse the order of the 2 jar files so that the dump time classpath
+        // is no longer a prefix of the runtime classpath. The Hello class
+        // should be loaded from the jar file.
+        run(topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar2 + File.pathSeparator + appJar,
+            "HelloMore")
+            .assertAbnormalExit(output -> {
+                    output.shouldContain("shared class paths mismatch")
+                          .shouldHaveExitValue(1);
+                });
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Corrupt the header CRC fields of the top archive. VM should exit with an error.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build Hello sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar hello.jar Hello
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI ArchiveConsistency
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.channels.FileChannel;
+import java.nio.file.StandardOpenOption;
+import static java.nio.file.StandardOpenOption.READ;
+import static java.nio.file.StandardOpenOption.WRITE;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import sun.hotspot.WhiteBox;
+
+public class ArchiveConsistency extends DynamicArchiveTestBase {
+    public static WhiteBox wb;
+    public static int int_size;        // size of int
+    public static String[] shared_region_name = {"MiscCode", "ReadWrite", "ReadOnly", "MiscData"};
+    public static int num_regions = shared_region_name.length;
+
+    public static void main(String[] args) throws Exception {
+        runTest(ArchiveConsistency::testCustomBase);
+    }
+
+    // Test with custom base archive + top archive
+    static void testCustomBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top2");
+        String baseArchiveName = getNewArchiveName("base");
+        dumpBaseArchive(baseArchiveName);
+        doTest(baseArchiveName, topArchiveName);
+    }
+
+    public static void setReadWritePermission(File file) throws Exception {
+        if (!file.canRead()) {
+            if (!file.setReadable(true)) {
+                throw new IOException("Cannot modify file " + file + " as readable");
+            }
+        }
+        if (!file.canWrite()) {
+            if (!file.setWritable(true)) {
+                throw new IOException("Cannot modify file " + file + " as writable");
+            }
+        }
+    }
+
+    public static long readInt(FileChannel fc, long offset, int nbytes) throws Exception {
+        ByteBuffer bb = ByteBuffer.allocate(nbytes);
+        bb.order(ByteOrder.nativeOrder());
+        fc.position(offset);
+        fc.read(bb);
+        return  (nbytes > 4 ? bb.getLong(0) : bb.getInt(0));
+    }
+
+    public static long align_up_page(long l) throws Exception {
+        // wb is obtained in getFileOffsetInfo() which is called first in main() else we should call
+        // WhiteBox.getWhiteBox() here first.
+        int pageSize = wb.getVMPageSize();
+        return (l + pageSize -1) & (~ (pageSize - 1));
+    }
+
+    public static void writeData(FileChannel fc, long offset, ByteBuffer bb) throws Exception {
+        fc.position(offset);
+        fc.write(bb);
+        fc.force(true);
+    }
+
+    public static FileChannel getFileChannel(File jsa) throws Exception {
+        List<StandardOpenOption> arry = new ArrayList<StandardOpenOption>();
+        arry.add(READ);
+        arry.add(WRITE);
+        return FileChannel.open(jsa.toPath(), new HashSet<StandardOpenOption>(arry));
+    }
+
+   public static void modifyJsaHeaderCRC(File jsa) throws Exception {
+        FileChannel fc = getFileChannel(jsa);
+        int_size = wb.getOffsetForName("int_size");
+        System.out.println("    int_size " + int_size);
+        ByteBuffer bbuf = ByteBuffer.allocateDirect(int_size);
+        for (int i = 0; i < int_size; i++) {
+            bbuf.put((byte)0);
+        }
+
+        int baseArchiveCRCOffset = wb.getOffsetForName("DynamicArchiveHeader::_base_archive_crc");
+        int crc = 0;
+        System.out.printf("%-12s%-12s\n", "Space name", "CRC");
+        for (int i = 0; i < 4; i++) {
+            baseArchiveCRCOffset += int_size * i;
+            System.out.println("    baseArchiveCRCOffset " + baseArchiveCRCOffset);
+            crc = (int)readInt(fc, baseArchiveCRCOffset, int_size );
+            System.out.printf("%-11s%-12d\n", shared_region_name[i], crc);
+            bbuf.rewind();
+            writeData(fc, baseArchiveCRCOffset, bbuf);
+        }
+        fc.force(true);
+        if (fc.isOpen()) {
+            fc.close();
+        }
+    }
+
+    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String mainClass = "Hello";
+        dump2(baseArchiveName, topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                          .shouldContain("Written dynamic archive 0x");
+                });
+
+        File jsa = new File(topArchiveName);
+        if (!jsa.exists()) {
+            throw new IOException(jsa + " does not exist!");
+        }
+
+        // Modify the CRC values in the header of the top archive.
+        wb = WhiteBox.getWhiteBox();
+        setReadWritePermission(jsa);
+        modifyJsaHeaderCRC(jsa);
+
+        run2(baseArchiveName, topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-XX:+VerifySharedSpaces",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain("Header checksum verification failed")
+                          .shouldContain("Unable to use shared archive")
+                          .shouldHaveExitValue(1);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArrayKlasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary handling of the existence of InstanceKlass::array_klasses()
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ *          /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build ArrayKlassesApp
+ * @run driver ClassFileInstaller -jar ArrayKlasses.jar
+ *             ArrayKlassesApp
+ * @run driver ArrayKlasses
+ */
+
+public class ArrayKlasses extends DynamicArchiveTestBase {
+    public static void main(String[] args) throws Exception {
+        runTest(ArrayKlasses::test);
+    }
+
+    static void test() throws Exception {
+        String topArchiveName = getNewArchiveName();
+        String appJar = ClassFileInstaller.getJarPath("ArrayKlasses.jar");
+        String mainClass = "ArrayKlassesApp";
+
+        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ClassResolutionFailure.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test with a jar file which contains only the main class but not the dependent class.
+ *          The main class should be archived. During run time, the main class
+ *          should be loaded from the archive.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build StrConcatApp
+ * @build MissingDependent
+ * @run driver ClassFileInstaller -jar missingDependent.jar MissingDependent
+ * @run driver ClassResolutionFailure
+ */
+
+public class ClassResolutionFailure extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(ClassResolutionFailure::testDefaultBase);
+    }
+
+    // Test with default base archive + top archive
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("missingDependent.jar");
+        String mainClass = "MissingDependent";
+
+        dump(topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-Xlog:class+load=trace",
+             "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+
+        run(topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("MissingDependent source: shared objects file")
+                          .shouldHaveExitValue(0);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveTestBase.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,265 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSTestUtils.Result;
+
+/**
+ * Base class for test cases in test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/
+ */
+class DynamicArchiveTestBase {
+    private static boolean executedIn_run = false;
+
+    public static interface DynamicArchiveTest {
+        public void run() throws Exception;
+    }
+
+    public static interface DynamicArchiveTestWithArgs {
+        public void run(String args[]) throws Exception;
+    }
+
+
+    /*
+     * Tests for dynamic archives should be written using this pattern:
+     *
+     * public class HelloDynamic extends DynamicArchiveTestBase {
+     *     public static void main(String[] args) throws Exception {
+     *        runTest(HelloDynamic::testDefaultBase); // launch one test case
+     *     }
+     *
+     *     // the body of a test case
+     *     static void testDefaultBase() throws Exception {
+     *         String topArchiveName = getNewArchiveName("top");
+     *         doTest(null, topArchiveName);
+     *     }
+     * }
+     *
+     * The reason for this is so that we can clean up the archive files
+     * created by prior test cases. Otherwise tests with lots of
+     * test cases may fill up the scratch directory.
+     */
+    public static void runTest(DynamicArchiveTest t) throws Exception {
+        executedIn_run = true;
+        try {
+            TestCommon.deletePriorArchives();
+            t.run();
+        } finally {
+            executedIn_run = false;
+        }
+    }
+
+    public static void runTest(DynamicArchiveTestWithArgs t, String... args) throws Exception {
+        executedIn_run = true;
+        try {
+            TestCommon.deletePriorArchives();
+            t.run(args);
+        } finally {
+            executedIn_run = false;
+        }
+    }
+
+    public static String getNewArchiveName() {
+        return TestCommon.getNewArchiveName();
+    }
+    public static String getNewArchiveName(String stem) {
+        return TestCommon.getNewArchiveName(stem);
+    }
+
+    /**
+     * Execute a JVM using the base archive (given by baseArchiveName) with the command line
+     * (given by cmdLineSuffix). At JVM exit, dump all eligible classes into the top archive
+     * (give by topArchiveName).
+     *
+     * If baseArchiveName is null, use the JDK's default archive as the base archive.
+     */
+    public static Result dump2(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        String[] cmdLine = TestCommon.concat(
+            "-XX:ArchiveClassesAtExit=" + topArchiveName);
+        // to allow dynamic archive tests to be run in the "rt-non-cds-mode"
+        cmdLine = TestCommon.concat(cmdLine, "-Xshare:auto");
+        if (baseArchiveName != null) {
+            cmdLine = TestCommon.concat(cmdLine, "-XX:SharedArchiveFile=" + baseArchiveName);
+        }
+        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
+        return execProcess("dump", null, cmdLine);
+    }
+
+    public static Result dump2_WB(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        return dump2(baseArchiveName, topArchiveName,
+                     TestCommon.concat(wbRuntimeArgs(), cmdLineSuffix));
+    }
+
+    /**
+     * A convenience method similar to dump2, but always use the JDK's default archive
+     * as the base archive.
+     *
+     * Most dynamicArchive/*.java test cases should be using this method instead of run2.
+     */
+    public static Result dump(String topArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        return dump2(null, topArchiveName, cmdLineSuffix);
+    }
+
+    /**
+     * Dump the base archive. The JDK's default class list is used (unless otherwise specified
+     * in cmdLineSuffix).
+     */
+    public static void dumpBaseArchive(String baseArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        CDSOptions opts = new CDSOptions();
+        opts.setArchiveName(baseArchiveName);
+        opts.addSuffix(cmdLineSuffix);
+        opts.addSuffix("-Djava.class.path=");
+        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
+        CDSTestUtils.checkDump(out);
+    }
+
+    /**
+     * Same as dumpBaseArchive, but also add WhiteBox to the bootcp
+     */
+    public static void dumpBaseArchive_WB(String baseArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        dumpBaseArchive(baseArchiveName,
+                        TestCommon.concat("-Xbootclasspath/a:" + getWhiteBoxJar(), cmdLineSuffix));
+    }
+
+    private static String getWhiteBoxJar() {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        if (!(new File(wbJar)).exists()) {
+            throw new RuntimeException("Test error: your test must have " +
+                                       "'@run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox'");
+        }
+        return wbJar;
+    }
+
+    private static String[] wbRuntimeArgs() {
+        return TestCommon.concat("-Xbootclasspath/a:" + getWhiteBoxJar(),
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI");
+    }
+
+    /**
+     * Execute a JVM using the base archive (given by baseArchiveName) and the top archive
+     * (give by topArchiveName), using the command line (given by cmdLineSuffix).
+     *
+     * If baseArchiveName is null, use the JDK's default archive as the base archive.
+     */
+    public static Result run2(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
+        throws Exception {
+        if (baseArchiveName == null && topArchiveName == null) {
+            throw new RuntimeException("Both baseArchiveName and topArchiveName cannot be null at the same time.");
+        }
+        String archiveFiles = (baseArchiveName == null) ? topArchiveName :
+            (topArchiveName == null) ? baseArchiveName :
+            baseArchiveName + File.pathSeparator + topArchiveName;
+        String[] cmdLine = TestCommon.concat(
+            "-Xshare:on",
+            "-XX:SharedArchiveFile=" + archiveFiles);
+        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
+        return execProcess("exec", null, cmdLine);
+    }
+
+    public static Result runWithRelativePath(String baseArchiveName, String topArchiveName,
+                              String jarDir, String ... cmdLineSuffix)
+        throws Exception {
+        if (baseArchiveName == null && topArchiveName == null) {
+            throw new RuntimeException("Both baseArchiveName and topArchiveName cannot be null at the same time.");
+        }
+        String archiveFiles = (baseArchiveName == null) ? topArchiveName :
+            (topArchiveName == null) ? baseArchiveName :
+            baseArchiveName + File.pathSeparator + topArchiveName;
+        String[] cmdLine = TestCommon.concat(
+            "-Xshare:on",
+            "-XX:SharedArchiveFile=" + archiveFiles);
+        cmdLine = TestCommon.concat(cmdLine, cmdLineSuffix);
+        return execProcess("exec", jarDir, cmdLine);
+    }
+
+    public static Result run2_WB(String baseArchiveName, String topArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        return run2(baseArchiveName, topArchiveName,
+                    TestCommon.concat(wbRuntimeArgs(), cmdLineSuffix));
+    }
+
+    /**
+     * A convenience method similar to run2, but always use the JDK's default archive
+     * as the base archive.
+     *
+     * Most dynamicArchive/*.java test cases should be using this method instead of run2.
+     */
+    public static Result run(String topArchiveName, String ... cmdLineSuffix)
+        throws Exception
+    {
+        return run2(null, topArchiveName, cmdLineSuffix);
+    }
+
+    private static String getXshareMode(String[] cmdLine) {
+        for (int i = 0; i <= cmdLine.length - 1; i++) {
+            int j = cmdLine[i].indexOf("-Xshare:");
+            if (j != -1) {
+                return (cmdLine[i].substring(j));
+            }
+        }
+        return null;
+   }
+
+
+    private static Result execProcess(String mode, String jarDir, String[] cmdLine) throws Exception {
+        if (!executedIn_run) {
+            throw new Exception("Test error: dynamic archive tests must be executed via DynamicArchiveTestBase.run()");
+        }
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
+        if (jarDir != null) {
+            pb.directory(new File(jarDir));
+        }
+        OutputAnalyzer output = TestCommon.executeAndLog(pb, mode);
+        CDSOptions opts = new CDSOptions();
+        String xShareMode = getXshareMode(cmdLine);
+        if (xShareMode != null) {
+            opts.setXShareMode(xShareMode);
+        }
+        return new Result(opts, output);
+    }
+
+    /**
+     * A convenience method for dumping and running, using the default CDS archive from the
+     * JDK. Both dumping and running should exit normally.
+     */
+    public static void dumpAndRun(String topArchiveName, String ... cmdLineSuffix) throws Exception {
+        dump(topArchiveName, cmdLineSuffix).assertNormalExit();
+        run(topArchiveName,  cmdLineSuffix).assertNormalExit();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicFlag.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary The DynamicDumpShareSpaces flag is internal, setting it at the command line should have no effect.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @run driver DynamicFlag
+ */
+
+public class DynamicFlag {
+  public static void main(String[] args) throws Exception {
+      TestCommon.test(JarBuilder.getOrCreateHelloJar(),
+          TestCommon.list("Hello"), "-XX:+DynamicDumpSharedSpaces", "Hello");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicLotsOfClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.ArrayList;
+
+/*
+ * @test
+ * @summary Try to archive lots of classes by searching for classes from the jrt:/ file system. With JDK 12
+ *          this will produce an archive with over 30,000 classes.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build LoadClasses
+ * @build sun.hotspot.WhiteBox
+ * @modules jdk.jartool/sun.tools.jar
+ * @run driver ClassFileInstaller -jar loadclasses.jar LoadClasses
+ * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
+ * @run driver/timeout=500 DynamicLotsOfClasses
+ */
+
+public class DynamicLotsOfClasses extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Throwable {
+        runTest(DynamicLotsOfClasses::testDefaultBase);
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        try {
+            doTest(topArchiveName);
+         } catch (Throwable th) {
+             System.out.println(th.toString());
+             Exception ex = new Exception(th);
+             throw ex;
+         }
+    }
+
+    private static void doTest(String topArchiveName) throws Throwable {
+        ArrayList<String> list = new ArrayList<>();
+        TestCommon.findAllClasses(list);
+
+        String classList = System.getProperty("user.dir") + File.separator +
+                           "LotsOfClasses.list";
+        List<String> lines = list;
+        Path file = Paths.get(classList);
+        Files.write(file, lines, Charset.forName("UTF-8"));
+
+        String appJar = ClassFileInstaller.getJarPath("loadclasses.jar");
+        String mainClass = "LoadClasses";
+
+        String whiteBoxJar = ClassFileInstaller.getJarPath("whitebox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
+        dump(topArchiveName,
+             "--add-modules",
+             "ALL-SYSTEM",
+             "-Xlog:hashtables",
+             "-Xmx500m",
+             "-Xlog:cds,cds+dynamic",
+             bootClassPath,
+             "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+             "-cp", appJar, mainClass, classList)
+             .assertNormalExit(output -> {
+                 output.shouldContain("Buffer-space to target-space delta")
+                        .shouldContain("Written dynamic archive 0x");
+             });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ExcludedClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Unreferenced app classes during dump time should not be included in the archive.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ *          /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build ExcludedClassesApp
+ * @run driver ClassFileInstaller -jar ExcludedClasses.jar
+ *             ExcludedClassesApp
+ *             ExcludedClassesApp$NotLinkedSuper
+ *             ExcludedClassesApp$NotLinkedChild
+ *             ExcludedClassesApp$NotLinkedInterface
+ * @run driver ExcludedClasses
+ */
+
+public class ExcludedClasses extends DynamicArchiveTestBase {
+    public static void main(String[] args) throws Exception {
+        runTest(ExcludedClasses::test);
+    }
+
+    static void test() throws Exception {
+        String topArchiveName = getNewArchiveName();
+        String appJar = ClassFileInstaller.getJarPath("ExcludedClasses.jar");
+        String mainClass = "ExcludedClassesApp";
+
+        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamic.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Hello World test for dynamic archive
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build Hello
+ * @run driver ClassFileInstaller -jar hello.jar Hello
+ * @run driver HelloDynamic
+ */
+
+public class HelloDynamic extends DynamicArchiveTestBase {
+    public static void main(String[] args) throws Exception {
+        runTest(HelloDynamic::testDefaultBase);
+        runTest(HelloDynamic::testCustomBase);
+    }
+
+    // (1) Test with default base archive + top archive
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(null, topArchiveName);
+    }
+
+    // (2) Test with custom base archive + top archive
+    static void testCustomBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top2");
+        String baseArchiveName = getNewArchiveName("base");
+        dumpBaseArchive(baseArchiveName);
+        doTest(baseArchiveName, topArchiveName);
+    }
+
+    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String mainClass = "Hello";
+        dump2(baseArchiveName, topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+        run2(baseArchiveName, topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Hello source: shared objects file")
+                          .shouldHaveExitValue(0);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamicCustom.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Hello World test for dynamic archive with custom loader
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes /runtime/testlibrary
+ * @build HelloUnload CustomLoadee ClassUnloadCommon
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
+ * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver HelloDynamicCustom
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class HelloDynamicCustom extends DynamicArchiveTestBase {
+    private static final String ARCHIVE_NAME =
+        System.getProperty("test.classes") + File.separator + "HelloDynamicCustom-top.jsa";
+
+    public static void main(String[] args) throws Exception {
+        runTest(HelloDynamicCustom::testDefaultBase);
+    }
+
+    private static void testDefaultBase() throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
+        String mainAppClass = "HelloUnload";
+
+        dump(ARCHIVE_NAME,
+            use_whitebox_jar,
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-XX:+WhiteBoxAPI",
+            "-Xlog:cds",
+            "-Xlog:cds+dynamic=debug",
+            "-cp", appJar,
+            mainAppClass, customJarPath, "false", "false")
+            .assertNormalExit(output -> {
+                output.shouldContain("Buffer-space to target-space delta")
+                      .shouldContain("Written dynamic archive 0x")
+                      .shouldNotContain("klasses.*=.*CustomLoadee")
+                      .shouldHaveExitValue(0);
+                });
+
+        run(ARCHIVE_NAME,
+            use_whitebox_jar,
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-XX:+WhiteBoxAPI",
+            "-Xlog:class+load",
+            "-Xlog:cds=debug",
+            "-Xlog:cds+dynamic=info",
+            "-cp", appJar,
+            mainAppClass, customJarPath, "false", "true")
+            .assertNormalExit(output -> {
+                output.shouldContain("HelloUnload source: shared objects file")
+                      .shouldContain("CustomLoadee source: shared objects file")
+                      .shouldHaveExitValue(0);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamicCustomUnload.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Hello World test for dynamic archive with custom loader.
+ *          Attempt will be made to unload the custom loader during
+ *          dump time and run time. The custom loader will be unloaded
+ *          during dump time.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes /runtime/testlibrary
+ * @build HelloUnload CustomLoadee ClassUnloadCommon
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
+ * @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver HelloDynamicCustomUnload
+ */
+
+import java.io.File;
+
+public class HelloDynamicCustomUnload extends DynamicArchiveTestBase {
+    private static final String ARCHIVE_NAME =
+        System.getProperty("test.classes") + File.separator + "HelloDynamicCustomUnload.jsa";
+
+    public static void main(String[] args) throws Exception {
+        runTest(HelloDynamicCustomUnload::testDefaultBase);
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("HelloDynamicCustomUnload-top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String customJarPath = ClassFileInstaller.getJarPath("hello_custom.jar");
+        String mainAppClass = "HelloUnload";
+
+        dump(topArchiveName,
+            use_whitebox_jar,
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-XX:+WhiteBoxAPI",
+            "-Xmn8m",
+            "-Xlog:cds,cds+dynamic=debug,class+unload=debug",
+            "-XX:ArchiveClassesAtExit=" + ARCHIVE_NAME,
+            "-cp", appJar,
+            mainAppClass, customJarPath, "true", "false")
+            .assertNormalExit(output -> {
+                output.shouldContain("Buffer-space to target-space delta")
+                      .shouldContain("Written dynamic archive 0x")
+                      .shouldNotContain("klasses.*=.*CustomLoadee")   // Fixme -- use a better way to decide if a class has been archived
+                      .shouldHaveExitValue(0);
+                });
+
+        run(topArchiveName,
+            use_whitebox_jar,
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-XX:+WhiteBoxAPI",
+            "-Xlog:class+load,cds=debug,class+unload=debug",
+            "-XX:SharedArchiveFile=" + ARCHIVE_NAME,
+            "-cp", appJar,
+            mainAppClass, customJarPath, "true", "false")
+            .assertNormalExit(output -> {
+                output.shouldContain("HelloUnload source: shared objects file")
+                      .shouldMatch(".class.load. CustomLoadee source:.*hello_custom.jar")
+                      .shouldHaveExitValue(0);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/JITInteraction.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test interaction with JIT threads during vm exit.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build TestJIT
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar testjit.jar TestJIT
+ * @run driver JITInteraction
+ */
+
+public class JITInteraction extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(JITInteraction::testDefaultBase);
+    }
+
+    // Test with default base archive + top archive
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("testjit.jar");
+        String mainClass = "TestJIT";
+
+        dump2_WB(null, topArchiveName,
+                 "-Xlog:cds",
+                 "-Xlog:cds+dynamic",
+                 "-XX:-UseOnStackReplacement",
+                 "-XX:+PrintCompilation",
+                 "-cp", appJar, mainClass)
+                .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MainModuleOnly.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,259 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver MainModuleOnly
+ * @summary Test some scenarios with a main modular jar specified in the --module-path and -cp options in the command line.
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Platform;
+
+public class MainModuleOnly extends DynamicArchiveTestBase {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String FS = File.separator;
+    private static final String TEST_SRC = System.getProperty("test.src") +
+        FS + ".." + FS + "jigsaw" + FS + "modulepath";
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE1 = "com.simple";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.simple.Main";
+
+    private static Path moduleDir = null;
+    private static Path moduleDir2 = null;
+    private static Path destJar = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.toString());
+
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
+
+        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
+        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
+        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
+        Files.copy(srcJar, destJar);
+
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    public static void main(String... args) throws Exception {
+        runTest(MainModuleOnly::testDefaultBase);
+    }
+
+    public static void doTest(String topArchiveName) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        // create an archive with both -cp and --module-path in the command line.
+        // Only the class in the modular jar in the --module-path will be archived;
+        // the class in the modular jar in the -cp won't be archived.
+        dump2(null, topArchiveName,
+              "-Xlog:cds+dynamic=debug,cds=debug",
+              "-cp", destJar.toString(),
+              "--module-path", moduleDir.toString(),
+              "-m", TEST_MODULE1)
+              .assertNormalExit(output -> {
+                      output.shouldContain("Buffer-space to target-space delta")
+                            .shouldContain("Written dynamic archive 0x");
+                  });
+
+        // run with the archive using the same command line as in dump time.
+        // The main class should be loaded from the archive.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--module-path", moduleDir.toString(),
+             "-m", TEST_MODULE1)
+            .assertNormalExit(output -> {
+                    output.shouldContain("[class,load] com.simple.Main source: shared objects file")
+                          .shouldHaveExitValue(0);
+                });
+
+        // run with the archive with the main class name inserted before the -m.
+        // The main class name will be picked up before the module name. So the
+        // main class should be loaded from the jar in the -cp.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--module-path", moduleDir.toString(),
+             MAIN_CLASS, "-m", TEST_MODULE1)
+            .assertNormalExit(out ->
+                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar"));
+
+        // run with the archive with exploded module. Since during dump time, we
+        // only archive classes from the modular jar in the --module-path, the
+        // main class should be loaded from the exploded module directory.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--module-path", MODS_DIR.toString(),
+             "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
+            .assertNormalExit(out -> {
+                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple")
+                   .shouldContain(MODS_DIR.toString());
+            });
+
+        // run with the archive with the --upgrade-module-path option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--upgrade-module-path", moduleDir.toString(),
+             "--module-path", moduleDir.toString(),
+             "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // run with the archive with the --limit-modules option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--limit-modules", "java.base," + TEST_MODULE1,
+             "--module-path", moduleDir.toString(),
+             "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // run with the archive with the --patch-module option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--patch-module", TEST_MODULE1 + "=" + MODS_DIR.toString(),
+             "--module-path", moduleDir.toString(),
+             "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // modify the timestamp of the jar file
+        (new File(destJar.toString())).setLastModified(System.currentTimeMillis() + 2000);
+        // run with the archive and the jar with modified timestamp.
+        // It should fail due to timestamp of the jar doesn't match the one
+        // used during dump time.
+        run2(null, topArchiveName,
+             "-Xlog:cds+dynamic=debug,cds=debug,class+load=trace",
+             "-cp", destJar.toString(),
+             "--module-path", moduleDir.toString(),
+             "-m", TEST_MODULE1)
+            .assertAbnormalExit(
+                "A jar file is not the one used while building the shared archive file:");
+        // create an archive with a non-empty directory in the --module-path.
+        // The dumping process will exit with an error due to non-empty directory
+        // in the --module-path.
+        dump2(null, topArchiveName,
+              "-Xlog:cds+dynamic=debug,cds=debug",
+              "-cp", destJar.toString(),
+              "--module-path", MODS_DIR.toString(),
+              "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
+            .assertAbnormalExit(output -> {
+                output.shouldMatch("Error: non-empty directory.*com.simple");
+                });
+
+        // test module path with very long length
+        //
+        // This test can't be run on the windows platform due to an existing
+        // issue in ClassLoader::get_canonical_path() (JDK-8190737).
+        if (Platform.isWindows()) {
+            System.out.println("Long module path test cannot be tested on the Windows platform.");
+            return;
+        }
+        Path longDir = USER_DIR;
+        int pathLen = longDir.toString().length();
+        int PATH_LEN = 2034;
+        int MAX_DIR_LEN = 250;
+        while (pathLen < PATH_LEN) {
+            int remaining = PATH_LEN - pathLen;
+            int subPathLen = remaining > MAX_DIR_LEN ? MAX_DIR_LEN : remaining;
+            char[] chars = new char[subPathLen];
+            Arrays.fill(chars, 'x');
+            String subPath = new String(chars);
+            longDir = Paths.get(longDir.toString(), subPath);
+            pathLen = longDir.toString().length();
+        }
+        File longDirFile = new File(longDir.toString());
+        try {
+            longDirFile.mkdirs();
+        } catch (Exception e) {
+            throw e;
+        }
+        Path longDirJar = longDir.resolve(TEST_MODULE1 + ".jar");
+        // IOException results from the Files.copy() call on platform
+        // such as MacOS X. Test can't be proceeded further with the
+        // exception.
+        try {
+            Files.copy(destJar, longDirJar);
+        } catch (java.io.IOException ioe) {
+            System.out.println("Caught IOException from Files.copy(). Cannot continue.");
+            return;
+        }
+        dump2(null, topArchiveName,
+              "-Xlog:cds+dynamic=debug,cds=debug",
+              "-cp", destJar.toString(),
+              "-Xlog:exceptions=trace",
+              "--module-path", longDirJar.toString(),
+              "-m", TEST_MODULE1)
+            .ifAbnormalExit(output -> {
+                output.shouldMatch("os::stat error.*CDS dump aborted");
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MethodSorting.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary When HelloA and HelloB are copied into the dynamic archive, the Symbols
+ *          for their method's names will have a different sorting order. This requires
+ *          that the dumped InstanceKlass to re-sort their "methods" array and re-layout the vtables/itables.
+ *          A regression test for an earlier bug in DynamicArchiveBuilder::relocate_buffer_to_target().
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ *          /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build MethodSortingApp
+ * @run driver ClassFileInstaller -jar method_sorting.jar
+ *             MethodSortingApp
+ *             MethodSortingApp$HelloA
+ *             MethodSortingApp$HelloA1
+ *             MethodSortingApp$HelloB
+ *             MethodSortingApp$HelloB1
+ *             MethodSortingApp$InterfaceA
+ *             MethodSortingApp$InterfaceB
+ *             MethodSortingApp$ImplementorA
+ *             MethodSortingApp$ImplementorA1
+ *             MethodSortingApp$ImplementorB
+ *             MethodSortingApp$ImplementorB1
+ * @run driver MethodSorting
+ */
+
+public class MethodSorting extends DynamicArchiveTestBase {
+    public static void main(String[] args) throws Exception {
+        runTest(MethodSorting::test);
+    }
+
+    static void test() throws Exception {
+        String topArchiveName = getNewArchiveName();
+        String appJar = ClassFileInstaller.getJarPath("method_sorting.jar");
+        String mainClass = "MethodSortingApp";
+
+        dumpAndRun(topArchiveName, "-Xlog:cds+dynamic=debug", "-cp", appJar, mainClass);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MissingArchive.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+
+/*
+ * @test
+ * @summary error handling when either (or both) of the base/top archives are missing.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build GenericTestApp sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar GenericTestApp.jar GenericTestApp
+ * @run driver MissingArchive
+ */
+
+public class MissingArchive extends DynamicArchiveTestBase {
+    private static final String TOP  = "top";
+    private static final String BASE = "base";
+    private static final String BOTH = "base/top";
+    private static final String NONE = "none";
+
+    public static void main(String[] args) throws Exception {
+        runTest(MissingArchive::test, TOP);
+        runTest(MissingArchive::test, BASE);
+        runTest(MissingArchive::test, BOTH);
+        runTest(MissingArchive::test, NONE);
+    }
+
+    static void delete(String fileName) {
+        File f = new File(fileName);
+        f.delete();
+    }
+
+    static void test(String args[]) throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        String baseArchiveName = getNewArchiveName("base");
+        dumpBaseArchive(baseArchiveName);
+
+        String appJar = ClassFileInstaller.getJarPath("GenericTestApp.jar");
+        String mainClass = "GenericTestApp";
+        dump2_WB(baseArchiveName, topArchiveName,
+                 "-Xlog:cds",
+                 "-Xlog:cds+dynamic=debug",
+                 "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+
+        // Use -Xshare:auto so top archive can fail after base archive has succeeded,
+        // but the app will continue to run.
+        String[] cmdline = TestCommon.concat(
+            "-Xlog:cds*",
+            "-Xshare:auto",
+            "-cp", appJar, mainClass);
+
+
+        String mode = args[0];
+
+        if (mode.contains(BASE)) {
+            delete(baseArchiveName);
+            cmdline = TestCommon.concat(cmdline, "assertNotShared:java.lang.Object");
+        } else {
+            cmdline = TestCommon.concat(cmdline, "assertShared:java.lang.Object");
+        }
+
+        if (mode.contains(TOP)) {
+            delete(topArchiveName);
+        }
+
+        if (mode.equals(NONE)) {
+            cmdline = TestCommon.concat(cmdline, "assertShared:GenericTestApp");
+        } else {
+            cmdline = TestCommon.concat(cmdline, "assertNotShared:GenericTestApp");
+        }
+
+        run2_WB(baseArchiveName, topArchiveName, cmdline).assertNormalExit();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/NoClassToArchive.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary A few edge cases where there's no class to be included in the dynamic archive.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes
+ * @build StrConcatApp
+ * @run driver ClassFileInstaller -jar strConcatApp.jar StrConcatApp
+ * @run driver NoClassToArchive
+ */
+
+import java.io.File;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class NoClassToArchive extends DynamicArchiveTestBase {
+    static final String warningMessage =
+        "There is no class to be included in the dynamic archive";
+    static final String classList = System.getProperty("test.classes") +
+        File.separator + "NoClassToArchive.list";
+    static final String appClass = "StrConcatApp";
+
+    public static void main(String[] args) throws Exception {
+        runTest(NoClassToArchive::testDefaultBase);
+        runTest(NoClassToArchive::testCustomBase);
+    }
+
+    // (1) Test with default base archive + top archive
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(null, topArchiveName);
+    }
+
+    // (2) Test with custom base archive + top archive
+    static void testCustomBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top2");
+        String baseArchiveName = getNewArchiveName("base");
+        doTestCustomBase(baseArchiveName, topArchiveName);
+    }
+
+    private static void checkWarning(OutputAnalyzer output) throws Exception {
+        if (output.getStdout().contains("jrt:/") || output.getStdout().contains("unsafe anonymous")) {
+            System.out.println("test skipped: this platform uses non-archived classes when running -version");
+        } else {
+            output.shouldContain(warningMessage);
+        }
+    }
+
+    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
+        dump2(baseArchiveName, topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-Xlog:class+load=trace",
+             "-version")
+            .assertNormalExit(output -> checkWarning(output));
+
+        dump2(baseArchiveName, topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             "-Xlog:class+load=trace",
+             "-help")
+            .assertNormalExit(output -> {
+                    // some classes will be loaded from the java.base module
+                    output.shouldContain("java.text.MessageFormat source: jrt:/java.base");
+                });
+    }
+
+    private static void doTestCustomBase(String baseArchiveName, String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("strConcatApp.jar");
+        // dump class list by running the StrConcatApp
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+            true,
+            "-XX:DumpLoadedClassList=" + classList,
+            "-cp",
+            appJar,
+            appClass);
+        OutputAnalyzer output = TestCommon.executeAndLog(pb, "dumpClassList");
+        TestCommon.checkExecReturn(output, 0, true, "length = 0");
+
+        // create a custom base archive based on the class list
+        dumpBaseArchive(baseArchiveName, "-XX:SharedClassListFile=" + classList);
+
+        // create a dynamic archive with the custom base archive
+        // no class should be included in the dynamic archive
+        dump2(baseArchiveName, topArchiveName,
+              "-Xlog:cds",
+              "-Xlog:cds+dynamic=debug",
+              "-Xlog:class+load=trace",
+              "-version")
+            .assertNormalExit(out -> checkWarning(out));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/RelativePath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test relative paths specified in the -cp.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @compile ../test-classes/HelloMore.java
+ * @run driver RelativePath
+ */
+
+import java.io.File;
+
+public class RelativePath extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(AppendClasspath::testDefaultBase);
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String appJar2 = JarBuilder.build("AppendClasspath_HelloMore", "HelloMore");
+
+        int idx = appJar.lastIndexOf(File.separator);
+        String jarName = appJar.substring(idx + 1);
+        String jarDir = appJar.substring(0, idx);
+        // relative path starting with "."
+        runWithRelativePath(null, topArchiveName, jarDir,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", "." + File.separator + "hello.jar" + File.pathSeparator + appJar2,
+            "HelloMore")
+            .assertNormalExit(output -> {
+                    output.shouldContain("Hello source: shared objects file")
+                          .shouldContain("Hello World ... More")
+                          .shouldHaveExitValue(0);
+                });
+
+        // relative path starting with ".."
+        idx = jarDir.lastIndexOf(File.separator);
+        String jarSubDir = jarDir.substring(idx + 1);
+        runWithRelativePath(null, topArchiveName, jarDir,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp",
+            ".." + File.separator + jarSubDir + File.separator + "hello.jar" + File.pathSeparator + appJar2,
+            "HelloMore")
+            .assertNormalExit(output -> {
+                    output.shouldContain("Hello source: shared objects file")
+                          .shouldContain("Hello World ... More")
+                          .shouldHaveExitValue(0);
+                });
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/SharedArchiveFileOption.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Some negative tests for the SharedArchiveFile option
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build Hello
+ * @run driver ClassFileInstaller -jar hello.jar Hello
+ * @run driver SharedArchiveFileOption
+ */
+
+import java.io.File;
+
+public class SharedArchiveFileOption extends DynamicArchiveTestBase {
+    public static void main(String[] args) throws Exception {
+        runTest(SharedArchiveFileOption::testCustomBase);
+    }
+
+    static String baseArchiveName2;
+    static void testCustomBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        String baseArchiveName = getNewArchiveName("base");
+        baseArchiveName2 = getNewArchiveName("base2");
+        dumpBaseArchive(baseArchiveName);
+        dumpBaseArchive(baseArchiveName2);
+        doTest(baseArchiveName, topArchiveName);
+    }
+
+    private static void doTest(String baseArchiveName, String topArchiveName) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("hello.jar");
+        String mainClass = "Hello";
+        String dummyArchiveName = getNewArchiveName("dummy");
+
+        // -Xshare:dump specified with -XX:ArchiveClassesAtExit
+        dump2(dummyArchiveName, dummyArchiveName,
+            "-Xlog:cds",
+            "-Xlog:cds+dynamic=debug",
+            "-Xshare:dump",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain("-XX:ArchiveClassesAtExit cannot be used with -Xshare:dump");
+                });
+
+        // more than 1 archive file specified in -XX:SharedArchiveFile during
+        // dynamic dumpgin
+        String dummyArchives = dummyArchiveName + File.pathSeparator + dummyArchiveName;
+        dump2(dummyArchives, dummyArchiveName,
+            "-Xlog:cds",
+            "-Xlog:cds+dynamic=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain("Cannot have more than 1 archive file specified in -XX:SharedArchiveFile during CDS dumping");
+                });
+
+        // normal dynamic archive dumping
+        dump2(baseArchiveName, topArchiveName,
+            "-Xlog:cds",
+            "-Xlog:cds+dynamic=debug",
+            "-cp", appJar, mainClass)
+            .assertNormalExit(output -> {
+                    output.shouldContain("Buffer-space to target-space delta")
+                           .shouldContain("Written dynamic archive 0x");
+                });
+
+        // same archive file specified for -XX:SharedArchiveFile and -XX:ArchiveClassesAtExit
+        dump2(baseArchiveName, baseArchiveName,
+            "-Xlog:cds",
+            "-Xlog:cds+dynamic=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain("Cannot have the same archive file specified for -XX:SharedArchiveFile and -XX:ArchiveClassesAtExit: "
+                        + baseArchiveName);
+                });
+
+
+        // a top archive specified in the base archive position
+        run2(topArchiveName, baseArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldMatch("Not a base shared archive:.*top.*.jsa");
+                });
+
+        // a base archive specified in the top archive position
+        run2(baseArchiveName, baseArchiveName2,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldMatch("Not a top shared archive:.*base.*.jsa");
+                });
+
+        // more than 2 archives specified in the -XX:ShareArchiveFile option
+        String baseArchives = baseArchiveName + File.pathSeparator + baseArchiveName2;
+        run2(baseArchives, topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain(
+                        "Cannot have more than 2 archive files specified in the -XX:SharedArchiveFile option");
+                });
+
+        // base archive not specified
+        final String topArchive = File.pathSeparator + topArchiveName;
+        run2(topArchive, null,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain(
+                        "Base archive was not specified: " + topArchive);
+                });
+
+        // top archive not specified
+        final String baseArchive = baseArchiveName + File.pathSeparator;
+        run2(baseArchive, null,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+            "-cp", appJar, mainClass)
+            .assertAbnormalExit(output -> {
+                    output.shouldContain(
+                        "Top archive was not specified: " + baseArchive);
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnsupportedBaseArchive.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/*
+ * @test
+ * @summary unsupported base archive tests
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver UnsupportedBaseArchive
+ */
+
+public class UnsupportedBaseArchive extends DynamicArchiveTestBase {
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String FS = File.separator;
+    private static final String TEST_SRC = System.getProperty("test.src") +
+        FS + ".." + FS + "jigsaw" + FS + "modulepath";
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE = "com.simple";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.simple.Main";
+
+    private static Path moduleDir = null;
+    private static Path srcJar = null;
+
+    private static final String warningBCP =
+        "Dynamic archiving is disabled because base layer archive has appended boot classpath";
+
+    private static final String warningModulePath =
+        "Dynamic archiving is disabled because base layer archive has module path";
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE),
+                                 MODS_DIR.resolve(TEST_MODULE),
+                                 MODS_DIR.toString());
+
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        srcJar = moduleDir.resolve(TEST_MODULE + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE).toString();
+        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
+    }
+
+    public static void main(String[] args) throws Exception {
+        runTest(UnsupportedBaseArchive::test);
+    }
+
+    static void test(String args[]) throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        String baseArchiveName = getNewArchiveName("base");
+
+        // create a base archive with -Xbootclasspath/a:whitebox.jar
+        dumpBaseArchive_WB(baseArchiveName);
+
+        String appJar    = JarBuilder.getOrCreateHelloJar();
+        String mainClass = "Hello";
+
+        // dumping of dynamic archive should be disabled with a warning message
+        // if the base archive contains -Xbootclasspath/a entries.
+        dump2_WB(baseArchiveName, topArchiveName,
+             "-Xlog:cds*",
+             "-Xlog:cds+dynamic=debug",
+             "-Xlog:class+path=info",
+             "-cp", appJar, mainClass)
+            .assertNormalExit(warningBCP);
+
+        // create a base archive with the --module-path option
+        buildTestModule();
+        baseArchiveName = getNewArchiveName("base-with-module");
+        dumpBaseArchive(baseArchiveName,
+                        "-cp", srcJar.toString(),
+                        "--module-path", moduleDir.toString(),
+                        "-m", TEST_MODULE);
+
+        // dumping of dynamic archive should be disabled with a warning message
+        // if the base archive contains --module-path entries.
+        topArchiveName = getNewArchiveName("top-with-module");
+        dump2(baseArchiveName, topArchiveName,
+              "-Xlog:cds*",
+              "-Xlog:cds+dynamic=debug",
+              "-Xlog:class+path=info",
+              "-cp", srcJar.toString(),
+              "--module-path", moduleDir.toString(),
+              "-m", TEST_MODULE)
+            .assertNormalExit(warningModulePath);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnusedCPDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary non-empty dir in -cp should be fine during dump time if only classes
+ *          from the system modules are being loaded even though some are
+ *          defined to the PlatformClassLoader and AppClassLoader.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile ../test-classes/Hello.java
+ * @run main/othervm -Dtest.cds.copy.child.stdout=false UnusedCPDuringDump
+ */
+
+import java.io.File;
+
+public class UnusedCPDuringDump extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(UnusedCPDuringDump::testDefaultBase);
+    }
+
+    static void testDefaultBase() throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        doTest(topArchiveName);
+    }
+
+    private static void doTest(String topArchiveName) throws Exception {
+        File dir = new File(System.getProperty("user.dir"));
+        File emptydir = new File(dir, "emptydir");
+        emptydir.mkdir();
+        String appJar = JarBuilder.getOrCreateHelloJar();
+        String bootClassPath = "-Xbootclasspath/a:" + appJar;
+
+        // Dumping with a non-empty directory in the -cp.
+        // It should be fine because the app class won't be loaded from the
+        // -cp, it is being loaded from the bootclasspath.
+        dump(topArchiveName,
+             "-Xlog:cds",
+             "-Xlog:cds+dynamic=debug",
+             bootClassPath,
+             "-cp", dir.getPath(),
+             "Hello")
+            .assertNormalExit(output -> {
+                 output.shouldContain("Buffer-space to target-space delta")
+                        .shouldContain("Written dynamic archive 0x");
+                });
+
+        // Running with -cp different from dumping. It should be fine because
+        // the runtime classpath won't be checked against unused classpath
+        // during dump time.
+        run(topArchiveName,
+            "-Xlog:class+load",
+            "-Xlog:cds+dynamic=debug,cds=debug",
+             bootClassPath,
+            "-cp", appJar, "Hello")
+            .assertNormalExit(output -> {
+                    output.shouldContain("Hello World")
+                          .shouldHaveExitValue(0);
+                });
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/WrongTopClasspath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.io.File;
+
+/*
+ * @test
+ * @summary correct classpath for bottom archive, but bad classpath for top archive
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @build GenericTestApp sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar GenericTestApp.jar GenericTestApp
+ * @run driver ClassFileInstaller -jar WrongJar.jar GenericTestApp
+ * @run driver WrongTopClasspath
+ */
+
+public class WrongTopClasspath extends DynamicArchiveTestBase {
+
+    public static void main(String[] args) throws Exception {
+        runTest(WrongTopClasspath::test);
+    }
+
+    static void test(String args[]) throws Exception {
+        String topArchiveName = getNewArchiveName("top");
+        String baseArchiveName = getNewArchiveName("base");
+        dumpBaseArchive(baseArchiveName);
+
+        String appJar    = ClassFileInstaller.getJarPath("GenericTestApp.jar");
+        String wrongJar  = ClassFileInstaller.getJarPath("WrongJar.jar");
+        String mainClass = "GenericTestApp";
+
+        // Dump the top archive using "-cp GenericTestApp.jar" ...
+        dump2_WB(baseArchiveName, topArchiveName,
+                 "-Xlog:cds*",
+                 "-Xlog:cds+dynamic=debug",
+                 "-cp", appJar, mainClass)
+            .assertNormalExit();
+
+        // ... but try to load the top archive using "-cp WrongJar.jar".
+        // Use -Xshare:auto so top archive can fail after base archive has succeeded,
+        // but the app will continue to run.
+        run2_WB(baseArchiveName, topArchiveName,
+                "-Xlog:cds*",
+                "-Xlog:cds+dynamic=debug",
+                "-Xlog:class+path=info",
+                "-Xshare:auto",
+                "-cp", wrongJar, mainClass,
+                "assertShared:java.lang.Object",  // base archive still useable
+                "assertNotShared:GenericTestApp") // but top archive is not useable
+          .assertNormalExit("The top archive failed to load");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/ArrayKlassesApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+public class ArrayKlassesApp {
+    public static void main(String args[]) {
+        ArrayKlassesApp[][] array = new ArrayKlassesApp[1][2];
+        for (int i=0; i<1; i++) {
+            for (int j=0; j<2; j++) {
+                array[i][j] = new ArrayKlassesApp();
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/ExcludedClassesApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+public class ExcludedClassesApp {
+    interface NotLinkedInterface {}
+    static class NotLinkedSuper {
+
+    }
+
+    static class NotLinkedChild extends NotLinkedSuper implements NotLinkedInterface {
+
+    }
+
+    public static NotLinkedSuper notUsedMethod() {
+        return new NotLinkedChild();
+    }
+
+    public static void main(String args[]) {
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/LoadClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+import java.io.File;
+import java.util.List;
+import java.util.Scanner;
+import sun.hotspot.WhiteBox;
+
+public class LoadClasses {
+
+    public static void main (String[] args) throws Throwable {
+        String classList = args[0];
+        Scanner sc = new Scanner(new File(classList));
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        int count = 0;
+        while (sc.hasNextLine()) {
+            String cn = sc.nextLine().replace('/', '.');
+            try {
+                Class<?> cls = Class.forName(cn, false, LoadClasses.class.getClassLoader());
+                wb.linkClass(cls);
+                count++;
+            } catch (Throwable ex) {
+                System.out.println("Loading failed: " + cn);
+                System.out.println(ex.toString());
+            }
+        }
+        System.out.println("Loaded classes = " + count);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/MethodSortingApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.SynchronousQueue;
+
+public class MethodSortingApp {
+    static class HelloA {
+        String aaaa() { return "aaaa"; }
+        String bbbb() { return "bbbb"; }
+        String dddd() { return "dddd"; }
+        String eeee() { return "eeee"; }
+        String gggg() { return "gggg"; }
+    }
+
+    static class HelloA1 extends HelloA {
+        String aaaa() { return "aaa-"; }
+        String dddd() { return "ddd-"; }
+        String gggg() { return "ggg-"; }
+    }
+
+    static class HelloB {
+        String aaaa() { return "aaaa"; }
+        String cccc() { return "cccc"; }
+        String dddd() { return "dddd"; }
+        String ffff() { return "ffff"; }
+        String gggg() { return "gggg"; }
+    }
+
+    static class HelloB1 extends HelloB {
+        String aaaa() { return "aaa-"; }
+        String dddd() { return "ddd-"; }
+        String gggg() { return "ggg-"; }
+    }
+
+    // Default methods in interfaces must be sorted
+    static interface InterfaceA {
+        default public String aaa() { return "aaa";}
+        default public String bbb() { return "bbb";}
+        default public String ddd() { return "ddd";}
+        default public String eee() { return "eee";}
+        default public String ggg() { return "ggg";}
+    }
+
+    static class ImplementorA implements InterfaceA {
+        public String aaa() { return "aa-";}
+    }
+
+    static class ImplementorA1 extends ImplementorA {
+        public String bbb() { return "bb-";}
+    }
+
+    static interface InterfaceB {
+        default public String aaa() { return "aaa"; }
+        default public String ccc() { return "ccc"; }
+        default public String ddd() { return "ddd"; }
+        default public String fff() { return "fff"; }
+        default public String ggg() { return "ggg"; }
+    }
+
+    static class ImplementorB implements InterfaceB {
+        public String ggg() { return "gg-";}
+    }
+
+    static class ImplementorB1 extends ImplementorB {
+        public String fff() { return "ff-";}
+    }
+
+
+    public static void main(String args[]) {
+        testSimpleMethods();
+        testDefaultMethods();
+        testMixedInterfaces();
+    }
+
+    static void testSimpleMethods() {
+        // When HelloA and HelloB are copied into the dynamic archive, the Symbols
+        // for their method's names will have a different sorting order. This requires
+        // that the dumped InstanceKlass to re-sort their "methods" array and re-layout
+        // the vtables/itables.
+        HelloA1 a1 = new HelloA1();
+        HelloA a = new HelloA();
+        assertEqual(a.aaaa(), "aaaa");
+        assertEqual(a.bbbb(), "bbbb");
+        assertEqual(a.dddd(), "dddd");
+        assertEqual(a.eeee(), "eeee");
+        assertEqual(a.gggg(), "gggg");
+
+        assertEqual(a1.aaaa(), "aaa-");
+        assertEqual(a1.bbbb(), "bbbb");
+        assertEqual(a1.dddd(), "ddd-");
+        assertEqual(a1.eeee(), "eeee");
+        assertEqual(a1.gggg(), "ggg-");
+
+        HelloB b = new HelloB();
+        assertEqual(b.aaaa(), "aaaa");
+        assertEqual(b.cccc(), "cccc");
+        assertEqual(b.dddd(), "dddd");
+        assertEqual(b.ffff(), "ffff");
+        assertEqual(b.gggg(), "gggg");
+
+        HelloB b1 = new HelloB1();
+        assertEqual(b1.aaaa(), "aaa-");
+        assertEqual(b1.cccc(), "cccc");
+        assertEqual(b1.dddd(), "ddd-");
+        assertEqual(b1.ffff(), "ffff");
+        assertEqual(b1.gggg(), "ggg-");
+    }
+
+    static void testDefaultMethods() {
+        InterfaceA a1 = new ImplementorA1();
+        InterfaceA a = new ImplementorA();
+
+        assertEqual(a.aaa(), "aa-");
+        assertEqual(a.bbb(), "bbb");
+        assertEqual(a.ddd(), "ddd");
+        assertEqual(a.eee(), "eee");
+        assertEqual(a.ggg(), "ggg");
+
+        assertEqual(a1.aaa(), "aa-");
+        assertEqual(a1.bbb(), "bb-");
+        assertEqual(a1.ddd(), "ddd");
+        assertEqual(a1.eee(), "eee");
+        assertEqual(a1.ggg(), "ggg");
+
+        InterfaceB b = new ImplementorB();
+        InterfaceB b1 = new ImplementorB1();
+
+        assertEqual(b.aaa(), "aaa");
+        assertEqual(b.ccc(), "ccc");
+        assertEqual(b.ddd(), "ddd");
+        assertEqual(b.fff(), "fff");
+        assertEqual(b.ggg(), "gg-");
+
+        assertEqual(b1.aaa(), "aaa");
+        assertEqual(b1.ccc(), "ccc");
+        assertEqual(b1.ddd(), "ddd");
+        assertEqual(b1.fff(), "ff-");
+        assertEqual(b1.ggg(), "gg-");
+    }
+
+    // This is a regression test for an earlier bug in
+    // DynamicArchiveBuilder::relocate_buffer_to_target()
+    static void testMixedInterfaces() {
+        Object xx = new SynchronousQueue();
+        BlockingQueue yy = (BlockingQueue)xx;
+    }
+
+    static private void assertEqual(String a, String b) {
+        if (!a.equals(b)) {
+            throw new RuntimeException(a + " is not equal to " + b);
+        } else {
+            System.out.println("Expected: " + a + ", got: " + b);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/MissingDependent.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+public class MissingDependent {
+    public static void main(String args[]) throws Exception {
+        try {
+            Object obj = new StrConcatApp();
+        } catch (Throwable e) {
+            String cause = e.getCause().toString();
+            if (cause.equals("java.lang.ClassNotFoundException: StrConcatApp")) {
+                e.printStackTrace();
+            } else {
+                throw e;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/StrConcatApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+public class StrConcatApp {
+  public static void main(String args[]) {
+    System.out.println("length = " + args.length);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/test-classes/TestJIT.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+
+import sun.hotspot.WhiteBox;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+
+public class TestJIT {
+
+    private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
+
+    static void doSomething() {
+        HashMap<String,String> map = new HashMap<>();
+        for (int i=0; i<400; i++) {
+            // Call these methods so that the class/field/method references used
+            // by these methods are resolved. This allows C2 to compile more code.
+            String x = "Hello" + i;
+            map.put(x, x);
+            map.get(x);
+        }
+    }
+
+    static public void main(String[] args) throws NoSuchMethodException {
+        Method put_method = HashMap.class.getDeclaredMethod("put", Object.class, Object.class);
+        Method get_method = HashMap.class.getDeclaredMethod("get", Object.class);
+        Method test_method = TestJIT.class.getDeclaredMethod("doSomething");
+
+        doSomething();
+
+        // 4 == CompilerWhiteBoxTest.COMP_LEVEL_FULL_OPTIMIZATION => C2
+        WHITE_BOX.enqueueMethodForCompilation(get_method, 4);
+        WHITE_BOX.enqueueMethodForCompilation(put_method, 4);
+        WHITE_BOX.enqueueMethodForCompilation(test_method, 4);
+
+        // Try to start dynamic dumping while the above compilations are still in progesss
+        System.exit(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary When dumping the CDS archive, try to load VM anonymous classes to make sure they
+ *          are handled properly. Note: these are not "anonymous inner classes" in the Java source code,
+ *          but rather classes that are not recorded in any ClassLoaderData::dictionary(),
+ *          such as classes that are generated for Lambda expressions.
+ *          See https://blogs.oracle.com/jrose/anonymous-classes-in-the-vm.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ * @build AnonVmClassesDuringDumpTransformer Hello
+ * @run main/othervm AnonVmClassesDuringDump
+ */
+
+public class AnonVmClassesDuringDump {
+    public static String appClasses[] = {
+        "Hello",
+    };
+    public static String agentClasses[] = {
+        "AnonVmClassesDuringDumpTransformer",
+    };
+
+    public static String cdsDiagnosticOption = "-XX:+AllowArchivingWithJavaAgent";
+
+    public static void main(String[] args) throws Throwable {
+        String agentJar =
+            ClassFileInstaller.writeJar("AnonVmClassesDuringDumpTransformer.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("AnonVmClassesDuringDumpTransformer.mf"),
+                                        agentClasses);
+
+        String appJar =
+            ClassFileInstaller.writeJar("AnonVmClassesDuringDumpApp.jar", appClasses);
+
+        TestCommon.testDump(appJar, TestCommon.list("Hello"),
+                            "-javaagent:" + agentJar,
+                            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption,
+                            // Set the following property to see logs for dynamically generated classes
+                            // in STDOUT
+                            "-Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES=true");
+
+        String prefix = ".class.load. ";
+        // class name pattern like the following:
+        // jdk.internal.loader.BuiltinClassLoader$$Lambda$1/1816757085
+        // java.lang.invoke.LambdaForm$MH/1585787493
+        String class_pattern = ".*Lambda([a-z0-9$]+)/([0-9]+).*";
+        String suffix = ".*source: shared objects file.*";
+        String pattern = prefix + class_pattern + suffix;
+        // during run time, anonymous classes shouldn't be loaded from the archive
+        TestCommon.run("-cp", appJar,
+            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption, "Hello")
+            .assertNormalExit(output -> output.shouldNotMatch(pattern));
+
+        // inspect the archive and make sure no anonymous class is in there
+        TestCommon.run("-cp", appJar,
+            "-XX:+UnlockDiagnosticVMOptions", cdsDiagnosticOption,
+            "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary", "Hello")
+            .assertNormalExit(output -> output.shouldNotMatch(class_pattern));
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDumpTransformer.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+public class AnonVmClassesDuringDumpTransformer implements ClassFileTransformer {
+    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
+                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
+        return null;
+    }
+
+    private static Instrumentation savedInstrumentation;
+
+    public static void premain(String agentArguments, Instrumentation instrumentation) {
+        System.out.println("ClassFileTransformer.premain() is called");
+        instrumentation.addTransformer(new AnonVmClassesDuringDumpTransformer(), /*canRetransform=*/true);
+        savedInstrumentation = instrumentation;
+
+        // This will create a Lambda, which will result in some Anonymous VM Classes
+        // being generated.
+        //
+        // Look for something like these in the STDOUT:
+        // ----------------
+        // ClassFileTransformer.premain() is called
+        // Dumping class files to DUMP_CLASS_FILES/...
+        // dump: DUMP_CLASS_FILES/java/lang/invoke/LambdaForm$MH000.class
+        // dump: DUMP_CLASS_FILES/java/lang/invoke/LambdaForm$MH001.class
+        // Invoked inside a Lambda
+        // ----------------
+        Runnable r = () -> {
+            System.out.println("Invoked inside a Lambda");
+        };
+        r.run();
+    }
+
+    public static Instrumentation getInstrumentation() {
+        return savedInstrumentation;
+    }
+
+    public static void agentmain(String args, Instrumentation inst) throws Exception {
+        premain(args, inst);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/AnonVmClassesDuringDumpTransformer.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Premain-Class: AnonVmClassesDuringDumpTransformer
+Agent-Class: AnonVmClassesDuringDumpTransformer
+Can-Retransform-Classes: true
+Can-Redefine-Classes: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/ArrayTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary test the ability to archive array classes and load them from the archive
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile ArrayTestHelper.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver ArrayTest
+ */
+
+import java.util.List;
+import java.util.ArrayList;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ArrayTest {
+
+    static String arrayClasses[] = {
+        "ArrayTestHelper",
+        "[Ljava/lang/Comparable;",
+        "[I",
+        "[[[Ljava/lang/Object;",
+        "[[B"
+    };
+
+    public static void main(String[] args) throws Exception {
+        JarBuilder.build("arrayTestHelper", "ArrayTestHelper");
+
+        String appJar = TestCommon.getTestJar("arrayTestHelper.jar");
+        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
+
+        // create an archive containing array classes
+        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list(arrayClasses), bootClassPath);
+        // we currently don't support array classes during CDS dump
+        output.shouldContain("Preload Warning: Cannot find [Ljava/lang/Comparable;")
+              .shouldContain("Preload Warning: Cannot find [I")
+              .shouldContain("Preload Warning: Cannot find [[[Ljava/lang/Object;")
+              .shouldContain("Preload Warning: Cannot find [[B");
+
+        List<String> argsList = new ArrayList<String>();
+        argsList.add("-XX:+UnlockDiagnosticVMOptions");
+        argsList.add("-XX:+WhiteBoxAPI");
+        argsList.add("-cp");
+        argsList.add(appJar);
+        argsList.add(bootClassPath);
+        argsList.add("ArrayTestHelper");
+        // the following are input args to the ArrayTestHelper.
+        // skip checking array classes during run time
+        for (int i = 0; i < 1; i++) {
+            argsList.add(arrayClasses[i]);
+        }
+        String[] opts = new String[argsList.size()];
+        opts = argsList.toArray(opts);
+        TestCommon.run(opts).assertNormalExit();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/ArrayTestHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class ArrayTestHelper {
+    public static void main(String[] args) throws Throwable {
+
+        // load the classes one by one and ensure each one is from
+        // the shared archive
+        for (int i = 0; i < args.length; i++) {
+
+            String cn = args[i].replace('/', '.');
+            Class cls = Class.forName(cn);
+
+            WhiteBox wb = WhiteBox.getWhiteBox();
+            if (wb.isSharedClass(cls)) {
+                System.out.println("As expected, " + args[i] + " is in shared space.");
+            } else {
+                throw new java.lang.RuntimeException(args[i] + " is not in shared space.");
+            }
+        }
+   }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary When dumping the CDS archive, try to cause garbage collection while classes are being loaded.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ * @build GCDuringDumpTransformer Hello
+ * @run main/othervm GCDuringDump
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class GCDuringDump {
+    public static String appClasses[] = {
+        "Hello",
+    };
+    public static String agentClasses[] = {
+        "GCDuringDumpTransformer",
+    };
+
+    public static void main(String[] args) throws Throwable {
+        String agentJar =
+            ClassFileInstaller.writeJar("GCDuringDumpTransformer.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("GCDuringDumpTransformer.mf"),
+                                        agentClasses);
+
+        String appJar =
+            ClassFileInstaller.writeJar("GCDuringDumpApp.jar", appClasses);
+
+        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
+            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
+
+        for (int i=0; i<2; i++) {
+            // i = 0 -- run without agent = no extra GCs
+            // i = 1 -- run with agent = cause extra GCs
+
+            String extraArg = (i == 0) ? "-showversion" : "-javaagent:" + agentJar;
+            String extraOption = (i == 0) ? "-showversion" : "-XX:+AllowArchivingWithJavaAgent";
+
+            TestCommon.testDump(appJar, TestCommon.list("Hello"),
+                                "-XX:+UnlockDiagnosticVMOptions", extraOption,
+                                extraArg, "-Xmx32m", gcLog);
+
+            TestCommon.run(
+                "-cp", appJar,
+                "-Xmx32m",
+                "-XX:+PrintSharedSpaces",
+                "-XX:+UnlockDiagnosticVMOptions", extraOption,
+                gcLog,
+                "Hello")
+              .assertNormalExit();
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDumpTransformer.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+public class GCDuringDumpTransformer implements ClassFileTransformer {
+    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
+                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
+        try {
+            makeGarbage();
+        } catch (Throwable t) {
+            t.printStackTrace();
+            try {
+                Thread.sleep(200); // let GC to have a chance to run
+            } catch (Throwable t2) {}
+        }
+
+        return null;
+    }
+
+    private static Instrumentation savedInstrumentation;
+
+    public static void premain(String agentArguments, Instrumentation instrumentation) {
+        System.out.println("ClassFileTransformer.premain() is called");
+        instrumentation.addTransformer(new GCDuringDumpTransformer(), /*canRetransform=*/true);
+        savedInstrumentation = instrumentation;
+    }
+
+    public static Instrumentation getInstrumentation() {
+        return savedInstrumentation;
+    }
+
+    public static void agentmain(String args, Instrumentation inst) throws Exception {
+        premain(args, inst);
+    }
+
+    public static void makeGarbage() {
+        for (int x=0; x<10; x++) {
+            Object[] a = new Object[10000];
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCDuringDumpTransformer.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Premain-Class: GCDuringDumpTransformer
+Agent-Class: GCDuringDumpTransformer
+Can-Retransform-Classes: true
+Can-Redefine-Classes: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Similar to GCDuringDumping.java, this test adds the -XX:SharedArchiveConfigFile
+ *          option for testing the interaction with GC and shared strings.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds.archived.java.heap
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ * @build sun.hotspot.WhiteBox GCDuringDumpTransformer GCSharedStringsDuringDumpWb
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm/timeout=480 GCSharedStringsDuringDump
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import sun.hotspot.WhiteBox;
+
+public class GCSharedStringsDuringDump {
+    public static String appClasses[] = {
+        "GCSharedStringsDuringDumpWb",
+    };
+    public static String agentClasses[] = {
+        "GCDuringDumpTransformer",
+    };
+
+    public static void main(String[] args) throws Throwable {
+        String agentJar =
+            ClassFileInstaller.writeJar("GCDuringDumpTransformer.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("GCDuringDumpTransformer.mf"),
+                                        agentClasses);
+
+        String appJar =
+            ClassFileInstaller.writeJar("GCSharedStringsDuringDumpApp.jar", appClasses);
+
+        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
+            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
+
+        String sharedArchiveCfgFile =
+            System.getProperty("user.dir") + File.separator + "GCSharedStringDuringDump_gen.txt";
+        try (FileOutputStream fos = new FileOutputStream(sharedArchiveCfgFile)) {
+            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
+            out.println("VERSION: 1.0");
+            out.println("@SECTION: String");
+            out.println("31: shared_test_string_unique_14325");
+            for (int i=0; i<100000; i++) {
+                String s = "generated_string " + i;
+                out.println(s.length() + ": " + s);
+            }
+            out.close();
+        }
+
+        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + whiteBoxJar;
+
+        for (int i=0; i<2; i++) {
+            // i = 0 -- run without agent = no extra GCs
+            // i = 1 -- run with agent = cause extra GCs
+
+            String extraArg = (i == 0) ? "-showversion" : "-javaagent:" + agentJar;
+            String extraOption = (i == 0) ? "-showversion" : "-XX:+AllowArchivingWithJavaAgent";
+            OutputAnalyzer output = TestCommon.dump(
+                                appJar, TestCommon.list("GCSharedStringsDuringDumpWb"),
+                                bootClassPath, extraArg, "-Xmx32m", gcLog,
+                                "-XX:SharedArchiveConfigFile=" + sharedArchiveCfgFile,
+                                "-XX:+UnlockDiagnosticVMOptions", extraOption);
+
+            if (output.getStdout().contains("Too many string space regions") ||
+                output.getStderr().contains("Unable to write archive heap memory regions") ||
+                output.getStdout().contains("Try increasing NewSize") ||
+                !output.getStdout().contains("oa0 space:") ||
+                output.getExitValue() != 0) {
+                // Try again with larger heap and NewSize, this should increase the
+                // G1 heap region size to 2M
+                TestCommon.testDump(
+                    appJar, TestCommon.list("GCSharedStringsDuringDumpWb"),
+                    bootClassPath, extraArg, "-Xmx8g", "-XX:NewSize=8m", gcLog,
+                    "-XX:SharedArchiveConfigFile=" + sharedArchiveCfgFile,
+                    "-XX:+UnlockDiagnosticVMOptions", extraOption);
+            }
+
+            TestCommon.run(
+                "-cp", appJar,
+                bootClassPath,
+                extraArg,
+                "-Xlog:cds=info,class+path=info",
+                "-Xmx32m",
+                "-XX:+PrintSharedSpaces",
+                "-XX:+UnlockDiagnosticVMOptions",
+                extraOption,
+                "-XX:+WhiteBoxAPI",
+                "-XX:SharedReadOnlySize=30m",
+                gcLog,
+                "GCSharedStringsDuringDumpWb")
+              .assertNormalExit();
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDumpWb.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class GCSharedStringsDuringDumpWb {
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        String s = "shared_test_string_unique_14325";
+        s = s.intern();
+        CheckString(wb, s);
+        for (int i=0; i<100000; i++) {
+            s = "generated_string " + i;
+            s = s.intern();
+            CheckString(wb, s);
+        }
+    }
+
+    public static void CheckString(WhiteBox wb, String s) {
+        if (!wb.areSharedStringsIgnored() && !wb.isShared(s)) {
+            throw new RuntimeException("String is not shared.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDump.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test how CDS dumping handles the existence of humongous G1 regions.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds.archived.java.heap
+ * @requires vm.flavor != "minimal"
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ * @build HumongousDuringDumpTransformer Hello
+ * @run main/othervm/timeout=240 HumongousDuringDump
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class HumongousDuringDump {
+    public static String appClasses[] = {
+        "Hello",
+    };
+    public static String agentClasses[] = {
+        "HumongousDuringDumpTransformer",
+    };
+
+    public static void main(String[] args) throws Throwable {
+        String agentJar =
+            ClassFileInstaller.writeJar("HumongousDuringDumpTransformer.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("HumongousDuringDumpTransformer.mf"),
+                                        agentClasses);
+
+        String appJar =
+            ClassFileInstaller.writeJar("HumongousDuringDumpApp.jar", appClasses);
+
+        String gcLog = Boolean.getBoolean("test.cds.verbose.gc") ?
+            "-Xlog:gc*=info,gc+region=trace,gc+alloc+region=debug" : "-showversion";
+
+        String extraArg = "-javaagent:" + agentJar;
+        String extraOption = "-XX:+AllowArchivingWithJavaAgent";
+
+        OutputAnalyzer out =
+          TestCommon.testDump(appJar, TestCommon.list("Hello"),
+                              "-XX:+UnlockDiagnosticVMOptions", extraOption,
+                              "-Xlog:gc+region+cds",
+                              "-Xlog:gc+region=trace",
+                              extraArg, "-Xmx64m", gcLog);
+        out.shouldContain("(Unmovable) humongous regions have been found and may lead to fragmentation");
+        out.shouldContain("All free regions should be at the top end of the heap, but we found holes.");
+        out.shouldMatch("gc,region,cds. HeapRegion .* HUM. hole");
+        String pattern = "gc,region,cds. HeapRegion .*hole";
+        out.shouldMatch(pattern);
+        out.shouldNotMatch(pattern + ".*unexpected");
+
+        TestCommon.run(
+                "-cp", appJar,
+                "-verbose",
+                "-Xmx64m",
+                "-XX:+PrintSharedSpaces",
+                "-XX:+UnlockDiagnosticVMOptions", extraOption,
+                gcLog,
+                "Hello")
+              .assertNormalExit();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDumpTransformer.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+// This test is sensitive to -Xmx. It must be run with -xmx64m.
+// Running with a different -Xmx requires changing the parameters and careful re-testing.
+public class HumongousDuringDumpTransformer implements ClassFileTransformer {
+    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
+                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
+        if (name.equals("Hello")) {
+            try {
+                makeHumongousRegions();
+            } catch (Throwable t) {
+                array = null;
+                humon = null;
+                System.out.println("Unexpected error: " + t);
+                t.printStackTrace();
+            }
+        }
+        array = null;
+        return null;
+    }
+
+    private static Instrumentation savedInstrumentation;
+
+    public static void premain(String agentArguments, Instrumentation instrumentation) {
+        long xmx = Runtime.getRuntime().maxMemory();
+        if (xmx < 60 * 1024 * 1024 || xmx > 80 * 1024 * 1024) {
+            System.out.println("Running with incorrect heap size: " + xmx);
+            System.exit(1);
+        }
+
+        System.out.println("ClassFileTransformer.premain() is called");
+        instrumentation.addTransformer(new HumongousDuringDumpTransformer(), /*canRetransform=*/true);
+        savedInstrumentation = instrumentation;
+    }
+
+    public static Instrumentation getInstrumentation() {
+        return savedInstrumentation;
+    }
+
+    public static void agentmain(String args, Instrumentation inst) throws Exception {
+        premain(args, inst);
+    }
+
+    Object[] array;
+
+    static final int DUMMY_SIZE = 4096 - 16 - 8;
+    static final int HUMON_SIZE = 4 * 1024 * 1024 - 16 - 8;
+    static final int SKIP = 13;
+
+    byte humon[] = null;
+    boolean first = true;
+
+    public synchronized void makeHumongousRegions() {
+        if (!first) {
+            return;
+        }
+        System.out.println("===============================================================================");
+        first = false;
+
+        int total = 0;
+        array = new Object[100000];
+        System.out.println(array);
+
+        // (1) Allocate about 8MB of old objects.
+        for (int n=0, i=0; total < 8 * 1024 * 1024; n++) {
+            // Make enough allocations to cause a GC (for 64MB heap) to create
+            // old regions.
+            //
+            // But don't completely fill up the heap. That would cause OOM and
+            // may not be handled gracefully inside class transformation!
+            Object x = new byte[DUMMY_SIZE];
+            if ((n  % SKIP) == 0) {
+                array[i++] = x;
+                total += DUMMY_SIZE;
+            }
+        }
+
+        System.gc();
+
+        // (2) Now allocate a humongous array. It will sit above the 8MB of old regions.
+        humon = new byte[HUMON_SIZE];
+        array = null;
+        System.gc();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/javaldr/HumongousDuringDumpTransformer.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Premain-Class: HumongousDuringDumpTransformer
+Agent-Class: HumongousDuringDumpTransformer
+Can-Retransform-Classes: true
+Can-Redefine-Classes: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/CheckUnsupportedDumpingOptions.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Abort dumping if any of the new jigsaw vm options is specified.
+ * @requires vm.cds
+ * @library /test/lib ..
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile ../test-classes/Hello.java
+ * @run driver CheckUnsupportedDumpingOptions
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CheckUnsupportedDumpingOptions {
+    private static final String[] jigsawOptions = {
+        "--limit-modules",
+        "--upgrade-module-path",
+        "--patch-module"
+    };
+    private static final String[] optionValues = {
+        "mymod",
+        ".",
+        "java.naming=javax.naming.spi.NamingManger"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+            InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+            "mods/java.naming");
+
+        JarBuilder.build("hello", "Hello");
+        String appJar = TestCommon.getTestJar("hello.jar");
+        String appClasses[] = {"Hello"};
+        for (int i = 0; i < jigsawOptions.length; i++) {
+            OutputAnalyzer output;
+            output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
+                                     jigsawOptions[i], optionValues[i]);
+            output.shouldContain("Cannot use the following option " +
+                "when dumping the shared archive: " + jigsawOptions[i])
+                  .shouldHaveExitValue(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/JigsawOptionsCombo.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test combinations of jigsaw options that affect the use of AppCDS
+ *
+ * @requires vm.cds & !vm.graal.enabled
+ * @library /test/lib ..
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile ../test-classes/Hello.java ../test-classes/HelloMore.java
+ * @run driver JigsawOptionsCombo
+ */
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+import java.util.ArrayList;
+
+
+// Remaining WORK: TODO:
+// 1. test with -m initial-module; waiting for changes from Chris will provide
+//    utils to build modules
+// 2. Loading classes from Jmod files - waiting on utils
+// 3. Loading classes from exploded module dir"
+
+public class JigsawOptionsCombo {
+
+    public static void main(String[] args) throws Exception {
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+            InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+            "mods/java.naming");
+
+        JarBuilder.build("hello", "Hello");
+        JarBuilder.build("hello_more", "HelloMore");
+
+        (new JigsawOptionsCombo()).runTests();
+    }
+
+
+    private ArrayList<TestCase> testCaseTable = new ArrayList<TestCase>();
+
+    public static String infoDuringDump(String option) {
+        return "Cannot use the following option when dumping the shared archive: " + option;
+    }
+
+    public void runTests() throws Exception {
+
+        testCaseTable.add(new TestCase(
+            "basic: Basic dump and execute, to verify the test plumbing works",
+            "", "", 0,
+            "", "", 0, true) );
+
+        String bcpArg = "-Xbootclasspath/a:" +
+        TestCommon.getTestJar("hello_more.jar");
+
+        testCaseTable.add(new TestCase(
+            "Xbootclasspath/a: is OK for both dump and run time",
+            bcpArg, "", 0,
+            bcpArg, "", 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "module-path-01: --module-path is ignored for dump time",
+            "--module-path mods", "", 0,
+            null, null, 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "module-path-02: --module-path is ok for run time",
+            "", "", 0,
+            "--module-path mods", "", 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "add-modules-01: --add-modules is ok at dump time",
+            "--add-modules java.management",
+            "", 0,
+            null, null, 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "add-modules-02: --add-modules is ok at run time",
+            "", "", 0,
+            "--add-modules java.management", "", 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "limit-modules-01: --limit-modules is ignored at dump time",
+            "--limit-modules java.base",
+            infoDuringDump("--limit-modules"), 1,
+            null, null, 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "limit-modules-02: --limit-modules is ok at run time",
+            "", "", 0,
+            "--limit-modules java.base", "", 0, false) );
+
+        testCaseTable.add(new TestCase(
+            "upgrade-module-path-01: --upgrade-module-path is ignored at dump time",
+            "--upgrade-module-path mods",
+            infoDuringDump("--upgrade-module-path"), 1,
+            null, null, 0, true) );
+
+        testCaseTable.add(new TestCase(
+            "-upgrade-module-path-module-path-02: --upgrade-module-path is ok at run time",
+            "", "", 0,
+            "--upgrade-module-path mods", "", 0, false) );
+
+        for (TestCase tc : testCaseTable) tc.execute();
+    }
+
+
+    // class representing a singe test case
+    public class TestCase {
+        String description;
+        String dumpTimeArgs;
+        String dumpTimeExpectedOutput;
+        int    dumpTimeExpectedExitValue;
+        String runTimeArgs;
+        String runTimeExpectedOutput;
+        int    runTimeExpectedExitValue;
+        boolean sharingOn;
+
+        private String appJar = TestCommon.getTestJar("hello.jar");
+        private String appClasses[] = {"Hello"};
+
+
+        public TestCase(String description,
+            String dumpTimeArgs, String dumpTimeExpectedOutput, int dumpTimeExpectedExitValue,
+            String runTimeArgs, String runTimeExpectedOutput, int runTimeExpectedExitValue,
+            boolean sharingOn) {
+
+            this.description = description;
+            this.dumpTimeArgs = dumpTimeArgs;
+            this.dumpTimeExpectedOutput = dumpTimeExpectedOutput;
+            this.dumpTimeExpectedExitValue = dumpTimeExpectedExitValue;
+            this.runTimeArgs = runTimeArgs;
+            this.runTimeExpectedOutput = runTimeExpectedOutput;
+            this.runTimeExpectedExitValue = runTimeExpectedExitValue;
+            this.sharingOn = sharingOn;
+        }
+
+
+        public void execute() throws Exception {
+            System.out.println("Description: " + description);
+
+            // ===== dump step - create the archive
+            OutputAnalyzer dumpOutput = TestCommon.dump(
+                appJar, appClasses, getDumpOptions());
+
+            if (dumpTimeExpectedExitValue == 0) {
+                TestCommon.checkDump(dumpOutput, dumpTimeExpectedOutput);
+            } else {
+                dumpOutput.shouldMatch(dumpTimeExpectedOutput);
+                dumpOutput.shouldHaveExitValue(dumpTimeExpectedExitValue);
+            }
+
+            // ===== exec step - use the archive
+            if (runTimeArgs != null) {
+                OutputAnalyzer execOutput = TestCommon.exec(appJar, getRunOptions());
+
+                if (runTimeExpectedExitValue == 0) {
+                    if (sharingOn) {
+                        TestCommon.checkExec(execOutput, runTimeExpectedOutput, "Hello World");
+                    } else {
+                        execOutput.shouldHaveExitValue(0)
+                                  .shouldContain(runTimeExpectedOutput)
+                                  .shouldContain("Hello World");
+                    }
+                } else {
+                    execOutput.shouldMatch(dumpTimeExpectedOutput);
+                    execOutput.shouldHaveExitValue(dumpTimeExpectedExitValue);
+                }
+            }
+        }
+
+
+        // dump command line options can be separated by a space
+        private String[] getDumpOptions() {
+            return dumpTimeArgs.split(" ");
+        }
+
+
+        // run command line options can be separated by a space
+        private String[] getRunOptions() {
+            ArrayList<String> result = new ArrayList<>();
+
+            if (runTimeArgs != "") {
+                String splitArgs[] = runTimeArgs.split(" ");
+                for (String arg : splitArgs)
+                    result.add(arg);
+            }
+
+            result.add("Hello");
+            return result.toArray(new String[1]);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/AppClassInCP.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary a test to demonstrate that an application class in the -cp
+ *          will be archived although --patch-module is specified. The class in
+ *          the -cp has no dependencies on the class in the --patch-module.
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver AppClassInCP
+ */
+
+import java.io.File;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class AppClassInCP {
+    private static String moduleJar;
+    private static String appJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        String classDir = System.getProperty("test.classes");
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+             classDir);
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        String source2 = "package mypackage; "                +
+                        "public class Hello { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"Hello!\"); " +
+                        "    } "                                    +
+                        "}";
+        ClassFileInstaller.writeClassToDisk("mypackage/Hello",
+             InMemoryJavaCompiler.compile("mypackage.Hello", source2),
+             classDir);
+
+        JarBuilder.build("hello", "mypackage/Hello");
+        appJar = TestCommon.getTestJar("hello.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        OutputAnalyzer output =
+            TestCommon.dump(appJar,
+                TestCommon.list("javax/naming/spi/NamingManager", "mypackage/Hello"),
+                "--patch-module=java.naming=" + moduleJar,
+                "-Xlog:class+load",
+                "PatchMain", "javax.naming.spi.NamingManager", "mypackage.Hello");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        String classPath = appJar + File.pathSeparator + classDir;
+        System.out.println("classPath: " + classPath);
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-cp", classPath,
+            "--patch-module=java.naming=" + moduleJar,
+            "-Xlog:class+load",
+            "PatchMain", "javax.naming.spi.NamingManager", "mypackage.Hello")
+            .assertSilentlyDisabledCDS(0, "I pass!", "Hello!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/CustomPackage.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary if a class is defined to a package which is not defined to any
+ *          module in the jimage, the class will not be found during dump
+ *          time but it will be used during run time.
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver CustomPackage
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CustomPackage {
+    private static String moduleJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.myspi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/myspi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.myspi.NamingManager", source, "--patch-module=java.naming"),
+             System.getProperty("test.classes"));
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/myspi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        OutputAnalyzer output =
+            TestCommon.dump(null,
+                TestCommon.list("javax/naming/myspi/NamingManager"),
+                "--patch-module=java.naming=" + moduleJar,
+                "-Xlog:class+load",
+                "-Xlog:class+path=info",
+                "PatchMain", "javax.naming.myspi.NamingManager");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "--patch-module=java.naming=" + moduleJar,
+            "-Xlog:class+load",
+            "-Xlog:class+path=info",
+            "PatchMain", "javax.naming.myspi.NamingManager")
+            .assertSilentlyDisabledCDS(0, "I pass!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/MismatchedPatchModule.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary different settings of --patch-module at dump time and runtime are
+ *          acceptable. The class found in runtime --patch-module entry should
+ *          be used.
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver MismatchedPatchModule
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class MismatchedPatchModule {
+    private static String moduleJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+             System.getProperty("test.classes"));
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        // Case 1: --patch-module specified for dump time
+        System.out.println("Case 1: --patch-module specified for dump time and run time");
+        OutputAnalyzer output =
+            TestCommon.dump(null,
+                TestCommon.list("javax/naming/spi/NamingManager"),
+                "--patch-module=java.naming=" + moduleJar,
+                "PatchMain", "javax.naming.spi.NamingManager");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        // Case 2: --patch-module specified for run time but not for dump time
+        System.out.println("Case 2: --patch-module specified for run time but not for dump time");
+        String appJar = JarBuilder.build("PatchMain-app", "PatchMain");
+        output =
+            TestCommon.dump(appJar,
+                TestCommon.list("javax/naming/spi/NamingManager"),
+                "PatchMain", "javax.naming.spi.NamingManager");
+        TestCommon.checkDump(output);
+
+        // javax.naming.spi.NamingManager is patched at runtime
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "--patch-module=java.naming=" + moduleJar,
+            "--patch-module=java.naming2=" + moduleJar,
+            "-Xlog:class+path=info",
+            "PatchMain", "javax.naming.spi.NamingManager")
+            .assertSilentlyDisabledCDS(0, "I pass!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchDir.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary a simple test to ensure that a directory in the --patch-module
+ *          option does not affect dump process
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver PatchDir
+ */
+
+import java.io.File;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+
+public class PatchDir {
+    private static String moduleJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        String classDir = System.getProperty("test.classes");
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+             classDir);
+
+        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        TestCommon.dump(null,
+            TestCommon.list("javax/naming/spi/NamingManager"),
+            "--patch-module=java.naming=" + moduleJar,
+            "-Xlog:class+load",
+            "PatchMain", "javax.naming.spi.NamingManager")
+            .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module")
+            .shouldHaveExitValue(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchJavaBase.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary sharing is disabled if java.base is patch at runtime
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver PatchJavaBase
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class PatchJavaBase {
+    private static String moduleJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        String source = "package java.lang; "                       +
+                        "public class NewClass { "                  +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("java/lang/NewClass",
+             InMemoryJavaCompiler.compile("java.lang.NewClass", source, "--patch-module=java.base"),
+             System.getProperty("test.classes"));
+
+        JarBuilder.build("javabase", "java/lang/NewClass");
+        moduleJar = TestCommon.getTestJar("javabase.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        String runError = "Unable to use shared archive: CDS is disabled when java.base module is patched";
+        String dumpingError = "Cannot use the following option when dumping the shared archive: --patch-module";
+        String errMsg;
+        if (TestCommon.isDynamicArchive()) {
+            errMsg = runError;
+        } else {
+            errMsg = dumpingError;
+        }
+        OutputAnalyzer output =
+            TestCommon.dump(null, null,
+                "--patch-module=java.base=" + moduleJar,
+                "PatchMain", "java.lang.NewClass");
+        output.shouldHaveExitValue(1)
+              .shouldContain(errMsg);
+
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "--patch-module=java.base=" + moduleJar,
+            "PatchMain", "java.lang.NewClass")
+          .assertAbnormalExit(runError);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchMain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+// This loads the class affected by the --patch-module option.  For the test to pass
+// it must load the class from the --patch-module directory, not the jimage file.
+public class PatchMain {
+    public static void main(String[] args) throws Exception {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("cdsutils.DynamicDumpHelper")) {
+                break;
+            }
+            Class.forName(args[i]);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/Simple.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary a simple test to ensure that class is loaded from jar file in --patch-module at runtime
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver Simple
+ */
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class Simple {
+    private static String moduleJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+             System.getProperty("test.classes"));
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        OutputAnalyzer output =
+            TestCommon.dump(null,
+                TestCommon.list("javax/naming/spi/NamingManager"),
+                "--patch-module=java.naming=" + moduleJar,
+                "-Xlog:class+load",
+                "-Xlog:class+path=info",
+                "PatchMain", "javax.naming.spi.NamingManager");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "--patch-module=java.naming=" + moduleJar,
+            "-Xlog:class+load",
+            "-Xlog:class+path=info",
+            "PatchMain", "javax.naming.spi.NamingManager")
+            .assertSilentlyDisabledCDS(0, "I pass!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary the class in the -cp is a subclass of the class in --patch-module. The
+ *          patched class should be used at runtime.
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver SubClassOfPatchedClass
+ */
+
+import java.io.File;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class SubClassOfPatchedClass {
+    private static String moduleJar;
+    private static String appJar;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming; "                +
+                        "public class Reference { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        String classDir = System.getProperty("test.classes");
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/Reference",
+             InMemoryJavaCompiler.compile("javax.naming.Reference", source, "--patch-module=java.naming"),
+             classDir);
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/Reference");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        String source2 = "package mypackage; "                +
+                        "public class MyReference extends javax.naming.Reference { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"MyReference!\"); " +
+                        "    } "                                    +
+                        "    public MyReference(String mystring) { " +
+                        "        super(mystring); " +
+                        "    } " +
+                        "}";
+        ClassFileInstaller.writeClassToDisk("mypackage/MyReference",
+             InMemoryJavaCompiler.compile("mypackage.MyReference", source2),
+             classDir);
+
+        JarBuilder.build("myjavanaming", "mypackage/MyReference");
+        appJar = TestCommon.getTestJar("myjavanaming.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        OutputAnalyzer output =
+            TestCommon.dump(appJar,
+                TestCommon.list("javax/naming/Reference", "mypackage/MyReference"),
+                "--patch-module=java.naming=" + moduleJar,
+                "-Xlog:class+load",
+                "PatchMain", "javax.naming.Reference", "mypackage.MyReference");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        String classPath = appJar + File.pathSeparator + classDir;
+        System.out.println("classPath: " + classPath);
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "-cp", classPath,
+            "--patch-module=java.naming=" + moduleJar,
+            "-Xlog:class+load",
+            "PatchMain", "javax.naming.Reference", "mypackage.MyReference")
+            .assertSilentlyDisabledCDS(0, "MyReference source: file:", "I pass!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/TwoJars.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @requires vm.cds
+ * @summary a patched class found in --patch-module should be used at runtime
+ * @library ../..
+ * @library /test/hotspot/jtreg/testlibrary
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @build PatchMain
+ * @run driver TwoJars
+ */
+
+import java.io.File;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class TwoJars {
+    private static String moduleJar;
+    private static String moduleJar2;
+
+    public static void main(String args[]) throws Throwable {
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming.jar file.
+        String source = "package javax.naming.spi; "                +
+                        "public class NamingManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I pass!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        // Create a class file in the module java.naming. This class file
+        // will be put in the javanaming2.jar file.
+        String source2 = "package javax.naming.spi; "                +
+                        "public class DirectoryManager { "             +
+                        "    static { "                             +
+                        "        System.out.println(\"I fail!\"); " +
+                        "    } "                                    +
+                        "}";
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
+             System.getProperty("test.classes"));
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming", "javax/naming/spi/NamingManager");
+        moduleJar = TestCommon.getTestJar("javanaming.jar");
+
+        ClassFileInstaller.writeClassToDisk("javax/naming/spi/DirectoryManager",
+             InMemoryJavaCompiler.compile("javax.naming.spi.DirectoryManager", source2, "--patch-module=java.naming"),
+             System.getProperty("test.classes"));
+
+        // Build the jar file that will be used for the module "java.naming".
+        JarBuilder.build("javanaming2", "javax/naming/spi/DirectoryManager");
+        moduleJar2 = TestCommon.getTestJar("javanaming2.jar");
+
+        System.out.println("Test dumping with --patch-module");
+        OutputAnalyzer output =
+            TestCommon.dump(null,
+                TestCommon.list("javax/naming/spi/NamingManager"),
+                "--patch-module=java.naming=" + moduleJar2 + File.pathSeparator + moduleJar,
+                "-Xlog:class+load",
+                "-Xlog:class+path=info",
+                "PatchMain", "javax.naming.spi.NamingManager");
+        output.shouldHaveExitValue(1)
+              .shouldContain("Cannot use the following option when dumping the shared archive: --patch-module");
+
+        TestCommon.run(
+            "-XX:+UnlockDiagnosticVMOptions",
+            "--patch-module=java.naming=" + moduleJar2 + File.pathSeparator + moduleJar,
+            "-Xlog:class+load",
+            "-Xlog:class+path=info",
+            "PatchMain", "javax.naming.spi.NamingManager")
+            .assertSilentlyDisabledCDS(0, "I pass!");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/BootAppendTests.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,259 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @summary AppCDS tests for testing -Xbootclasspath/a
+ * @requires vm.cds & !vm.graal.enabled
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile src/jdk/test/Main.java
+ * @compile src/com/sun/tools/javac/MyMain.jasm
+ * @compile src/sun/nio/cs/ext/MyClass.java
+ * @compile src/sun/nio/cs/ext1/MyClass.java
+ * @run driver BootAppendTests
+ */
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class BootAppendTests {
+    private static final String TEST_SRC = System.getProperty("test.src");
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path CLASSES_DIR = Paths.get("classes");
+
+    private static final String MAIN_CLASS = "jdk.test.Main";
+    private static final String APP_MODULE_CLASS = "com/sun/tools/javac/MyMain";
+    private static final String BOOT_APPEND_MODULE_CLASS = "sun/nio/cs/ext/MyClass";
+    private static final String BOOT_APPEND_CLASS = "sun/nio/cs/ext1/MyClass";
+    private static final String[] ARCHIVE_CLASSES =
+         {APP_MODULE_CLASS, BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_CLASS};
+
+    private static String appJar;
+    private static String bootAppendJar;
+    private static String testArchiveName;
+
+    public static void main(String... args) throws Exception {
+        dumpArchive();
+
+        System.out.println("TESTCASE: 1: testBootAppendModuleClassWithoutAppCDS");
+        testBootAppendModuleClassWithoutAppCDS();
+
+        System.out.println("TESTCASE: 2" );
+        testBootAppendModuleClassWithAppCDS();
+
+        System.out.println("TESTCASE: 3" );
+        testBootAppendExcludedModuleClassWithoutAppCDS();
+
+        System.out.println("TESTCASE: 4" );
+        testBootAppendExcludedModuleClassWithAppCDS();
+
+        System.out.println("TESTCASE: 5" );
+        testBootAppendClassWithoutAppCDS();
+
+        System.out.println("TESTCASE: 6" );
+        testBootAppendClassWithAppCDS();
+
+        System.out.println("TESTCASE: 7" );
+        testBootAppendAppModuleClassWithoutAppCDS();
+
+        System.out.println("TESTCASE: 9" );
+        testBootAppendAppModuleClassWithAppCDS();
+
+        System.out.println("TESTCASE: 9" );
+        testBootAppendAppExcludeModuleClassWithoutAppCDS();
+
+        System.out.println("TESTCASE: 10" );
+        testBootAppendAppExcludeModuleClassAppCDS();
+    }
+
+    static void dumpArchive() throws Exception {
+        JarBuilder.build("classpathtests", "jdk/test/Main");
+        appJar = TestCommon.getTestJar("classpathtests.jar");
+
+        JarBuilder.build("bootAppend",
+                         APP_MODULE_CLASS, BOOT_APPEND_MODULE_CLASS, BOOT_APPEND_CLASS);
+        bootAppendJar = TestCommon.getTestJar("bootAppend.jar");
+
+        OutputAnalyzer output1  = TestCommon.dump(
+            appJar, TestCommon.list(ARCHIVE_CLASSES), "-Xbootclasspath/a:" + bootAppendJar);
+        TestCommon.checkDump(output1);
+
+        if (!TestCommon.isUnableToMap(output1)) {
+            // Make sure all the classes were successfully archived.
+            for (String archiveClass : ARCHIVE_CLASSES) {
+                output1.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
+            }
+        }
+
+        testArchiveName = TestCommon.getCurrentArchiveName();
+    }
+
+    // Test #1: A class in package defined in boot module
+    //    - should not be loaded from the -Xbootclasspath/a without AppCDS
+    public static void testBootAppendModuleClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #1", BOOT_APPEND_MODULE_CLASS, "false");
+
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+    // Test #2: A shared class in package defined in boot module that's archived
+    //          from -Xbootclasspath/a
+    //     - should not be loaded by AppCDS
+    public static void testBootAppendModuleClassWithAppCDS() throws Exception {
+        OutputAnalyzer output = TestCommon.exec(
+            appJar,
+            "-Xbootclasspath/a:" + bootAppendJar,
+            MAIN_CLASS,
+            "Test #2", BOOT_APPEND_MODULE_CLASS, "false");
+        TestCommon.checkExec(output);
+    }
+
+
+    // Test #3: A class in excluded package defined in boot module
+    //     - should be loaded from the -Xbootclasspath/a by the boot classloader
+    public static void testBootAppendExcludedModuleClassWithoutAppCDS() throws Exception {
+        TestCommon.run(
+            "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
+            "-Xlog:class+load=info",
+            "--limit-modules", "java.base",
+            MAIN_CLASS, "Test #3", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
+            });
+    }
+
+    // Test #4: A shared class in excluded package that's archived from
+    //          -Xbootclasspath/a
+    //     - should be loaded from the jar since AppCDS will be disabled with
+    //       the --limit-modules option
+    public static void testBootAppendExcludedModuleClassWithAppCDS() throws Exception {
+        TestCommon.run(
+            "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
+            "-Xlog:class+load=info",
+            "--limit-modules", "java.base",
+            MAIN_CLASS,
+            "Test #4", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
+            });
+    }
+
+
+    // Test #5: A class not in package defined in boot module
+    //    - should be loaded from the -Xbootclasspath/a without AppCDS
+    public static void testBootAppendClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #5", BOOT_APPEND_CLASS, "true", "BOOT");
+
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+
+    // Test #6: A shared class not in package defined in boot module that's
+    //          archived from -Xbootclasspath/a
+    //    - should be loaded from the archive by the bootstrap class loader
+    public static void testBootAppendClassWithAppCDS() throws Exception {
+        OutputAnalyzer output = TestCommon.exec(
+            appJar,
+            "-Xbootclasspath/a:" + bootAppendJar,
+            "-XX:+TraceClassLoading",
+            MAIN_CLASS,
+            "Test #6", BOOT_APPEND_CLASS, "true", "BOOT");
+        TestCommon.checkExec(output);
+        if (!TestCommon.isUnableToMap(output))
+            output.shouldContain("[class,load] sun.nio.cs.ext1.MyClass source: shared objects file");
+    }
+
+
+    // Test #7: A class in package defined in jimage app module
+    //    - should not be loaded from the -Xbootclasspath/a without AppCDS
+    public static void testBootAppendAppModuleClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #7", APP_MODULE_CLASS, "false");
+
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+
+    // Test #8: A shared class in package defined in jimage app module that's
+    //          archived from -Xbootclasspath/a
+    //    - should not be loaded from the archive
+    public static void testBootAppendAppModuleClassWithAppCDS() throws Exception {
+        OutputAnalyzer output = TestCommon.exec(
+            appJar,
+            "-Xbootclasspath/a:" + bootAppendJar,
+            MAIN_CLASS,
+            "Test #8", APP_MODULE_CLASS, "false");
+        TestCommon.checkExec(output);
+    }
+
+
+    // Test #9: A class in excluded package defined in jimage app module
+    //    - should be loaded from the -Xbootclasspath/a without AppCDS
+    public static void testBootAppendAppExcludeModuleClassWithoutAppCDS()
+        throws Exception {
+
+        TestCommon.run(
+            "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
+            "-Xlog:class+load=info",
+            "--limit-modules", "java.base",
+            MAIN_CLASS, "Test #9", APP_MODULE_CLASS, "true", "BOOT")
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch(".class.load. com.sun.tools.javac.MyMain source:.*bootAppend.jar");
+            });
+    }
+
+    // Test #10: A shared class in excluded package defined in jimage app module
+    //    - should be loaded from the -Xbootclasspath/a with AppCDS
+    public static void testBootAppendAppExcludeModuleClassAppCDS() throws Exception {
+        TestCommon.run(
+            "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
+            "-Xlog:class+load=info",
+            "--limit-modules", "java.base",
+            MAIN_CLASS, "Test #10", APP_MODULE_CLASS, "true", "BOOT")
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch(".class.load. com.sun.tools.javac.MyMain source:.*bootAppend.jar");
+            });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/ClassPathTests.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds & !vm.graal.enabled
+ * @library ../..
+ * @library /test/lib
+ * @modules java.compiler
+ *          java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @compile src/jdk/test/Main.java
+ * @compile src/com/sun/tools/javac/Main.jasm
+ * @compile src/com/sun/tools/javac/MyMain.jasm
+ * @compile ../../../javax/annotation/processing/FilerException.jasm
+ * @run driver ClassPathTests
+ * @summary AppCDS tests for testing classpath/package conflicts
+ */
+
+/*
+ * These tests will verify that AppCDS will correctly handle archived classes
+ * on the classpath that are in a package that is also exported by the jimage.
+ * These classes should fail to load unless --limit-modules is used to hide the
+ * package exported by the jimage. There are 8 variants of this test:
+ *   - With a jimage app package and with a jimage ext package
+ *   - With --limit-modules and without --limit-modules
+ *   - With AppCDS and without AppCDS (to verify behaviour is the same for both).
+ *
+ * There is also a 9th test to verify that when --limit-modules is used, a jimage
+ * class in the archive can be replaced by a classpath class with the
+ * same name and package.
+ */
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.Asserts;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+import jtreg.SkippedException;
+
+
+public class ClassPathTests {
+    private static final String TEST_SRC = System.getProperty("test.src");
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path CLASSES_DIR = Paths.get("classes");
+
+    // the test module
+    private static final String MAIN_CLASS = "jdk.test.Main";
+    private static final String LIMITMODS_MAIN_CLASS = "jdk.test.LimitModsMain";
+
+    // test classes to archive. These are both in UPGRADED_MODULES
+    private static final String JIMAGE_CLASS      = "com/sun/tools/javac/Main";
+    private static final String APP_ARCHIVE_CLASS = "com/sun/tools/javac/MyMain";
+    private static final String PLATFORM_ARCHIVE_CLASS = "javax/annotation/processing/FilerException";
+    private static final String[] ARCHIVE_CLASSES = {APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS, JIMAGE_CLASS};
+    private static final int NUMBER_OF_TEST_CASES = 10;
+
+    private static String appJar;
+    private static String testArchiveName;
+
+
+    public static void main(String[] args) throws Throwable {
+        ClassPathTests tests = new ClassPathTests();
+        tests.dumpArchive();
+
+        Method[] methods = tests.getClass().getDeclaredMethods();
+        int numOfTestMethodsRun = 0;
+        for (Method m : methods) {
+            if (m.getName().startsWith("test")) {
+                System.out.println("About to run test method: " + m.getName());
+                try {
+                    m.invoke(tests);
+                } catch (InvocationTargetException ite) {
+                    Throwable throwable = ite.getCause();
+                    if (throwable instanceof SkippedException) {
+                        throw throwable;
+                    } else {
+                        throw ite;
+                    }
+                }
+                numOfTestMethodsRun++;
+            }
+        }
+
+        Asserts.assertTrue((numOfTestMethodsRun == NUMBER_OF_TEST_CASES),
+            "Expected " + NUMBER_OF_TEST_CASES + " test methods to run, actual number is "
+            + numOfTestMethodsRun);
+    }
+
+    private void dumpArchive() throws Exception {
+        // Create a jar file with all the classes related to this test.
+        JarBuilder.build( "classpathtests",
+                          APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS, JIMAGE_CLASS,
+                          "jdk/test/Main");
+        appJar = TestCommon.getTestJar("classpathtests.jar");
+
+        // dump the archive with altnernate jdk.comiler and jdk.activation classes in the class list
+        OutputAnalyzer output1  = TestCommon.dump(appJar, TestCommon.list(ARCHIVE_CLASSES));
+        TestCommon.checkDump(output1);
+        // The PLATFORM_ARCHIVE_CLASS belongs to the java.compiler
+        // module will be found from the module during dumping.
+        // The JIMAGE_CLASS will be found from the jdk.compiler module during
+        // dumping.
+        // The APP_ARCHIVE_CLASS, which belongs to a package within the
+        // jdk.compiler module, will not be found during dump time.
+        for (String archiveClass : ARCHIVE_CLASSES) {
+            if (archiveClass.equals(APP_ARCHIVE_CLASS)) {
+                output1.shouldContain("Preload Warning: Cannot find " + archiveClass);
+            } else {
+                output1.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
+            }
+        }
+
+        testArchiveName = TestCommon.getCurrentArchiveName();
+    }
+
+    // #1: Archived classpath class in same package as jimage app class. With AppCDS.
+    // Should fail to load.
+    public void testAppClassWithAppCDS() throws Exception {
+        OutputAnalyzer output = TestCommon.exec(
+            appJar, MAIN_CLASS,
+            "Test #1", APP_ARCHIVE_CLASS, "false"); // last 3 args passed to test
+        TestCommon.checkExec(output);
+    }
+
+    // #2: Archived classpath class in same package as jimage app class. Without AppCDS.
+    // Should fail to load.
+    public void testAppClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-cp", appJar)
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #2", APP_ARCHIVE_CLASS, "false");
+
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+    // #3: Archived classpath class in same package as jimage ext class. With AppCDS.
+    // The class should be loaded from the module.
+    public void testExtClassWithAppCDS() throws Exception {
+        OutputAnalyzer output = TestCommon.exec(
+            appJar, MAIN_CLASS,
+            "Test #3", PLATFORM_ARCHIVE_CLASS, "true", "EXT"); // last 4 args passed to test
+        TestCommon.checkExec(output);
+    }
+
+    // #4: Archived classpath class in same package as jimage ext class. Without AppCDS.
+    // The class should be loaded from the module.
+    public void testExtClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-cp", appJar)
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #4", PLATFORM_ARCHIVE_CLASS, "true", "EXT");
+
+        CDSTestUtils.runWithArchiveAndCheck(opts);
+    }
+
+    // #5: Archived classpath class in same package as jimage app class. With AppCDS.
+    // Should load with CDS disabled because --limit-modules is used.
+    public void testAppClassWithLimitModsWithAppCDS() throws Exception {
+        TestCommon.run("-cp", appJar,
+                       "--limit-modules", "java.base",
+                       MAIN_CLASS,
+                       "Test #5", APP_ARCHIVE_CLASS, "true") // last 3 args passed to test
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+
+    // #6: Archived classpath class in same package as jimage app class. Without AppCDS.
+    // Should load with CDS disabled because --limit-modules is used.
+    public void testAppClassWithLimitModsWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #6", APP_ARCHIVE_CLASS, "true");
+        CDSTestUtils.run(opts)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+
+    // #7: Archived classpath class in same package as jimage ext class. With AppCDS.
+    // Should load with CDS disabled because --limit-modules is used.
+    public void testExtClassWithLimitModsWithAppCDS() throws Exception {
+        TestCommon.run("-cp", appJar,
+                       "--limit-modules", "java.base",
+                       MAIN_CLASS,
+                       "Test #7", PLATFORM_ARCHIVE_CLASS, "true") // last 3 args passed to test
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+
+    // #8: Archived classpath class in same package as jimage ext class. Without AppCDS.
+    // Should load with CDS disabled because --limit-modules is used.
+    public void testExtClassWithLimitModsWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #8", PLATFORM_ARCHIVE_CLASS, "true");
+        CDSTestUtils.run(opts)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+
+    // #9: Archived classpath class with same name as jimage app class. With AppCDS.
+    // Should load with CDS disabled because --limit-modules is used.
+    public void testReplacingJImageClassWithAppCDS() throws Exception {
+        TestCommon.run("-cp", appJar,
+                       "--limit-modules", "java.base",
+                       MAIN_CLASS,
+                       "Test #9", JIMAGE_CLASS, "true") // last 3 args passed to test
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+
+    // #10: Archived classpath class with same name as jimage app class. Without AppCDS.
+    // Should load because --limit-modules is used. Note the archive will actually contain
+    // the original jimage version of the class, but AppCDS should refuse to load it
+    // since --limit-modules is used. This should result in the -cp version being used.
+    public void testReplacingJImageClassWithoutAppCDS() throws Exception {
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix("-cp", appJar, "--limit-modules", "java.base")
+            .setArchiveName(testArchiveName)
+            .addSuffix(MAIN_CLASS, "Test #10", JIMAGE_CLASS, "true");
+        CDSTestUtils.run(opts)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0);
+            });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Ensure that classes found in jimage takes precedence over classes found in -Xbootclasspath/a.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.compiler
+ *          jdk.jartool/sun.tools.jar
+ * @compile ../../test-classes/DummyClassHelper.java
+ * @compile ../../test-classes/java/net/HttpCookie.jasm
+ * @compile ../../../javax/annotation/processing/FilerException.jasm
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver DummyClassesInBootClassPath
+ */
+
+import java.io.File;
+import java.util.List;
+import java.util.ArrayList;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class DummyClassesInBootClassPath {
+    private static final String METHOD_NAME = "thisClassIsDummy()";
+
+    static void checkOutput(OutputAnalyzer output, String[] classNames) throws Exception {
+        for (int i = 0; i < classNames.length; i++) {
+            String cn = classNames[i].replace('/', '.');
+            TestCommon.checkExec(output,
+                "java.lang.NoSuchMethodException: " + cn + "." +
+                METHOD_NAME);
+            output.shouldNotContain(cn + ".class should be in shared space.");
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        String classNames[] = { "java/net/HttpCookie",
+                                "javax/annotation/processing/FilerException"};
+        JarBuilder.build("dummyClasses", classNames[0], classNames[1]);
+
+        String appJar = TestCommon.getTestJar("dummyClasses.jar");
+        OutputAnalyzer dumpOutput = TestCommon.dump(
+            appJar, classNames, "-Xbootclasspath/a:" + appJar);
+        TestCommon.checkDump(dumpOutput);
+
+        List<String> argsList = new ArrayList<String>();
+        for (int i = 0; i < classNames.length; i++) {
+            argsList.add(classNames[i].replace('/', '.'));
+        }
+        String[] arguments = new String[argsList.size()];
+        arguments = argsList.toArray(arguments);
+        TestCommon.run(
+            "-Xbootclasspath/a:" + appJar,
+            "DummyClassHelper", arguments[0], arguments[1])
+          .assertNormalExit(output -> checkOutput(output, classNames));
+
+        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+        String whiteBoxJar = TestCommon.getTestJar("WhiteBox.jar");
+        String bootClassPath = "-Xbootclasspath/a:" + appJar +
+            File.pathSeparator + whiteBoxJar;
+        dumpOutput = TestCommon.dump(
+            appJar, classNames, bootClassPath);
+        argsList.add("testWithWhiteBox");
+        arguments = new String[argsList.size()];
+        arguments = argsList.toArray(arguments);
+        String[] opts = {"-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+            bootClassPath, "-Xlog:class+path=trace",
+            "DummyClassHelper", arguments[0], arguments[1], arguments[2]};
+        TestCommon.run(opts)
+          .assertNormalExit(output -> checkOutput(output, classNames));
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test a few scenarios if an empty class, which has the same name as the one in the jimage, is specified in the -Xbootclasspath/a
+ *     1) boot loader will always load the class from the bootclasspath
+ *     2) app loader will load the class from the jimage by default;
+ *        app loader will load the class from the bootclasspath if the
+ *        "--limit-modules java.base" option is specified
+ * @requires vm.cds & !vm.graal.enabled
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.access
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @compile ../../test-classes/EmptyClassHelper.java
+ * @compile ../../test-classes/com/sun/tools/javac/Main.jasm
+ * @run driver EmptyClassInBootClassPath
+ */
+
+import java.io.File;
+import java.lang.*;
+import java.lang.reflect.*;
+import java.util.List;
+import java.util.ArrayList;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class EmptyClassInBootClassPath {
+    static final String EXPECTED_EXCEPTION =
+        "java.lang.NoSuchMethodException: com.sun.tools.javac.Main.main([Ljava.lang.String;)";
+    public static void main(String[] args) throws Exception {
+        String[] className = {"com/sun/tools/javac/Main"};
+        JarBuilder.build("emptyClass", className);
+        String appJar = TestCommon.getTestJar("emptyClass.jar");
+        JarBuilder.build("EmptyClassHelper", "EmptyClassHelper");
+        String helperJar = TestCommon.getTestJar("EmptyClassHelper.jar");
+        OutputAnalyzer dumpOutput = TestCommon.dump(
+            appJar, className, "-Xbootclasspath/a:" + appJar);
+        TestCommon.checkDump(dumpOutput);
+        dumpOutput.shouldNotContain("Preload Warning: skipping class from -Xbootclasspath/a " + className[0]);
+
+        String bootclasspath = "-Xbootclasspath/a:" + appJar;
+        String classPath = "-Djava.class.path=" + appJar + File.pathSeparator + helperJar;
+        List<String> argsList = new ArrayList<String>();
+        argsList.add(classPath);
+        argsList.add(bootclasspath);
+        argsList.add("--add-exports=java.base/jdk.internal.access=ALL-UNNAMED");
+        argsList.add("EmptyClassHelper");
+
+        // case 1: load class in bootclasspath using app loader
+        argsList.add("useAppLoader");
+        String[] opts = new String[argsList.size()];
+        opts = argsList.toArray(opts);
+        TestCommon.run(opts).assertNormalExit("appLoader found method main");
+
+        // case 2: load class in bootclasspath using boot loader
+        argsList.remove(argsList.size() - 1);
+        argsList.add("useBootLoader");
+        opts = new String[argsList.size()];
+        opts = argsList.toArray(opts);
+        TestCommon.run(opts).assertNormalExit(EXPECTED_EXCEPTION);
+
+        // case 3: load class in bootclasspath using app loader with '--limit-modules java.base'
+        argsList.add(0, "--limit-modules");
+        argsList.add(1, "java.base");
+        argsList.remove(argsList.size() - 1);
+        argsList.add("useAppLoader");
+        opts = new String[argsList.size()];
+        opts = argsList.toArray(opts);
+        TestCommon.run(opts)
+            .assertSilentlyDisabledCDS(0, EXPECTED_EXCEPTION);
+
+        // case 4: load class in bootclasspath using boot loader with '--limit-modules java.base'
+        argsList.remove(argsList.size() - 1);
+        argsList.add("useBootLoader");
+        opts = new String[argsList.size()];
+        opts = argsList.toArray(opts);
+        TestCommon.run(opts)
+            .assertSilentlyDisabledCDS(0, EXPECTED_EXCEPTION);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/Main.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package com/sun/tools/javac;
+
+public class Main
+    version 51:0
+{
+
+public Method "<init>":"()V"
+    stack 1 locals 1
+{
+    aload_0;
+    invokespecial   Method java/lang/Object."<init>":"()V";
+    return;
+}
+
+public Method toString:"()Ljava/lang/String;"
+    stack 1 locals 1
+{
+    ldc String "hi";
+    areturn;
+}
+
+} // end class Main
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/com/sun/tools/javac/MyMain.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package com/sun/tools/javac;
+
+public class MyMain
+    version 51:0
+{
+
+public Method "<init>":"()V"
+    stack 1 locals 1
+{
+    aload_0;
+    invokespecial   Method java/lang/Object."<init>":"()V";
+    return;
+}
+
+public Method toString:"()Ljava/lang/String;"
+    stack 1 locals 1
+{
+    ldc String "hi";
+    areturn;
+}
+
+} // end class Main2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/jdk/test/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * Tests loading an archived class that has the same class name as one in the
+ * jimage. The class should normally fail to load since a classpath class is not
+ * allowed to have the same package name as a module in the jimage. However,
+ * if --limit-modules was used then archived class should be loaded.
+ */
+
+package jdk.test;
+
+public class Main {
+    static final ClassLoader BOOT_LOADER     = null;
+    static final ClassLoader PLATFORM_LOADER = ClassLoader.getPlatformClassLoader();
+    static final ClassLoader SYS_LOADER      = ClassLoader.getSystemClassLoader();
+
+    public static void main(String[] args) throws Exception {
+        boolean shouldLoad = false;
+        ClassLoader expectedLoader = SYS_LOADER;
+
+        /*
+         * 3 Arguments are passed to this test:
+         *   1. testName: Name of the test being run.
+         *   2. className: Name of the class to load and instantiate.
+         *   3. shouldLoad: Either "true" or "false" to indicate whether the class should
+         *      successfully load ("true" indicates --limit-modules was used.)
+         * The 4th argument is optional. It specifies the classloader.
+         */
+
+        assertTrue(args.length <= 4);
+        String testName = args[0];
+        String className = args[1].replace('/', '.');
+        String shouldLoadName = args[2];  // "true" or "false"
+        String loaderName = "SYS";
+        if (args.length == 4) {
+            loaderName = args[3];
+        }
+
+        if (shouldLoadName.equals("true")) {
+            shouldLoad = true;
+        } else if (shouldLoadName.equals("false")) {
+            shouldLoad = false;
+        } else {
+            assertTrue(false);
+        }
+
+        if (loaderName.equals("SYS")) {
+            expectedLoader = SYS_LOADER;
+        } else if (loaderName.equals("EXT")) {
+            expectedLoader = PLATFORM_LOADER;
+        } else if (loaderName.equals("BOOT")) {
+            expectedLoader = BOOT_LOADER;
+        }
+
+        System.out.println(testName + ": class=" + className + " shouldLoad=" +
+                           shouldLoadName + " by loader:" + expectedLoader);
+
+        // Try to load the specified class with the default ClassLoader.
+        Class<?> clazz = null;
+        try {
+            clazz = Class.forName(className);
+        } catch (ClassNotFoundException e) {
+            System.out.println(e);
+        }
+
+        if (clazz != null) {
+            // class loaded
+            if (shouldLoad) {
+                // Make sure we got the expected defining ClassLoader
+                ClassLoader actualLoader = clazz.getClassLoader();
+                if (actualLoader != expectedLoader) {
+                    throw new RuntimeException(testName + " FAILED: " + clazz + " loaded by " + actualLoader +
+                                               ", expected " + expectedLoader);
+                }
+                // Make sure we got the right version of the class. toString() of an instance
+                // of the overridden version of the class should return "hi".
+                if (actualLoader == SYS_LOADER) {
+                    String s = clazz.newInstance().toString();
+                    if (!s.equals("hi")) {
+                        throw new RuntimeException(testName + " FAILED: toString() returned \"" + s
+                                                   + "\" instead of \"hi\"" );
+                    }
+                }
+                System.out.println(testName + " PASSED: class loaded as expected.");
+            } else {
+                throw new RuntimeException(testName + " FAILED: class loaded, but should have failed to load.");
+            }
+        } else {
+            // class did not load
+            if (shouldLoad) {
+                throw new RuntimeException(testName + " FAILED: class failed to load.");
+            } else {
+                System.out.println(testName + " PASSED: ClassNotFoundException thrown as expected");
+            }
+        }
+    }
+
+    static void assertTrue(boolean expr) {
+        if (!expr)
+            throw new RuntimeException("assertion failed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext/MyClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+package sun.nio.cs.ext;
+
+public class MyClass {
+    public String toString() {
+        return "hi";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/src/sun/nio/cs/ext1/MyClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+package sun.nio.cs.ext1;
+
+public class MyClass {
+    public String toString() {
+        return "hi";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddModules.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @compile ../../test-classes/Hello.java
+ * @run driver AddModules
+ * @summary sanity test the --add-modules option
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class AddModules {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String MAIN_MODULE1 = "com.greetings";
+    private static final String MAIN_MODULE2 = "com.hello";
+    private static final String SUB_MODULE = "org.astro";
+
+    // the module main class
+    private static final String MAIN_CLASS1 = "com.greetings.Main";
+    private static final String MAIN_CLASS2 = "com.hello.Main";
+    private static final String APP_CLASS = "org.astro.World";
+
+    private static Path moduleDir = null;
+    private static Path subJar = null;
+    private static Path mainJar1 = null;
+    private static Path mainJar2 = null;
+    private static String appJar;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(SUB_MODULE),
+                                 MODS_DIR.resolve(SUB_MODULE),
+                                 null);
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE1),
+                                 MODS_DIR.resolve(MAIN_MODULE1),
+                                 MODS_DIR.toString());
+
+        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE2),
+                                 MODS_DIR.resolve(MAIN_MODULE2),
+                                 MODS_DIR.toString());
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        subJar = moduleDir.resolve(SUB_MODULE + ".jar");
+        String classes = MODS_DIR.resolve(SUB_MODULE).toString();
+        JarBuilder.createModularJar(subJar.toString(), classes, null);
+
+        mainJar1 = moduleDir.resolve(MAIN_MODULE1 + ".jar");
+        classes = MODS_DIR.resolve(MAIN_MODULE1).toString();
+        JarBuilder.createModularJar(mainJar1.toString(), classes, MAIN_CLASS1);
+
+        mainJar2 = moduleDir.resolve(MAIN_MODULE2 + ".jar");
+        classes = MODS_DIR.resolve(MAIN_MODULE2).toString();
+        JarBuilder.createModularJar(mainJar2.toString(), classes, MAIN_CLASS2);
+
+    }
+
+    public static void main(String... args) throws Exception {
+        appJar = JarBuilder.getOrCreateHelloJar();
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS1, MAIN_CLASS2, APP_CLASS};
+        // create an archive with the classes in the modules built in the
+        // previous step
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        appJar, appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "--add-modules",
+                                        MAIN_MODULE1 + "," + MAIN_MODULE2);
+        TestCommon.checkDump(output);
+        String prefix[] = {"-Djava.class.path=" + appJar, "-Xlog:class+load=trace"};
+
+        // run the com.greetings module with the archive with the --module-path
+        // the same as the one during dump time.
+        // The classes should be loaded from the archive.
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  moduleDir.toString(), // --module-path
+                                  MAIN_MODULE1) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
+                   .shouldContain("[class,load] org.astro.World source: shared objects file");
+            });
+
+        // run the com.hello module with the archive with the --module-path
+        // the same as the one during dump time.
+        // The classes should be loaded from the archive.
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  moduleDir.toString(), // --module-path
+                                  MAIN_MODULE2) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.hello.Main source: shared objects file")
+                   .shouldContain("[class,load] org.astro.World source: shared objects file");
+            });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddOpens.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver AddOpens
+ * @summary sanity test the --add-opens option
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class AddOpens {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE1 = "com.simple";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.simple.Main";
+
+    private static Path moduleDir = null;
+    private static Path moduleDir2 = null;
+    private static Path destJar = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.toString());
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
+
+        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
+        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
+        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
+        Files.copy(srcJar, destJar);
+
+    }
+
+    public static void main(String... args) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS};
+        // create an archive with both -cp and --module-path in the command line.
+        // Only the class in the modular jar in the --module-path will be archived;
+        // the class in the modular jar in the -cp won't be archived.
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        destJar.toString(), appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "-m", TEST_MODULE1);
+        TestCommon.checkDump(output);
+
+        // run with the archive using the same command line as in dump time
+        // plus the "--add-opens java.base/java.lang=com.simple" option.
+        // The main class should be loaded from the archive.
+        // The setaccessible(true) on the ClassLoader.defineClass method should
+        // be successful.
+        TestCommon.run( "-Xlog:class+load=trace",
+                        "-cp", destJar.toString(),
+                        "--add-opens", "java.base/java.lang=" + TEST_MODULE1,
+                        "--module-path", moduleDir.toString(),
+                        "-m", TEST_MODULE1, "with_add_opens")
+            .assertNormalExit(
+                "[class,load] com.simple.Main source: shared objects file",
+                "method.setAccessible succeeded!");
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddReads.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver AddReads
+ * @summary sanity test the --add-reads option
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Asserts;
+
+public class AddReads {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String MAIN_MODULE = "com.norequires";
+    private static final String SUB_MODULE = "org.astro";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.norequires.Main";
+    private static final String APP_CLASS = "org.astro.World";
+
+    private static Path moduleDir = null;
+    private static Path subJar = null;
+    private static Path mainJar = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(SUB_MODULE),
+                                       MODS_DIR.resolve(SUB_MODULE),
+                                       null);
+
+        Asserts.assertTrue(CompilerUtils
+            .compile(SRC_DIR.resolve(MAIN_MODULE),
+                     MODS_DIR.resolve(MAIN_MODULE),
+                     "-cp", MODS_DIR.resolve(SUB_MODULE).toString(),
+                     "--add-reads", "com.norequires=ALL-UNNAMED"));
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        subJar = moduleDir.resolve(SUB_MODULE + ".jar");
+        String classes = MODS_DIR.resolve(SUB_MODULE).toString();
+        JarBuilder.createModularJar(subJar.toString(), classes, null);
+
+        mainJar = moduleDir.resolve(MAIN_MODULE + ".jar");
+        classes = MODS_DIR.resolve(MAIN_MODULE).toString();
+        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
+    }
+
+    public static void main(String... args) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS, APP_CLASS};
+        // create an archive with the classes in the modules built in the
+        // previous step
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        null, appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "--add-modules", SUB_MODULE,
+                                        "--add-reads", "com.norequires=org.astro",
+                                        "-m", MAIN_MODULE);
+        TestCommon.checkDump(output);
+        String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace",
+                           "--add-modules", SUB_MODULE,
+                           "--add-reads", "com.norequires=org.astro"};
+
+        // run the com.norequires module with the archive with the same args
+        // used during dump time.
+        // The classes should be loaded from the archive.
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  moduleDir.toString(), // --module-path
+                                  MAIN_MODULE) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.norequires.Main source: shared objects file")
+                   .shouldContain("[class,load] org.astro.World source: shared objects file");
+            });
+
+        // create an archive with -cp pointing to the jar file containing the
+        // org.astro module and --module-path pointing to the main module
+        output = TestCommon.createArchive(
+                                        subJar.toString(), appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "--add-modules", SUB_MODULE,
+                                        "--add-reads", "com.norequires=org.astro",
+                                        "-m", MAIN_MODULE);
+        TestCommon.checkDump(output);
+        // run the com.norequires module with the archive with the sub-module
+        // in the -cp and with -add-reads=com.norequires=ALL-UNNAMED
+        // The main class should be loaded from the archive.
+        // The org.astro.World should be loaded from the jar.
+        String prefix2[] = {"-cp", subJar.toString(), "-Xlog:class+load=trace",
+                           "--add-reads", "com.norequires=ALL-UNNAMED"};
+        TestCommon.runWithModules(prefix2,
+                                  null, // --upgrade-module-path
+                                  moduleDir.toString(), // --module-path
+                                  MAIN_MODULE) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.norequires.Main source: shared objects file")
+                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
+            });
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ExportModule.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver ExportModule
+ * @summary Tests involve exporting a module from the module path to a jar in the -cp.
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.compiler.CompilerUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Asserts;
+
+public class ExportModule {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE1 = "com.greetings";
+    private static final String TEST_MODULE2 = "org.astro";
+
+    // unnamed module package name
+    private static final String PKG_NAME = "com.nomodule";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.greetings.Main";
+    private static final String APP_CLASS = "org.astro.World";
+
+    // unnamed module main class
+    private static final String UNNAMED_MAIN = "com.nomodule.Main";
+
+    private static Path moduleDir = null;
+    private static Path moduleDir2 = null;
+    private static Path appJar = null;
+    private static Path appJar2 = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE2),
+                                 MODS_DIR.resolve(TEST_MODULE2),
+                                 null);
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.toString());
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        Path jar = moduleDir.resolve(TEST_MODULE2 + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE2).toString();
+        JarBuilder.createModularJar(jar.toString(), classes, null);
+
+        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
+        appJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
+        classes = MODS_DIR.resolve(TEST_MODULE1).toString();
+        JarBuilder.createModularJar(appJar.toString(), classes, MAIN_CLASS);
+
+        // build a non-modular jar containing the main class which
+        // requires the org.astro package
+        boolean compiled
+            = CompilerUtils.compile(SRC_DIR.resolve(PKG_NAME),
+                                    MODS_DIR.resolve(PKG_NAME),
+                                    "--module-path", MODS_DIR.toString(),
+                                    "--add-modules", TEST_MODULE2,
+                                    "--add-exports", "org.astro/org.astro=ALL-UNNAMED");
+        Asserts.assertTrue(compiled, "test package did not compile");
+
+        appJar2 = moduleDir2.resolve(PKG_NAME + ".jar");
+        classes = MODS_DIR.resolve(PKG_NAME).toString();
+        JarBuilder.createModularJar(appJar2.toString(), classes, null);
+    }
+
+    public static void main(String... args) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS, APP_CLASS};
+        // create an archive with the class in the org.astro module built in the
+        // previous step and the main class from the modular jar in the -cp
+        // note: the main class is in the modular jar in the -cp which requires
+        // the module in the --module-path
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        appJar.toString(), appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "--add-modules", TEST_MODULE2, MAIN_CLASS);
+        TestCommon.checkDump(output);
+
+        // run it using the archive
+        // both the main class and the class from the org.astro module should
+        // be loaded from the archive
+        TestCommon.run("-Xlog:class+load=trace",
+                              "-cp", appJar.toString(),
+                              "--module-path", moduleDir.toString(),
+                              "--add-modules", TEST_MODULE2, MAIN_CLASS)
+            .assertNormalExit(
+                "[class,load] org.astro.World source: shared objects file",
+                "[class,load] com.greetings.Main source: shared objects file");
+
+        String appClasses2[] = {UNNAMED_MAIN, APP_CLASS};
+        // create an archive with the main class from a non-modular jar in the
+        // -cp and the class from the org.astro module
+        // note: the org.astro package needs to be exported to "ALL-UNNAMED"
+        // module since the jar in the -cp is a non-modular jar and thus it is
+        // unnmaed.
+        output = TestCommon.createArchive(
+                                        appJar2.toString(), appClasses2,
+                                        "--module-path", moduleDir.toString(),
+                                        "--add-modules", TEST_MODULE2,
+                                        "--add-exports", "org.astro/org.astro=ALL-UNNAMED",
+                                        UNNAMED_MAIN);
+        TestCommon.checkDump(output);
+
+        // both the main class and the class from the org.astro module should
+        // be loaded from the archive
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", appJar2.toString(),
+                       "--module-path", moduleDir.toString(),
+                       "--add-modules", TEST_MODULE2,
+                       "--add-exports", "org.astro/org.astro=ALL-UNNAMED",
+                       UNNAMED_MAIN)
+            .assertNormalExit(
+                "[class,load] org.astro.World source: shared objects file",
+                "[class,load] com.nomodule.Main source: shared objects file");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/JvmtiAddPath.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary JvmtiEnv::AddToBootstrapClassLoaderSearch and JvmtiEnv::AddToSystemClassLoaderSearch should disable AppCDS
+ * @requires vm.cds
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @compile ../../test-classes/JvmtiApp.java
+ * @run driver/timeout=240 JvmtiAddPath
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class JvmtiAddPath {
+    static String use_whitebox_jar;
+    static String[] no_extra_matches = {};
+    static String[] check_appcds_enabled = {
+        "[class,load] ExtraClass source: shared object"
+    };
+    static String[] check_appcds_disabled = {
+        "[class,load] ExtraClass source: file:"
+    };
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE1 = "com.simple";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.simple.Main";
+
+    private static Path moduleDir = null;
+    private static Path mainJar = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.toString());
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+
+        mainJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
+        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
+    }
+
+    static void run(String cp, String... args) throws Exception {
+        run(no_extra_matches, cp, args);
+    }
+
+    static void run(String[] extra_matches, String cp, String... args) throws Exception {
+        String[] opts = {"-cp", cp, "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI", use_whitebox_jar};
+        opts = TestCommon.concat(opts, args);
+        TestCommon.run(opts).assertNormalExit(extra_matches);
+    }
+
+    public static void main(String[] args) throws Exception {
+        buildTestModule();
+        JarBuilder.build("jvmti_app", "JvmtiApp", "ExtraClass");
+        JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
+
+        // In all the test cases below, appJar does not contain Hello.class. Instead, we
+        // append JAR file(s) that contain Hello.class to the boot classpath, the app
+        // classpath, or both, and verify that Hello.class is loaded by the expected ClassLoader.
+        String appJar = TestCommon.getTestJar("jvmti_app.jar");         // contains JvmtiApp.class
+        String addappJar = mainJar.toString();  // contains Main.class
+        String addbootJar = mainJar.toString(); // contains Main.class
+        String twoAppJars = appJar + File.pathSeparator + addappJar;
+        String modulePath = "--module-path=" + moduleDir.toString();
+        String wbJar = TestCommon.getTestJar("WhiteBox.jar");
+        use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        OutputAnalyzer output = TestCommon.createArchive(
+                                    appJar,
+                                    TestCommon.list("JvmtiApp", "ExtraClass", MAIN_CLASS),
+                                    use_whitebox_jar,
+                                    modulePath);
+        TestCommon.checkDump(output);
+
+        System.out.println("Test case 1: not adding module path - Hello.class should not be found");
+        run(check_appcds_enabled, appJar,
+            "-Xlog:class+load", "JvmtiApp", "noadd", MAIN_CLASS); // appcds should be enabled
+
+        System.out.println("Test case 2: add to boot classpath only - should find Hello.class in boot loader");
+        String[] toCheck = TestCommon.isDynamicArchive() ? check_appcds_enabled :
+                           check_appcds_disabled;
+        run(toCheck, appJar,
+            "-Xlog:class+load=trace",
+            modulePath,
+            "JvmtiApp", "bootonly", addbootJar, MAIN_CLASS); // appcds should be disabled
+
+        System.out.println("Test case 3: add to app classpath only - should find Hello.class in app loader");
+        run(appJar, modulePath,
+            "JvmtiApp", "apponly", addappJar, MAIN_CLASS);
+
+        System.out.println("Test case 4: add to boot and app paths - should find Hello.class in boot loader");
+        run(appJar, modulePath,
+            "JvmtiApp", "appandboot", addbootJar, addappJar, MAIN_CLASS);
+
+        System.out.println("Test case 5: add to app using -cp, but add to boot using JVMTI - should find Hello.class in boot loader");
+        run(appJar, modulePath,
+            "JvmtiApp", "bootonly", addappJar, MAIN_CLASS);
+
+        System.out.println("Test case 6: add to app using AppCDS, but add to boot using JVMTI - should find Hello.class in boot loader");
+        output = TestCommon.createArchive(
+                     appJar, TestCommon.list("JvmtiApp", "ExtraClass"),
+                     use_whitebox_jar,
+                     modulePath);
+        TestCommon.checkDump(output);
+        run(twoAppJars, modulePath,
+            "JvmtiApp", "bootonly", addappJar, MAIN_CLASS);
+
+        System.out.println("Test case 7: add to app using AppCDS, no JVMTI calls - should find Hello.class in app loader");
+        run(twoAppJars, modulePath,
+            "JvmtiApp", "noadd-appcds", MAIN_CLASS);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run main/othervm MainModuleOnly
+ * @summary Test some scenarios with a main modular jar specified in the --module-path and -cp options in the command line.
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+
+import jdk.test.lib.cds.CDSTestUtils.Result;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Platform;
+
+public class MainModuleOnly {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String TEST_MODULE1 = "com.simple";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.simple.Main";
+
+    private static Path moduleDir = null;
+    private static Path moduleDir2 = null;
+    private static Path destJar = null;
+
+    private static final String jarFileError = "A jar file is not the one used while building the shared archive file:";
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.resolve(TEST_MODULE1),
+                                 MODS_DIR.toString());
+
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
+
+        Path srcJar = moduleDir.resolve(TEST_MODULE1 + ".jar");
+        destJar = moduleDir2.resolve(TEST_MODULE1 + ".jar");
+        String classes = MODS_DIR.resolve(TEST_MODULE1).toString();
+        JarBuilder.createModularJar(srcJar.toString(), classes, MAIN_CLASS);
+        Files.copy(srcJar, destJar);
+
+    }
+
+    public static void main(String... args) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS};
+        // create an archive with both -cp and --module-path in the command line.
+        // Only the class in the modular jar in the --module-path will be archived;
+        // the class in the modular jar in the -cp won't be archived.
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        destJar.toString(), appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "-m", TEST_MODULE1);
+        TestCommon.checkDump(output);
+
+        // run with the archive using the same command line as in dump time.
+        // The main class should be loaded from the archive.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--module-path", moduleDir.toString(),
+                       "-m", TEST_MODULE1)
+            .assertNormalExit("[class,load] com.simple.Main source: shared objects file");
+
+        // run with the archive with the main class name inserted before the -m.
+        // The main class name will be picked up before the module name. So the
+        // main class should be loaded from the jar in the -cp.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--module-path", moduleDir.toString(),
+                       MAIN_CLASS, "-m", TEST_MODULE1)
+            .assertNormalExit(out ->
+                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar"));
+
+        // run with the archive with exploded module. Since during dump time, we
+        // only archive classes from the modular jar in the --module-path, the
+        // main class should be loaded from the exploded module directory.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--module-path", MODS_DIR.toString(),
+                       "-m", TEST_MODULE1 + "/" + MAIN_CLASS)
+            .assertNormalExit(out -> {
+                out.shouldMatch(".class.load. com.simple.Main source:.*com.simple")
+                   .shouldContain(MODS_DIR.toString());
+            });
+
+        // run with the archive with the --upgrade-module-path option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--upgrade-module-path", moduleDir.toString(),
+                       "--module-path", moduleDir.toString(),
+                       "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // run with the archive with the --limit-modules option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--limit-modules", "java.base," + TEST_MODULE1,
+                       "--module-path", moduleDir.toString(),
+                       "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // run with the archive with the --patch-module option.
+        // CDS will be disabled with this options and the main class will be
+        // loaded from the modular jar.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", destJar.toString(),
+                       "--patch-module", TEST_MODULE1 + "=" + MODS_DIR.toString(),
+                       "--module-path", moduleDir.toString(),
+                       "-m", TEST_MODULE1)
+            .assertSilentlyDisabledCDS(out -> {
+                out.shouldHaveExitValue(0)
+                   .shouldMatch("CDS is disabled when the.*option is specified")
+                   .shouldMatch(".class.load. com.simple.Main source:.*com.simple.jar");
+            });
+        // modify the timestamp of the jar file
+        (new File(destJar.toString())).setLastModified(System.currentTimeMillis() + 2000);
+        // run with the archive and the jar with modified timestamp.
+        // It should fail due to timestamp of the jar doesn't match the one
+        // used during dump time.
+        Result res = TestCommon.run("-cp", destJar.toString(),
+                       "-Xlog:cds",
+                       "--module-path", moduleDir.toString(),
+                       "-m", TEST_MODULE1);
+        res.assertAbnormalExit(jarFileError);
+        // create an archive with a non-empty directory in the --module-path.
+        // The dumping process will exit with an error due to non-empty directory
+        // in the --module-path.
+        String mainModule = TEST_MODULE1;
+        if (TestCommon.isDynamicArchive()) {
+            mainModule += "/" + MAIN_CLASS;
+        }
+        output = TestCommon.createArchive(destJar.toString(), appClasses,
+                                          "--module-path", MODS_DIR.toString(),
+                                          "-m", mainModule);
+        output.shouldHaveExitValue(1)
+              .shouldMatch("Error: non-empty directory.*com.simple");
+
+        // test module path with very long length
+        //
+        // This test can't be run on the windows platform due to an existing
+        // issue in ClassLoader::get_canonical_path() (JDK-8190737).
+        if (Platform.isWindows()) {
+            System.out.println("Long module path test cannot be tested on the Windows platform.");
+            return;
+        }
+        Path longDir = USER_DIR;
+        int pathLen = longDir.toString().length();
+        int PATH_LEN = 2034;
+        int MAX_DIR_LEN = 250;
+        while (pathLen < PATH_LEN) {
+            int remaining = PATH_LEN - pathLen;
+            int subPathLen = remaining > MAX_DIR_LEN ? MAX_DIR_LEN : remaining;
+            char[] chars = new char[subPathLen];
+            Arrays.fill(chars, 'x');
+            String subPath = new String(chars);
+            longDir = Paths.get(longDir.toString(), subPath);
+            pathLen = longDir.toString().length();
+        }
+        File longDirFile = new File(longDir.toString());
+        try {
+            longDirFile.mkdirs();
+        } catch (Exception e) {
+            throw e;
+        }
+        Path longDirJar = longDir.resolve(TEST_MODULE1 + ".jar");
+        // IOException results from the Files.copy() call on platform
+        // such as MacOS X. Test can't be proceeded further with the
+        // exception.
+        try {
+            Files.copy(destJar, longDirJar);
+        } catch (java.io.IOException ioe) {
+            System.out.println("Caught IOException from Files.copy(). Cannot continue.");
+            return;
+        }
+        output = TestCommon.createArchive(destJar.toString(), appClasses,
+                                          "-Xlog:exceptions=trace",
+                                          "--module-path", longDirJar.toString(),
+                                          "-m", TEST_MODULE1);
+        if (output.getExitValue() != 0) {
+            output.shouldMatch("os::stat error.*CDS dump aborted");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver ModulePathAndCP
+ * @summary 2 sets of tests: one with only --module-path in the command line;
+ *          another with both -cp and --module-path in the command line.
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class ModulePathAndCP {
+
+    private static final Path USER_DIR = Paths.get(System.getProperty("user.dir"));
+
+    private static final String TEST_SRC = System.getProperty("test.src");
+
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+
+    // the module name of the test module
+    private static final String MAIN_MODULE = "com.greetings";
+    private static final String APP_MODULE = "org.astro";
+
+    // the module main class
+    private static final String MAIN_CLASS = "com.greetings.Main";
+    private static final String APP_CLASS = "org.astro.World";
+
+    private static Path moduleDir = null;
+    private static Path moduleDir2 = null;
+    private static Path subJar = null;
+    private static Path mainJar = null;
+    private static Path destJar = null;
+
+    public static void buildTestModule() throws Exception {
+
+        // javac -d mods/$TESTMODULE src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(APP_MODULE),
+                                 MODS_DIR.resolve(APP_MODULE),
+                                 null);
+
+        // javac -d mods/$TESTMODULE --module-path MOD_DIR src/$TESTMODULE/**
+        JarBuilder.compileModule(SRC_DIR.resolve(MAIN_MODULE),
+                                 MODS_DIR.resolve(MAIN_MODULE),
+                                 MODS_DIR.toString());
+
+        moduleDir = Files.createTempDirectory(USER_DIR, "mlib");
+        moduleDir2 = Files.createTempDirectory(USER_DIR, "mlib2");
+        subJar = moduleDir.resolve(APP_MODULE + ".jar");
+        destJar = moduleDir2.resolve(APP_MODULE + ".jar");
+        String classes = MODS_DIR.resolve(APP_MODULE).toString();
+        JarBuilder.createModularJar(subJar.toString(), classes, null);
+        Files.copy(subJar, destJar);
+
+        mainJar = moduleDir.resolve(MAIN_MODULE + ".jar");
+        Path mainJar2 = moduleDir2.resolve(MAIN_MODULE + ".jar");
+        classes = MODS_DIR.resolve(MAIN_MODULE).toString();
+        JarBuilder.createModularJar(mainJar.toString(), classes, MAIN_CLASS);
+        Files.copy(mainJar, mainJar2);
+
+    }
+
+    public static void main(String... args) throws Exception {
+        run();
+    }
+
+    public static void run(String... extra_runtime_args) throws Exception {
+        // compile the modules and create the modular jar files
+        buildTestModule();
+        String appClasses[] = {MAIN_CLASS, APP_CLASS};
+        // create an archive with the classes in the modules built in the
+        // previous step
+        OutputAnalyzer output = TestCommon.createArchive(
+                                        null, appClasses,
+                                        "--module-path", moduleDir.toString(),
+                                        "-m", MAIN_MODULE);
+        TestCommon.checkDump(output);
+        String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace"};
+        prefix = TestCommon.concat(prefix, extra_runtime_args);
+
+        // run with the archive with the --module-path the same as the one during
+        // dump time. The classes should be loaded from the archive.
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  moduleDir.toString(), // --module-path
+                                  MAIN_MODULE) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
+                   .shouldContain("[class,load] org.astro.World source: shared objects file");
+            });
+
+        // run with the archive with the --module-path different from the one during
+        // dump time. The classes should be loaded from the jar files.
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  moduleDir2.toString(), // --module-path
+                                  MAIN_MODULE) // -m
+            .assertNormalExit(out -> {
+                out.shouldMatch(".class.load. com.greetings.Main source:.*com.greetings.jar")
+                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
+            });
+
+        // create an archive with modular jar files in both -cp and --module-path
+        String jars = subJar.toString() + System.getProperty("path.separator") +
+                      mainJar.toString();
+        output = TestCommon.createArchive( jars, appClasses,
+                                           "-Xlog:class+load=trace",
+                                           "--module-path", moduleDir.toString(),
+                                           "-m", MAIN_MODULE);
+        TestCommon.checkDump(output);
+
+        // run with archive with the main class name specified before
+        // the module name with the -m option. Since the -m option was specified
+        // during dump time, the classes in the jar files after the -cp won't be
+        // archived. Therefore, the classes won't be loaded from the archive but
+        // will be loaded from the jar files.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", jars,
+                       "--module-path", moduleDir.toString(),
+                       MAIN_CLASS, "-m", MAIN_MODULE)
+            .assertNormalExit(out -> {
+                out.shouldMatch(".class.load. com.greetings.Main source:.*com.greetings.jar")
+                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
+            });
+
+        // similar to the above case but without the main class name. The classes
+        // should be loaded from the archive.
+        TestCommon.run("-Xlog:class+load=trace",
+                       "-cp", jars,
+                       "--module-path", moduleDir.toString(),
+                       "-m", MAIN_MODULE)
+            .assertNormalExit(
+              "[class,load] com.greetings.Main source: shared objects file",
+              "[class,load] org.astro.World source: shared objects file");
+
+        // create an archive with two modular jars in the --module-path
+        output = TestCommon.createArchive(
+                                        null, appClasses,
+                                        "--module-path", jars,
+                                        "-m", MAIN_MODULE);
+        TestCommon.checkDump(output);
+
+        // run with the above archive but with the modular jar containing the
+        // org.astro module in a different location.
+        // The org.astro.World class should be loaded from the jar.
+        // The Main class should still be loaded from the archive.
+        jars = destJar.toString() + System.getProperty("path.separator") +
+                      mainJar.toString();
+        TestCommon.runWithModules(prefix,
+                                  null, // --upgrade-module-path
+                                  jars, // --module-path
+                                  MAIN_MODULE) // -m
+            .assertNormalExit(out -> {
+                out.shouldContain("[class,load] com.greetings.Main source: shared objects file")
+                   .shouldMatch(".class.load. org.astro.World source:.*org.astro.jar");
+            });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.hasJFR & vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.compiler
+ *          jdk.jartool/sun.tools.jar
+ *          jdk.jlink
+ * @run driver ModulePathAndCP_JFR
+ * @summary Same as ModulePathAndCP, but add -XX:StartFlightRecording=dumponexit=true to the runtime
+ *          options. This makes sure that the shared classes are compatible with both
+ *          JFR and JVMTI ClassFileLoadHook.
+ */
+
+public class ModulePathAndCP_JFR {
+    public static void main(String... args) throws Exception {
+        ModulePathAndCP.run("-XX:StartFlightRecording=dumponexit=true", "-Xlog:cds+jvmti=debug");
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.greetings/com/greetings/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package com.greetings;
+import org.astro.World;
+public class Main {
+    public static void main(String[] args) {
+        System.out.format("Greetings %s!\n", World.name());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.greetings/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+module com.greetings {
+    requires org.astro;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.hello/com/hello/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package com.hello;
+import org.astro.World;
+public class Main {
+    public static void main(String[] args) {
+        System.out.format("Hello %s!\n", World.name());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.hello/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+module com.hello {
+    requires org.astro;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.nomodule/com/nomodule/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package com.nomodule;
+import org.astro.World;
+public class Main {
+    public static void main(String[] args) {
+        System.out.format("Greetings %s!\n", World.name());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.norequires/com/norequires/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package com.norequires;
+import org.astro.World;
+public class Main {
+    public static void main(String[] args) {
+        System.out.format("Hello %s!\n", World.name());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.norequires/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+module com.norequires { }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.simple/com/simple/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package com.simple;
+
+import java.lang.reflect.Method;
+
+public class Main {
+    public static void main(String[] args) throws Exception {
+        System.out.println("Hello World!");
+        if (args.length > 0 && args[0].equals("with_add_opens")) {
+            Method method = ClassLoader.class.getDeclaredMethod("defineClass",
+                byte[].class, int.class, int.class);
+            method.setAccessible(true);
+            System.out.println("method.setAccessible succeeded!");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/com.simple/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+module com.simple {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/org.astro/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+module org.astro {
+    exports org.astro;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/src/org.astro/org/astro/World.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package org.astro;
+public class World {
+    public static String name() {
+        return "world";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/OverrideTests.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @requires vm.cds
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ * @library ../..
+ * @library /test/lib
+ * @compile ../../test-classes/Hello.java
+ * @run driver OverrideTests
+ * @summary AppCDS tests for overriding archived classes with -p and --upgrade-module-path
+ */
+
+/*
+ * This test consists of 4 tests:
+ *   1. Archive PLATFORM class and override with --upgrade-module-path.
+ *   2. Archive PLATFORM class and override with -p.
+ *   3. Archive APP class and override with --upgrade-module-path.
+ *   4. Archive App class and override with -p.
+ * For all 4 tests, the class is instantiatied and toString() is called
+ * to check whether the archived version or the override version was instantiatied.
+ * For tests 1 and 3, the overridden version should be instantiatied.
+ * For tests 2 and 4, the archived version should be instantiated.
+ *
+ * This test uses the same test helper class in all 4 cases. It is located in
+ * src/test/jdk/test/Main.java. It will be invoked once for each test cases,
+ * with parameters to the test determining how it is run and what the
+ * expected result is. See Main.java for a description of these 3 arguments.
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.Asserts;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+
+public class OverrideTests {
+    private static final String TEST_SRC = System.getProperty("test.src");
+    private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
+    private static final Path MODS_DIR = Paths.get("mods");
+    private static String appJar;
+    // the module that is upgraded
+    private static final String[] UPGRADED_MODULES = {"jdk.compiler", "java.net.http"};
+    private static final Path[] UPGRADEDMODS_DIR = {Paths.get("upgradedmod1"), Paths.get("upgradedmod2")};
+
+    // the test module
+    private static final String TEST_MODULE = "test";
+    private static final String MAIN_CLASS = "jdk.test.Main";
+
+    // test classes to archive. These are both in UPGRADED_MODULES
+    private static final String APP_ARCHIVE_CLASS = "com/sun/tools/javac/Main";
+    private static final String PLATFORM_ARCHIVE_CLASS = "java/net/http/HttpTimeoutException";
+    private static final String[] ARCHIVE_CLASSES = {APP_ARCHIVE_CLASS, PLATFORM_ARCHIVE_CLASS};
+    private static String testArchiveName;
+
+
+    public static void main(String[] args) throws Exception {
+        appJar = JarBuilder.getOrCreateHelloJar();
+        OverrideTests tests = new OverrideTests();
+        tests.compileModulesAndDumpArchive();
+        tests.testAppClassOverriding();
+        tests.testPlatformClassOverriding();
+    }
+
+    void compileModulesAndDumpArchive() throws Exception {
+        boolean compiled;
+        // javac -d upgradedmods/$upgradedMod src/$upgradedMod/**
+        int i = 0;
+        for (String upgradedMod : UPGRADED_MODULES) {
+            compiled = CompilerUtils.compile(
+                SRC_DIR.resolve(UPGRADED_MODULES[i]),
+                UPGRADEDMODS_DIR[i].resolve(UPGRADED_MODULES[i])
+            );
+            Asserts.assertTrue(compiled, UPGRADED_MODULES[i] + " did not compile");
+            i++;
+        }
+
+        // javac -d mods/test --upgrade-module-path upgradedmods ...
+        compiled = CompilerUtils.compile(
+            SRC_DIR.resolve(TEST_MODULE),
+            MODS_DIR.resolve(TEST_MODULE),
+            "--upgrade-module-path", UPGRADEDMODS_DIR[0].toString() +
+             System.getProperty("path.separator") + UPGRADEDMODS_DIR[1].toString()
+        );
+        Asserts.assertTrue(compiled, TEST_MODULE + " did not compile");
+
+        // dump the archive with jdk.compiler and java.net.http classes in the class list
+        OutputAnalyzer output  = TestCommon.dump(appJar, TestCommon.list(ARCHIVE_CLASSES));
+        TestCommon.checkDump(output);
+        // Make sure all the classes where successfully archived.
+        for (String archiveClass : ARCHIVE_CLASSES) {
+            output.shouldNotContain("Preload Warning: Cannot find " + archiveClass);
+        }
+
+        testArchiveName = TestCommon.getCurrentArchiveName();
+    }
+
+    /**
+     * APP Class Overriding Tests
+     *
+     * Archive APP class com.sun.tools.javac.Main from module jdk.compiler.
+     *  -At run time, upgrade module jdk.compiler using --upgrade-module-path.
+     *   Class.forname(Main) MUST NOT load the archived Main.
+     *  -At run time, module jdk.compiler also exists in --module-path.
+     *   Class.forname(Main) MUST load the archived Main.
+     */
+    public void testAppClassOverriding() throws Exception {
+        testClassOverriding(APP_ARCHIVE_CLASS, "app");
+    }
+
+    /**
+     * PLATFORM Class Overriding Tests
+     *
+     * Archive PLATFORM class java.net.http.HttpTimeoutException from module java.net.http.
+     *  -At run time, upgrade module java.net.http using --upgrade-module-path.
+     *   Class.forname(HttpTimeoutException) MUST NOT load the archived HttpTimeoutException.
+     *  -At run time, module java.net.http also exists in --module-path.
+     *   Class.forname(HttpTimeoutException) MUST load the archived HttpTimeoutException.
+     */
+    public void testPlatformClassOverriding() throws Exception {
+        testClassOverriding(PLATFORM_ARCHIVE_CLASS, "platform");
+    }
+
+    /**
+     * Run the test twice. Once with upgrade module on --upgrade-module-path and once with it on -p.
+     * Only modules defined to the PlatformClassLoader are upgradeable.
+     * Modules defined to the AppClassLoader are not upgradeble; we expect the
+     * FindException to be thrown.
+     */
+    void testClassOverriding(String archiveClass, String loaderName) throws Exception {
+        String mid = TEST_MODULE + "/" + MAIN_CLASS;
+        OutputAnalyzer output;
+        boolean isAppLoader = loaderName.equals("app");
+        int upgradeModIdx = isAppLoader ? 0 : 1;
+        String expectedException = "java.lang.module.FindException: Unable to compute the hash";
+        String prefix[] = new String[3];
+        prefix[0] = "-Djava.class.path=" + appJar;
+        prefix[1] = "--add-modules";
+        prefix[2] = "java.net.http";
+
+        // Run the test with --upgrade-module-path set to alternate location of archiveClass
+        // The alternate version of archiveClass SHOULD be found.
+        TestCommon.runWithModules(prefix,
+                                  UPGRADEDMODS_DIR[upgradeModIdx].toString(),
+                                  MODS_DIR.toString(),
+                                  mid,
+                                  archiveClass, loaderName, "true") // last 3 args passed to test
+            .ifNoMappingFailure(out -> out.shouldContain(expectedException));
+
+        // Now run this same test again, but this time without AppCDS. Behavior should be the same.
+        CDSOptions opts = (new CDSOptions())
+            .addPrefix(prefix)
+            .setArchiveName(testArchiveName).setUseVersion(false)
+            .addSuffix("--upgrade-module-path", UPGRADEDMODS_DIR[upgradeModIdx].toString(),
+                       "-p", MODS_DIR.toString(), "-m", mid)
+            .addSuffix(archiveClass, loaderName, "true");
+
+        output = CDSTestUtils.runWithArchive(opts);
+
+        try {
+            output.shouldContain(expectedException);
+        } catch (Exception e) {
+            TestCommon.checkCommonExecExceptions(output, e);
+        }
+
+        // Run the test with -p set to alternate location of archiveClass.
+        // The alternate version of archiveClass SHOULD NOT be found.
+        TestCommon.runWithModules(
+            prefix,
+            null,
+            UPGRADEDMODS_DIR[upgradeModIdx].toString() + java.io.File.pathSeparator + MODS_DIR.toString(),
+            mid,
+            archiveClass, loaderName, "false") // last 3 args passed to test
+            .assertNormalExit();
+
+        // Now  run this same test again, but this time without AppCDS. Behavior should be the same.
+        opts = (new CDSOptions())
+            .addPrefix(prefix)
+            .setArchiveName(testArchiveName).setUseVersion(false)
+            .addSuffix("-p", MODS_DIR.toString(), "-m", mid)
+            .addSuffix(archiveClass, loaderName, "false"); // params to the test class
+
+        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
+        if (!CDSTestUtils.isUnableToMap(out))
+            out.shouldHaveExitValue(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/java.net.http/java/net/http/HttpTimeoutException.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+package java.net.http;
+
+public class HttpTimeoutException {
+    public String toString() {
+        return "hi";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/java.net.http/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+module java.net.http {
+    exports java.net.http;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/jdk.compiler/com/sun/tools/javac/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+package com.sun.tools.javac;
+
+public class Main {
+    public String toString() {
+        return "hi";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/jdk.compiler/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+module jdk.compiler {
+    exports com.sun.tools.javac;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/test/jdk/test/Main.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * Used with -p or --upgrade-module-path to exercise the replacement
+ * of classes in modules that are linked into the runtime image.
+ */
+
+package jdk.test;
+
+public class Main {
+    static final ClassLoader PLATFORM_LOADER = ClassLoader.getPlatformClassLoader();
+    static final ClassLoader SYS_LOADER      = ClassLoader.getSystemClassLoader();
+
+    public static void main(String[] args) throws Exception {
+        ClassLoader loader = null;
+        boolean shouldOverride = false;
+
+        /*
+         * 3 Arguments are passed to this test:
+         *   1. className: Name of the class to load.
+         *   2. loaderName: Either "platform" or "app", which specifies which ClassLoader is expected
+         *      to be the defining ClassLoader once the class is loaded. The initiating
+         *      ClassLoader is always the default ClassLoader (which should be the
+         *      app (system) ClassLoader.
+         *   3. shouldOverride: Either "true" or "false" to indicate whether the loaded class
+         *      should be the one we are attempting to override with (not the archived version).
+         */
+
+        assertTrue(args.length == 3, "Unexpected number of arguments: expected 3, actual " + args.length);
+        String className = args[0].replace('/', '.');
+        String loaderName = args[1]; // "platform" or "app"
+        String shouldOverrideName = args[2];  // "true" or "false"
+
+        if (loaderName.equals("app")) {
+            loader = SYS_LOADER;
+        } else if (loaderName.equals("platform")) {
+            loader = PLATFORM_LOADER;
+        } else {
+            assertTrue(false);
+        }
+
+        if (shouldOverrideName.equals("true")) {
+            shouldOverride = true;
+        } else if (shouldOverrideName.equals("false")) {
+            shouldOverride = false;
+        } else {
+            assertTrue(false);
+        }
+
+        // Load the class with the default ClassLoader.
+        Class<?> clazz = Class.forName(className, true, loader);
+        // Make sure we got the expected defining ClassLoader
+        testLoader(clazz, loader);
+
+        String s = null;
+        if (shouldOverride) {
+          // Create an instance and see what toString() returns
+          clazz.newInstance().toString();
+        }
+        // The overridden version of the class should return "hi". Make sure
+        // it does only if we are expecting to have loaded the overridden version.
+        assertTrue("hi".equals(s) == shouldOverride);
+    }
+
+    /**
+     * Asserts that given class has the expected defining loader.
+     */
+    static void testLoader(Class<?> clazz, ClassLoader expected) {
+        ClassLoader loader = clazz.getClassLoader();
+        if (loader != expected) {
+            throw new RuntimeException(clazz + " loaded by " + loader + ", expected " + expected);
+        }
+    }
+
+    static void assertTrue(boolean expr) {
+        assertTrue(expr, "");
+    }
+
+    static void assertTrue(boolean expr, String msg) {
+        if (!expr)
+            throw new RuntimeException("assertion failed: " + msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/src/test/module-info.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+module test {
+    requires jdk.compiler;
+    requires java.compiler;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/ClassFileLoadHook.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+class LoadMe {
+    static String getValue() {
+        return "beforeHook";
+    }
+    static String getOtherValue() {
+        return "abc-beforeHook-xyz";
+    }
+}
+
+public class ClassFileLoadHook {
+    public enum TestCaseId {
+        SHARING_OFF_CFLH_ON,   // test case to establish a baseline
+        SHARING_ON_CFLH_OFF,
+        SHARING_AUTO_CFLH_ON,
+        SHARING_ON_CFLH_ON
+    }
+
+    public static void main(String args[]) throws Exception {
+        TestCaseId testCase = TestCaseId.valueOf(args[0]);
+        test1(testCase);
+        test2(testCase);
+    }
+
+    // Test rewriting the classfile data using CFLH
+    static void test1(TestCaseId testCase) {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        System.out.println("====== ClassFileLoadHook.main():testCase = " + testCase);
+        System.out.println("getValue():" + LoadMe.getValue());
+        System.out.println("getOtherValue():" + LoadMe.getOtherValue());
+
+        switch (testCase) {
+            case SHARING_OFF_CFLH_ON:
+                assertTrue("after_Hook".equals(LoadMe.getValue()) &&
+                           "abc-after_Hook-xyz".equals(LoadMe.getOtherValue()),
+                           "Not sharing, this test should replace beforeHook " +
+                           "with after_Hook");
+            break;
+
+            case SHARING_ON_CFLH_OFF:
+                assertTrue(wb.isSharedClass(LoadMe.class),
+                    "LoadMe should be shared, but is not");
+                assertTrue("beforeHook".equals(LoadMe.getValue()) &&
+                           "abc-beforeHook-xyz".equals(LoadMe.getOtherValue()),
+                           "CFLH off, bug values are redefined");
+            break;
+
+            case SHARING_AUTO_CFLH_ON:
+            case SHARING_ON_CFLH_ON:
+                // LoadMe is rewritten on CFLH
+                assertFalse(wb.isSharedClass(LoadMe.class),
+                    "LoadMe should not be shared if CFLH has modified the class");
+                assertFalse("beforeHook".equals(LoadMe.getValue()) &&
+                           "abc-beforeHook-xyz".equals(LoadMe.getOtherValue()),
+                           "Class contents should be changed if CFLH is enabled");
+             break;
+
+             default:
+                 throw new RuntimeException("Invalid testcase");
+
+        }
+    }
+
+    // Test the loading of classfile data for non-boot shared classes from jrt:/xxx.
+    // See JDK-8221351.
+    static void test2(TestCaseId testCase) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        Class c = Class.forName("java.sql.SQLException"); // defined by platform class loader.
+
+        switch (testCase) {
+            case SHARING_ON_CFLH_OFF:
+            case SHARING_ON_CFLH_ON:
+                assertTrue(wb.isSharedClass(c), "must be shared");
+                break;
+            case SHARING_AUTO_CFLH_ON:
+                // With -Xshare:auto, the test continues to run with mapping failure.
+                // In case of mapping failure, java/lang/Object and the app class
+                // won't be loaded from the archive.
+                Class objClass = Class.forName("java.lang.Object");
+                if (wb.isSharedClass(objClass)) {
+                    assertTrue(wb.isSharedClass(c), "must be shared");
+                } else {
+                    assertFalse(wb.isSharedClass(c), "must not be shared");
+                }
+                break;
+            default:
+                // this test is not applicable to -Xshare:off
+                if (testCase != TestCaseId.SHARING_OFF_CFLH_ON) {
+                    throw new RuntimeException("Invalid testcase");
+                }
+        }
+    }
+
+    private static void assertTrue(boolean expr, String msg) {
+        if (!expr)
+            throw new RuntimeException(msg);
+    }
+
+    private static void assertFalse(boolean expr, String msg) {
+        if (expr)
+            throw new RuntimeException(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/ClassFileLoadHookTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test jvmti class file loader hook interaction with AppCDS
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @requires vm.cds
+ * @build ClassFileLoadHook
+ * @run main/othervm/native ClassFileLoadHookTest
+ */
+
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+
+public class ClassFileLoadHookTest {
+    public static String sharedClasses[] = {
+        "ClassFileLoadHook",
+        "ClassFileLoadHook$TestCaseId",
+        "ClassFileLoadHook$1",
+        "LoadMe",
+        "java/sql/SQLException"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String wbJar =
+            ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
+        String appJar =
+            ClassFileInstaller.writeJar("ClassFileLoadHook.jar", sharedClasses);
+        String useWb = "-Xbootclasspath/a:" + wbJar;
+
+        // First, run the test class directly, w/o sharing, as a baseline reference
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                useWb,
+                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
+                "ClassFileLoadHook",
+                "" + ClassFileLoadHook.TestCaseId.SHARING_OFF_CFLH_ON);
+        TestCommon.executeAndLog(pb, "no-sharing").shouldHaveExitValue(0);
+
+        // Run with AppCDS, but w/o CFLH - second baseline
+        TestCommon.testDump(appJar, sharedClasses, useWb);
+        OutputAnalyzer out = TestCommon.exec(appJar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI", useWb,
+                "ClassFileLoadHook",
+                "" + ClassFileLoadHook.TestCaseId.SHARING_ON_CFLH_OFF);
+
+        TestCommon.checkExec(out);
+
+
+        // Now, run with AppCDS with -Xshare:auto and CFLH
+        out = TestCommon.execAuto("-cp", appJar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI", useWb,
+                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
+                "ClassFileLoadHook",
+                "" + ClassFileLoadHook.TestCaseId.SHARING_AUTO_CFLH_ON);
+
+        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
+        TestCommon.checkExec(out, opts);
+
+        // Now, run with AppCDS -Xshare:on and CFLH
+        out = TestCommon.exec(appJar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI", useWb,
+                "-agentlib:SimpleClassFileLoadHook=LoadMe,beforeHook,after_Hook",
+                "ClassFileLoadHook",
+                "" + ClassFileLoadHook.TestCaseId.SHARING_ON_CFLH_ON);
+        TestCommon.checkExec(out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationAgent.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Premain-Class: InstrumentationRegisterClassFileTransformer
+Agent-Class: InstrumentationRegisterClassFileTransformer
+Can-Retransform-Classes: true
+Can-Redefine-Classes: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassDefinition;
+import java.lang.instrument.Instrumentation;
+import java.lang.instrument.UnmodifiableClassException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.io.File;
+import java.io.FileWriter;
+import java.security.CodeSigner;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+import sun.hotspot.WhiteBox;
+
+public class InstrumentationApp {
+    static WhiteBox wb = WhiteBox.getWhiteBox();
+
+    public static final String COO_CLASS_NAME = "InstrumentationApp$Coo";
+
+    public static interface Intf {            // Loaded from Boot class loader (-Xbootclasspath/a).
+        public String get();
+    }
+    public static class Bar implements Intf { // Loaded from Boot class loader.
+        public String get() {
+            // The initial transform:
+            //      change "buzz" -> "fuzz"
+            // The re-transform:
+            //      change "buzz" -> "guzz"
+            return "buzz";
+        }
+    }
+    public static class Foo implements Intf { // Loaded from AppClassLoader, or from a custom loader
+        public String get() {
+            // The initial transform:
+            //      change "buzz" -> "fuzz"
+            // The re-transform:
+            //      change "buzz" -> "guzz"
+            return "buzz";
+        }
+    }
+    public static class Coo implements Intf { // Loaded from custom class loader.
+        public String get() {
+            // The initial transform:
+            //      change "buzz" -> "fuzz"
+            // The re-transform:
+            //      change "buzz" -> "guzz"
+            return "buzz";
+        }
+    }
+
+    // This class file should be archived if AppCDSv2 is enabled on this platform. See
+    // the comments around the call to TestCommon.dump in InstrumentationTest.java.
+    public static class ArchivedIfAppCDSv2Enabled {}
+
+    public static boolean isAppCDSV2Enabled() {
+        return wb.isSharedClass(ArchivedIfAppCDSv2Enabled.class);
+    }
+
+    public static class MyLoader extends URLClassLoader {
+        public MyLoader(URL[] urls, ClassLoader parent, File jar) {
+            super(urls, parent);
+            this.jar = jar;
+        }
+        File jar;
+
+        @Override
+        protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
+            synchronized (getClassLoadingLock(name)) {
+                // First, check if the class has already been loaded
+                Class<?> clz = findLoadedClass(name);
+                if (clz != null) {
+                    return clz;
+                }
+
+                if (name.equals(COO_CLASS_NAME)) {
+                    try {
+                        byte[] buff = Util.getClassFileFromJar(jar, name);
+                        return defineClass(name, buff, 0, buff.length);
+                    } catch (Throwable t) {
+                        t.printStackTrace();
+                        throw new RuntimeException("Unexpected", t);
+                    }
+                }
+            }
+            return super.loadClass(name, resolve);
+        }
+    }
+
+    static int numTests = 0;
+    static int failed = 0;
+    static boolean isAttachingAgent = false;
+    static Instrumentation instrumentation;
+
+    public static void main(String args[]) throws Throwable {
+        System.out.println("INFO: AppCDSv1 " + (wb.isSharedClass(InstrumentationApp.class) ? "enabled" :"disabled"));
+        System.out.println("INFO: AppCDSv2 " + (isAppCDSV2Enabled()                        ? "enabled" : "disabled"));
+
+        String flagFile = args[0];
+        File bootJar = new File(args[1]);
+        File appJar  = new File(args[2]);
+        File custJar = new File(args[3]);
+        waitAttach(flagFile);
+
+        instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
+        System.out.println("INFO: instrumentation = " + instrumentation);
+
+        testBootstrapCDS("Bootstrap Loader", bootJar);
+        testAppCDSv1("Application Loader", appJar);
+
+        if (isAppCDSV2Enabled()) {
+          testAppCDSv2("Custom Loader (unregistered)", custJar);
+        }
+
+        if (failed > 0) {
+            throw new RuntimeException("FINAL RESULT: " + failed + " out of " + numTests + " test case(s) have failed");
+        } else {
+            System.out.println("FINAL RESULT: All " + numTests + " test case(s) have passed!");
+        }
+    }
+
+    static void waitAttach(String flagFile) throws Throwable {
+        // See InstrumentationTest.java for the hand-shake protocol.
+        if (!flagFile.equals("noattach")) {
+            File f = new File(flagFile);
+            try (FileWriter fw = new FileWriter(f)) {
+                long pid = ProcessHandle.current().pid();
+                System.out.println("my pid = " + pid);
+                fw.write(Long.toString(pid));
+                fw.write("\n");
+                for (int i=0; i<10; i++) {
+                  // Parent process waits until we have written more than 100 bytes, so it won't
+                  // read a partial pid
+                  fw.write("==========");
+                }
+                fw.close();
+            }
+
+            long start = System.currentTimeMillis();
+            while (f.exists()) {
+                long elapsed = System.currentTimeMillis() - start;
+                System.out.println(".... (" + elapsed + ") waiting for deletion of " + f);
+                Thread.sleep(1000);
+            }
+            System.out.println("Attach succeeded (child)");
+            isAttachingAgent = true;
+        }
+    }
+
+    static void testBootstrapCDS(String group, File jar) throws Throwable {
+        doTest(group, new Bar(), jar);
+    }
+
+    static void testAppCDSv1(String group, File jar) throws Throwable {
+        doTest(group, new Foo(), jar);
+    }
+
+    static void testAppCDSv2(String group, File jar) throws Throwable {
+        URL[] urls = new URL[] {jar.toURI().toURL()};
+        MyLoader loader = new MyLoader(urls, InstrumentationApp.class.getClassLoader(), jar);
+        Class klass = loader.loadClass(COO_CLASS_NAME);
+        doTest(group, (Intf)klass.newInstance(), jar);
+    }
+
+    static void doTest(String group, Intf object, File jar) throws Throwable {
+        Class klass = object.getClass();
+        System.out.println();
+        System.out.println("++++++++++++++++++++++++++");
+        System.out.println("Test group: " + group);
+        System.out.println("Testing with classloader = " + klass.getClassLoader());
+        System.out.println("Testing with class       = " + klass);
+        System.out.println("++++++++++++++++++++++++++");
+
+        // Initial transform
+        String f = object.get();
+        assertTrue(f.equals("fuzz"), "object.get(): Initial transform should give 'fuzz'", f);
+
+        // Retransform
+        f = "(failed)";
+        try {
+            instrumentation.retransformClasses(klass);
+            f = object.get();
+        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
+            e.printStackTrace();
+        }
+        assertTrue(f.equals("guzz"), "object.get(): retransformation should give 'guzz'", f);
+
+        // Redefine
+        byte[] buff = Util.getClassFileFromJar(jar, klass.getName());
+        Util.replace(buff, "buzz", "huzz");
+        f = "(failed)";
+        try {
+            instrumentation.redefineClasses(new ClassDefinition(klass, buff));
+            f = object.get();
+        } catch (UnmodifiableClassException|UnsupportedOperationException e) {
+            e.printStackTrace();
+        }
+        assertTrue(f.equals("quzz"), "object.get(): redefinition should give 'quzz'", f);
+
+        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++ (done)\n\n");
+    }
+
+    private static void assertTrue(boolean expr, String msg, String string) {
+        numTests ++;
+        System.out.printf("Test case %2d ", numTests);
+
+        if (expr) {
+            System.out.println("PASSED: " + msg + " and we got '" + string + "'");
+        } else {
+            failed ++;
+            System.out.println("FAILED: " + msg + " but we got '" + string + "'");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationClassFileTransformer.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+// Note: Util is from /test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestCommon.java
+
+public class InstrumentationClassFileTransformer implements ClassFileTransformer {
+    public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
+                            ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
+
+        if (name.startsWith("InstrumentationApp$") && !name.equals("InstrumentationApp$NotTransformed")) {
+            System.out.println("Transforming: " + name + " class = " + classBeingRedefined);
+            try {
+                if (classBeingRedefined == null) {
+                    // Initial transform
+                    replace(buffer, "buzz", "fuzz");
+                } else {
+                    replace(buffer, "buzz", "guzz"); // Retransform
+                    replace(buffer, "huzz", "quzz"); // Redefine
+                }
+            } catch (Throwable t) {
+                t.printStackTrace();
+            }
+            return buffer;
+        }
+        return null;
+    }
+
+    static void replace(byte[] buffer, String from, String to) {
+        int n = Util.replace(buffer, from, to);
+        System.out.println("..... replaced " + n + " occurrence(s) of '" + from + "' to '" + to + "'");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationRegisterClassFileTransformer.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
+
+// This class is available on the classpath so it can be accessed by InstrumentationApp
+public class InstrumentationRegisterClassFileTransformer {
+    private static Instrumentation savedInstrumentation;
+
+    public static void premain(String agentArguments, Instrumentation instrumentation) {
+        System.out.println("InstrumentationRegisterClassFileTransformer.premain() is called");
+        instrumentation.addTransformer(new InstrumentationClassFileTransformer(), /*canRetransform=*/true);
+        savedInstrumentation = instrumentation;
+    }
+
+    public static Instrumentation getInstrumentation() {
+        return savedInstrumentation;
+    }
+
+    public static void agentmain(String args, Instrumentation inst) throws Exception {
+        premain(args, inst);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/InstrumentationTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,283 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Exercise the java.lang.instrument.Instrumentation APIs on classes archived
+ *          using CDS/AppCDSv1/AppCDSv2.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @build sun.hotspot.WhiteBox
+ *        InstrumentationApp
+ *        InstrumentationClassFileTransformer
+ *        InstrumentationRegisterClassFileTransformer
+ * @run main/othervm InstrumentationTest
+ */
+
+// Note: TestCommon is from /test/hotspot/jtreg/runtime/cds/appcds/TestCommon.java
+// Note: Util       is from /test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestCommon.java
+
+import com.sun.tools.attach.VirtualMachine;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Scanner;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class InstrumentationTest {
+    public static String bootClasses[] = {
+        "InstrumentationApp$Intf",
+        "InstrumentationApp$Bar",
+        "sun.hotspot.WhiteBox",
+    };
+    public static String appClasses[] = {
+        "InstrumentationApp",
+        "InstrumentationApp$Foo",
+        "InstrumentationApp$MyLoader",
+    };
+    public static String custClasses[] = {
+        "InstrumentationApp$Coo",
+    };
+    public static String sharedClasses[] = TestCommon.concat(bootClasses, appClasses);
+
+    public static String agentClasses[] = {
+        "InstrumentationClassFileTransformer",
+        "InstrumentationRegisterClassFileTransformer",
+        "Util",
+    };
+
+    public static void main(String[] args) throws Throwable {
+        runTest(false);
+        runTest(true);
+    }
+
+    public static void runTest(boolean attachAgent) throws Throwable {
+        String bootJar =
+            ClassFileInstaller.writeJar("InstrumentationBoot.jar", bootClasses);
+        String appJar =
+            ClassFileInstaller.writeJar("InstrumentationApp.jar",
+                                        TestCommon.concat(appClasses,
+                                                          "InstrumentationApp$ArchivedIfAppCDSv2Enabled"));
+        String custJar =
+            ClassFileInstaller.writeJar("InstrumentationCust.jar", custClasses);
+        String agentJar =
+            ClassFileInstaller.writeJar("InstrumentationAgent.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("InstrumentationAgent.mf"),
+                                        agentClasses);
+
+        String bootCP = "-Xbootclasspath/a:" + bootJar;
+
+        System.out.println("");
+        System.out.println("============================================================");
+        System.out.println("CDS: NO, attachAgent: " + (attachAgent ? "YES" : "NO"));
+        System.out.println("============================================================");
+        System.out.println("");
+
+        String agentCmdArg, flagFile;
+        if (attachAgent) {
+            // we will attach the agent, so don't specify -javaagent in the command line. We'll use
+            // something harmless like -showversion to make it easier to construct the command line
+            agentCmdArg = "-showversion";
+        } else {
+            agentCmdArg = "-javaagent:" + agentJar;
+        }
+
+        // First, run the test class directly, w/o sharing, as a baseline reference
+        flagFile = getFlagFile(attachAgent);
+        AgentAttachThread t = doAttach(attachAgent, flagFile, agentJar);
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+                bootCP,
+                "-cp", appJar,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                "-Xshare:off",
+                agentCmdArg,
+                "InstrumentationApp", flagFile, bootJar, appJar, custJar);
+        TestCommon.executeAndLog(pb, "no-sharing").shouldHaveExitValue(0);
+        checkAttach(t);
+
+        // Dump the AppCDS archive. On some platforms AppCDSv2 may not be enabled, so we
+        // first try the v2 classlist, and if that fails, revert to the v1 classlist.
+        // Note that the InstrumentationApp$ArchivedIfAppCDSv2Enabled class is archived
+        // only if V2 is enabled. This is tested by InstrumentationApp.isAppCDSV2Enabled().
+        String[] v2Classes = {
+            "InstrumentationApp$ArchivedIfAppCDSv2Enabled",
+            "java/lang/Object id: 0",
+            "InstrumentationApp$Intf id: 1",
+            "InstrumentationApp$Coo  id: 2 super: 0 interfaces: 1 source: " + custJar,
+        };
+        String[] sharedClassesWithV2 = TestCommon.concat(v2Classes, sharedClasses);
+        OutputAnalyzer out = TestCommon.dump(appJar, sharedClassesWithV2, bootCP);
+        if (out.getExitValue() != 0) {
+            System.out.println("Redumping with AppCDSv2 disabled");
+                TestCommon.testDump(appJar, sharedClasses, bootCP);
+        }
+
+        // Run with AppCDS.
+        System.out.println("");
+        System.out.println("============================================================");
+        System.out.println("CDS: YES, attachAgent: " + (attachAgent ? "YES" : "NO"));
+        System.out.println("============================================================");
+        System.out.println("");
+
+        flagFile = getFlagFile(attachAgent);
+        t = doAttach(attachAgent, flagFile, agentJar);
+        out = TestCommon.execAuto("-cp", appJar,
+                bootCP,
+                "-XX:+UnlockDiagnosticVMOptions",
+                "-XX:+WhiteBoxAPI",
+                agentCmdArg,
+               "InstrumentationApp", flagFile, bootJar, appJar, custJar);
+
+        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
+        TestCommon.checkExec(out, opts);
+        checkAttach(t);
+    }
+
+    static int flagFileSerial = 1;
+    static private String getFlagFile(boolean attachAgent) {
+        if (attachAgent) {
+            // Do not reuse the same file name as Windows may fail to
+            // delete the file.
+            return "attach.flag." + ProcessHandle.current().pid() +
+                    "." + (flagFileSerial++) + "." + System.currentTimeMillis();
+        } else {
+            return "noattach";
+        }
+    }
+
+    static AgentAttachThread doAttach(boolean attachAgent, String flagFile, String agentJar) throws Throwable {
+        if (!attachAgent) {
+            return null;
+        }
+
+        // Hand-shake protocol with the child process
+        // [1] Parent process (this process) launches child process (InstrumentationApp)
+        //     and then waits until child process writes its pid into the flagFile.
+        // [2] Child process process starts up, writes its pid into the flagFile,
+        //     and waits for the flagFile to be deleted.
+        // [3] When parent process gets the pid, it attaches to the child process
+        //     (if we attempt to attach to a process too early, the SIGQUIT
+        //     may cause the child to die) and deletes the flagFile.
+        // [4] Child process resumes execution.
+
+        File f = new File(flagFile);
+        f.delete();
+        if (f.exists()) {
+            throw new RuntimeException("Flag file should not exist: " + f);
+        }
+
+        // At this point, the child process is not yet launched. Note that
+        // TestCommon.exec() and OutputAnalyzer.OutputAnalyzer() both block
+        // until the child process has finished.
+        //
+        // So, we will launch a AgentAttachThread which will poll the flagFile
+        // until the child process is launched.
+        AgentAttachThread t = new AgentAttachThread(flagFile, agentJar);
+        t.start();
+        return t;
+    }
+
+    static void checkAttach(AgentAttachThread thread) throws Throwable {
+        if (thread != null) {
+            thread.check();
+        }
+    }
+
+    static class AgentAttachThread extends Thread {
+        String flagFile;
+        String agentJar;
+        volatile boolean succeeded;
+
+        AgentAttachThread(String flagFile, String agentJar) {
+            this.flagFile = flagFile;
+            this.agentJar = agentJar;
+            this.succeeded = false;
+        }
+
+        static String getPid(String flagFile) throws Throwable {
+            while (true) {
+                // Keep polling until the child process has been launched. If for some
+                // reason the child process fails to launch, this test will be terminated
+                // by JTREG's time-out mechanism.
+                Thread.sleep(100);
+                File f = new File(flagFile);
+                if (f.exists() && f.length() > 100) {
+                    try (FileInputStream in = new FileInputStream(f)) {
+                        Scanner scanner = new Scanner(in);
+                        return Long.toString(scanner.nextLong());
+                    } catch (Throwable t) {
+                        // This may happen on Windows if the child process has not
+                        // fully closed the output stream to the flagFile
+                        System.out.println("Ignored: " + t);
+                        t.printStackTrace(System.out);
+                        continue;
+                    }
+                }
+            }
+        }
+
+        public void run() {
+            try {
+                String pid = getPid(flagFile);
+                System.out.println("child pid = " + pid);
+                VirtualMachine vm = VirtualMachine.attach(pid);
+                System.out.println(agentJar);
+                vm.loadAgent(agentJar);
+            } catch (Throwable t) {
+                t.printStackTrace();
+                throw new RuntimeException(t);
+            }
+
+            // Delete the flagFile to indicate to the child process that we
+            // have attached to it, so it should proceed.
+            File f = new File(flagFile);
+            for (int i=0; i<5; i++) {
+                // The detele may fail on Windows if the child JVM is checking
+                // f.exists() at exactly the same time?? Let's do a little
+                // dance.
+                f.delete();
+                try {
+                    Thread.sleep(10);
+                } catch (Throwable t) {;}
+            }
+            if (f.exists()) {
+                throw new RuntimeException("Failed to delete " + f);
+            }
+            System.out.println("Attach succeeded (parent)");
+            succeeded = true;
+        }
+
+        void check() throws Throwable {
+            super.join();
+            if (!succeeded) {
+                throw new RuntimeException("Attaching agent to child VM failed");
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/DumpingWithJavaAgent.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary CDS dumping with java agent.
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @modules jdk.jartool/sun.tools.jar
+ * @build SimpleAgent Hello
+ * @run main/othervm DumpingWithJavaAgent
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class DumpingWithJavaAgent {
+    public static String appClasses[] = {
+        "Hello",
+    };
+    public static String agentClasses[] = {
+        "SimpleAgent",
+    };
+
+    public static String warningMessages[] = {
+        "This archive was created with AllowArchivingWithJavaAgent",
+        "It should be used for testing purposes only and should not be used in a production environment",
+    };
+
+    public static String errorMessage =
+        "The setting of the AllowArchivingWithJavaAgent is different from the setting in the shared archive.";
+
+
+    public static String diagnosticOption = "-XX:+AllowArchivingWithJavaAgent";
+
+    public static void main(String[] args) throws Throwable {
+        String agentJar =
+            ClassFileInstaller.writeJar("SimpleAgent.jar",
+                                        ClassFileInstaller.Manifest.fromSourceFile("SimpleAgent.mf"),
+                                        agentClasses);
+
+        String appJar =
+            ClassFileInstaller.writeJar("DumpingWithJavaAgent.jar", appClasses);
+
+        // CDS dumping with a java agent with the AllowArchvingWithJavaAgent diagnostic option.
+        OutputAnalyzer output = TestCommon.testDump(appJar, TestCommon.list("Hello"),
+            "-XX:+UnlockDiagnosticVMOptions", diagnosticOption,
+            "-javaagent:" + agentJar);
+        TestCommon.checkDump(output);
+        output.shouldContain(warningMessages[0]);
+        output.shouldContain(warningMessages[1]);
+        output.shouldContain("inside SimpleAgent");
+
+        // Using the archive with the AllowArchvingWithJavaAgent diagnostic option.
+        output = TestCommon.exec(
+            appJar,
+            "-Xlog:class+load=trace",
+            "-XX:+UnlockDiagnosticVMOptions", diagnosticOption,
+            "Hello");
+        if (!TestCommon.isUnableToMap(output)) {
+            output.shouldHaveExitValue(0);
+            output.shouldContain(warningMessages[0]);
+            output.shouldContain(warningMessages[1]);
+            output.shouldContain("[class,load] Hello source: shared objects file");
+        }
+
+        // Using the archive with -Xshare:on without the diagnostic option.
+        // VM should exit with an error message.
+        output = TestCommon.exec(
+            appJar,
+            "Hello");
+        output.shouldHaveExitValue(1);
+        output.shouldContain(errorMessage);
+
+        // Using the archive with -Xshare:auto without the diagnostic option.
+        // VM should continue execution with a warning message. The archive
+        // will not be used.
+        output = TestCommon.execAuto(
+            "-cp", appJar,
+            "-Xlog:class+load=trace,cds=info",
+            "Hello");
+        if (!TestCommon.isUnableToMap(output)) {
+            output.shouldHaveExitValue(0);
+            output.shouldContain(errorMessage);
+            output.shouldMatch(".class.load.* Hello source:.*DumpingWithJavaAgent.jar");
+
+        // CDS dumping with a java agent without the AllowArchvingWithJavaAgent diagnostic option.
+        // VM will exit with an error message.
+        output = TestCommon.dump(appJar, TestCommon.list("Hello"),
+            "-javaagent:" + agentJar);
+        }
+        output.shouldContain("Must enable AllowArchivingWithJavaAgent in order to run Java agent during CDS dumping")
+            .shouldHaveExitValue(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/DumpingWithJvmtiAgent.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+/**
+ * @test
+ * @summary CDS dumping with JVMTI agent.
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile ../../test-classes/Hello.java
+ * @run main/othervm/native DumpingWithJvmtiAgent
+ */
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class DumpingWithJvmtiAgent {
+    private static final String AGENT_LIB_ONLOAD = "AddToSystemCLSearchOnLoad";
+
+    public static void main(String[] args) throws Exception {
+        String appJar = JarBuilder.getOrCreateHelloJar();
+
+        // CDS dump with a JVMTI agent with the AllowArchivingWithJavaAgent option.
+        // vm should exit with an error message.
+        OutputAnalyzer out = TestCommon.dump(
+           appJar,
+           TestCommon.list("Hello"),
+           "-XX:+UnlockDiagnosticVMOptions", "-XX:+AllowArchivingWithJavaAgent",
+           "-agentlib:" + AGENT_LIB_ONLOAD + "=" + appJar,
+           "-Djava.library.path=" + System.getProperty("java.library.path"));
+        out.shouldContain("CDS dumping does not support native JVMTI agent, name: " + AGENT_LIB_ONLOAD)
+           .shouldHaveExitValue(1);
+
+        // CDS dump with a JVMTI agent without the AllowArchivingWithJavaAgent option.
+        // vm should exit with an error message.
+        out = TestCommon.dump(
+           appJar,
+           TestCommon.list("Hello"),
+           "-agentlib:" + AGENT_LIB_ONLOAD + "=" + appJar,
+           "-Djava.library.path=" + System.getProperty("java.library.path"));
+        out.shouldContain("CDS dumping does not support native JVMTI agent, name: " + AGENT_LIB_ONLOAD)
+           .shouldHaveExitValue(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/SimpleAgent.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+import java.lang.instrument.Instrumentation;
+
+public class SimpleAgent {
+    public static void premain(String agentArg, Instrumentation instrumentation) {
+        System.out.println("inside SimpleAgent");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/SimpleAgent.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Premain-Class: SimpleAgent
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/libAddToSystemCLSearchOnLoad.c	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018, 2019, 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 <stdio.h>
+#include <string.h>
+#include <jvmti.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    static jvmtiEnv *jvmti = NULL;
+
+    JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved) {
+        int err = (*jvm)->GetEnv(jvm, (void**) &jvmti, JVMTI_VERSION_9);
+        if (err != JNI_OK) {
+            return JNI_ERR;
+        }
+        err = (*jvmti)->AddToSystemClassLoaderSearch(jvmti, (const char*)options);
+        if (err != JVMTI_ERROR_NONE) {
+            return JNI_ERR;
+        }
+        return JNI_OK;
+    }
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/parallelLoad/ParallelClassesTransform.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+class ParallelClassTr0  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr1  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr2  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr3  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr4  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr5  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr6  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr7  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr8  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr9  { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr10 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr11 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr12 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr13 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr14 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr15 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr16 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr17 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr18 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr19 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr20 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr21 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr22 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr23 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr24 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr25 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr26 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr27 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr28 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr29 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr30 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr31 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr32 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr33 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr34 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr35 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr36 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr37 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr38 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+class ParallelClassTr39 { public static String testString = ParallelClassesTransform.BEFORE_PATTERN; }
+
+class ParallelClassesTransform {
+    public static final int NUMBER_OF_CLASSES = 40;
+    public static final String BEFORE_PATTERN = "class-transform-check: this-should-be-transformed";
+    public static final String AFTER_PATTERN =  "class-transform-check: this-has-been--transformed";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Load app classes from CDS archive in parallel threads,
+ * use initial transformation (CFLH)
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ *     /test/hotspot/jtreg/runtime/cds/appcds/test-classes /test/hotspot/jtreg/runtime/cds/appcds/jvmti
+ *     /test/hotspot/jtreg/testlibrary/jvmti
+ * @requires vm.cds
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ *          java.instrument
+ * @build TransformUtil TransformerAgent ParallelLoad
+ * @run driver ParallelLoadAndTransformTest
+ */
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+public class ParallelLoadAndTransformTest {
+
+    public static void main(String[] args) throws Exception {
+        String prop = "-Dappcds.parallel.transform.mode=cflh";
+        String appJar = ClassFileInstaller.writeJar("parallel_load.jar",
+                            getClassList(true));
+        String agentJar = prepareAgent();
+
+        TestCommon.test(appJar, getClassList(false),
+                        "-javaagent:" + agentJar + "=ParallelClassTr.*",
+                        prop, "ParallelLoad");
+    }
+
+
+    private static String[] getClassList(boolean includeWatchdog) {
+        List<String> classList =
+            IntStream.range(0, ParallelClassesTransform.NUMBER_OF_CLASSES)
+            .mapToObj(i -> "ParallelClassTr" + i)
+            .collect(Collectors.toList());
+
+        classList.add("ParallelLoad");
+        classList.add("ParallelLoadThread");
+        if (includeWatchdog)
+            classList.add("ParallelLoadWatchdog");
+
+        return classList.toArray(new String[0]);
+    }
+
+
+    // Agent is the same for all test cases
+    private static String prepareAgent() throws Exception {
+        String agentClasses[] = {
+            "TransformerAgent",
+            "TransformerAgent$SimpleTransformer",
+            "TransformUtil"
+        };
+
+        String manifest = "../../../../../testlibrary/jvmti/TransformerAgent.mf";
+
+        return ClassFileInstaller.writeJar("TransformerAgent.jar",
+            ClassFileInstaller.Manifest.fromSourceFile(manifest),
+                                        agentClasses);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Exercise initial transformation (class file loader hook)
+ *  with CDS/AppCDS with Interface/Implementor pair
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ *     /test/hotspot/jtreg/runtime/cds/appcds/jvmti /test/hotspot/jtreg/runtime/cds/serviceability
+ *     /test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses
+ *     /test/hotspot/jtreg/runtime/cds /test/hotspot/jtreg/testlibrary/jvmti
+ *     /test/hotspot/jtreg/runtime/cds/appcds/customLoader
+ *     /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ *          java.instrument
+ * @build TransformUtil TransformerAgent Interface Implementor
+ * @run main/othervm TransformRelatedClassesAppCDS Interface Implementor
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformRelatedClassesAppCDS.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+// Structure of the test:
+// TransformRelatedClassesAppCDS -- common main test driver
+// Invoked from test driver classes:
+//     TransformInterfaceAndImplementor, TransformSuperAndSubClasses.java
+//     prepares test artifacts, launches tests, checks results
+// SuperClazz, SubClass -- classes under test
+// Interface, Implementor -- classes under test
+// TransformerAgent -- an agent that is used when JVM-under-test is executed
+//     to transform specific strings inside specified classes
+// TransformerAgent.mf - accompanies transformer agent
+// CustomLoaderApp -- a test "application" that is used to load
+//     classes-under-test (Parent, Child) via custom class loader, using
+//     AppCDS-v2 mechanism (unregistered custom loaders, aka FP)
+//     This "app" is launched in a child process by this driver with sharing on.
+
+import java.io.File;
+import java.util.ArrayList;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+// This class is intended to test 2 parent-child relationships:
+// 1. Base Class (parent) and Derived Class (child)
+// 2. Interface (parent) and Implementor (child)
+//    Parameters to main(): parent, child
+
+public class TransformRelatedClassesAppCDS extends TransformRelatedClasses {
+    private static void log(String msg, Object... args) {
+        String msg0 = String.format(msg, args);
+        System.out.println("TransformRelatedClassesAppCDS: " + msg0);
+    }
+
+    // Initial Test Matrix:
+    // (ParentTransformed = true/false, ChildTransformed = true/false) x
+    // (BootCDS - see open tests, AppCDS-v1, AppCDS-v2-unregistered)
+    // Total cases: 2 x 4 = 8
+    public static void main(String args[]) throws Exception {
+        TransformRelatedClassesAppCDS test =
+            new TransformRelatedClassesAppCDS(args[0], args[1]);
+
+        test.prepareAgent(agentClasses);
+
+        // Test Table
+        // testCaseId |  transformParent | tranformChild | isParentExpectedShared | isChildExpectedShared
+        ArrayList<TestEntry> testTable = new ArrayList<>();
+
+        // base case - no tranformation - all expected to be shared
+        testTable.add(new TestEntry(0, false, false, true, true));
+
+        // transform parent only - both parent and child should not be shared
+        testTable.add(new TestEntry(1, true, false, false, false));
+
+        // transform parent and child - both parent and child should not be shared
+        testTable.add(new TestEntry(2, true, true, false, false));
+
+        // transform child only - parent should still be shared, but not child
+        testTable.add(new TestEntry(3, false, true, true, false));
+
+        // run the tests
+        test.runWithAppLoader(testTable);
+        test.runWithCustomLoader(testTable);
+    }
+
+
+    public TransformRelatedClassesAppCDS(String parent, String child) {
+        super(parent, child);
+
+        // a trick to get it compiled by jtreg
+        CustomLoaderApp.ping();
+    }
+
+
+    private void prepareAgent(String[] agentClasses) throws Exception {
+        String manifest = "../../../../../testlibrary/jvmti/TransformerAgent.mf";
+        agentJar = ClassFileInstaller.writeJar("TransformerAgent.jar",
+                   ClassFileInstaller.Manifest.fromSourceFile(manifest),
+                                           agentClasses);
+    }
+
+
+    private void runWithAppLoader(ArrayList<TestEntry> testTable) throws Exception {
+        String appJar = writeJar("app", testClasses);
+
+        // create an archive
+        OutputAnalyzer out = TestCommon.dump(appJar, testClasses);
+        TestCommon.checkDump(out);
+
+        // execute with archive
+        for (TestEntry entry : testTable) {
+            log("runTestWithAppLoader(): testCaseId = %d", entry.testCaseId);
+            String params = TransformTestCommon.getAgentParams(entry, parent, child);
+            String agentParam = String.format("-javaagent:%s=%s", agentJar, params);
+            TestCommon.run("-Xlog:class+load=info", "-cp", appJar,
+                           agentParam, child)
+              .assertNormalExit(output -> TransformTestCommon.checkResults(entry, output, parent, child));
+        }
+    }
+
+
+    private String[] getCustomClassList(String loaderType, String customJar) {
+        String type = child + "-" + loaderType;
+
+        switch (type) {
+
+        case "SubClass-unregistered":
+            return new String[] {
+                "CustomLoaderApp",
+                "java/lang/Object id: 0",
+                parent + " id: 1 super: 0 source: " + customJar,
+                child +  " id: 2 super: 1 source: " + customJar,
+            };
+
+        case "Implementor-unregistered":
+            return new String[] {
+                "CustomLoaderApp",
+                "java/lang/Object id: 0",
+                parent + " id: 1 super: 0 source: " + customJar,
+                child +  " id: 2 super: 0 interfaces: 1 source: " + customJar,
+            };
+
+        default:
+            throw new IllegalArgumentException("getCustomClassList - wrong type: " + type);
+        }
+    }
+
+
+    private void runWithCustomLoader(ArrayList<TestEntry> testTable) throws Exception {
+        if (!Platform.areCustomLoadersSupportedForCDS()) {
+            log("custom loader not supported for this platform" +
+                " - skipping test case for custom loader");
+            return;
+        }
+
+        if (TestCommon.isDynamicArchive()) {
+            log("custom loader class list not applicable to dynamic archive" +
+                " - skipping test case for custom loader");
+            return;
+        }
+
+        String appClasses[] = {
+            "CustomLoaderApp",
+        };
+
+        String customClasses[] = { parent, child };
+
+        // create jar files: appJar, customJar (for custom loaders to load classes from)
+        String appJar = writeJar("custldr-app", appClasses);
+        String customJar = writeJar("custldr-custom", customClasses);
+
+        for (TestEntry entry : testTable) {
+            log("runTestWithCustomLoader(): testCaseId = %d", entry.testCaseId);
+            // unregistered (aka FP) case
+            String[] classList = getCustomClassList("unregistered",customJar);
+            execAndCheckWithCustomLoader(entry, "unregistered", classList,
+                                         appJar, agentJar, customJar);
+        }
+    }
+
+
+    private void
+        execAndCheckWithCustomLoader(TestEntry entry, String loaderType,
+                                     String[] classList, String appJar,
+                                     String agentJar, String customJar)
+        throws Exception {
+
+        OutputAnalyzer out = TestCommon.dump(appJar, classList);
+        TestCommon.checkDump(out);
+
+        String agentParam = "-javaagent:" + agentJar + "=" +
+            TransformTestCommon.getAgentParams(entry, parent, child);
+
+        TestCommon.run("-Xlog:class+load=info",
+                       "-cp", appJar,
+                       agentParam,
+                       "CustomLoaderApp",
+                       customJar, loaderType, child)
+          .assertNormalExit(output -> TransformTestCommon.checkResults(entry, output, parent, child));
+    }
+
+
+    private String writeJar(String type, String[] classes)
+        throws Exception {
+        String jarName = String.format("%s-%s.jar", child, type);
+        return ClassFileInstaller.writeJar(jarName, classes);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Exercise initial transformation (class file loader hook)
+ *  with CDS/AppCDS with SubClass and SuperClass
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/test-classes
+ *     /test/hotspot/jtreg/runtime/cds/appcds/jvmti /test/hotspot/jtreg/runtime/cds/serviceability
+ *     /test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses
+ *     /test/hotspot/jtreg/runtime/cds /test/hotspot/jtreg/testlibrary/jvmti
+ *     /test/hotspot/jtreg/runtime/cds/appcds/customLoader
+ *     /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ *          java.instrument
+ * @build TransformUtil TransformerAgent SubClass SuperClazz
+ * @run main/othervm TransformRelatedClassesAppCDS SuperClazz SubClass
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineBasic.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+// package access top-level class to avoid problem with RedefineClassHelper
+// and nested types.
+class RedefineBasic_B {
+    public static void okToCallBeforeRedefine() {
+        System.out.println("okToCallBeforeRedefine");
+    }
+    public static void okToCallAfterRedefine() {
+        throw new RuntimeException("okToCallAfterRedefine is called before redefinition, test failed");
+    }
+}
+
+public class RedefineBasic {
+
+    public static String newB =
+        " class RedefineBasic_B { " +
+        " public static void okToCallBeforeRedefine() { " +
+        "    throw new RuntimeException(\"newB: okToCallBeforeRedefine is " +
+        "    called after redefinition, test failed\"); }" +
+        " public static void okToCallAfterRedefine() { " +
+        "     System.out.println(\"newB: okToCallAfterRedefine\"); } " +
+        " } ";
+
+
+
+    static class SubclassOfB extends RedefineBasic_B {
+        public static void testAfterRedefine() {
+            RedefineBasic_B.okToCallAfterRedefine();
+        }
+    }
+
+    class Subclass2OfB extends RedefineBasic_B {
+        public void testAfterRedefine() {
+            super.okToCallAfterRedefine();
+        }
+    }
+
+    // verify that a given class is shared, report error if necessary
+    public static void
+    verifyClassIsShared(WhiteBox wb, Class c) throws Exception {
+        if (!wb.isSharedClass(c)) {
+            throw new RuntimeException(
+            "This class should be shared but isn't: " + c.getName());
+        } else {
+            System.out.println("The class is shared as expected: " +
+                c.getName());
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        verifyClassIsShared(wb, RedefineBasic.class);
+        verifyClassIsShared(wb, RedefineBasic_B.class);
+        verifyClassIsShared(wb, SubclassOfB.class);
+        verifyClassIsShared(wb, Subclass2OfB.class);
+
+        // (1) Test case: verify that original B works as expected
+        // and that redefined B is shared and works as expected,
+        // with new behavior
+        RedefineBasic_B.okToCallBeforeRedefine();
+        RedefineClassHelper.redefineClass(RedefineBasic_B.class, newB);
+        verifyClassIsShared(wb, RedefineBasic_B.class);
+        RedefineBasic_B.okToCallAfterRedefine();
+
+        // Static subclass of the super:
+        // 1. Make sure it is still shared
+        // 2. and it calls the correct super (the redefined one)
+        verifyClassIsShared(wb, SubclassOfB.class);
+        SubclassOfB.testAfterRedefine();
+
+        // Same as above, but for non-static class
+        verifyClassIsShared(wb, Subclass2OfB.class);
+        RedefineBasic thisTest = new RedefineBasic();
+        thisTest.testSubclass2OfB();
+    }
+
+    public void testSubclass2OfB() {
+        Subclass2OfB sub = new Subclass2OfB();
+        sub.testAfterRedefine();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineBasicTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Run /serviceability/jvmti/RedefineClasses/RedefineRunningMethods in AppCDS mode to
+ *          make sure class redefinition works with CDS.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/serviceability/jvmti/RedefineClasses /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.compiler
+ *          java.instrument
+ *          jdk.jartool/sun.tools.jar
+ *          java.base/jdk.internal.misc
+ *          java.management
+ * @run driver RedefineClassHelper
+ * @build sun.hotspot.WhiteBox RedefineBasic
+ * @run driver RedefineBasicTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class RedefineBasicTest {
+    public static String sharedClasses[] = {
+        "RedefineBasic",
+        "RedefineBasic_B",
+        "RedefineBasic$SubclassOfB",
+        "RedefineBasic$Subclass2OfB",
+        "RedefineClassHelper",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper$1",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$MemoryJavaFileObject"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String wbJar =
+            ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
+        String appJar =
+            ClassFileInstaller.writeJar("RedefineBasic.jar", sharedClasses);
+        String useWb = "-Xbootclasspath/a:" + wbJar;
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, sharedClasses, useWb);
+
+        // redefineagent.jar is created by executing "@run driver RedefineClassHelper"
+        // which should be called before executing RedefineBasicTest
+        output = TestCommon.exec(appJar, useWb,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "-javaagent:redefineagent.jar",
+                                 "RedefineBasic");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineRunningMethods_Shared.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Run /serviceability/jvmti/RedefineClasses/RedefineRunningMethods in AppCDS mode to
+ *          make sure class redefinition works with CDS.
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/serviceability/jvmti/RedefineClasses /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.compiler
+ *          java.instrument
+ *          jdk.jartool/sun.tools.jar
+ * @run driver RedefineClassHelper
+ * @build sun.hotspot.WhiteBox RedefineRunningMethods_SharedHelper
+ * @run driver RedefineRunningMethods_Shared
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class RedefineRunningMethods_Shared {
+    public static String shared_classes[] = {
+        "RedefineRunningMethods_Shared",
+        "RedefineRunningMethods_SharedHelper",
+        "RedefineRunningMethods",
+        "RedefineRunningMethods$1",
+        "RedefineRunningMethods$2",
+        "RedefineRunningMethods$3",
+        "RedefineRunningMethods_B",
+        "RedefineClassHelper",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$FileManagerWrapper$1",
+        "jdk/test/lib/compiler/InMemoryJavaCompiler$MemoryJavaFileObject"
+    };
+
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.writeJar("WhiteBox.jar", "sun.hotspot.WhiteBox");
+        String appJar = ClassFileInstaller.writeJar("RedefineRunningMethods_Shared.jar", shared_classes);
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+
+        OutputAnalyzer output;
+        TestCommon.testDump(appJar, shared_classes,
+                            // command-line arguments ...
+                            use_whitebox_jar);
+
+        // RedefineRunningMethods.java contained this:
+        // @run main/othervm -javaagent:redefineagent.jar -Xlog:redefine+class+iklass+add=trace,redefine+class+iklass+purge=trace RedefineRunningMethods
+        output = TestCommon.exec(appJar,
+                                 // command-line arguments ...
+                                 use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 // These arguments are expected by RedefineRunningMethods
+                                 "-javaagent:redefineagent.jar",
+                                 "-Xlog:redefine+class+iklass+add=trace,redefine+class+iklass+purge=trace",
+                                 "RedefineRunningMethods_SharedHelper");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineRunningMethods_SharedHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+/**
+ * This class is executed by RedefineRunningMethods_Shared.java in
+ * a sub-process.
+ */
+public class RedefineRunningMethods_SharedHelper {
+    public static void main(String[] args) throws Exception {
+        // (1) Validate that all classes used by RedefineRunningMethods are all shared.
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        for (String name : RedefineRunningMethods_Shared.shared_classes) {
+            name = name.replace('/', '.');
+            Class c = Class.forName(name);
+            if (!wb.isSharedClass(c)) {
+                throw new RuntimeException("Test set-up problem. " +
+                           "This class should be shared but isn't: " + name);
+            } else {
+                System.out.println("The class is shared as expected: " + name);
+            }
+        }
+
+        // (2) Run the class redefinition test.
+        RedefineRunningMethods.main(args);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Exercise GC with shared strings
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloStringGC sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver ExerciseGC
+ */
+public class ExerciseGC {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, ExerciseGC::test);
+    }
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJarAndWhiteBox("HelloStringGC");
+
+        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("HelloStringGC"),
+            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
+
+        SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringGC",
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+VerifyBeforeGC");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExtraSharedInput.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,7 @@
+VERSION: 1.0
+@SECTION: Symbol
+0 -1: 
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+11 -1: linkMethod 
+18 -1: type can't be null
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/**
+ * @test
+ * @summary Test relevant combinations of command line flags with shared strings
+ * @requires vm.cds.archived.java.heap & vm.hasJFR
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver FlagCombo
+ */
+
+/**
+ * @test
+ * @summary Test relevant combinations of command line flags with shared strings
+ * @comment A special test excluding the case that requires JFR
+ * @requires vm.cds.archived.java.heap & !vm.hasJFR
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules java.base/jdk.internal.misc
+ * @modules java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver FlagCombo noJfr
+ */
+
+import jdk.test.lib.BuildHelper;
+import jdk.test.lib.Platform;
+
+public class FlagCombo {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.buildJar("HelloString");
+
+        SharedStringsUtils.dump(TestCommon.list("HelloString"),
+            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
+
+        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseG1GC");
+
+        if (args.length == 0) {
+            SharedStringsUtils.runWithArchiveAuto("HelloString",
+                "-XX:StartFlightRecording=dumponexit=true");
+        }
+
+        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UnlockDiagnosticVMOptions",
+           "-XX:NativeMemoryTracking=detail", "-XX:+PrintNMTStatistics");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloString.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class HelloString {
+    public static void main(String args[]) {
+        // Let's reference the string that is in the archive
+        // Make sure the string below is in the shared string data file (string list)
+        String testString = "shared_test_string_unique_14325";
+        System.out.println("Hello String: " + testString);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringGC.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class HelloStringGC {
+    public static String[] array01 = new String[1000];
+    public static String[] array02 = new String[1000];
+
+    public static void main(String args[]) throws RuntimeException {
+        String testString1 = "shared_test_string_unique_14325";
+        String testString2 = "test123";
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (!wb.isShared(testString1) && !wb.areSharedStringsIgnored()) {
+            throw new RuntimeException("testString1 is not shared");
+        }
+
+        for (int i=0; i<5; i++) {
+            allocSomeStrings(testString1, testString2);
+            array01 = null;
+            array02 = null;
+            System.gc();
+            sleep(300);
+            array01 = new String[1000];
+            array02 = new String[1000];
+        }
+
+        wb.fullGC();
+
+        System.out.println("HelloStringGC: PASS");
+    }
+
+    private static void allocSomeStrings(String s1, String s2) {
+        for (int i = 0; i < 1000; i ++) {
+            array01[i] = new String(s1);
+            array02[i] = new String(s2);
+        }
+    }
+
+    private static void sleep(int ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (InterruptedException e) {
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringPlus.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+// A test class to be launched in AppCDS mode, has basic+
+// coverage of string operations
+
+import sun.hotspot.WhiteBox;
+
+public class HelloStringPlus {
+    public static void main(String args[]) {
+        // Let's reference the string that is in archive
+        String testString1 = "shared_test_string_unique_14325";
+        System.out.println("Hello String: " + testString1);
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (!wb.isShared(testString1) && !wb.areSharedStringsIgnored()) {
+            throw new RuntimeException("testString1 is not shared");
+        }
+
+        // Check other basic string operations
+        // Interning and equality
+        String[] testArray = new String[] {"shared_", "test_", "string_", "intern_", "12345"};
+        String toBeInterned = "";
+
+        StringBuilder sb = new StringBuilder();
+        for (String s : testArray) {
+            sb.append(s);
+        }
+        toBeInterned = sb.toString();
+
+        System.out.println("About to intern a string: " + toBeInterned);
+        toBeInterned.intern();
+
+        // check equality
+        if (testString1.equals(toBeInterned))
+            throw new RuntimeException("Equality test 1 failed");
+
+        if (!testString1.equals("shared_test_string" + '_' + "unique_14325"))
+            throw new RuntimeException("Equality test 2 failed");
+
+        // Chech the hash code functionality; no special assertions, just make sure
+        // no crashe or exception occurs
+        System.out.println("testString1.hashCode() = " + testString1.hashCode());
+
+        // Check intern() method for "" string
+        String empty = "";
+        String empty_interned = empty.intern();
+        if (!wb.isShared(empty)) {
+           throw new RuntimeException("Empty string should be shared");
+        }
+        if (empty_interned != empty) {
+            throw new RuntimeException("Different string is returned from intern() for empty string");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/IncompatibleOptions.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,206 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+// NOTE: the test takes a long time for each VM option combination, so we split
+// it into 3 @test parts, so that they can be executed in parallel. If you make a
+// change, please ensure all @test blocks are in sync.
+
+
+/*
+ * @test
+ * @summary Test options that are incompatible with use of shared strings
+ *          Also test mismatch in oops encoding between dump time and run time
+ * @requires vm.cds.archived.java.heap
+ * @comment This test explicitly chooses the type of GC to be used by sub-processes. It may conflict with the GC type set
+ * via the -vmoptions command line option of JTREG. vm.gc==null will help the test case to discard the explicitly passed
+ * vm options.
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @build HelloString
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 0
+ */
+
+
+/*
+ * @test
+ * @requires vm.cds.archived.java.heap
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @build HelloString
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 1
+ */
+
+/*
+ * @test
+ * @requires vm.cds.archived.java.heap
+ * @requires (vm.gc=="null")
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @build HelloString
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions 2
+ */
+
+
+import jdk.test.lib.Asserts;
+import jdk.test.lib.Platform;
+import jdk.test.lib.process.OutputAnalyzer;
+
+import sun.hotspot.code.Compiler;
+import sun.hotspot.gc.GC;
+
+public class IncompatibleOptions {
+    static final String COOPS_DUMP_WARNING =
+        "Cannot dump shared archive when UseCompressedOops or UseCompressedClassPointers is off";
+    static final String COOPS_EXEC_WARNING =
+        "UseCompressedOops and UseCompressedClassPointers must be on for UseSharedSpaces";
+    static final String GC_WARNING =
+        "Archived java heap is not supported";
+    static final String OBJ_ALIGNMENT_MISMATCH =
+        "The shared archive file's ObjectAlignmentInBytes of .* does not equal the current ObjectAlignmentInBytes of";
+    static final String COMPACT_STRING_MISMATCH =
+        "The shared archive file's CompactStrings setting .* does not equal the current CompactStrings setting";
+
+    static String appJar;
+    static String[] vmOptionsPrefix = {};
+
+    public static void main(String[] args) throws Exception {
+        String[] noargs = {};
+        SharedStringsUtils.run(Integer.parseInt(args[0]), 3, noargs, IncompatibleOptions::test);
+        // Add a new @test block if you get an assert ----^ about this number. See
+        // SharedStringsUtils.java for details.
+    }
+
+    public static void test(String[] args_ignored) throws Exception {
+        vmOptionsPrefix = SharedStringsUtils.getChildVMOptionsPrefix();
+        appJar = JarBuilder.build("IncompatibleOptions", "HelloString");
+
+        // Uncompressed OOPs
+        testDump(1, "-XX:+UseG1GC", "-XX:-UseCompressedOops", COOPS_DUMP_WARNING, true);
+        if (GC.Z.isSupported()) { // ZGC is included in build.
+            testDump(1, "-XX:+UnlockExperimentalVMOptions", "-XX:+UseZGC", COOPS_DUMP_WARNING, true);
+        }
+
+        // incompatible GCs
+        testDump(2, "-XX:+UseParallelGC", "", GC_WARNING, false);
+        testDump(3, "-XX:+UseSerialGC", "", GC_WARNING, false);
+        if (!Compiler.isGraalEnabled()) { // Graal does not support CMS
+            testDump(4, "-XX:+UseConcMarkSweepGC", "", GC_WARNING, false);
+        }
+
+        // ======= archive with compressed oops, run w/o
+        testDump(5, "-XX:+UseG1GC", "-XX:+UseCompressedOops", null, false);
+        testExec(5, "-XX:+UseG1GC", "-XX:-UseCompressedOops",
+                 COOPS_EXEC_WARNING, true);
+
+        // NOTE: No warning is displayed, by design
+        // Still run, to ensure no crash or exception
+        testExec(6, "-XX:+UseParallelGC", "", "", false);
+        testExec(7, "-XX:+UseSerialGC", "", "", false);
+        if (!Compiler.isGraalEnabled()) { // Graal does not support CMS
+            testExec(8, "-XX:+UseConcMarkSweepGC", "", "", false);
+        }
+
+        // Test various oops encodings, by varying ObjectAlignmentInBytes and heap sizes
+        testDump(9, "-XX:+UseG1GC", "-XX:ObjectAlignmentInBytes=8", null, false);
+        testExec(9, "-XX:+UseG1GC", "-XX:ObjectAlignmentInBytes=16",
+                 OBJ_ALIGNMENT_MISMATCH, true);
+
+        // See JDK-8081416 - Oops encoding mismatch with shared strings
+        // produces unclear or incorrect warning
+        // Correct the test case once the above is fixed
+        // @ignore JDK-8081416 - for tracking purposes
+        // for now, run test as is until the proper behavior is determined
+        testDump(10, "-XX:+UseG1GC", "-Xmx1g", null, false);
+        testExec(10, "-XX:+UseG1GC", "-Xmx32g", null, true);
+
+        // CompactStrings must match between dump time and run time
+        testDump(11, "-XX:+UseG1GC", "-XX:-CompactStrings", null, false);
+        testExec(11, "-XX:+UseG1GC", "-XX:+CompactStrings",
+                 COMPACT_STRING_MISMATCH, true);
+        testDump(12, "-XX:+UseG1GC", "-XX:+CompactStrings", null, false);
+        testExec(12, "-XX:+UseG1GC", "-XX:-CompactStrings",
+                 COMPACT_STRING_MISMATCH, true);
+    }
+
+    static void testDump(int testCaseNr, String collectorOption, String extraOption,
+        String expectedWarning, boolean expectedToFail) throws Exception {
+
+        System.out.println("Testcase: " + testCaseNr);
+        OutputAnalyzer output = TestCommon.dump(appJar, TestCommon.list("Hello"),
+            TestCommon.concat(vmOptionsPrefix,
+                "-XX:+UseCompressedOops",
+                collectorOption,
+                "-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("SharedStringsBasic.txt"),
+                "-Xlog:cds,cds+hashtables",
+                extraOption));
+
+        if (expectedWarning != null) {
+            output.shouldContain(expectedWarning);
+        }
+
+        if (expectedToFail) {
+            Asserts.assertNE(output.getExitValue(), 0,
+            "JVM is expected to fail, but did not");
+        }
+    }
+
+    static void testExec(int testCaseNr, String collectorOption, String extraOption,
+        String expectedWarning, boolean expectedToFail) throws Exception {
+
+        OutputAnalyzer output;
+        System.out.println("Testcase: " + testCaseNr);
+
+        // needed, otherwise system considers empty extra option as a
+        // main class param, and fails with "Could not find or load main class"
+        if (!extraOption.isEmpty()) {
+            output = TestCommon.exec(appJar,
+                TestCommon.concat(vmOptionsPrefix,
+                    "-XX:+UseCompressedOops",
+                    collectorOption, "-Xlog:cds", extraOption, "HelloString"));
+        } else {
+            output = TestCommon.exec(appJar,
+                TestCommon.concat(vmOptionsPrefix,
+                    "-XX:+UseCompressedOops",
+                    collectorOption, "-Xlog:cds", "HelloString"));
+        }
+
+        if (expectedWarning != null) {
+            output.shouldMatch(expectedWarning);
+        }
+
+        if (expectedToFail) {
+            Asserts.assertNE(output.getExitValue(), 0);
+        } else {
+            SharedStringsUtils.checkExec(output);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test shared strings together with string intern operation
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile InternStringTest.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver InternSharedString
+ */
+
+public class InternSharedString {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, InternSharedString::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJarAndWhiteBox("InternStringTest");
+
+        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("InternStringTest"),
+            "ExtraSharedInput.txt", "-Xlog:cds,cds+hashtables");
+
+        String[] extraMatches = new String[]   {
+            InternStringTest.passed_output1,
+            InternStringTest.passed_output2,
+            InternStringTest.passed_output3  };
+
+        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatches, "InternStringTest");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternStringTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class InternStringTest {
+    public static String passed_output1 = "Found shared string.";
+    public static String passed_output2 = "Shared strings are equal.";
+    public static String passed_output3 = "Found shared string containing latin1 supplement chars.";
+    public static String passed_output4 = "Found shared string containing non-western chars.";
+    public static final String latin1Sup  = "XXXX \u00a3 YYYY"; // \u00a3 = The pound sign
+    public static final String nonWestern = "XXXX \u5678 YYYY"; // \u5678 = Unicode Han Character 'ton (metric or English)'
+
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        // All string literals are shared.
+        String shared1 = "LiveOak";
+        String interned1 = shared1.intern();
+        if (wb.areSharedStringsIgnored() || wb.isShared(interned1)) {
+            System.out.println(passed_output1);
+        } else {
+            throw new RuntimeException("Failed: String is not shared.");
+        }
+
+        // Test 2: shared_string1.intern() == shared_string2.intern()
+        String shared2 = "LiveOak";
+        String interned2 = shared2.intern();
+        if (interned1 == interned2) {
+            System.out.println(passed_output2);
+        } else {
+            throw new RuntimeException("Not equal!");
+        }
+
+        // Test 3: interned strings with a char in latin1 supplement block [\u0080-\u00ff]
+        {
+            String a = "X" + latin1Sup.substring(1);
+            String b = a.intern();
+
+            if (wb.areSharedStringsIgnored() || wb.isShared(b)) {
+                System.out.println(passed_output3);
+            } else {
+                throw new RuntimeException("Failed: expected shared string with latin1-supplement chars.");
+            }
+        }
+
+        // Test 5: interned strings with non-western characters
+        {
+            String a = "X" + nonWestern.substring(1);
+            String b = a.intern();
+            if (wb.areSharedStringsIgnored() || wb.isShared(b)) {
+                System.out.println(passed_output4);
+            } else {
+                throw new RuntimeException("Failed: expected shared string with non-western chars.");
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InvalidFileFormat.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Check most common errors in file format
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver InvalidFileFormat
+ */
+
+import java.io.File;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+// Checking most common error use cases
+// This file is not an exhastive test of various shared data file corruption
+// Note on usability intent: the shared data file is created and handled by
+// the previledge person in the server environment.
+public class InvalidFileFormat {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, InvalidFileFormat::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJar("HelloString");
+
+        test("NonExistentFile.txt", "Unable to get hashtable dump file size");
+        test("InvalidHeader.txt", "wrong version of hashtable dump file");
+        test("InvalidVersion.txt", "wrong version of hashtable dump file");
+        test("CorruptDataLine.txt", "Unknown data type. Corrupted at line 2");
+        test("InvalidSymbol.txt", "Unexpected character. Corrupted at line 2");
+        test("InvalidSymbolFormat.txt", "Unrecognized format. Corrupted at line 9");
+        test("OverflowPrefix.txt", "Num overflow. Corrupted at line 4");
+        test("UnrecognizedPrefix.txt", "Unrecognized format. Corrupted at line 5");
+        test("TruncatedString.txt", "Truncated. Corrupted at line 3");
+        test("LengthOverflow.txt", "string length too large: 2147483647");
+    }
+
+    private static void
+        test(String dataFileName, String expectedWarning) throws Exception {
+        System.out.println("Filename for testcase: " + dataFileName);
+
+        OutputAnalyzer out = SharedStringsUtils.dumpWithoutChecks(TestCommon.list("HelloString"),
+                                 "invalidFormat" + File.separator + dataFileName);
+
+        CDSTestUtils.checkMappingFailure(out);
+        out.shouldContain(expectedWarning).shouldHaveExitValue(1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Basic shared string test with large pages
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver LargePages
+ */
+public class LargePages {
+    static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
+
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, LargePages::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJar("HelloString");
+
+        SharedStringsUtils.dump(TestCommon.list("HelloString"),
+            "SharedStringsBasic.txt", "-XX:+UseLargePages", CDS_LOGGING);
+        SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseLargePages");
+
+        SharedStringsUtils.dump(TestCommon.list("HelloString"),
+            "SharedStringsBasic.txt", CDS_LOGGING,
+            "-XX:+UseLargePages", "-XX:+UseLargePagesInMetaspace");
+        SharedStringsUtils.runWithArchive("HelloString",
+            "-XX:+UseLargePages", "-XX:+UseLargePagesInMetaspace");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test locking on shared strings
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @compile LockStringTest.java LockStringValueTest.java
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver LockSharedStrings
+ */
+
+public class LockSharedStrings {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, LockSharedStrings::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJarAndWhiteBox("LockStringTest", "LockStringValueTest");
+
+        SharedStringsUtils.dumpWithWhiteBox(
+            TestCommon.list("LockStringTest", "LockStringValueTest"),
+            "ExtraSharedInput.txt", "-Xlog:cds,cds+hashtables");
+
+        String[] extraMatch = new String[] {"LockStringTest: PASS"};
+        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatch, "LockStringTest");
+
+        extraMatch = new String[] {"LockStringValueTest: PASS"};
+        SharedStringsUtils.runWithArchiveAndWhiteBox(extraMatch, "LockStringValueTest",
+            "--add-opens=java.base/java.lang=ALL-UNNAMED");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class LockStringTest extends Thread {
+    static String lock;
+    static boolean done;
+    static WhiteBox wb = WhiteBox.getWhiteBox();
+
+    public static void main(String[] args) throws Exception {
+
+        if (wb.areSharedStringsIgnored()) {
+            System.out.println("The shared strings are ignored");
+            System.out.println("LockStringTest: PASS");
+            return;
+        }
+
+        if (!wb.isShared(LockStringTest.class)) {
+            throw new RuntimeException("Failed: LockStringTest class is not shared.");
+        }
+
+        // Note: This class is archived. All string literals (including the ones used in this class)
+        // in all archived classes are interned into the CDS shared string table.
+
+        doTest("StringLock", false);
+        doTest("", true);
+
+        // The following string has a 0 hashCode. Calling String.hashCode() could cause
+        // the String.hash field to be written into, if so make sure we don't functionally
+        // break.
+        doTest("\u0121\u0151\u00a2\u0001\u0001\udbb2", true);
+    }
+
+    private static void doTest(String s, boolean hasZeroHashCode) throws Exception {
+        lock = s;
+        done = false;
+
+        if (!wb.isShared(lock)) {
+            throw new RuntimeException("Failed: String \"" + lock + "\" is not shared.");
+        }
+
+        if (hasZeroHashCode && lock.hashCode() != 0) {
+            throw new RuntimeException("Shared string \"" + lock + "\" should have 0 hashCode, but is instead " + lock.hashCode());
+        }
+
+        String copy = new String(lock);
+        if (lock.hashCode() != copy.hashCode()) {
+            throw new RuntimeException("Shared string \"" + lock + "\" does not have the same hashCode as its non-shared copy");
+        }
+
+        new LockStringTest().start();
+
+        synchronized(lock) {
+            while (!done) {
+                lock.wait();
+            }
+        }
+        System.gc();
+        System.out.println("LockStringTest: PASS");
+    }
+
+    public void run() {
+        String shared = "LiveOak";
+        synchronized (lock) {
+            for (int i = 0; i < 100; i++) {
+                new String(shared);
+                System.gc();
+                try {
+                    sleep(5);
+                } catch (InterruptedException e) {}
+            }
+            done = true;
+            lock.notify();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringValueTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.lang.reflect.*;
+import sun.hotspot.WhiteBox;
+
+/*
+ * Lock the 'value' field of a known shared string, java.lang.Object
+ */
+public class LockStringValueTest {
+    public static void main(String args[]) {
+        String s = "LiveOak";
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (wb.areSharedStringsIgnored()) {
+            System.out.println("The shared strings are ignored");
+            System.out.println("LockStringValueTest: PASS");
+            return;
+        }
+
+        if (!wb.isShared(s)) {
+            throw new RuntimeException("LockStringValueTest Failed: String is not shared.");
+        }
+
+        Class c = s.getClass();
+        try {
+            Field f = c.getDeclaredField("value");
+            f.setAccessible(true);
+            Object v = f.get(s);
+            lock(v);
+        } catch (NoSuchFieldException nfe) {
+        } catch (IllegalAccessException iae) {}
+    }
+
+    public static void lock(Object o) {
+        synchronized (o) {
+            System.out.println("LockStringValueTest: PASS");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasic.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Basic test for shared strings
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver SharedStringsBasic
+ */
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+// This test does not use SharedStringsUtils.dumpXXX()
+// and SharedStringsUtils.runWithXXX() intentionally:
+// - in order to demonstrate the basic use of the functionality
+// - to provide sanity check and catch potential problems in the utils
+public class SharedStringsBasic {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, SharedStringsBasic::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
+
+        String appJar = JarBuilder.build("SharedStringsBasic", "HelloString");
+
+        String sharedArchiveConfigFile =
+            TestCommon.getSourceFile("SharedStringsBasic.txt").toString();
+
+        ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
+          TestCommon.concat(vmOptionsPrefix,
+            "-cp", appJar,
+            "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
+            "-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
+            "-Xshare:dump",
+            "-Xlog:cds,cds+hashtables"));
+
+        TestCommon.executeAndLog(dumpPb, "dump")
+            .shouldContain("Shared string table stats")
+            .shouldHaveExitValue(0);
+
+        ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
+          TestCommon.concat(vmOptionsPrefix,
+            "-cp", appJar,
+            "-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
+            "-Xshare:auto",
+            "-showversion",
+            "HelloString"));
+
+        TestCommon.executeAndLog(runPb, "run").shouldHaveExitValue(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasic.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+@SECTION: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Basic plus test for shared strings
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloStringPlus sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver SharedStringsBasicPlus
+ */
+
+public class SharedStringsBasicPlus {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, SharedStringsBasicPlus::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJarAndWhiteBox("HelloStringPlus");
+
+        SharedStringsUtils.dumpWithWhiteBox( TestCommon.list("HelloStringPlus"),
+            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
+
+        SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringPlus");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsHumongous.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Use a shared string allocated in a humongous G1 region.
+ * @comment -- the following implies that G1 is used (by command-line or by default)
+ * @requires vm.cds.archived.java.heap
+ *
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. SharedStringsHumongous
+ */
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import sun.hotspot.WhiteBox;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.Asserts;
+
+public class SharedStringsHumongous {
+    static String sharedArchiveConfigFile = System.getProperty("user.dir") + File.separator + "SharedStringsHumongous_gen.txt";
+
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        try (FileOutputStream fos = new FileOutputStream(sharedArchiveConfigFile)) {
+            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
+            out.println("VERSION: 1.0");
+            out.println("@SECTION: String");
+            out.println("31: shared_test_string_unique_14325");
+            int region_size = wb.g1RegionSize();
+            char body[] = new char[region_size + region_size / 2];
+            for (int i = 0; i < body.length; i++) {
+              body[i] = 'x';
+            }
+            Asserts.assertTrue(wb.g1IsHumongous(body));
+            String prefix = "generated_string (followed by " + body.length + " 'x') ";
+
+            System.out.println("G1 region size: " + region_size);
+            System.out.println("Using a humongous string: " + prefix);
+
+            String s = prefix + new String(body);
+            out.println(s.length() + ": " + s);
+            out.close();
+        }
+
+        SharedStringsUtils.run(args, SharedStringsHumongous::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
+        String appJar = JarBuilder.build("SharedStringsHumongous", "HelloString");
+
+        OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
+                TestCommon.concat(vmOptionsPrefix,
+                    "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
+                    "-Xlog:gc+region+cds",
+                    "-Xlog:gc+region=trace"));
+        TestCommon.checkDump(dumpOutput, "extra interned string ignored; size too large");
+        // Extra strings that are humongous are not kelp alive, so they should be GC'ed
+        // before dumping the string table. That means the heap should contain no
+        // humongous regions.
+        dumpOutput.shouldNotMatch("gc,region,cds. HeapRegion 0x[0-9a-f]* HUM");
+
+        OutputAnalyzer execOutput = TestCommon.exec(appJar,
+            TestCommon.concat(vmOptionsPrefix, "HelloString"));
+        TestCommon.checkExec(execOutput);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsStress.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Write a lots of shared strings.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/hotspot/jtreg/runtime/cds/appcds /test/lib
+ * @modules jdk.jartool/sun.tools.jar
+ * @build HelloString
+ * @run driver/timeout=500 SharedStringsStress
+ */
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class SharedStringsStress {
+    static String sharedArchiveConfigFile = System.getProperty("user.dir") + File.separator + "SharedStringsStress_gen.txt";
+
+    public static void main(String[] args) throws Exception {
+        try (FileOutputStream fos = new FileOutputStream(sharedArchiveConfigFile)) {
+            PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
+            out.println("VERSION: 1.0");
+            out.println("@SECTION: String");
+            out.println("31: shared_test_string_unique_14325");
+            for (int i=0; i<200000; i++) {
+                String s = "generated_string " + i;
+                out.println(s.length() + ": " + s);
+            }
+            out.close();
+        }
+
+        SharedStringsUtils.run(args, SharedStringsStress::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
+        String appJar = JarBuilder.build("SharedStringsStress", "HelloString");
+
+        String test_cases[][] = {
+            // default heap size
+            {},
+
+            // Test for handling of heap fragmentation. With sharedArchiveConfigFile, we will dump about
+            // 18MB of shared objects on 64 bit VM (smaller on 32-bit).
+            //
+            // During dump time, an extra copy of these objects are allocated,
+            // so we need about 36MB, plus a few MB for other system data. So 64MB total heap
+            // should be enough.
+            //
+            // The VM should executed a full GC to maximize contiguous free space and
+            // avoid fragmentation.
+            {"-Xmx64m"},
+        };
+
+        for (String[] extra_opts: test_cases) {
+            vmOptionsPrefix = TestCommon.concat(vmOptionsPrefix, extra_opts);
+
+            OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
+                TestCommon.concat(vmOptionsPrefix,
+                    "-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
+                    "-Xlog:gc+region+cds",
+                    "-Xlog:gc+region=trace"));
+            TestCommon.checkDump(dumpOutput);
+            OutputAnalyzer execOutput = TestCommon.exec(appJar,
+                TestCommon.concat(vmOptionsPrefix, "HelloString"));
+            TestCommon.checkExec(execOutput);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsUtils.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Asserts;
+
+// A helper/utility class for testing shared strings
+public class SharedStringsUtils {
+    public static final String TEST_JAR_NAME =      "test";
+    public static final String TEST_JAR_NAME_FULL = "test.jar";
+    public static final String WHITEBOX_JAR_NAME =  "whitebox";
+
+    public static interface Test {
+        public void dotest(String args[]) throws Exception ;
+    }
+
+    private static String[][] vmOptionCombos = {
+        {},
+        {"-XX:+UseStringDeduplication"},
+        {"-XX:-CompactStrings"}
+    };
+
+    private static String childVMOptionsPrefix[] = {};
+
+    // SharedStringsUtils.run() is for running the main test body multiple times, each with a different
+    // set of extra VM options that are passed to the child processes.
+    //
+    // See ./ExerciseGC.java for an example.
+    public static void run(String args[], Test t) throws Exception {
+        int numSetOfChildVMOptions = vmOptionCombos.length;
+        for (int i=0; i< numSetOfChildVMOptions; i++) {
+            run(i, numSetOfChildVMOptions, args, t);
+        }
+    }
+
+    public static void run(int i, int numSetOfChildVMOptions, String args[], Test t) throws Exception {
+        // When you add a new set of options to vmOptionCombos, we make sure all
+        // callers of this method (i.e., IncompatibleOptions.java) knows about it and will
+        // add new @test blocks accordingly.
+        Asserts.assertEQ(numSetOfChildVMOptions, vmOptionCombos.length);
+        String opts[] = vmOptionCombos[i];
+
+        System.out.print("Running with extra VM option prefix for child processes [" + opts.length + "] =");
+        for (String o : opts) {
+            System.out.print(" " + o);
+        }
+        System.out.println();
+        childVMOptionsPrefix = opts;
+        t.dotest(args);
+    }
+
+    public static String[] getChildVMOptionsPrefix() {
+        return childVMOptionsPrefix;
+    }
+
+    public static String getWbParam() {
+        return "-Xbootclasspath/a:" + TestCommon.getTestJar(WHITEBOX_JAR_NAME + ".jar");
+    }
+
+    // build the test jar
+    public static void buildJar(String... classes) throws Exception {
+        JarBuilder.build(TEST_JAR_NAME, classes);
+    }
+
+    // build the test jar and a whitebox jar
+    public static void buildJarAndWhiteBox(String... classes) throws Exception {
+        JarBuilder.build(true, WHITEBOX_JAR_NAME, "sun/hotspot/WhiteBox");
+        buildJar(classes);
+    }
+
+    // execute the "dump" operation, but do not check the output
+    public static OutputAnalyzer dumpWithoutChecks(String appClasses[],
+        String sharedDataFile, String... extraOptions) throws Exception {
+
+        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
+        String[] args =
+            TestCommon.concat(extraOptions, "-XX:+UseCompressedOops", "-XX:+UseG1GC",
+            "-XX:SharedArchiveConfigFile=" +
+            TestCommon.getSourceFile(sharedDataFile));
+        args = TestCommon.concat(childVMOptionsPrefix, args);
+
+        return TestCommon.dump(appJar, appClasses, args);
+    }
+
+    // execute the dump operation and check the output
+    public static OutputAnalyzer dump(String appClasses[],
+        String sharedDataFile, String... extraOptions) throws Exception {
+        OutputAnalyzer output = dumpWithoutChecks(appClasses, sharedDataFile, extraOptions);
+        checkDump(output);
+        return output;
+    }
+
+    public static OutputAnalyzer dumpWithWhiteBox(String appClasses[],
+        String sharedDataFile, String... extraOptions) throws Exception {
+        return dump(appClasses, sharedDataFile,
+            TestCommon.concat(extraOptions, getWbParam()) );
+    }
+
+    // execute/run test with shared archive
+    public static OutputAnalyzer runWithArchiveAuto(String className,
+        String... extraOptions) throws Exception {
+
+        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
+        String[] args = TestCommon.concat(extraOptions,
+            "-cp", appJar, "-XX:+UseCompressedOops", "-XX:+UseG1GC", className);
+        args = TestCommon.concat(childVMOptionsPrefix, args);
+
+        OutputAnalyzer output = TestCommon.execAuto(args);
+        checkExecAuto(output);
+        return output;
+    }
+
+    public static OutputAnalyzer runWithArchive(String className,
+        String... extraOptions) throws Exception {
+
+        return runWithArchive(new String[0], className, extraOptions);
+    }
+
+    public static OutputAnalyzer runWithArchive(String[] extraMatches,
+        String className, String... extraOptions) throws Exception {
+
+        String appJar = TestCommon.getTestJar(TEST_JAR_NAME_FULL);
+        String[] args = TestCommon.concat(extraOptions,
+            "-XX:+UseCompressedOops", "-XX:+UseG1GC", className);
+        args = TestCommon.concat(childVMOptionsPrefix, args);
+
+        OutputAnalyzer output = TestCommon.exec(appJar, args);
+        checkExec(output, extraMatches);
+        return output;
+    }
+
+
+    // execute/run test with shared archive and white box
+    public static OutputAnalyzer runWithArchiveAndWhiteBox(String className,
+        String... extraOptions) throws Exception {
+
+        return runWithArchive(className,
+            TestCommon.concat(extraOptions, getWbParam(),
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI") );
+    }
+
+    public static OutputAnalyzer runWithArchiveAndWhiteBox(String[] extraMatches,
+        String className, String... extraOptions) throws Exception {
+
+        return runWithArchive(extraMatches, className,
+            TestCommon.concat(extraOptions, getWbParam(),
+            "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI") );
+    }
+
+
+    public static void checkDump(OutputAnalyzer output) throws Exception {
+        output.shouldContain("Shared string table stats");
+        TestCommon.checkDump(output);
+    }
+
+    public static void checkExec(OutputAnalyzer output) throws Exception {
+        TestCommon.checkExec(output, new String[0]);
+    }
+
+    public static void checkExecAuto(OutputAnalyzer output) throws Exception {
+        CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
+        TestCommon.checkExec(output, opts);
+    }
+
+    public static void checkExec(OutputAnalyzer output, String[] extraMatches) throws Exception {
+        TestCommon.checkExec(output, extraMatches);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWb.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class SharedStringsWb {
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        String s = "shared_test_string_unique_14325";
+        s = s.intern();
+        if (wb.areSharedStringsIgnored() || wb.isShared(s)) {
+            System.out.println("Found shared string.");
+        } else {
+            throw new RuntimeException("String is not shared.");
+        }
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary White box test for shared strings
+ * @requires vm.cds.archived.java.heap
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @modules jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox SharedStringsWb
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run driver SharedStringsWbTest
+ */
+
+import java.io.*;
+import sun.hotspot.WhiteBox;
+
+public class SharedStringsWbTest {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, SharedStringsWbTest::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        SharedStringsUtils.buildJarAndWhiteBox("SharedStringsWb");
+
+        SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("SharedStringsWb"),
+            "SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
+
+        SharedStringsUtils.runWithArchiveAndWhiteBox("SharedStringsWb");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Regression test for JDK-8098821
+ * @bug 8098821
+ * @requires vm.cds.archived.java.heap
+ * @modules jdk.jartool/sun.tools.jar
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @run driver SysDictCrash
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class SysDictCrash {
+    public static void main(String[] args) throws Exception {
+        SharedStringsUtils.run(args, SysDictCrash::test);
+    }
+
+    public static void test(String[] args) throws Exception {
+        String vmOptionsPrefix[] = SharedStringsUtils.getChildVMOptionsPrefix();
+
+        // SharedBaseAddress=0 puts the archive at a very high address on solaris,
+        // which provokes the crash.
+        ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
+          TestCommon.concat(vmOptionsPrefix,
+            "-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
+            "-cp", ".",
+            "-XX:SharedBaseAddress=0", "-XX:SharedArchiveFile=./SysDictCrash.jsa",
+            "-Xshare:dump",
+            "-showversion", "-Xlog:cds,cds+hashtables"));
+
+        boolean continueTest = true;
+        OutputAnalyzer output = TestCommon.executeAndLog(dumpPb, "dump");
+        try {
+            TestCommon.checkDump(output);
+        } catch (java.lang.RuntimeException re) {
+            if (!output.getStdout().contains("UseCompressedOops and UseCompressedClassPointers have been disabled due to")) {
+                throw re;
+            } else {
+                System.out.println("Shared archive was not created due to UseCompressedOops and UseCompressedClassPointers have been disabled.");
+                continueTest = false;
+            }
+        }
+
+        if (!continueTest) {
+            return;
+        }
+
+        ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
+          TestCommon.concat(vmOptionsPrefix,
+            "-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
+            "-XX:SharedArchiveFile=./SysDictCrash.jsa",
+            "-Xshare:on",
+            "-version"));
+
+        TestCommon.checkExec(TestCommon.executeAndLog(runPb, "exec"));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/CorruptDataLine.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+VERSION: 1.0
+SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+#DATATYPE: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidDataType.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+#DATATYPE: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidHeader.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+Garbage Header x0935#%0sl
+@SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+#DATATYPE: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidString.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,6 @@
+VERSION: 1.0
+@SECTION: String
+31: shred_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidStringFormat.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+5:: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+#DATATYPE: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidSymbol.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,12 @@
+VERSION: 1.0
+@SECTION:  String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+8: cyrillic
+@SECTION:  Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMet%%%hod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidSymbolFormat.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,11 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+@SECTION: Symbol
+41: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/InvalidVersion.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+VERSION: 0.0
+@SECTION: String
+0: 
+5: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+1: *
+1: -
+1: .
+1: /
+1: :
+1: C
+1: I
+1: J
+1: U
+1: Z
+1: _
+8: segments
+1: |
+5: cp850
+5: cp852
+5: cp855
+5: cp857
+5: cp858
+5: cp862
+5: cp866
+11: ISO_8859_13
+11: ISO_8859_15
+5: cp874
+47: java.lang.invoke.MethodHandle.TRACE_INTERPRETER
+7: CHECKED
+3: zip
+10: waitStatus
+33: java.lang.invoke.MethodHandleImpl
+7: .jimage
+5: cp912
+5: cp914
+5: cp915
+5: cp920
+5: cp923
+5: cp936
+5: euccn
+5: eucjp
+11: permissions
+5: euckr
+6: SIGNAL
+5: cp737
+17: java.library.path
+5: cp775
+13: classValueMap
+4: utf8
+9: PROPAGATE
+9: baseCount
+7: cskoi8r
+8: cyrillic
+#DATATYPE: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/LengthOverflow.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,10 @@
+VERSION: 1.0
+@SECTION: String
+2147483647: s
+5: cp819
+31: shared_test_string_intern_12345
+7: test123
+@SECTION: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/OverflowPrefix.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,11 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+2147483648: cp819
+31: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+@SECTION: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/TruncatedString.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,10 @@
+VERSION: 1.0
+@SECTION: String
+40000: s
+5: cp819
+31: shared_test_string_intern_12345
+7: test123
+@SECTION: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/invalidFormat/UnrecognizedPrefix.txt	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,11 @@
+VERSION: 1.0
+@SECTION: String
+0: 
+5: cp819
+3E: shared_test_string_unique_14325
+31: shared_test_string_intern_12345
+7: test123
+@SECTION: Symbol
+41 -1: (Ljava/util/Set<TE;>;Ljava/lang/Object;)V
+10 -1: linkMethod
+20 -1: isAlphaNumericString
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ArrayListTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import java.util.*;
+
+// This is a test case executed by DumpClassList.java to load classes
+// from various places to ensure that they are not written to the class list.
+public class ArrayListTest {
+    public static void main(String args[]) throws Exception {
+        // The following lambda usage should generate various classes like
+        // java.lang.invoke.LambdaForm$MH/1146743572. All of them should be excluded from
+        // the class list.
+        List<String> a = new ArrayList<>();
+        a.add("hello world.");
+        a.forEach(str -> System.out.println(str));
+
+        System.out.println(Class.forName("java.lang.NewClass")); // should be excluded from the class list.
+        System.out.println(Class.forName("boot.append.Foo"));    // should be excluded from the class list.
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/BootClassPathAppendHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class BootClassPathAppendHelper {
+    public static void main(String[] args) throws ClassNotFoundException {
+        Class cls = Class.forName("Hello");
+
+        if (cls == null) {
+            throw new java.lang.RuntimeException("Cannot find Hello.class");
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (!wb.isSharedClass(cls)) {
+            System.out.println("Hello.class is not in shared space as expected.");
+        } else {
+            throw new java.lang.RuntimeException("Hello.class shouldn't be in shared space.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/C1.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+package sealed.pkg;
+
+public class C1 {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/C2.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+package pkg;
+
+public class C2 {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Child.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class Child extends Super {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr1.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class CpAttr1 {
+  public static void main(String args[]) {
+    System.out.println("2"); CpAttr2.doit(); // Only the version of this class defined in CpAttr2.java will not throw exception.
+    System.out.println("3"); CpAttr3.doit(); // Only the version of this class defined in CpAttr3.java will not throw exception.
+    System.out.println("4"); CpAttr4.doit(); // Only the version of this class defined in CpAttr4.java will not throw exception.
+    System.out.println("5"); CpAttr5.doit(); // Only the version of this class defined in CpAttr5.java will not throw exception.
+    System.out.println("Test passed");
+  }
+}
+
+class CpAttr2 { static void doit() {throw new RuntimeException("");} }
+class CpAttr3 { static void doit() {throw new RuntimeException("");} }
+class CpAttr4 { static void doit() {throw new RuntimeException("");} }
+class CpAttr5 { static void doit() {throw new RuntimeException("");} }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr2.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+class CpAttr2 { static void doit() {} }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr3.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+class CpAttr2 { static void doit() {throw new RuntimeException("");} }
+class CpAttr3 { static void doit() {} }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr4.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+class CpAttr2 { static void doit() {throw new RuntimeException("");} }
+class CpAttr3 { static void doit() {throw new RuntimeException("");} }
+class CpAttr4 { static void doit() {} }
+class CpAttr5 { static void doit() {throw new RuntimeException("");} }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/CpAttr5.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+class CpAttr5 { static void doit() {} }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/DummyClassHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.lang.*;
+import java.lang.reflect.*;
+import jdk.test.lib.cds.CDSTestUtils;
+import sun.hotspot.WhiteBox;
+
+public class DummyClassHelper {
+    static void checkDummyMethod(Class<?> cls, String className) {
+        Method m = null;
+        try {
+            m = cls.getMethod("thisClassIsDummy");
+            throw new java.lang.RuntimeException(className +
+                " should be loaded from the jimage and should not have the thisClassIsDummy() method.");
+        } catch(NoSuchMethodException ex) {
+            System.out.println(ex.toString());
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        String[] classNames = {args[0], args[1]};
+        Class cls = null;
+        boolean doWBCheck = (args.length == 3);
+        WhiteBox wb = null;
+        if (doWBCheck) {
+            wb = WhiteBox.getWhiteBox();
+        }
+        for (int i = 0; i < classNames.length; i++) {
+            cls = Class.forName(classNames[i]);
+            checkDummyMethod(cls, classNames[i]);
+            if (doWBCheck) {
+                // FIXME: for dynamic archive, the class loaded from the
+                // bootclasspath jar during dump time is not loaded from the
+                // archive during run time.
+                if (!CDSTestUtils.isDynamicArchive()) {
+                    if (!wb.isSharedClass(cls)) {
+                        throw new java.lang.RuntimeException(classNames[i] +
+                            ".class should be in shared space.");
+                    }
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/EmptyClassHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.lang.*;
+
+import java.lang.reflect.Method;
+import jdk.internal.access.JavaLangAccess;
+import jdk.internal.access.SharedSecrets;
+
+class EmptyClassHelper {
+    static final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
+    static final String USE_APP = "useAppLoader";
+    public static void main(String[] args) throws Exception {
+        Class cls = null;
+        Method m = null;
+        ClassLoader appLoader = ClassLoader.getSystemClassLoader();
+        String className = "com.sun.tools.javac.Main";
+        if (args[0].equals(USE_APP)) {
+            cls = appLoader.loadClass(className);
+            System.out.println("appLoader loaded class");
+            try {
+                m = cls.getMethod("main", String[].class);
+                System.out.println("appLoader found method main");
+            } catch(NoSuchMethodException ex) {
+                System.out.println(ex.toString());
+            }
+        } else {
+            cls = jla.findBootstrapClassOrNull(appLoader, className);
+            System.out.println("bootLoader loaded class");
+            System.out.println("cls = " + cls);
+            try {
+                m = cls.getMethod("main", String[].class);
+                System.out.println("bootLoader found method main");
+            } catch(NoSuchMethodException ex) {
+                System.out.println(ex.toString());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/FieldAnnotationsApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+
+public class FieldAnnotationsApp {
+    @MyAnnotation(name="myField1",  value="myValue1")
+    public String myField1 = null;
+
+    @MyAnnotation(name="myField2",  value="myValue2")
+    public String myField2 = null;
+
+    public static void main(String args[]) throws Exception {
+        for (int i=1; i<=2; i++) {
+            Field field = FieldAnnotationsApp.class.getField("myField" + i);
+            Annotation[] annotations = field.getDeclaredAnnotations();
+
+            for (Annotation anno : annotations){
+                if (anno instanceof MyAnnotation){
+                    MyAnnotation myAnno = (MyAnnotation) anno;
+                    String name = myAnno.name();
+                    String value = myAnno.value();
+
+                    System.out.println("Field         : " + field.getName());
+                    System.out.println("  myAnno.name : " + name);
+                    System.out.println("  myAnno.value: " + value);
+
+                    if (!(name.equals("myField" + i) && value.equals("myValue" + i))) {
+                        throw new Exception("Unexpected annotation values: " + i + " = " + value);
+                    }
+                }
+            }
+        }
+        System.out.println("Field annotations are OK.");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ForNameTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class ForNameTest {
+    public static void main(String[] args) throws Throwable {
+        // Hello is on the bootclasspath. The defining classloader is
+        // the NULL classloader. See ../ClassLoaderTest.java
+        Class c = Class.forName("Hello");
+        ClassLoader cl = c.getClassLoader();
+        if (cl != null) {
+            throw new RuntimeException(
+                "Test Failed. Wrong classloader is used. Expect the NULL classloader.");
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(c)) {
+            System.out.println("As expected, Hello.class is in shared space.");
+        } else {
+            throw new java.lang.RuntimeException("Hello.class must be in shared space.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/GenericTestApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+
+import sun.hotspot.WhiteBox;
+
+/**
+ * This is a generic test app for testing if classes are loaded from the CDS archive
+ * or not (without having to parse -Xlog:class+load, or writing your own WhiteBox apps).
+ * Usage:
+ *     [1] Create an archive with WhiteBox enabled.
+ *     [2] Run this app with arguments such as
+ *             "assertShared:java.lang.Object"
+ *             "assertNotShared:NotSharedClassName"
+ *
+ * We can probably add other kinds of simple tests as well ....
+ *
+ * FIXME: enhance WB API to check if a particular archive has failed. So you can say
+ *        assertShared:0,java.lang.Object
+ * to assert that java.lang.Object is shared from archive #0 (i.e., base archive).
+ */
+public class GenericTestApp {
+    private static final WhiteBox wb = WhiteBox.getWhiteBox();
+
+    public static void main(String args[]) throws Exception {
+        System.out.println("GenericTestApp started. WhiteBox = " + wb);
+        System.out.println("cdsMemoryMappingFailed() = " + cdsMemoryMappingFailed());
+
+        for (String s : args) {
+            Class c;
+            if ((c = getClass(s, "assertShared:")) != null) {
+                assertShared(c);
+            }
+            else if ((c = getClass(s, "assertNotShared:")) != null) {
+                assertNotShared(c);
+            }
+            else {
+                throw new RuntimeException("Unknown option: " + s);
+            }
+            System.out.println("passed: " + s);
+        }
+    }
+
+    private static Class getClass(String s, String prefix) throws Exception {
+        if (s.startsWith(prefix)) {
+            return Class.forName(s.substring(prefix.length()));
+        } else {
+            return null;
+        }
+    }
+
+    private static boolean cdsMemoryMappingFailed() {
+        return wb.cdsMemoryMappingFailed();
+    }
+
+    private static void assertShared(Class klass) {
+        if (!cdsMemoryMappingFailed()) {
+            if (!wb.isSharedClass(klass)) {
+                throw new RuntimeException("Class should be shared but is not: " + klass);
+            }
+        } else {
+            // FIXME -- need to throw jtreg.SkippedException
+            System.out.println("Cannot test for wb.isSharedClass(" + klass + ") because CDS mapping has failed");
+        }
+    }
+
+    private static void assertNotShared(Class klass) {
+        if (wb.isSharedClass(klass)) {
+            throw new RuntimeException("Class should be shared but is not: " + klass);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/GetFlightRecorder.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.List;
+
+import jdk.jfr.Event;
+import jdk.jfr.EventType;
+import jdk.jfr.FlightRecorder;
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordingFile;
+import jdk.jfr.consumer.RecordedEvent;
+
+public class GetFlightRecorder {
+    private static class TestEvent extends Event {
+    }
+    private static class SimpleEvent extends Event {
+        public int id;
+    }
+    public static void main(String args[]) throws Exception {
+        EventType type = EventType.getEventType(TestEvent.class); // This class is loaded before recording has started.
+        if (type.isEnabled()) {
+            throw new RuntimeException("Expected event to be disabled before recording start");
+        }
+
+        // (1) make sure you can obtain the flight recorder without error.
+        System.out.println("jdk.jfr.FlightRecorder.getFlightRecorder() = " + FlightRecorder.getFlightRecorder());
+
+        // (2) test that the event class loaded before recording can still work.
+        Recording r = new Recording();
+        r.start();
+        if (!type.isEnabled()) {
+            throw new RuntimeException("Expected event to be enabled during recording");
+        }
+        TestEvent testEvent = new TestEvent();
+        testEvent.commit();
+        loadEventClassDuringRecording();
+        r.stop();
+        if (type.isEnabled()) {
+            throw new RuntimeException("Expected event to be disabled after recording stopped");
+        }
+        System.out.println("Checking SimpleEvent");
+        hasEvent(r, SimpleEvent.class.getName());
+        System.out.println("OK");
+
+        System.out.println("Checking TestEvent");
+        hasEvent(r, TestEvent.class.getName());
+        System.out.println("OK");
+    }
+
+    // Classes that are loaded during a recording
+    // should get instrumentation on class load
+    private static void loadEventClassDuringRecording() {
+        SimpleEvent event = new SimpleEvent();
+        event.commit();
+    }
+
+    public static List<RecordedEvent> fromRecording(Recording recording) throws IOException {
+        return RecordingFile.readAllEvents(makeCopy(recording));
+    }
+
+    private static Path makeCopy(Recording recording) throws IOException {
+        Path p = recording.getDestination();
+        if (p == null) {
+            File directory = new File(".");
+            // FIXME: Must come up with a way to give human-readable name
+            // this will at least not clash when running parallel.
+            ProcessHandle h = ProcessHandle.current();
+            p = new File(directory.getAbsolutePath(), "recording-" + recording.getId() + "-pid" + h.pid() + ".jfr").toPath();
+            recording.dump(p);
+        }
+        return p;
+    }
+
+    public static void hasEvent(Recording r, String name) throws IOException {
+        List<RecordedEvent> events = fromRecording(r);
+        hasEvents(events);
+        hasEvent(events, name);
+    }
+
+    public static void hasEvents(List<RecordedEvent> events) {
+        if (events.isEmpty()) {
+            throw new RuntimeException("No events");
+        }
+    }
+
+    public static void hasEvent(List<RecordedEvent> events, String name) throws IOException {
+        if (!containsEvent(events, name)) {
+            throw new RuntimeException("Missing event " + name  + " in recording " + events.toString());
+        }
+    }
+
+    private static boolean containsEvent(List<RecordedEvent> events, String name) {
+        for (RecordedEvent event : events) {
+            if (event.getEventType().getName().equals(name)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Greet.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class Greet {
+
+    public String Greeting() {
+        return new String(", how are you?");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Hello.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class Hello {
+  public static void main(String args[]) {
+    System.out.println("Hello World");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExt.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class HelloExt {
+   public static void main(String[] args) throws Throwable {
+
+       String className = "javax.annotation.processing.FilerException";
+       Class cls = Class.forName(className);
+
+       ClassLoader loader = cls.getClassLoader();
+       if (loader != ClassLoader.getPlatformClassLoader()) {
+           throw new java.lang.RuntimeException(className + " should be load by PlatformClassLoader but it is loaded by " + loader);
+       }
+
+       WhiteBox wb = WhiteBox.getWhiteBox();
+       if (wb.isSharedClass(cls)) {
+           System.out.println("As expected, " + className + " is in shared space.");
+       } else {
+           throw new java.lang.RuntimeException(className + " is not in shared space.");
+       }
+
+       className = "[Ljava.lang.Comparable;";
+       cls = Class.forName(className);
+       loader = cls.getClassLoader();
+       if (loader != null) {
+           throw new java.lang.RuntimeException(className + " should be load by the NULL class loader but it is loaded by " + loader);
+       }
+
+       if (wb.isSharedClass(cls)) {
+           System.out.println("As expected, " + className + " is in shared space.");
+       } else {
+           throw new java.lang.RuntimeException(className + " is not in shared space.");
+       }
+   }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExtApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class HelloExtApp {
+  public static void main(String args[]) {
+    System.out.println("Hello World Ext: " + HelloExtExt.class.getProtectionDomain());
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloExtExt.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class HelloExtExt {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloMore.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class HelloMore {
+  public static void main(String args[]) {
+      Hello.main(args);
+      System.out.println("Hello World ... More");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/HelloWB.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class HelloWB {
+    public static void main(String[] args) throws Throwable {
+        System.out.println("HelloWB.class.getClassLoader() = " + HelloWB.class.getClassLoader());
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (wb.isSharedClass(HelloWB.class)) {
+            System.out.println("As expected, HelloWB.class is in shared space.");
+        } else {
+            throw new java.lang.RuntimeException("HelloWB.class should be in shared space.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Hi.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class Hi extends Greet {
+    public static void main(String args[]) {
+        Greet g = new Greet();
+        MyClass.doit(g.Greeting());
+    }
+    public static class MyClass {
+        public static void doit(String greeting) {
+            System.out.println("Hi" + greeting);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Iloadw.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class Iloadw 
+    version 51: 0
+{
+    public static Method run:"()I"
+        stack 1 locals 400
+    {
+        iconst_0;
+        istore_w 300;
+        iinc_w 300,1;
+        iload_w 300;
+        ireturn;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/IloadwMain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+public class IloadwMain {
+    public static void main(String args[]) {
+        int result = Iloadw.run();
+        if (result != 1) {
+            throw new RuntimeException(
+                "Failed. Result is " + result + ", expect 1.");
+        } else {
+            System.out.println("Passed.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/JimageClassPackage.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class JimageClassPackage {
+    public static void main(String args[]) throws Throwable {
+        // Test Package for boot/app/ext module classes from the "modules" jimage.
+        // The following classes are archived. See runtime/AppCDS/Package.java.
+        //     java.util.Dictionary (testcase 0),
+        //     sun.tools.javac.Main (testcase 1),
+        //     jdk.nio.zipfs.ZipInfo (testcase 2),
+        //     java.net.URL (testcase 3),
+        //     sun.rmi.rmic.Main (testcase 4),
+        //     com.sun.jndi.dns.DnsName (testcase 5)
+        String testcases[][] =
+            {{"Loading shared boot module class first", "java.util",
+              "java.util.Dictionary", "java.util.ServiceConfigurationError"},
+
+             {"Loading shared app module class first", "sun.tools.javac",
+              "sun.tools.javac.Main", "sun.tools.javac.BatchParser"},
+
+             {"Loading shared ext module class first", "jdk.nio.zipfs",
+              "jdk.nio.zipfs.ZipInfo", "jdk.nio.zipfs.ZipPath"},
+
+             {"Loading non-shared boot module class first", "java.net",
+              "java.net.HttpCookie", "java.net.URL"},
+
+             {"Loading non-shared app module class first", "sun.rmi.rmic",
+              "sun.rmi.rmic.RMIGenerator", "sun.rmi.rmic.Main"},
+
+             {"Loading non-shared ext module class first", "com.sun.jndi.dns",
+              "com.sun.jndi.dns.Resolver", "com.sun.jndi.dns.DnsName"}};
+
+        JimageClassPackage test = new JimageClassPackage();
+        for (int i = 0; i < testcases.length; i++) {
+            System.out.println("Testcase " + i + ": " + testcases[i][0]);
+            test.testPackage(testcases[i][1], testcases[i][2], testcases[i][3]);
+        }
+    }
+
+    private void testPackage (String pkg,
+                              String shared,
+                              String nonShared) throws Throwable {
+        Class c1 = Class.forName(shared);
+        ClassLoader cl = c1.getClassLoader();
+        Package pkg_from_loader;
+        if (cl != null) {
+            pkg_from_loader = cl.getDefinedPackage(pkg);
+        } else {
+            pkg_from_loader = Package.getPackage(pkg);
+        }
+
+        Package pkg_from_shared_class = c1.getPackage();
+
+        Class c2 = Class.forName(nonShared);
+        Package pkg_from_nonshared_class = c2.getPackage();
+
+        if (pkg_from_loader != null &&
+            pkg_from_shared_class != null &&
+            pkg_from_loader == pkg_from_shared_class &&
+            pkg_from_shared_class == pkg_from_nonshared_class &&
+            pkg_from_shared_class.getName().equals(pkg)) {
+            System.out.println("Expected package: " + pkg_from_shared_class.toString());
+        } else {
+            System.out.println("Unexpected package" + pkg_from_shared_class);
+            System.exit(1);
+        }
+        if (pkg_from_shared_class.isSealed()) {
+            System.out.println("Package is sealed");
+        } else {
+            System.out.println("Package is not sealed");
+            System.exit(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/JimageClassProtDomain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class JimageClassProtDomain {
+    public static void main(String args[]) throws Throwable {
+        // Test ProtectionDomain for boot/app/ext module classes from the "modules" jimage.
+        // The following classes are archived. See runtime/AppCDS/ProtectionDomain.java.
+        //     java.util.Dictionary (testcase 0),
+        //     sun.tools.javac.Main (testcase 1),
+        //     jdk.nio.zipfs.ZipInfo (testcase 2),
+        //     java.net.URL (testcase 3),
+        //     sun.rmi.rmic.Main (testcase 4),
+        //     com.sun.jndi.dns.DnsName (testcase 5)
+        String testcases[][] =
+            {{"Loading shared boot module class first",
+              "java.util.Dictionary", "java.util.ServiceConfigurationError"},
+
+             {"Loading shared app module class first",
+              "com.sun.tools.javac.Main", "com.sun.tools.javac.code.Symbol"},
+
+             {"Loading shared ext module class first",
+              "jdk.nio.zipfs.ZipInfo", "jdk.nio.zipfs.ZipPath"},
+
+             {"Loading non-shared boot module class first",
+              "java.net.HttpCookie", "java.net.URL"},
+
+             {"Loading non-shared app module class first",
+              "com.sun.tools.sjavac.Util", "com.sun.tools.sjavac.Main"},
+
+             {"Loading non-shared ext module class first",
+              "com.sun.jndi.dns.Resolver", "com.sun.jndi.dns.DnsName"}};
+        for (int i = 0; i < testcases.length; i++) {
+            System.out.println("Testcase " + i + ": " + testcases[i][0]);
+            JimageClassProtDomain.testProtectionDomain(testcases[i][1], testcases[i][2]);
+        }
+    }
+
+    private static void testProtectionDomain(String shared, String nonShared)
+              throws Throwable {
+        Class c1 = Class.forName(shared);
+        Class c2 = Class.forName(nonShared);
+        if (c1.getProtectionDomain() != c2.getProtectionDomain()) {
+            System.out.println(c1.getProtectionDomain());
+            System.out.println(c1.getProtectionDomain().getCodeSource());
+            System.out.println(c2.getProtectionDomain());
+            System.out.println(c2.getProtectionDomain().getCodeSource());
+            throw new RuntimeException("Failed: Protection Domains do not match!");
+        } else {
+            System.out.println(c1.getProtectionDomain());
+            System.out.println(c1.getProtectionDomain().getCodeSource());
+            System.out.println(c2.getProtectionDomain());
+            System.out.println(c2.getProtectionDomain().getCodeSource());
+            System.out.println("Passed: Protection Domains match.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/JvmtiApp.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class JvmtiApp {
+    static Class forname(String cn) {
+        try {
+            return Class.forName(cn);
+        } catch (Throwable t) {
+            return null;
+        }
+    }
+
+    static void failed(String msg) {
+        System.out.println("TEST FAILED: " + msg);
+        System.exit(1);
+    }
+
+    // See ../JvmtiAddPath.java for how the classpaths are configured.
+    public static void main(String args[]) {
+        String cn = "Hello";
+        if (args.length >= 3) {
+            cn = args[args.length - 1];
+        }
+
+        if (args[0].equals("noadd")) {
+            if (forname(cn) != null) {
+                failed(cn + " class was loaded unexpectedly");
+            }
+            // We use -verbose:class to verify that Extra.class IS loaded by AppCDS if
+            // the boot classpath HAS NOT been appended.
+            ExtraClass.doit();
+            System.exit(0);
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (args[0].equals("bootonly")) {
+            wb.addToBootstrapClassLoaderSearch(args[1]);
+            Class cls = forname(cn);
+            if (cls == null) {
+                failed("Cannot find " + cn + " class");
+            }
+            if (cls.getClassLoader() != null) {
+                failed("Hello class not loaded by boot classloader");
+            }
+        } else if (args[0].equals("apponly")) {
+            wb.addToSystemClassLoaderSearch(args[1]);
+            Class cls = forname(cn);
+            if (cls == null) {
+                failed("Cannot find " + cn + " class");
+            }
+            if (cls.getClassLoader() != JvmtiApp.class.getClassLoader()) {
+                failed(cn + " class not loaded by app classloader");
+            }
+        } else if (args[0].equals("noadd-appcds")) {
+            cn = (args.length == 1) ? "Hello" : args[1];
+            Class cls = forname(cn);
+            if (cls == null) {
+                failed("Cannot find " + cn + " class");
+            }
+            if (cls.getClassLoader() != JvmtiApp.class.getClassLoader()) {
+                failed(cn + " class not loaded by app classloader");
+            }
+        } else if (args[0].equals("appandboot")) {
+            wb.addToBootstrapClassLoaderSearch(args[1]);
+            wb.addToSystemClassLoaderSearch(args[2]);
+            cn = (args.length == 3) ? "Hello" : args[3];
+            Class cls = forname(cn);
+            if (cls == null) {
+                failed("Cannot find " + cn + " class");
+            }
+            if (cls.getClassLoader() != null) {
+                failed(cn + " class not loaded by boot classloader");
+            }
+        } else {
+            failed("unknown option " + args[0]);
+        }
+
+        // We use -verbose:class to verify that Extra.class IS NOT loaded by AppCDS if
+        // the boot classpath HAS been appended.
+        ExtraClass.doit();
+
+        System.out.println("Test passed: " + args[0]);
+    }
+}
+
+class ExtraClass {
+    static void doit() {}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/MethodNoReturn.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+/*
+WAS:
+
+class MethodNoReturn {
+  void badMethod() {}
+}
+*/
+
+super class MethodNoReturn
+	version 52:0
+{
+
+
+Method "<init>":"()V"
+	stack 1 locals 1
+{
+		aload_0;
+		invokespecial	Method java/lang/Object."<init>":"()V";
+		return;
+}
+
+Method badMethod:"()V"
+	stack 0 locals 1
+{
+  /*
+    should be:
+		return;
+  */
+
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		pop;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		iconst_1;
+		pop;
+		pop;
+		pop;
+		pop;
+		pop;
+		pop;
+		pop;
+		pop;
+  // no return here -- so this class will fail verification
+}
+
+} // end Class MethodNoReturn
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/MissingSuper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class MissingSuper {
+    public static void main(String args[]) {
+        try {
+            new MissingSuperSub();
+        } catch (NoClassDefFoundError e) {
+            System.out.println("Expected NoClassDefFoundError:");
+            e.printStackTrace(System.out);
+        }
+
+        try {
+            new MissingSuperImpl();
+        } catch (NoClassDefFoundError e) {
+            System.out.println("Expected NoClassDefFoundError:");
+            e.printStackTrace(System.out);
+        }
+    }
+}
+
+class MissingSuperSup {} // This class will be deleted from missing_super.jar before dumping
+
+class MissingSuperSub extends MissingSuperSup {}
+
+interface MissingSuperIntf {} // This interface will be deleted from missing_super.jar before dumping
+
+class MissingSuperImpl implements MissingSuperIntf {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/MultiProcClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import sun.hotspot.WhiteBox;
+
+// This class should be loaded from a shared archive.
+public class MultiProcClass {
+    private static String instanceLabel;
+
+    public static void main(String args[]) throws Exception {
+        instanceLabel = args[0];
+        String checkPmap = args[1];
+
+        long pid = ProcessHandle.current().pid();
+        System.out.println(inst("========================== Starting MultiProcClass"));
+        System.out.println(inst("My PID: " + pid ));
+        System.out.println(inst("checkPmap = <" + checkPmap + ">" ));
+
+        if ("true".equals(checkPmap)) {
+            if (runPmap(pid, true) != 0)
+                System.out.println("MultiProcClass: Pmap failed");
+        }
+
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        if (!wb.isSharedClass(MultiProcClass.class)) {
+            throw new RuntimeException(inst("MultiProcClass should be shared but is not."));
+        }
+
+        System.out.println(inst("========================== Leaving MultiProcClass"));
+    }
+
+    // A convenience method to append process instance label
+    private static String inst(String msg) {
+        return "process-" + instanceLabel + " : " + msg;
+    }
+
+    // Use on Linux-only; requires jdk-9 for Process.pid()
+    public static int runPmap(long pid, boolean inheritIO) throws Exception {
+        ProcessBuilder pmapPb = new ProcessBuilder("pmap", "" + pid);
+        if (inheritIO)
+            pmapPb.inheritIO();
+
+        return pmapPb.start().waitFor();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/MyAnnotation.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+
+public @interface MyAnnotation {
+    public String name();
+    public String value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/MyThread.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+class MyThread extends Thread {
+    void foo() {}
+
+    public void run() {
+        while (true) {
+             foo();
+       }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/PackageSealingTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.lang.Package;
+
+public class PackageSealingTest {
+    public static void main(String args[]) {
+        try {
+            Class c1 = PackageSealingTest.class.forName("sealed.pkg.C1");
+            Class c2 = PackageSealingTest.class.forName("pkg.C2");
+            Package p1 = c1.getPackage();
+            System.out.println("Package 1: " + p1.toString());
+            Package p2 = c2.getPackage();
+            System.out.println("Package 2: " + p2.toString());
+
+            if (!p1.isSealed()) {
+                System.out.println("Failed: sealed.pkg is not sealed.");
+                System.exit(0);
+            }
+
+            if (p2.isSealed()) {
+                System.out.println("Failed: pkg is sealed.");
+                System.exit(0);
+            }
+
+            System.out.println("OK");
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/PackageTest.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+package p;
+
+public class PackageTest {
+    public static void main(String args[]) {
+        (new PackageTest()).test();
+    }
+
+    private void test() {
+        ClassLoader cl = PackageTest.class.getClassLoader();
+        Package pkg_from_loader;
+        if (cl != null) {
+            pkg_from_loader = cl.getDefinedPackage("p");
+        } else {
+            pkg_from_loader = Package.getPackage("p");
+        }
+
+        Package pkg = PackageTest.class.getPackage();
+        if (pkg_from_loader != null && pkg == pkg_from_loader &&
+            pkg.getName().equals("p")) {
+            System.out.println("Expected package: " + pkg);
+        } else {
+            System.out.println("Unexpected package: " + pkg);
+            System.exit(1);
+        }
+        if (pkg.isSealed()) {
+            System.out.println("Package is sealed");
+            System.exit(1);
+        } else {
+            System.out.println("Package is not sealed");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ParallelClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+class ParallelClass0 {}
+class ParallelClass1 {}
+class ParallelClass2 {}
+class ParallelClass3 {}
+class ParallelClass4 {}
+class ParallelClass5 {}
+class ParallelClass6 {}
+class ParallelClass7 {}
+class ParallelClass8 {}
+class ParallelClass9 {}
+class ParallelClass10 {}
+class ParallelClass11 {}
+class ParallelClass12 {}
+class ParallelClass13 {}
+class ParallelClass14 {}
+class ParallelClass15 {}
+class ParallelClass16 {}
+class ParallelClass17 {}
+class ParallelClass18 {}
+class ParallelClass19 {}
+class ParallelClass20 {}
+class ParallelClass21 {}
+class ParallelClass22 {}
+class ParallelClass23 {}
+class ParallelClass24 {}
+class ParallelClass25 {}
+class ParallelClass26 {}
+class ParallelClass27 {}
+class ParallelClass28 {}
+class ParallelClass29 {}
+class ParallelClass30 {}
+class ParallelClass31 {}
+class ParallelClass32 {}
+class ParallelClass33 {}
+class ParallelClass34 {}
+class ParallelClass35 {}
+class ParallelClass36 {}
+class ParallelClass37 {}
+class ParallelClass38 {}
+class ParallelClass39 {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ParallelLoad.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+import java.io.*;
+import java.net.*;
+import java.lang.reflect.Field;
+
+
+// This test helper is parameterized by:
+// - class transformation mode: property "appcds.parallel.transform.mode"
+// - class loader test types
+//
+// In the case of transformMode == "cflh", the transformation is performed
+// by AppCDS/jvmti/TransformerAgent.java. The classes to be transformed, such as
+// ParallelClassTr0, are defined in ./jvmti/parallelLoad/ParallelClasses.java
+
+public class ParallelLoad {
+    public static int MAX_CLASSES = 40;
+    public static int NUM_THREADS = 4;
+
+    public final static int SYSTEM_LOADER = 0;
+    public final static int SINGLE_CUSTOM_LOADER = 1;
+    public final static int MULTI_CUSTOM_LOADER = 2;
+
+    public static final int FINGERPRINT_MODE = 1;
+    public static final int API_MODE         = 2;
+
+    public static int loaderType = SYSTEM_LOADER;
+    public static ClassLoader classLoaders[];
+    public static int mode = FINGERPRINT_MODE;
+
+    public static float timeoutFactor =
+        Float.parseFloat(System.getProperty("test.timeout.factor", "1.0"));
+
+    public static void main(String args[]) throws Throwable {
+        run(args, null);
+    }
+    public static void run(String args[], ClassLoader loaders[]) throws Throwable {
+        String customJar = null;
+        System.out.println("ParallelLoad: timeoutFactor = " + timeoutFactor);
+
+        if (args.length >= 1) {
+            if ("SINGLE_CUSTOM_LOADER".equals(args[0])) {
+                loaderType = SINGLE_CUSTOM_LOADER;
+                customJar = args[2];
+            } else if ("MULTI_CUSTOM_LOADER".equals(args[0])) {
+                loaderType = MULTI_CUSTOM_LOADER;
+                customJar = args[2];
+            } else if ("SYSTEM_LOADER".equals(args[0])) {
+                loaderType = SYSTEM_LOADER;
+            } else {
+                throw new RuntimeException("Unexpected loaderType" + args[0]);
+            }
+        }
+
+        if (customJar != null) {
+            if ("FINGERPRINT_MODE".equals(args[1])) {
+                mode = FINGERPRINT_MODE;
+                classLoaders = new ClassLoader[NUM_THREADS];
+                for (int i=0; i<NUM_THREADS; i++) {
+                    URL url = new File(customJar).toURI().toURL();
+                    URL[] urls = new URL[] {url};
+                    classLoaders[i] = new URLClassLoader(urls);
+                }
+            } else {
+                // Loaders must be supplied by caller of the run() method
+                mode = API_MODE;
+                classLoaders = loaders;
+            }
+        }
+
+        System.out.println("Start Parallel Load ...");
+
+        Thread thread[] = new Thread[NUM_THREADS];
+        for (int i=0; i<NUM_THREADS; i++) {
+            Thread t = new ParallelLoadThread(i);
+            t.start();
+            thread[i] = t;
+        }
+
+        Thread watchdog = new ParallelLoadWatchdog();
+        watchdog.setDaemon(true);
+        watchdog.start();
+
+        for (int i=0; i<NUM_THREADS; i++) {
+            thread[i].join();
+        }
+        System.out.println("Parallel Load ... done");
+        System.exit(0);
+    }
+}
+
+
+class ParallelLoadWatchdog extends Thread {
+    public void run() {
+        try {
+            long timeout = (long) (20 * 1000 * ParallelLoad.timeoutFactor);
+            Thread.sleep(timeout);
+            System.out.println("ParallelLoadWatchdog: Timeout reached: timeout(ms) = " + timeout);
+            System.exit(1);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.exit(1);
+        }
+    }
+};
+
+
+class ParallelLoadThread extends Thread {
+    static int num_ready[] = new int[ParallelLoad.MAX_CLASSES];
+    static Object lock = new Object();
+    static String transformMode =
+        System.getProperty("appcds.parallel.transform.mode", "none");
+
+    int thread_id;
+    ParallelLoadThread(int thread_id) {
+        this.thread_id = thread_id;
+    }
+
+    public void run() {
+        try {
+            run0();
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void log(String msg, Object... args) {
+        String msg0 = "ParallelLoadThread: " + String.format(msg, args);
+        System.out.println(msg0);
+    }
+
+    private void run0() throws Throwable {
+        for (int i=0; i<ParallelLoad.MAX_CLASSES; i++) {
+            synchronized(lock) {
+                num_ready[i] ++;
+                while (num_ready[i] < ParallelLoad.NUM_THREADS) {
+                    lock.wait();
+                }
+                lock.notifyAll();
+            }
+            log("this = %s %d", this, i);
+            String className = "ParallelClass" + i;
+            if (transformMode.equals("cflh"))
+                className = "ParallelClassTr" + i;
+
+            Class clazz = null;
+
+            switch (ParallelLoad.loaderType) {
+            case ParallelLoad.SYSTEM_LOADER:
+                clazz = Class.forName(className);
+                break;
+            case ParallelLoad.SINGLE_CUSTOM_LOADER:
+                clazz = ParallelLoad.classLoaders[0].loadClass(className);
+                break;
+            case ParallelLoad.MULTI_CUSTOM_LOADER:
+                clazz = ParallelLoad.classLoaders[thread_id].loadClass(className);
+                break;
+            }
+
+            log("clazz = %s", clazz);
+            testTransformation(clazz);
+        }
+    }
+
+    private void testTransformation(Class c) throws Exception {
+        if (transformMode.equals("none"))
+            return;
+
+        // currently only cflh transform mode is supported
+        if (!transformMode.equals("cflh")) {
+            String msg = "wrong transform mode: " + transformMode;
+            throw new IllegalArgumentException(msg);
+        }
+
+        Field[] fields = c.getFields();
+        boolean fieldFound = false;
+        for (Field f : fields) {
+            if (f.getName().equals("testString")) {
+                checkTransformationString(c, (String) f.get(null));
+                fieldFound = true;
+            }
+        }
+
+        if (!fieldFound)
+            throw new RuntimeException ("Expected field 'testString' not found");
+    }
+
+    private void checkTransformationString(Class c, String actual) throws Exception {
+        String expected = "class-transform-check: this-has-been--transformed";
+        if (!actual.equals(expected)) {
+            String msg1 = "Transformation failed for class" + c.getName();
+            String msg2 = String.format("Expected: %s, actual: %s", expected, actual);
+            throw new RuntimeException(msg1 + "\n" + msg2);
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Prohibited.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package java/lang;
+
+public class Prohibited
+    version 51:0
+{
+} // end class Prohibited
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProhibitedHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2017, 2019, 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.
+ *
+ */
+
+public class ProhibitedHelper {
+    public static void main(String[] args) throws Throwable {
+
+        String className = "java.lang.Prohibited";
+        ClassLoader sysLoader = ClassLoader.getSystemClassLoader();
+        try {
+            Module unnamedModule = sysLoader.getUnnamedModule();
+            Class cls = Class.forName(unnamedModule, className);
+            System.out.println("cls " + cls);
+            throw new java.lang.RuntimeException(className +
+                "in a prohibited package shouldn't be loaded");
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (!(e instanceof java.lang.SecurityException)) {
+                throw new java.lang.RuntimeException(
+                    "SecurityException is expected to be thrown while loading " + className);
+            }
+        }
+
+        try {
+            Class cls = Class.forName(className, false, sysLoader);
+            System.out.println("cls " + cls);
+            throw new java.lang.RuntimeException(className +
+                "in a prohibited package shouldn't be loaded");
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (!(e instanceof java.lang.ClassNotFoundException)) {
+                throw new java.lang.RuntimeException(
+                    "ClassNotFoundException is expected to be thrown while loading " + className);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProtDomain.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.security.ProtectionDomain;
+
+// See ../AppCDSProtectionDomain.java
+//
+// ProtDomain      is     stored in CDS archive.
+// ProtDomainOther is NOT stored in CDS archive.
+//
+// However, they should have the same ProtectionDomain instance.
+public class ProtDomain {
+  public static void main(String args[]) {
+    System.out.println("Testing ProtDomain");
+    ProtectionDomain mine = ProtDomain.class.getProtectionDomain();
+    ProtectionDomain his  = ProtDomainOther.class.getProtectionDomain();
+
+    System.out.println("mine = " + mine);
+    System.out.println("his  = " + his);
+
+    if (mine == his) {
+      System.out.println("Protection Domains match");
+    } else {
+      throw new RuntimeException("Protection Domains do not match!");
+    }
+  }
+}
+
+class ProtDomainOther {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ProtDomainB.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+import java.security.ProtectionDomain;
+
+// See ../AppCDSProtectionDomain.java
+//
+// ProtDomainB      is NOT stored in CDS archive.
+// ProtDomainBOther is     stored in CDS archive.
+//
+// However, they should have the same ProtectionDomain instance.
+public class ProtDomainB {
+  public static void main(String args[]) {
+    System.out.println("Testing ProtDomainB");
+    ProtectionDomain mine = ProtDomainB.class.getProtectionDomain();
+    ProtectionDomain his  = ProtDomainBOther.class.getProtectionDomain();
+
+    System.out.println("mine = " + mine);
+    System.out.println("his  = " + his);
+
+    if (mine == his) {
+      System.out.println("Protection Domains match");
+    } else {
+      throw new RuntimeException("Protection Domains do not match!");
+    }
+  }
+}
+
+class ProtDomainBOther {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/ReportMyLoader.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class ReportMyLoader {
+    public static void main(String args[]) {
+        System.out.println("ReportMyLoader's loader = " + ReportMyLoader.class.getClassLoader());
+        System.out.println("TestClassLoader.called = " + TestClassLoader.called);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/RewriteBytecodes.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.File;
+import sun.hotspot.WhiteBox;
+
+public class RewriteBytecodes {
+  public static void main(String args[]) throws Throwable {
+    String from = "___xxx___";
+    String to   = "___yyy___";
+    File clsFile = new File(args[0]);
+    Class superClass = Util.defineModifiedClass(RewriteBytecodes.class.getClassLoader(), clsFile, from, to);
+
+    Child child = new Child();
+
+    if (child.getClass().getSuperclass() != superClass) {
+      throw new RuntimeException("Mismatched super class");
+    }
+    // Even if the Super class is not loaded from the CDS archive, make sure the Child class
+    // can still be loaded successfully, and properly inherits from the rewritten version
+    // of Super.
+    if (!child.toString().equals(to)) {
+      throw new RuntimeException("Wrong output, expected: " + to + ", but got: " + child.toString());
+    }
+
+    WhiteBox wb = WhiteBox.getWhiteBox();
+    if (wb.isSharedClass(superClass)) {
+      throw new RuntimeException("wb.isSharedClass(superClass) should be false");
+    }
+    if (wb.isSharedClass(child.getClass())) {
+      throw new RuntimeException("wb.isSharedClass(child.getClass()) should be false");
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Super.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+public class Super {
+  public String toString() {
+    return "___xxx___";
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestClassLoader.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+// This is a class loader that simply delegates all calls to its parent loader.
+
+public class TestClassLoader extends ClassLoader {
+    static boolean called = false;
+    ClassLoader parent;
+    public TestClassLoader(ClassLoader parent) {
+        super(parent);
+        this.parent = parent;
+    }
+
+    public Class<?> loadClass(String name, boolean resolve)
+        throws ClassNotFoundException
+    {
+        called = true;
+        System.out.println("TestClassLoader: loadClass(\"" + name + "\", " + resolve + ")");
+        return (super.loadClass(name, resolve));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/TestWithProfilerHelper.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+public class TestWithProfilerHelper {
+    public static void main(String[] args) throws Exception {
+        Thread t = new MyThread();
+        t.start();
+        String prop = "TestWithProfiler.timeout";
+        int secs = Integer.parseInt(System.getProperty(prop, "15"));
+        System.out.println("Run for -D" + prop + "=" + secs  + " (seconds)");
+        Thread.sleep(secs * 1000);
+        System.exit(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/TrySwitchMyLoader.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+public class TrySwitchMyLoader {
+    public static void main(String args[]) {
+        System.out.println("TrySwitchMyLoader's loader = " + ReportMyLoader.class.getClassLoader());
+        System.setProperty("java.system.class.loader", "TestClassLoader");
+
+        // This should still report the same loader as TrySwitchMyLoader.class.getClassLoader(),
+        // as setting the java.system.class.loader after main method has been executed
+        // has no effect.
+        ReportMyLoader.main(args);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/Util.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2015, 2019, 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.
+ *
+ */
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.jar.*;
+
+public class Util {
+    /**
+     * Invoke the loader.defineClass() class method to define the class stored in clsFile,
+     * with the following modification:
+     * <ul>
+     *  <li> All ASCII strings in the class file bytes that matches fromString will be replaced with toString.
+     *       NOTE: the two strings must be the exact same length.
+     * </ul>
+     */
+    public static Class defineModifiedClass(ClassLoader loader, File clsFile, String fromString, String toString)
+        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
+               InvocationTargetException
+    {
+      try (DataInputStream dis = new DataInputStream(new FileInputStream(clsFile))) {
+        byte[] buff = new byte[(int)clsFile.length()];
+        dis.readFully(buff);
+        replace(buff, fromString, toString);
+
+        System.out.println("Loading from: " + clsFile + " (" + buff.length + " bytes)");
+
+        Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
+                                                                 buff.getClass(), int.class, int.class);
+        defineClass.setAccessible(true);
+
+        // We directly call into ClassLoader.defineClass() to define the "Super" class. Also,
+        // rewrite its classfile so that it returns ___yyy___ instead of ___xxx___. Changing the
+        // classfile will guarantee that this class will NOT be loaded from the CDS archive.
+        Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
+        System.out.println("Loaded : " + cls);
+
+        return cls;
+      }
+    }
+
+    /**
+     * @return the number of occurrences of the <code>from</code> string that
+     * have been replaced.
+     */
+    public static int replace(byte buff[], String from, String to) {
+        if (to.length() != from.length()) {
+            throw new RuntimeException("bad strings");
+        }
+        byte f[] = asciibytes(from);
+        byte t[] = asciibytes(to);
+        byte f0 = f[0];
+
+        int numReplaced = 0;
+        int max = buff.length - f.length;
+        for (int i=0; i<max; ) {
+            if (buff[i] == f0 && replace(buff, f, t, i)) {
+                i += f.length;
+                numReplaced ++;
+            } else {
+                i++;
+            }
+        }
+        return numReplaced;
+    }
+
+    public static boolean replace(byte buff[], byte f[], byte t[], int i) {
+        for (int x=0; x<f.length; x++) {
+            if (buff[x+i] != f[x]) {
+                return false;
+            }
+        }
+        for (int x=0; x<f.length; x++) {
+            buff[x+i] = t[x];
+        }
+        return true;
+    }
+
+    static byte[] asciibytes(String s) {
+        byte b[] = new byte[s.length()];
+        for (int i=0; i<b.length; i++) {
+            b[i] = (byte)s.charAt(i);
+        }
+        return b;
+    }
+
+    public static Class defineClassFromJAR(ClassLoader loader, File jarFile, String className)
+        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
+               InvocationTargetException {
+        return defineClassFromJAR(loader, jarFile, className, null, null);
+    }
+
+    /**
+     * Invoke the loader.defineClass() class method to define the named class stored in a JAR file.
+     *
+     * If a class exists both in the classpath, as well as in the list of URLs of a URLClassLoader,
+     * by default, the URLClassLoader will not define the class, and instead will delegate to the
+     * app loader. This method is an easy way to force the class to be defined by the URLClassLoader.
+     *
+     * Optionally, you can modify the contents of the classfile buffer. See comments in
+     * defineModifiedClass.
+     */
+    public static Class defineClassFromJAR(ClassLoader loader, File jarFile, String className,
+                                           String fromString, String toString)
+        throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
+               InvocationTargetException
+    {
+        byte[] buff = getClassFileFromJar(jarFile, className);
+
+        if (fromString != null) {
+            replace(buff, fromString, toString);
+        }
+
+        //System.out.println("Loading from: " + ent + " (" + buff.length + " bytes)");
+
+        Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
+                                                                 buff.getClass(), int.class, int.class);
+        defineClass.setAccessible(true);
+        Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
+
+        //System.out.println("Loaded : " + cls);
+        return cls;
+    }
+
+    public static byte[] getClassFileFromJar(File jarFile, String className) throws FileNotFoundException, IOException {
+        JarFile jf = new JarFile(jarFile);
+        JarEntry ent = jf.getJarEntry(className.replace('.', '/') + ".class");
+
+        try (DataInputStream dis = new DataInputStream(jf.getInputStream(ent))) {
+            byte[] buff = new byte[(int)ent.getSize()];
+            dis.readFully(buff);
+            return buff;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/VerifierTest0.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2014, 2019, 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.
+ *
+ */
+
+/*
+ * Note: verifier_test_tmp.jar will be processed by ../AppCDSVerifierTest.java to
+ * create verifier_test.jar, which contains invalid versions of UnverifiableBase
+ * and UnverifiableIntf.
+ */
+
+public class VerifierTest0 {
+  public static void main(String args[]) {
+    boolean good = true;
+    good &= mustBeInvalid("VerifierTestA");
+    good &= mustBeInvalid("VerifierTestB");
+    good &= mustBeInvalid("VerifierTestC");
+    good &= mustBeInvalid("VerifierTestD");
+    good &= mustBeInvalid("VerifierTestE");
+    if (!good) {
+      System.out.println("VerifierTest0 failed");
+      System.exit(1);
+    }
+  }
+
+  /** @return false means error */
+  static boolean mustBeInvalid(String className) {
+    System.out.println("Testing: " + className);
+    try {
+      Class.forName(className);
+      System.out.println("ERROR: class " + className + " was loaded unexpectedly.");
+      return false;
+    } catch (Throwable t) {
+      System.out.println("Expected exception:");
+      t.printStackTrace();
+      return true;
+    }
+  }
+}
+
+class UnverifiableBase {
+  static final VerifierTest0 x = new VerifierTest0(); // <- this static initializer will be made unverifiable by type mismatch
+}
+
+interface UnverifiableIntf {
+  static final VerifierTest0 x = new VerifierTest0(); // <- this static initializer will be made unverifiable by type mismatch
+}
+
+interface UnverifiableIntfSub extends UnverifiableIntf {}
+
+class VerifierTestA extends    UnverifiableBase {}
+class VerifierTestB extends    VerifierTestA {}
+class VerifierTestC implements UnverifiableIntf {}
+class VerifierTestD extends    VerifierTestC {}
+class VerifierTestE implements UnverifiableIntfSub {}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/com/sun/tools/javac/Main.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package com/sun/tools/javac;
+
+public class Main
+    version 51:0
+{
+} // end class Main
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr1.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: cpattr2.jar
+Created-By: 1.9.0-internal (Oracle Corporation)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr1_long.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Class-Path: zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.ja
+ r zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz
+ .jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.j
+ ar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar
+  zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar z
+ zzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzz
+ zzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzz
+ zz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz
+ .jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.j
+ ar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzz
+ z.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.
+ jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.ja
+ r zzzzzzz.jar zzzzzzz.jar xx.jar zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar 
+ zzzzzzz.jar zzzzzzz.jar zzzzzzz.jar xx.jar cpattr2.jar cpattr1_long.j
+ ar
+Created-By: 1.9.0-internal (Oracle Corporation)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr2.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Class-Path: cpattr3.jar cpattr5_123456789_223456789_323456789_42345678
+ 9_523456789_623456789.jar
+Created-By: 1.9.0-internal (Oracle Corporation)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr3.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Created-By: 1.9.0-internal (Oracle Corporation)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr4.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Created-By: 1.9.0-internal (Oracle Corporation)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/cpattr5_extra_long.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Created-By: 1.9.0-internal (Oracle Corporation)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/java/net/HttpCookie.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package java/net;
+
+public class HttpCookie
+    version 51:0
+{
+
+public Method thisClassIsDummy:"()V"
+    stack 0 locals 0
+{
+    return;
+}
+
+} // end class HttpCookie
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/javax/transaction/InvalidTransactionException.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ *
+ */
+
+package javax/transaction;
+
+public class InvalidTransactionException
+    version 51:0
+{
+
+public Method thisClassIsDummy:"()V"
+    stack 0 locals 0
+{
+    return;
+}
+
+} // end class InvalidTransactionException
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/appcds/test-classes/package_seal.mf	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Created-By: 1.9.0-internal (Oracle Corporation)
+
+Name: sealed/pkg/
+Sealed: true
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/javax/annotation/processing/FilerException.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ */
+
+package javax/annotation/processing;
+
+public class FilerException
+    version 51:0
+{
+
+public Method "<init>":"()V"
+    stack 1 locals 1
+{
+    aload_0;
+    invokespecial   Method java/lang/Object."<init>":"()V";
+    return;
+}
+
+
+public Method toString:"()Ljava/lang/String;"
+    stack 1 locals 1
+{
+    ldc String "hi";
+    areturn; 
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/javax/sound/sampled/MyClass.jasm	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+package javax/sound/sampled;
+
+public class MyClass
+    version 51:0
+{
+
+public Method "<init>":"()V"
+    stack 1 locals 1
+{
+    aload_0;
+    invokespecial   Method java/lang/Object."<init>":"()V";
+    return;
+}
+
+
+public Method toString:"()Ljava/lang/String;"
+    stack 1 locals 1
+{
+    ldc String "hi";
+    areturn; 
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/nonjdk/myPackage/MyClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+package nonjdk.myPackage;
+
+public class MyClass {
+    public String toString() {
+        return "hi";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/ReplaceCriticalClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests how CDS works when critical library classes are replaced with JVMTI ClassFileLoadHook
+ * @library /test/lib
+ * @requires vm.cds
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
+ * @run main/othervm/native ReplaceCriticalClasses
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+import sun.hotspot.WhiteBox;
+
+public class ReplaceCriticalClasses {
+    public static void main(String args[]) throws Throwable {
+        ReplaceCriticalClasses rcc = new ReplaceCriticalClasses();
+        rcc.process(args);
+    }
+
+    public void process(String args[]) throws Throwable {
+        if (args.length == 0) {
+            // Dump the shared archive in case it was not generated during the JDK build.
+            // Put the archive at separate file to avoid clashes with concurrent tests.
+            CDSOptions opts = new CDSOptions()
+                .setXShareMode("dump")
+                .setArchiveName(ReplaceCriticalClasses.class.getName() + ".jsa")
+                .setUseVersion(false)
+                .addSuffix("-showversion");
+            CDSTestUtils.run(opts).assertNormalExit("");
+
+            launchChildProcesses(getTests());
+        } else if (args.length == 3 && args[0].equals("child")) {
+            Class klass = Class.forName(args[2].replace("/", "."));
+            if (args[1].equals("-shared")) {
+                testInChild(true, klass);
+            } else if (args[1].equals("-notshared")) {
+                testInChild(false, klass);
+            } else {
+                throw new RuntimeException("Unknown child exec option " + args[1]);
+            }
+            return;
+        } else {
+            throw new RuntimeException("Usage: @run main/othervm/native ReplaceCriticalClasses");
+        }
+    }
+
+    public String[] getTests() {
+        String tests[] = {
+            // CDS should be disabled -- these critical classes will be replaced
+            // because JvmtiExport::early_class_hook_env() is true.
+            "-early -notshared java/lang/Object",
+            "-early -notshared java/lang/String",
+            "-early -notshared java/lang/Cloneable",
+            "-early -notshared java/io/Serializable",
+
+            // CDS should not be disabled -- these critical classes cannot be replaced because
+            // JvmtiExport::early_class_hook_env() is false.
+            "java/lang/Object",
+            "java/lang/String",
+            "java/lang/Cloneable",
+            "java/io/Serializable",
+
+            /* Try to replace classes that are used by the archived subgraph graphs.
+               The following test cases are in ReplaceCriticalClassesForSubgraphs.java.
+            "-early -notshared -subgraph java/lang/module/ResolvedModule jdk.internal.module.ArchivedModuleGraph",
+            "-early -notshared -subgraph java/lang/Long java.lang.Long$LongCache",
+            "-subgraph java/lang/Long java.lang.Long$LongCache",
+            */
+
+            // Replace classes that are loaded after JVMTI_PHASE_PRIMORDIAL. It's OK to replace
+            // such
+            // classes even when CDS is enabled. Nothing bad should happen.
+            "-notshared java/util/Locale",
+            "-notshared sun/util/locale/BaseLocale",
+            "-notshared java/lang/Readable",
+        };
+        return tests;
+    }
+
+    static void launchChildProcesses(String tests[]) throws Throwable {
+        int n = 0;
+        for (String s : tests) {
+            System.out.println("Test case[" + (n++) + "] = \"" + s + "\"");
+            String args[] = s.split("\\s+"); // split by space character
+            launchChild(args);
+        }
+    }
+
+    static void launchChild(String args[]) throws Throwable {
+        if (args.length < 1) {
+            throw new RuntimeException("Invalid test case. Should be <-early> <-subgraph> <-notshared> klassName subgraphKlass");
+        }
+        String klassName = null;
+        String subgraphKlass = null;
+        String early = "";
+        boolean subgraph = false;
+        String shared = "-shared";
+
+        for (int i=0; i<args.length-1; i++) {
+            String opt = args[i];
+            if (opt.equals("-early")) {
+                early = "-early,";
+            } else if (opt.equals("-subgraph")) {
+                subgraph = true;
+            } else if (opt.equals("-notshared")) {
+                shared = opt;
+            } else {
+              if (!subgraph) {
+                throw new RuntimeException("Unknown option: " + opt);
+              }
+            }
+        }
+        if (subgraph) {
+          klassName = args[args.length-2];
+          subgraphKlass = args[args.length-1];
+        } else {
+          klassName = args[args.length-1];
+        }
+        Class.forName(klassName.replace("/", ".")); // make sure it's a valid class
+        final String subgraphInit = "initialize_from_archived_subgraph " + subgraphKlass;
+
+        // We will pass an option like "-agentlib:SimpleClassFileLoadHook=java/util/Locale,XXX,XXX".
+        // The SimpleClassFileLoadHook agent would attempt to hook the java/util/Locale class
+        // but leave the class file bytes unchanged (it replaces all bytes "XXX" with "XXX", i.e.,
+        // a no-op). JVMTI doesn't check the class file bytes returned by the agent, so as long
+        // as the agent returns a buffer, it will not load the class from CDS, and will instead
+        // load the class by parsing the buffer.
+        //
+        // Note that for safety we don't change the contents of the class file bytes. If in the
+        // future JVMTI starts checking the contents of the class file bytes, this test would need
+        // to be updated. (You'd see the test case with java/util/Locale staring to fail).
+        String agent = "-agentlib:SimpleClassFileLoadHook=" + early + klassName + ",XXX,XXX";
+
+        CDSOptions opts = (new CDSOptions())
+            .setXShareMode("auto")
+            .setArchiveName(ReplaceCriticalClasses.class.getName() + ".jsa")
+            .setUseVersion(false)
+            .addSuffix("-showversion",
+                       "-Xlog:cds",
+                       "-XX:+UnlockDiagnosticVMOptions",
+                       agent,
+                       "-XX:+WhiteBoxAPI",
+                       "-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"));
+
+        if (subgraph) {
+            opts.addSuffix("-Xlog:cds,cds+heap");
+        }
+
+        opts.addSuffix("ReplaceCriticalClasses",
+                       "child",
+                       shared,
+                       klassName);
+
+        final boolean expectDisable = !early.equals("");
+        final boolean checkSubgraph = subgraph;
+        final boolean expectShared = shared.equals("-shared");
+        CDSTestUtils.run(opts).assertNormalExit(out -> {
+                if (expectDisable) {
+                    out.shouldContain("UseSharedSpaces: CDS is disabled because early JVMTI ClassFileLoadHook is in use.");
+                    System.out.println("CDS disabled as expected");
+                }
+                if (checkSubgraph) {
+                    if (expectShared) {
+                        if (!out.getOutput().contains("UseSharedSpaces: Unable to map at required address in java heap")) {
+                            out.shouldContain(subgraphInit);
+                        }
+                    } else {
+                      out.shouldNotContain(subgraphInit);
+                    }
+                }
+            });
+    }
+
+    static void testInChild(boolean shouldBeShared, Class klass) {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        if (shouldBeShared && !wb.isSharedClass(klass)) {
+            throw new RuntimeException(klass + " should be shared but but actually is not.");
+        }
+        if (!shouldBeShared && wb.isSharedClass(klass)) {
+            throw new RuntimeException(klass + " should not be shared but actually is.");
+        }
+        System.out.println("wb.isSharedClass(klass): " + wb.isSharedClass(klass) + " == " + shouldBeShared);
+
+        String strings[] = {
+            // interned strings from j.l.Object
+            "@",
+            "nanosecond timeout value out of range",
+            "timeoutMillis value is negative",
+
+            // interned strings from j.l.Integer
+            "0",
+            "0X",
+            "0x",
+            "int"
+        };
+
+        // Make sure the interned string table is same
+        for (String s : strings) {
+            String i = s.intern();
+            if (s != i) {
+                throw new RuntimeException("Interned string mismatch: \"" + s + "\" @ " + System.identityHashCode(s) +
+                                           " vs \"" + i + "\" @ " + System.identityHashCode(i));
+            }
+        }
+        // We have tried to use ClassFileLoadHook to replace critical library classes (which may
+        // may not have succeeded, depending on whether the agent has requested
+        // can_generate_all_class_hook_events/can_generate_early_class_hook_events capabilities).
+        //
+        // In any case, the JVM should have started properly (perhaps with CDS disabled) and
+        // the above operations should succeed.
+        System.out.println("If I can come to here without crashing, things should be OK");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/ReplaceCriticalClassesForSubgraphs.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018, 2019, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Tests how CDS works when critical library classes are replaced with JVMTI ClassFileLoadHook
+ * @library /test/lib
+ * @requires vm.cds.archived.java.heap
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox
+ * @run main/othervm/native ReplaceCriticalClassesForSubgraphs
+ */
+
+public class ReplaceCriticalClassesForSubgraphs extends ReplaceCriticalClasses {
+    public static void main(String args[]) throws Throwable {
+        ReplaceCriticalClassesForSubgraphs rcc = new ReplaceCriticalClassesForSubgraphs();
+        rcc.process(args);
+    }
+
+    public String[] getTests() {
+        String tests[] = {
+            // Try to replace classes that are used by the archived subgraph graphs.
+            "-early -notshared -subgraph java/lang/module/ResolvedModule jdk.internal.module.ArchivedModuleGraph",
+            "-early -notshared -subgraph java/lang/Long java.lang.Long$LongCache",
+            "-subgraph java/lang/Long java.lang.Long$LongCache",
+        };
+        return tests;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/Implementor.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+public class Implementor implements Interface {
+    public static void main(String[] args) {
+        System.out.println("Implementor: entering main()");
+        test();
+    }
+
+    public static void test() {
+        // from interface
+        (new Implementor()).printString();
+        // from implementor
+        System.out.println(TransformUtil.ChildCheckPattern +
+                           TransformUtil.BeforePattern);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/Interface.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+public interface Interface {
+    public static final String stringToBeTransformed =
+        TransformUtil.ParentCheckPattern + TransformUtil.BeforePattern;
+
+    default void printString() {
+        System.out.println(stringToBeTransformed);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/SubClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+public class SubClass extends SuperClazz {
+    public static void main(String[] args) {
+        System.out.println("SubClass: entering main()");
+        test();
+    }
+
+    public static void test() {
+        // The line below will be used to check for successful class transformation
+        System.out.println(TransformUtil.ChildCheckPattern +
+                           TransformUtil.BeforePattern);
+        (new SubClass()).callParent();
+    }
+
+    private void callParent() {
+        super.testParent();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/SuperClazz.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+
+public class SuperClazz {
+    public static void testParent() {
+        System.out.println("SuperClazz: entering testParent()");
+
+        // The line below will be used to check for successful class transformation
+        System.out.println(TransformUtil.ParentCheckPattern + TransformUtil.BeforePattern);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TestEntry.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+
+// Test Entry - a single entry in a test table
+// that defines a test case
+// See TransformRelatedClasses.java for more details
+public class TestEntry {
+    int testCaseId;
+    boolean transformParent;
+    boolean transformChild;
+    boolean isParentExpectedShared;
+    boolean isChildExpectedShared;
+
+    public TestEntry(int testCaseId,
+                     boolean transformParent, boolean transformChild,
+                     boolean isParentExpectedShared, boolean isChildExpectedShared) {
+        this.testCaseId = testCaseId;
+        this.transformParent = transformParent;
+        this.transformChild = transformChild;
+        this.isParentExpectedShared = isParentExpectedShared;
+        this.isChildExpectedShared = isChildExpectedShared;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+/**
+ * @test
+ * @summary Exercise initial transformation (ClassFileLoadHook)
+ *  with CDS with Interface/Implementor pair
+ * @library /test/lib /runtime/cds /testlibrary/jvmti
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ *          java.instrument
+ * @build TransformUtil TransformerAgent Interface Implementor
+ * @run main/othervm TransformRelatedClasses Interface Implementor
+ */
+
+// Clarification on @requires declarations:
+// CDS is not supported w/o the use of Compressed OOPs
+// JVMTI's ClassFileLoadHook is not supported under minimal VM
+
+// This test class uses TransformRelatedClasses to do its work.
+// The goal of this test is to exercise transformation of related interface
+// and its implementor in combination with CDS.
+// The transformation is done via ClassFileLoadHook mechanism.
+// Both superclass and subclass reside in the shared archive.
+// The test consists of 4 test cases where transformation is applied
+// to an interface and an implementor in a combinatorial manner.
+// Please see TransformRelatedClasses.java for details.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformRelatedClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+
+// This is the main test class for testing transformation of related classes
+// in combination with CDS, to ensure these features work well together.
+// The relationships that can be tested using this test class are:
+// superclass/subclass, and interface/implementor relationships.
+//
+// The test uses combinatorial approach.
+// For details on test table and test cases see main() method in this class.
+//
+// This test consists of multiple classes for better flexibility and reuse,
+// and also relies on certain common utility code.
+// Here are the details on the structure of the test
+//
+// Structure of the test:
+// TransformRelatedClasses -- common main test driver
+//     The TransformRelatedClasses is invoked from test driver classes:
+//     TransformInterfaceAndImplementor, TransformSuperAndSubClasses
+//     It is responsible for preparing test artifacts (test jar, agent jar
+//     and the shared archive), running test cases and checking the results.
+// The following test classes below are launched in a sub-process with use
+// of shared archive:
+//     SuperClazz, SubClass -- super/sub class pair under test
+//     Interface, Implementor -- classes under test
+// This test will transform these classes, based on the test case data,
+// by changing a predefined unique string in each class.
+// For more details, see the test classes' code and comments.
+//
+// Other related classes:
+//     TestEntry - a class representing a single test case, as test entry in the table
+//     TransformTestCommon - common methods for transformation test cases
+//
+// Other utility/helper classes and files used in this test:
+//     TransformerAgent - an agent that is used when JVM-under-test is executed
+//         to transform specific strings inside specified classes
+//     TransformerAgent.mf - accompanies transformer agent
+
+import java.io.File;
+import java.util.ArrayList;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+
+public class TransformRelatedClasses {
+    static final String archiveName = "./TransformRelatedClasses.jsa";
+    static String agentClasses[] = {
+        "TransformerAgent",
+        "TransformerAgent$SimpleTransformer",
+        "TransformUtil"
+    };
+
+    String parent;
+    String child;
+    String[] testClasses = new String[2];
+    String[] testNames = new String[2];
+    String testJar;
+    String agentJar;
+
+
+    private static void log(String msg) {
+        System.out.println("TransformRelatedClasses: " + msg);
+    }
+
+
+    // This class is intended to test 2 parent-child relationships:
+    // 1. Base Class (parent) and Derived Class (child)
+    // 2. Interface (parent) and Implementor (child)
+    //    Parameters to main(): parent, child
+    public static void main(String args[]) throws Exception {
+        TransformRelatedClasses test = new TransformRelatedClasses(args[0], args[1]);
+        test.prepare();
+
+        // Test Table
+        // TestEntry:  (testCaseId, transformParent, tranformChild,
+        //             isParentExpectedShared, isChildExpectedShared)
+        ArrayList<TestEntry> testTable = new ArrayList<>();
+
+        // base case - no tranformation - all expected to be shared
+        testTable.add(new TestEntry(0, false, false, true, true));
+
+        // transform parent only - both parent and child should not be shared
+        testTable.add(new TestEntry(1, true, false, false, false));
+
+        // transform parent and child - both parent and child should not be shared
+        testTable.add(new TestEntry(2, true, true, false, false));
+
+        // transform child only - parent should still be shared, but not child
+        testTable.add(new TestEntry(3, false, true, true, false));
+
+        // run the tests
+        for (TestEntry entry : testTable) {
+            test.runTest(entry);
+        }
+    }
+
+
+    public TransformRelatedClasses(String parent, String child) {
+        log("Constructor: parent = " + parent + ", child = " + child);
+        this.parent = parent;
+        this.child = child;
+        testClasses[0] = parent;
+        testClasses[1] = child;
+        testNames[0] = parent.replace('.', '/');
+        testNames[1] = child.replace('.', '/');
+    }
+
+
+    // same test jar and archive can be used for all test cases
+    private void prepare() throws Exception {
+        // create agent jar
+        // Agent is the same for all test cases
+        String pathToManifest = "../../../../testlibrary/jvmti/TransformerAgent.mf";
+        agentJar = ClassFileInstaller.writeJar("TransformerAgent.jar",
+                       ClassFileInstaller.Manifest.fromSourceFile(pathToManifest),
+                                           agentClasses);
+
+        // create a test jar
+        testJar =
+            ClassFileInstaller.writeJar(parent + "-" + child + ".jar",
+                                           testClasses);
+
+        // create an archive
+        String classList =
+            CDSTestUtils.makeClassList("transform-" + parent, testNames).getPath();
+
+        CDSTestUtils.createArchiveAndCheck("-Xbootclasspath/a:" + testJar,
+            "-XX:ExtraSharedClassListFile=" + classList);
+    }
+
+
+    private void runTest(TestEntry entry) throws Exception {
+        log("runTest(): testCaseId = " + entry.testCaseId);
+
+        // execute with archive
+        String agentParam = "-javaagent:" + agentJar + "=" +
+            TransformTestCommon.getAgentParams(entry, parent, child);
+
+        CDSOptions opts = new CDSOptions()
+            .addPrefix("-Xbootclasspath/a:" + testJar, "-Xlog:class+load=info")
+            .setUseVersion(false)
+            .addSuffix( "-showversion",agentParam, child);
+
+        OutputAnalyzer out = CDSTestUtils.runWithArchive(opts);
+        TransformTestCommon.checkResults(entry, out, parent, child);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+
+/**
+ * @test
+ * @summary Exercise initial transformation (ClassFileLoadHook)
+ *  with CDS with SubClass and SuperClass
+ * @library /test/lib /runtime/cds /testlibrary/jvmti
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ *          java.instrument
+ * @build TransformUtil TransformerAgent SubClass SuperClazz
+ * @run main/othervm TransformRelatedClasses SuperClazz SubClass
+*/
+
+// Clarification on @requires declarations:
+// CDS is not supported w/o the use of Compressed OOPs
+// JVMTI's ClassFileLoadHook is not supported under minimal VM
+
+// This test class uses TransformRelatedClasses to do its work.
+// The goal of this test is to exercise transformation of related superclass
+// and subclass in combination with CDS.
+// The transformation is done via ClassFileLoadHook mechanism.
+// Both superclass and subclass reside in the shared archive.
+// The test consists of 4 test cases where transformation is applied
+// to a parent and child in combinatorial manner.
+// Please see TransformRelatedClasses.java for details.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+
+/**
+ * @test
+ * @summary Exercise initial transformation (ClassFileLoadHook)
+ *  with CDS with SubClass and SuperClass, each lives in own separate package
+ * @library /test/lib /runtime/cds /testlibrary/jvmti
+ * @requires vm.cds
+ * @requires vm.flavor != "minimal"
+ * @requires !vm.graal.enabled
+ * @modules java.base/jdk.internal.misc
+ *          jdk.jartool/sun.tools.jar
+ *          java.management
+ *          java.instrument
+ * @build TransformUtil TransformerAgent SubClass SuperClazz
+ * @compile myPkg2/SubClass.java myPkg1/SuperClazz.java
+ * @run main/othervm TransformRelatedClasses myPkg1.SuperClazz myPkg2.SubClass
+*/
+
+// Clarification on @requires declarations:
+// CDS is not supported w/o the use of Compressed OOPs
+// JVMTI's ClassFileLoadHook is not supported under minimal VM
+
+// This test class uses TransformRelatedClasses to do its work.
+// The goal of this test is to exercise transformation of related superclass
+// and subclass in combination with CDS; each class lives in its own package.
+// The transformation is done via ClassFileLoadHook mechanism.
+// Both superclass and subclass reside in the shared archive.
+// The test consists of 4 test cases where transformation is applied
+// to a parent and child in combinatorial manner.
+// Please see TransformRelatedClasses.java for details.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/TransformTestCommon.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+
+// This class contains methods common to all transformation test cases
+public class TransformTestCommon {
+
+    // get parameters to an agent depending on the test case
+    // these parameters will instruct the agent which classes should be
+    // transformed
+    public static String getAgentParams(TestEntry entry,
+                                        String parent, String child) {
+
+        if (entry.transformParent && entry.transformChild)
+            return parent + "," + child;
+        if (entry.transformParent)
+            return parent;
+        if (entry.transformChild)
+            return child;
+
+        return "";
+    }
+
+
+    private static void checkTransformationResults(TestEntry entry,
+                                                   OutputAnalyzer out)
+        throws Exception {
+
+        if (entry.transformParent)
+            out.shouldContain(TransformUtil.ParentCheckPattern +
+                              TransformUtil.AfterPattern);
+
+        if (entry.transformChild)
+            out.shouldContain(TransformUtil.ChildCheckPattern +
+                              TransformUtil.AfterPattern);
+    }
+
+
+    private static void checkSharingByClass(TestEntry entry, OutputAnalyzer out,
+                                            String parent, String child)
+        throws Exception {
+
+        String parentSharedMatch = " " + parent + " source: shared objects file";
+        String childSharedMatch =  " " + child +  " source: shared objects file";
+
+        if (entry.isParentExpectedShared)
+            out.shouldContain(parentSharedMatch);
+        else
+            out.shouldNotContain(parentSharedMatch);
+
+        if (entry.isChildExpectedShared)
+            out.shouldContain(childSharedMatch);
+        else
+            out.shouldNotContain(childSharedMatch);
+    }
+
+
+    // Both parent and child classes should be passed to ClassFileTransformer.transform()
+    // exactly once.
+    private static void checkTransformationCounts(TestEntry entry, OutputAnalyzer out,
+                                                  String parent, String child)
+        throws Exception {
+
+        String patternBase = "TransformerAgent: SimpleTransformer called for: ";
+
+        out.shouldContain(patternBase + child + "@1");
+        out.shouldContain(patternBase + parent + "@1");
+
+        out.shouldNotContain(patternBase + child + "@2");
+        out.shouldNotContain(patternBase + parent + "@2");
+    }
+
+
+    public static void checkResults(TestEntry entry, OutputAnalyzer out,
+                                    String parent, String child)
+        throws Exception {
+
+        // If we were not able to map an archive,
+        // then do not perform other checks, since
+        // there was no sharing at all
+        CDSTestUtils.checkMappingFailure(out);
+
+        String childVmName = child.replace('.', '/');
+        String parentVmName = parent.replace('.', '/');
+
+        CDSTestUtils.checkExec(out);
+        checkTransformationCounts(entry, out, parentVmName, childVmName);
+        checkTransformationResults(entry, out);
+        checkSharingByClass(entry, out, parent, child);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/myPkg1/SuperClazz.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+package myPkg1;
+
+public class SuperClazz {
+    public static void testParent() {
+        System.out.println("SuperClazz: entering testParent()");
+
+        // The line below will be used to check for successful class transformation
+        System.out.println("parent-transform-check: this-should-be-transformed");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/cds/serviceability/transformRelatedClasses/myPkg2/SubClass.java	Mon Jul 29 10:34:20 2019 -0400
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, 2019, 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.
+ */
+
+package myPkg2;
+
+import myPkg1.SuperClazz;
+
+public class SubClass extends SuperClazz {
+    public static void main(String[] args) {
+        System.out.println("SubClass: entering main()");
+        test();
+    }
+
+    public static void test() {
+        // The line below will be used to check for successful class transformation
+        System.out.println("child-transform-check: this-should-be-transformed");
+        (new SubClass()).callParent();
+
+        // Get the system packages, which should contain myPkg1 and myPkag2
+        Package[] pkgs = Package.getPackages();
+        for (int i = 0; i < pkgs.length; i++) {
+            if (pkgs[i].getName().equals("myPkg1")) {
+                for (int j = 0; j < pkgs.length; j++) {
+                    if (pkgs[j].getName().equals("myPkg2")) {
+                        return; // found myPkg1 & myPkg1
+                    }
+                }
+            }
+        }
+        throw new RuntimeException("Missing system package");
+    }
+
+    private void callParent() {
+        super.testParent();
+    }
+}