changeset 10923:f79e943d15a7

Merge jdk8u292-b05
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Sun, 25 Apr 2021 18:18:49 +0100
parents 27cf2684ed40 (diff) a5795acea814 (current diff)
children dd646a857cc3
files .hgtags THIRD_PARTY_README agent/make/Makefile agent/src/os/linux/LinuxDebuggerLocal.c agent/src/os/linux/Makefile agent/src/os/linux/libproc.h agent/src/share/classes/sun/jvm/hotspot/HSDB.java agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxCDebugger.java agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64CurrentFrameGuess.java agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java agent/src/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java make/defs.make make/linux/makefiles/aarch64.make make/linux/makefiles/buildtree.make make/linux/makefiles/defs.make make/linux/makefiles/gcc.make make/linux/makefiles/sa.make make/linux/platform_aarch64 make/windows/makefiles/compile.make src/cpu/aarch64/vm/aarch64.ad src/cpu/aarch64/vm/aarch64Test.cpp src/cpu/aarch64/vm/aarch64_ad.m4 src/cpu/aarch64/vm/assembler_aarch64.cpp src/cpu/aarch64/vm/assembler_aarch64.hpp src/cpu/aarch64/vm/assembler_aarch64.inline.hpp src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.cpp src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.hpp src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.inline.hpp src/cpu/aarch64/vm/bytecodes_aarch64.cpp src/cpu/aarch64/vm/bytecodes_aarch64.hpp src/cpu/aarch64/vm/bytes_aarch64.hpp src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp src/cpu/aarch64/vm/c1_Defs_aarch64.hpp src/cpu/aarch64/vm/c1_FpuStackSim_aarch64.cpp src/cpu/aarch64/vm/c1_FpuStackSim_aarch64.hpp src/cpu/aarch64/vm/c1_FrameMap_aarch64.cpp src/cpu/aarch64/vm/c1_FrameMap_aarch64.hpp src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.hpp src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp src/cpu/aarch64/vm/c1_LinearScan_aarch64.hpp src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.hpp src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp src/cpu/aarch64/vm/c1_globals_aarch64.hpp src/cpu/aarch64/vm/c2_globals_aarch64.hpp src/cpu/aarch64/vm/c2_init_aarch64.cpp src/cpu/aarch64/vm/codeBuffer_aarch64.hpp src/cpu/aarch64/vm/compiledIC_aarch64.cpp src/cpu/aarch64/vm/copy_aarch64.hpp src/cpu/aarch64/vm/cppInterpreterGenerator_aarch64.hpp src/cpu/aarch64/vm/debug_aarch64.cpp src/cpu/aarch64/vm/depChecker_aarch64.cpp src/cpu/aarch64/vm/depChecker_aarch64.hpp src/cpu/aarch64/vm/disassembler_aarch64.hpp src/cpu/aarch64/vm/frame_aarch64.cpp src/cpu/aarch64/vm/frame_aarch64.hpp src/cpu/aarch64/vm/frame_aarch64.inline.hpp src/cpu/aarch64/vm/globalDefinitions_aarch64.hpp src/cpu/aarch64/vm/globals_aarch64.hpp src/cpu/aarch64/vm/icBuffer_aarch64.cpp src/cpu/aarch64/vm/icache_aarch64.cpp src/cpu/aarch64/vm/icache_aarch64.hpp src/cpu/aarch64/vm/immediate_aarch64.cpp src/cpu/aarch64/vm/immediate_aarch64.hpp src/cpu/aarch64/vm/interp_masm_aarch64.cpp src/cpu/aarch64/vm/interp_masm_aarch64.hpp src/cpu/aarch64/vm/interpreterGenerator_aarch64.hpp src/cpu/aarch64/vm/interpreterRT_aarch64.cpp src/cpu/aarch64/vm/interpreterRT_aarch64.hpp src/cpu/aarch64/vm/interpreter_aarch64.cpp src/cpu/aarch64/vm/interpreter_aarch64.hpp src/cpu/aarch64/vm/javaFrameAnchor_aarch64.hpp src/cpu/aarch64/vm/jniFastGetField_aarch64.cpp src/cpu/aarch64/vm/jniTypes_aarch64.hpp src/cpu/aarch64/vm/jni_aarch64.h src/cpu/aarch64/vm/macroAssembler_aarch64.cpp src/cpu/aarch64/vm/macroAssembler_aarch64.hpp src/cpu/aarch64/vm/macroAssembler_aarch64.inline.hpp src/cpu/aarch64/vm/metaspaceShared_aarch64.cpp src/cpu/aarch64/vm/methodHandles_aarch64.cpp src/cpu/aarch64/vm/methodHandles_aarch64.hpp src/cpu/aarch64/vm/nativeInst_aarch64.cpp src/cpu/aarch64/vm/nativeInst_aarch64.hpp src/cpu/aarch64/vm/registerMap_aarch64.hpp src/cpu/aarch64/vm/register_aarch64.cpp src/cpu/aarch64/vm/register_aarch64.hpp src/cpu/aarch64/vm/register_definitions_aarch64.cpp src/cpu/aarch64/vm/relocInfo_aarch64.cpp src/cpu/aarch64/vm/relocInfo_aarch64.hpp src/cpu/aarch64/vm/runtime_aarch64.cpp src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp src/cpu/aarch64/vm/stubGenerator_aarch64.cpp src/cpu/aarch64/vm/stubRoutines_aarch64.cpp src/cpu/aarch64/vm/stubRoutines_aarch64.hpp src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.hpp src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp src/cpu/aarch64/vm/templateInterpreter_aarch64.hpp src/cpu/aarch64/vm/templateTable_aarch64.cpp src/cpu/aarch64/vm/templateTable_aarch64.hpp src/cpu/aarch64/vm/vmStructs_aarch64.hpp src/cpu/aarch64/vm/vm_version_aarch64.cpp src/cpu/aarch64/vm/vm_version_aarch64.hpp src/cpu/aarch64/vm/vm_version_ext_aarch64.cpp src/cpu/aarch64/vm/vmreg_aarch64.cpp src/cpu/aarch64/vm/vmreg_aarch64.hpp src/cpu/aarch64/vm/vmreg_aarch64.inline.hpp src/cpu/aarch64/vm/vtableStubs_aarch64.cpp src/cpu/ppc/vm/macroAssembler_ppc.cpp src/os/linux/vm/os_linux.cpp src/os_cpu/linux_aarch64/vm/assembler_linux_aarch64.cpp src/os_cpu/linux_aarch64/vm/atomic_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/bytes_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/copy_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/copy_linux_aarch64.s src/os_cpu/linux_aarch64/vm/globals_linux_aarch64.hpp src/os_cpu/linux_aarch64/vm/orderAccess_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp src/os_cpu/linux_aarch64/vm/os_linux_aarch64.hpp src/os_cpu/linux_aarch64/vm/os_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/prefetch_linux_aarch64.inline.hpp src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.cpp src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.hpp src/os_cpu/linux_aarch64/vm/thread_linux_aarch64.cpp src/os_cpu/linux_aarch64/vm/thread_linux_aarch64.hpp src/os_cpu/linux_aarch64/vm/vmStructs_linux_aarch64.hpp src/share/tools/hsdis/hsdis.c src/share/vm/adlc/formssel.cpp src/share/vm/adlc/main.cpp src/share/vm/asm/assembler.hpp src/share/vm/asm/assembler.inline.hpp src/share/vm/asm/codeBuffer.hpp src/share/vm/asm/macroAssembler.hpp src/share/vm/asm/macroAssembler.inline.hpp src/share/vm/asm/register.hpp src/share/vm/c1/c1_Canonicalizer.cpp src/share/vm/c1/c1_FrameMap.cpp src/share/vm/c1/c1_FrameMap.hpp src/share/vm/c1/c1_LIR.cpp src/share/vm/c1/c1_LIR.hpp src/share/vm/c1/c1_LIRAssembler.cpp src/share/vm/c1/c1_LIRAssembler.hpp src/share/vm/c1/c1_LIRGenerator.cpp src/share/vm/c1/c1_LinearScan.cpp src/share/vm/c1/c1_LinearScan.hpp src/share/vm/c1/c1_MacroAssembler.hpp src/share/vm/c1/c1_Runtime1.cpp src/share/vm/c1/c1_Runtime1.hpp src/share/vm/c1/c1_globals.hpp src/share/vm/ci/ciMethodData.cpp src/share/vm/classfile/bytecodeAssembler.cpp src/share/vm/classfile/classFileStream.hpp src/share/vm/classfile/stackMapTable.hpp src/share/vm/classfile/verifier.cpp src/share/vm/code/codeBlob.cpp src/share/vm/code/compiledIC.hpp src/share/vm/code/relocInfo.hpp src/share/vm/code/vmreg.hpp src/share/vm/compiler/disassembler.cpp src/share/vm/compiler/disassembler.hpp src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp src/share/vm/gc_implementation/g1/g1RemSet.cpp src/share/vm/gc_implementation/g1/heapRegion.cpp src/share/vm/gc_implementation/parNew/parNewGeneration.cpp src/share/vm/interpreter/abstractInterpreter.hpp src/share/vm/interpreter/bytecode.hpp src/share/vm/interpreter/bytecodeInterpreter.hpp src/share/vm/interpreter/bytecodeStream.hpp src/share/vm/interpreter/bytecodes.cpp src/share/vm/interpreter/bytecodes.hpp src/share/vm/interpreter/cppInterpreter.hpp src/share/vm/interpreter/cppInterpreterGenerator.hpp src/share/vm/interpreter/interpreter.hpp src/share/vm/interpreter/interpreterRuntime.cpp src/share/vm/interpreter/interpreterRuntime.hpp src/share/vm/interpreter/templateInterpreter.hpp src/share/vm/interpreter/templateInterpreterGenerator.hpp src/share/vm/interpreter/templateTable.hpp src/share/vm/memory/allocation.inline.hpp src/share/vm/memory/metaspace.cpp src/share/vm/oops/constantPool.hpp src/share/vm/oops/oop.inline.hpp src/share/vm/opto/buildOopMap.cpp src/share/vm/opto/c2_globals.hpp src/share/vm/opto/c2compiler.cpp src/share/vm/opto/callnode.hpp src/share/vm/opto/compile.cpp src/share/vm/opto/gcm.cpp src/share/vm/opto/graphKit.cpp src/share/vm/opto/lcm.cpp src/share/vm/opto/library_call.cpp src/share/vm/opto/locknode.hpp src/share/vm/opto/macro.cpp src/share/vm/opto/matcher.cpp src/share/vm/opto/memnode.cpp src/share/vm/opto/memnode.hpp src/share/vm/opto/output.hpp src/share/vm/opto/parse3.cpp src/share/vm/opto/phaseX.hpp src/share/vm/opto/regmask.cpp src/share/vm/opto/regmask.hpp src/share/vm/opto/runtime.cpp src/share/vm/prims/jniCheck.cpp src/share/vm/prims/jni_md.h src/share/vm/prims/jvmtiClassFileReconstituter.cpp src/share/vm/prims/jvmtiExport.cpp src/share/vm/prims/methodHandles.hpp src/share/vm/runtime/advancedThresholdPolicy.cpp src/share/vm/runtime/arguments.cpp src/share/vm/runtime/atomic.inline.hpp src/share/vm/runtime/deoptimization.cpp src/share/vm/runtime/dtraceJSDT.hpp src/share/vm/runtime/frame.cpp src/share/vm/runtime/frame.hpp src/share/vm/runtime/frame.inline.hpp src/share/vm/runtime/globals.hpp src/share/vm/runtime/java.cpp src/share/vm/runtime/javaCalls.hpp src/share/vm/runtime/javaFrameAnchor.hpp src/share/vm/runtime/os.hpp src/share/vm/runtime/relocator.hpp src/share/vm/runtime/safepoint.cpp src/share/vm/runtime/sharedRuntime.cpp src/share/vm/runtime/stackValueCollection.cpp src/share/vm/runtime/stubRoutines.hpp src/share/vm/runtime/thread.hpp src/share/vm/runtime/threadLocalStorage.hpp src/share/vm/runtime/vframeArray.cpp src/share/vm/runtime/vmStructs.cpp src/share/vm/runtime/vm_version.cpp src/share/vm/services/memoryPool.cpp src/share/vm/utilities/copy.hpp src/share/vm/utilities/globalDefinitions.hpp src/share/vm/utilities/macros.hpp test/aarch64/DoubleArithTests.java test/aarch64/DoubleCmpTests.java test/aarch64/FloatArithTests.java test/aarch64/FloatCmpTests.java test/aarch64/IntArithTests.java test/aarch64/IntCmpTests.java test/aarch64/IntLogicTests.java test/aarch64/IntShiftTests.java test/aarch64/LongArithTests.java test/aarch64/LongCmpTests.java test/aarch64/LongLogicTests.java test/aarch64/LongShiftTests.java test/compiler/intrinsics/mathexact/sanity/IntrinsicBase.java test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForOtherCPU.java test/compiler/testlibrary/sha/predicate/IntrinsicPredicates.java test/runtime/6929067/Test6929067.sh test/testlibrary/com/oracle/java/testlibrary/Platform.java
diffstat 116 files changed, 1386 insertions(+), 230 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Mar 01 20:02:58 2021 +0000
+++ b/.hgtags	Sun Apr 25 18:18:49 2021 +0100
@@ -50,6 +50,7 @@
 faf94d94786b621f8e13cbcc941ca69c6d967c3f jdk7-b73
 f4b900403d6e4b0af51447bd13bbe23fe3a1dac7 jdk7-b74
 d8dd291a362acb656026a9c0a9da48501505a1e7 jdk7-b75
+b4ab978ce52c41bb7e8ee86285e6c9f28122bbe1 icedtea7-1.12
 9174bb32e934965288121f75394874eeb1fcb649 jdk7-b76
 455105fc81d941482f8f8056afaa7aa0949c9300 jdk7-b77
 e703499b4b51e3af756ae77c3d5e8b3058a14e4e jdk7-b78
@@ -87,6 +88,7 @@
 07226e9eab8f74b37346b32715f829a2ef2c3188 hs18-b01
 e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87
 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b jdk7-b88
+a393ff93e7e54dd94cc4211892605a32f9c77dad icedtea7-1.13
 15836273ac2494f36ef62088bc1cb6f3f011f565 jdk7-b89
 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02
 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90
@@ -160,6 +162,7 @@
 b898f0fc3cedc972d884d31a751afd75969531cf hs21-b05
 bd586e392d93b7ed7a1636dcc8da2b6a4203a102 jdk7-b136
 bd586e392d93b7ed7a1636dcc8da2b6a4203a102 hs21-b06
+591c7dc0b2ee879f87a7b5519a5388e0d81520be icedtea-1.14
 2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f jdk7-b137
 2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f hs21-b07
 0930dc920c185afbf40fed9a655290b8e5b16783 jdk7-b138
@@ -305,6 +308,7 @@
 990bbd393c239d95310ccc38094e57923bbf1d4a hs25-b14
 e94068d4ff52849c8aa0786a53a59b63d1312a39 jdk8-b70
 0847210f85480bf3848dc90bc2ab23c0a4791b55 jdk8-b71
+2c52e96f640d60368c2efd07e1acfe35ec3e0045 initial_upload
 d5cb5830f570d1304ea4b196dde672a291b55f29 jdk8-b72
 1e129851479e4f5df439109fca2c7be1f1613522 hs25-b15
 11619f33cd683c2f1d6ef72f1c6ff3dacf5a9f1c jdk8-b73
@@ -322,7 +326,7 @@
 df5396524152118535c36da5801d828b560d19a2 hs25-b21
 4a198b201f3ce84433fa94a3ca65d061473e7c4c jdk8-b80
 dd6350b4abc4a6c19c89dd982cc0e4f3d119885c hs25-b22
-65b797426a3bec6e91b64085a0cfb94adadb634a jdk8-b81
+31390de29c4bb5f7e78b2e970f92197c04a4ed4d aarch64-20130813
 0631ebcc45f05c73b09a56c2586685af1f781c1d hs25-b23
 3db4ab0e12f437fe374817de346b2b0c6b4a5b31 jdk8-b82
 e3a41fc0234895eba4f272b984f7dacff495f8eb hs25-b24
@@ -381,6 +385,8 @@
 566db1b0e6efca31f181456e54c8911d0192410d hs25-b51
 c81dd5393a5e333df7cb1f6621f5897ada6522b5 jdk8-b109
 58043478c26d4e8bf48700acea5f97aba8b417d4 hs25-b52
+f043f9395d362da011b111cf8c142af1caf6f64d preview_rc1
+33029403ab5913db80c4e4d1870809d3ade8e81c preview_rc2
 6209b0ed51c086d4127bac0e086c8f326d1764d7 jdk8-b110
 562a3d356de67670b4172b82aca2d30743449e04 hs25-b53
 f6962730bbde82f279a0ae3a1c14bc5e58096c6e jdk8-b111
@@ -418,12 +424,17 @@
 d45454002494d147c0761e6b37d8a73064f3cf92 hs25-b68
 32f017489ba5dd1bedabb9fa1d26bcc74d0a72b6 hs25-b69
 35038da7bb9ddd367a0a6bf926dfb281aee1d554 jdk8-b127
+18e5cbbe8abf64a043e2482c625e04acde33a3f8 jdk8_b128_aarch64_rc1
+39d28a8ea5be4e5c1ce659b7e6b3dadbbb1f908b jdk8_b128_aarch64_rc3
+cc094e1af98de679e81d17d3fc2653158c7b26c6 jdk8_b128_aarch64_rc4
+e5b35062dee3eaeac2fb80aac932cbcc36256c92 jdk8_b128_aarch64_992
 874c0b4a946c362bbf20d37c2a564b39093152e6 jdk8-b128
 cb39165c4a65bbff8db356df411e762f9e5423b8 jdk8-b129
 1dbaf664a611e5d9cab6d1be42537b67d0d05f94 jdk8-b130
 b5e7ebfe185cb4c2eeb8a919025fc6a26be2fcef jdk8-b131
 9f9179e8f0cfe74c08f3716cf3c38e21e1de4c4a hs25-b70
 0c94c41dcd70e9a9b4d96e31275afd5a73daa72d jdk8-b132
+72b29bfe67fa902516bca75c166a29fccb8c5be2 jdk8_final
 4a35ef38e2a7bc64df20c7700ba69b37e3ddb8b5 jdk8u5-b01
 e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02
 2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03
@@ -471,6 +482,7 @@
 5186bc5047c1725888ed99f423bdfaa116e05abe hs25.20-b09
 4d73f1e99f97d1444e16ee5ef4634eb2129969ad jdk8u20-b09
 27a9e6a96a8ced7b7ee892d5d0f1a735b9010abb hs25.20-b10
+c2767d7216058484f87920557a3f9282506e5ce5 icedtea-3.0.0pre01
 300e2c5eeb2710de3630d14ffe4592214633dbff jdk8u20-b10
 70dc2c030c69470a5d9099b7f54e4cfef89276fd jdk8u20-b11
 b6a2ba7d3ea7259a76c8ff1ec22fac9094494c1c hs25.20-b11
@@ -496,6 +508,7 @@
 e4a6e7f1b90b85270aee1c54edaca3ef737082f1 hs25.20-b21
 f7429096a202cab5c36a0f20dea33c554026010f jdk8u20-b22
 7c56530b11496459e66cb9ea933035002311672c hs25.20-b22
+877471da7fbbe69d029b990b77a70e7fcf3d02ed icedtea-3.0.0pre02
 f09d1f6a401e25a54dad44bb7bea482e47558af5 jdk8u20-b23
 42ddd0bbcb6630fe463ec9bc1893c838d5edff1b jdk8u20-b24
 00cf2b6f51b9560b01030e8f4c28c466f0b21fe3 hs25.20-b23
@@ -574,6 +587,9 @@
 6b93bf9ea3ea57ed0fe53cfedb2f9ab912c324e5 jdk8u40-b12
 521e269ae1daa9df1cb0835b97aa76bdf340fcb2 hs25.40-b17
 86307d47790785398d0695acc361bccaefe25f94 jdk8u40-b13
+b280f4f4f11916e202aaa4d458630d4c26b59e2a jdk8u40-b12-aarch64
+26fc60dd5da8d3f1554fb8f2553f050839a539c6 jdk8u40-b12-aarch64-1262
+d7c03eb8b2c2bc4d34438699f07609ba4c4bca5c jdk8u40-b12-aarch64-1263
 4d5dc0d0f8799fafa1135d51d85edd4edd566501 hs25.40-b18
 b8ca8ec1daea70f7c0d519e866f9f147ec247055 jdk8u40-b14
 eb16b24e2eba9bdf04a9b377bebc2db9f713ff5e jdk8u40-b15
@@ -588,6 +604,9 @@
 d9349fa8822336e0244da0a8448f3e6b2d62741d jdk8u40-b19
 c3933f52eeb33f70ee562464edddfe9f01d944fd jdk8u40-b20
 d2e9a6bec4f2eec8506eed16f7324992a85d8480 hs25.40-b24
+85e5201a55e4dcf1b5dbb90bcfee072245e8a458 icedtea-3.0.0pre03
+7e5a87c79d696b280bae72ee7510e2a438c45960 icedtea-3.0.0pre04
+b07272ef9ccdf3066fbfd6e28bac10baad9417b6 icedtea-3.0.0pre05
 25ec4a67433744bbe3406e5069e7fd1876ebbf2f jdk8u40-b21
 0f0cb4eeab2d871274f4ffdcd6017d2fdfa89238 hs25.40-b25
 0ee548a1cda08c884eccd563e2d5fdb6ee769b5a jdk8u40-b22
@@ -722,6 +741,11 @@
 0e4094950cd312c8f95c7f37336606323fe049fe jdk8u60-b23
 d89ceecf1bad55e1aee2932b8895d60fc64c15db hs25.60-b23
 fb157d537278cda4150740e27bb57cd8694e15bf jdk8u60-b24
+11098f828fb815a467e77729f2055d6b1575ad3e arch64-jdk8u60-b24
+8ec803e97a0d578eaeaf8375ee295a5928eb546f aarch64-jdk8u60-b24.2
+2ee4407fe4e4ae13c5c7ef20709616cb3f43dea9 icedtea-3.0.0pre06
+ddebea156752c9a58ab2ab82f5dc28efee5f8f82 icedtea-3.0.0pre07
+c313c4782bb33aa4ea49f1342c54b3138af418a1 icedtea-3.0.0pre08
 6b4ea38c01bd9cc86d0aa8926f4855ff6ee365ee jdk8u60-b25
 6a6759372807f49aa7a66ddc36aa91d6648d2097 jdk8u60-b26
 10ad4b9d79f98fa3545c88a342a68a80d198b808 jdk8u60-b27
@@ -801,6 +825,7 @@
 b8e7dd0e21173ad829b40361763d27cb6ac532e9 jdk8u72-b12
 a8e4754b89aecc388623394a20f6d43d4c58f083 jdk8u72-b13
 dc2fdd4e0b8105268b8231040f761f27ab4523f2 jdk8u72-b14
+dbf85d44da89a2428b3bd678be791c314e148845 icedtea-3.0.0pre09
 d6670c5d49ba381405ec9f69a78ccc5b8b0c8473 jdk8u72-b15
 da43260704c28b9f19cb652090ae65c258220fd6 jdk8u72-b31
 26b99cd20661a1fa05939d1856a9389311e01c4f jdk8u73-b00
@@ -835,6 +860,9 @@
 1b6d4fd2730e58f17820930f797938dc182117c4 jdk8u77-b00
 ddd297e340b1170d3cec011ee64e729f8b493c86 jdk8u77-b01
 1b4072e4bb3ad54c4e894998486a8b33f0689160 jdk8u77-b02
+e9585e814cc954c06e870f3bdf37171029da0d5e icedtea-3.0.0pre10
+5e587a29a6aac06d6b5a7ebeea99a291d82520c8 icedtea-3.0.0
+49b8cecd1bbe2c2ba0ad1aec6722078b621866a1 icedtea-3.0-branchpoint
 223b64a19e94222dd97b92bb40abcfbc0bf6ef1f jdk8u77-b03
 bbbb05e91c629f8d9eef2ba43933767f68a898b0 jdk8u91-b00
 e36b6ade0499eadfd8673fe62ef0a613af2e6d67 jdk8u91-b13
@@ -859,6 +887,10 @@
 9a87701e22b3cae79fdfd8cdb732051e02a710fa jdk8u76-b12
 481dcde745b6aec035781ed9f6797cfc93719f71 jdk8u92-b00
 f3e1e734e2d29101a9537ddeb71ecad413fcd352 jdk8u92-b13
+cbd30c92ef7a62846124e28b35aaf668621b1105 icedtea-3.1.0pre01
+76eca5cf31500ecb1d1807685729a7ea5c3780e7 icedtea-3.1.0pre02
+ea6933324a7a52379d7f1e18e7525fd619079865 icedtea-3.1.0pre03
+0f47eef348e2ec17dd6492886c57e23023fbc435 icedtea-3.1.0pre04
 24a09407d71bb2cc4848bfa21660c890b4d722b1 jdk8u92-b14
 445941ba41c0e3829fe02140690b144281ac2141 jdk8u92-b31
 f958bebdee267695e37aadd27753ac8b1e1823c8 jdk8u92-b32
@@ -877,6 +909,8 @@
 218a44a163fa8c2532fd5f2e8ea9bc3c9c2ca8cf jdk8u101-b10
 0095e54dcaa1acfe1614feff9600734c26af7ae8 jdk8u101-b11
 286fe17d81c3d153611a28e50926083ae934cc56 jdk8u101-b12
+e480e0df8eea8e5d022672a450cd6c8e2eeac86b icedtea-3.1.0
+90416ba05ba1cde27da26ca1e6cc66062e883c17 icedtea-3.2.0pre01
 77df35b662ed98236f67ab18e23691460f986981 jdk8u101-b13
 d6c92b9e192ef97305a699e868387d55821c81ad jdk8u102-b00
 d6c92b9e192ef97305a699e868387d55821c81ad jdk8u82-b00
@@ -893,6 +927,8 @@
 36a1a2875ed55fa17818f3eb203e27922a7b4589 jdk8u102-b11
 340e1a736ef7169786e70db7f31ffd32bc3be24d jdk8u102-b12
 f6daf04c0f48dab5420ad63d21da82a7fa4e3ad7 jdk8u102-b13
+ac19c2e28a511cacde863e39802c2e5277e1665f icedtea-3.2.0pre02
+bca09127475293c1938b5413fbf25af2c281c597 icedtea-3.2.0pre03
 ac29c9c1193aef5d480b200ed94c5d579243c17b jdk8u102-b14
 96e1c72fc617d3c6c125bcfc9182f77fc6aa38e6 jdk8u102-b31
 c8988d2e4212583ec0f04591c8e241ad3cf95674 jdk8u102-b32
@@ -913,6 +949,7 @@
 603804f2132ff188a9f3d1c31cca63b47220e2e2 jdk8u111-b11
 055bc2a065a503e8714ff7ad27e6197dc0339efa jdk8u111-b12
 c3b42c43c230f10e79ae850ee9062fe86d3c75c9 jdk8u111-b13
+be4aeaa327f739d02d2c66a433ab2946ef19c5fb icedtea-3.2.0
 05a6a5823aa58a0a4720a328a9db484f21d573bc jdk8u111-b14
 b09a69142dd3bf78ca66bb0c99046ca7cccbdda9 jdk8u112-b00
 cf1faa9100dd8c8df6e1a604aaf613d037f51ebf jdk8u112-b01
@@ -930,6 +967,7 @@
 c2c4db2a42a215c98a4f027edb8bbb00dd62d9b9 jdk8u112-b14
 b28d012a24cab8f4ceeee0c9d3252969757423ed jdk8u112-b15
 e134dc1879b72124e478be01680b0646a2fbf585 jdk8u112-b16
+510bf6178ea48859804d69715a78b82b8d2c58d3 icedtea-3.3.0pre01
 87440ed4e1de7753a436f957d35555d8b4e26f1d jdk8u112-b31
 ba25f5833a128b8062e597f794efda26b30f095d jdk8u112-b32
 919ffdca10c2721ee0f6f233e704709174556510 jdk8u112-b33
@@ -946,6 +984,9 @@
 f26f6895c9dfb32dfb4c228d69b371d8ab118536 jdk8u121-b10
 11f91811e4d7e5ddfaf938dcf386ec8fe5bf7b7c jdk8u121-b11
 b132b08b28bf23a26329928cf6b4ffda5857f4d3 jdk8u121-b12
+2a767107aa8c8142d96eb95142b1ac82cf646568 icedtea-3.3.0pre02
+6efaf77e82a17344499a277f1909bd3825b1b5ac icedtea-3.3.0
+0bd3170be8c729dfaa88e7aa97449b2f36c650a9 icedtea-3.4.0pre01
 90f94521c3515e5f27af0ab9b31d036e88bb322a jdk8u121-b13
 351bf1d4ff9a41137f91e2ec97ec59ed29a38d8b jdk8u121-b31
 41daac438a2ac5a80755dc3de88b76e4ac66750a jdk8u121-b32
@@ -964,6 +1005,8 @@
 db221c0a423e776bec5c3198d11d3f26827bd786 jdk8u131-b08
 56e71d16083904ceddfdd1d66312582a42781646 jdk8u131-b09
 1da23ae49386608550596502d90a381ee6c1dfaa jdk8u131-b10
+00b7bbd261c972b38d4ecc2925f445c28de6fcb3 icedtea-3.4.0
+654b7fcb4932d48063f5f1fba0c8994db5e02976 icedtea-3.5.0pre01
 829ea9b92cda9545652f1b309f56c57383024ebb jdk8u131-b11
 41e0713bcca27cef5d6a9afd44c7ca4811937713 jdk8u131-b31
 e318654a4fa352a06935dd56eebf88ae387b31f9 jdk8u131-b32
@@ -984,8 +1027,13 @@
 d6e7c7d2c6f69906b4cb643a6813eccba0de988f jdk8u141-b12
 df6af363337eff5b22ae7940b0981231fdf5dfb4 jdk8u141-b13
 3a1543e089c32592be9c201c6e021295fbf5fdc1 jdk8u141-b14
+24ab92601b895b36ffc66e50e634cb962f8f6c1e icedtea-3.5.0
 23f1790147d838ddb1133cc79dc08e7c9ba5ab44 jdk8u141-b15
 eea89df81a8e414813d921eeeeef9b6795f56698 jdk8u144-b00
+ecaa25cbc662396ad7ea422bf43e23098af2100e icedtea-3.5.1
+24ab92601b895b36ffc66e50e634cb962f8f6c1e icedtea-3.6.0pre00
+ecaa25cbc662396ad7ea422bf43e23098af2100e icedtea-3.6.0pre01
+542f4e30fdffc87e5e098d81d69e7aa52d3c763c icedtea-3.6.0pre02
 db36f4d498b1bde975700a800b5ce732941c04b7 jdk8u144-b01
 9ffa0d7ed932045a0b4ceb095fb52444eed39c1b jdk8u141-b31
 ae8cae699f62b845703c891e0e7633e2089a3ec4 jdk8u141-b32
@@ -1007,6 +1055,7 @@
 8b0169692abbf8fb7972920cd79cee7dcab959c3 jdk8u151-b09
 e352e54382928eb8d5ec70455ef251973c332ccb jdk8u151-b10
 0f06584f52ffc8627b78f4d461a3eba2b703a8f7 jdk8u151-b11
+9bad7d4825fb14efb65fc7bad625bbeaf135339e icedtea-3.6.0
 856e341587d52114a753e48674517e7e307fceff jdk8u151-b12
 5aa8c4ca51f0e666d368a4f119ed734d3ac59d7c jdk8u122-b00
 2198ef7e1c1702b3506b95b5d8c886ad5a12bbe5 jdk8u122-b01
@@ -1034,6 +1083,7 @@
 3dd92151df1b3b7c21756f241b49607024b6fe5a jdk8u152-b13
 0a9d8db98fc5f0302da6520ba329f41baa092ae0 jdk8u152-b14
 c1bf165d3b27e864a9f8eec5bb0c1e746a972ad5 jdk8u152-b15
+c14f056eed68c18d6bb0d4314f1a645699b7a600 icedtea-3.7.0pre01
 98b4b0661837817cc39047000e1a7efa6015af7c jdk8u152-b16
 91894ffc746c1681172aaa37e2cf5bff69560f20 jdk8u152-b31
 d278f122e65dfb5d239ed420a534df75f527a504 jdk8u152-b32
@@ -1116,6 +1166,9 @@
 6e5cabb7995ef8357c5c61c16af659bf7cc1d2ff jdk8u161-b09
 b9a9aa038ad84a3fe6c91e27e359b95da8eb8629 jdk8u161-b10
 b1606443958a9a64020b596327ff586ca5c8ae1d jdk8u161-b11
+074a569c30e47bd860652f31d52418c8fa878f2f icedtea-3.7.0
+074a569c30e47bd860652f31d52418c8fa878f2f icedtea-3.8.0pre00
+8bb8d4e46d6736c6feee35453ade3ed28392835f icedtea-4-branchpoint
 210f7ef62595c608d69fc8bf442a4f5b0bceddb5 jdk8u161-b12
 7b96cfeed22242bb68a387d1680e602e37e48050 jdk8u162-b00
 92693f9dd704467ddd5fbae5a5908c1713a08ee0 jdk8u162-b01
@@ -1129,6 +1182,7 @@
 02f9409295f9ea7350cc2d25eeabf3c2b13b1df6 jdk8u162-b09
 c3618e1cdefdda6c262f082791bfd988e0e9d9c9 jdk8u162-b10
 39e2895b795aded8b584626fb019d35f12e9d1e7 jdk8u162-b11
+839becd2cb2fcc2f35ca421ae02f82173d999a86 icedtea-3.8.0pre01
 69aec2ca5d905dde1d0f29a89076d02a531808a3 jdk8u162-b12
 caac74fe3cfa9a8c859c28c97d1046a58252af27 jdk8u162-b31
 c9b7abadf150328d2187de05b9e8a9cba2486e47 jdk8u162-b32
@@ -1150,6 +1204,10 @@
 56123fdca84a3b253b8ea6f72be85bd2ebf39fd0 jdk8u171-b08
 4fefe015a728955c9c25ef79e51501b68839ae75 jdk8u171-b09
 6d890180aeb43ee727b2f2cc0952ae0e1b8566c8 jdk8u171-b10
+7f6e1069a5719c8908b53774d3560ce851c7cd70 icedtea-3.8.0pre02
+cb5711bf53d9278904c1ee63630a5c82189cb09a icedtea-3.8.0
+cb5711bf53d9278904c1ee63630a5c82189cb09a icedtea-3.9.0pre00
+0458118b5f190097099f2ea7b025cb2d5aeb0429 icedtea-3.9.0pre01
 23addae1b843a5027df6b4194f8c8de788da55ae jdk8u171-b11
 f299cf0b7baea1ae85f139f97adb9ab5499f402a jdk8u172-b00
 d10254debf7c1342416062bf1ba5258f16a8ce00 jdk8u172-b01
@@ -1164,6 +1222,7 @@
 5c1f180db1650f0f33e6005c1366f0d68242f1ad jdk8u172-b08
 aafd1bb21e2636ba982d3eae162f5c635a1df03a jdk8u172-b09
 dcd3ace969fcde4eedaddba629647656289d4264 jdk8u172-b10
+88515137e73f4feead41ec276a8d26d6f4d7b3d2 icedtea-3.9.0pre02
 083a9d6562100353708e4b73656282b21a78f714 jdk8u172-b11
 6e2be123a2e1c7671086c767e79ffe8ad5d4f9ca jdk8u181-b01
 1d0b6fcff115a57ca02081da84589630ba282789 jdk8u181-b02
@@ -1187,6 +1246,10 @@
 08b5e1f3d022fbe122b11b6f45f62b5a4ce92ed9 jdk8u181-b10
 e4f39d283b55faf6074308797615298bd1a45a66 jdk8u181-b11
 464ed8cea5d6cdbfacc9be7035297af88f57f708 jdk8u181-b12
+9062a259cecfe8e1f3386e2982eb77bd117c81e1 jdk8u181-b31
+d78088224b9836edf36034d076e7eee89a2a9b83 icedtea-3.9.0
+d78088224b9836edf36034d076e7eee89a2a9b83 icedtea-3.10.0pre00
+ccf1620f18d39c13b79923d25e965145e16c9e08 icedtea-3.10.0pre01
 eed8e846c982d7474dd07fc873ba02f83ad1f847 jdk8u181-b13
 21a3fffc43418f4d75c2091bf03478330b8a9a98 jdk8u191-b01
 2bf8498a25ec87c92584a6542f8724644c8c5706 jdk8u201-b00
@@ -1201,6 +1264,9 @@
 c0bd247ecd1cd09a129040e3fa1745c64db43b35 jdk8u191-b10
 055e1c867479452dd5d8c08905f7475aab25fcc1 jdk8u191-b25
 12e4de4b2499e9d9a1ae4fb0b63ca277cca150f4 jdk8u191-b11
+4e4ead43a282e8ef9fcd4ea7cfc56b0a9760d9af icedtea-3.10.0
+4e4ead43a282e8ef9fcd4ea7cfc56b0a9760d9af icedtea-3.11.0pre00
+1423aed335d6ef905adf8a7b2f86d47432ee3823 icedtea-3.11.0pre01
 4fc288749a236f6dd235336a46855a3133f83bde jdk8u191-b12
 ab9258f7206ea8745908e19de159888067939945 jdk8u191-b26
 c19c5b73704e3d188bedfe52a473b408ca39009f jdk8u182-b00
@@ -1218,6 +1284,7 @@
 b675533489ae1dc55469885471c9a29eca584d38 jdk8u192-b10
 338c85978b2283a975b762eead2fccc6d25a2bc2 jdk8u192-b25
 8df818c645d6081a387cf4fe9b9c14c0b5b639b1 jdk8u192-b11
+b99dbcd228f65dd6905feb7d07c64889e8a85bd7 icedtea-3.11.0pre02
 1f822ff877d1a250165d5d2d52faf6957f8fcd00 jdk8u192-b12
 e0e4c3a86ef0e4daf4fe96bd058045a2b13ebf84 jdk8u192-b26
 f7bd3ef62b03503c2abd2c877103fce4c41752ec jdk8u181-b31
@@ -1239,6 +1306,7 @@
 dee6a1ce4a0c526c47d71ef402d10e4b8915c5cb jdk8u201-b07
 e4daab85ac15ae3c51f14ed8fba888e54e4c6830 jdk8u201-b77
 e2c2448a1ca75333879e055655f11525decc2c39 jdk8u201-b08
+a24b4e46303eab1e8b89a7d96d5950c9f7f7b27a icedtea-3.11.0
 48947e4db9f3b88fd0ec55801e969a3bd6cb74a9 jdk8u201-b09
 bd988b43db1b5ca6ee545097e79ddc5a4c8b5c87 jdk8u201-b79
 b9347a42530a741b7028e0cce47ce0bdd70697a3 jdk8u201-b25
@@ -1251,6 +1319,8 @@
 04b9a5286eca10f676132ede70f29ba643f9b78b jdk8u202-b05
 2fa6434658660b4341be233828362e533782f036 jdk8u202-b06
 32c99b1faf57d7ed59e026339a4d7eb8f86b2d83 jdk8u202-b07
+2bbcdd69f3ac026ee53e3460a73c0162eaacf63d icedtea-3.12.0pre01
+a24b4e46303eab1e8b89a7d96d5950c9f7f7b27a icedtea-3.12.0pre00
 818b1963f7a227a2368a4f363d5500dd226a529e jdk8u202-b08
 1083b49a881011f43667ebebc280d519f077f9e6 jdk8u202-b25
 7a69774c67cb79a79ccb2ac2d6d258a11e22aa6f jdk8u202-b26
@@ -1262,6 +1332,7 @@
 96fec237fcc0acfcacea0a2bac07bf8ca919e64b jdk8u212-b03
 b2000ea410b0aa80d94a89105ba3dc8bdebd80b7 jdk8u212-b04
 96fec237fcc0acfcacea0a2bac07bf8ca919e64b jdk8u212-ga
+3f9a60eb8ef03dd72438eb923fc9547b4148605d icedtea-3.12.0
 7fe2cda84af1feec9dd512fd7d17f70bfe91a9d0 jdk8u222-b01
 32bc598624bd33a1a8847e84f791559f18a69a49 jdk8u222-b02
 af43bab3c5d022f0e0b7890f732d8b365b4364cc jdk8u222-b03
@@ -1274,7 +1345,11 @@
 55f693ba975d445d83a59cc32367ec4c2452b0c5 jdk8u222-b09
 adfdce09acc32a691145a67792d47ab637159776 jdk8u222-b10
 adfdce09acc32a691145a67792d47ab637159776 jdk8u222-ga
+d861794ddc0fb151bea6cfd4f7040beb1bb30d2a icedtea-3.13.0pre01
+ab8fadcbbde63b4396583f8d8eac13f80dbb8dd6 icedtea-3.13.0
 afa42cf8d060a12fe2fd24210cac6c46252fcd53 jdk8u232-b01
+ab8fadcbbde63b4396583f8d8eac13f80dbb8dd6 icedtea-3.14.0pre00
+a8b62a7ca9502647c7935ab10d8aa449de4a66b2 icedtea-3.14.0pre01
 c963a2881865f6fab5b49a31d22651e8e1b4bf46 jdk8u232-b02
 fa7fe6dae563edaae8a8bbe8ac4bd4fa942bde0c jdk8u232-b03
 921c5ee7965fdfde75f578ddda24d5cd16f124dc jdk8u232-b04
@@ -1285,6 +1360,9 @@
 4170228e11e6313e948e6ddcae9af3eed06b1fbe jdk8u232-b08
 12177d88b89c12c14daa5ad681030d7551e8a5a0 jdk8u232-b09
 12177d88b89c12c14daa5ad681030d7551e8a5a0 jdk8u232-ga
+4ccc1ae0394068367b45459a15675f496eda77d7 icedtea-3.14.0
+4ccc1ae0394068367b45459a15675f496eda77d7 icedtea-3.15.0pre00
+b011fbbb6f0b55d85a2d1c2cd81a999de9df9f8b icedtea-3.15.0pre01
 ce42ae95d4d671f74246091f89bd101d5bcbfd91 jdk8u242-b01
 775e2bf92114e41365cc6baf1480c818454256a4 jdk8u242-b02
 ee19c358e3b8deeda2f64d660a0870df7b1abd49 jdk8u242-b03
@@ -1294,7 +1372,10 @@
 8b80409d5840142a27e274d33948f483a6406a50 jdk8u242-b07
 7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-b08
 7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga
+f767447146983e6d1110c3f65eefb043b788e906 icedtea-3.15.0
+f767447146983e6d1110c3f65eefb043b788e906 icedtea-3.16.0pre00
 8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00
+efb699b681a1245f020ca62ff3aba76c45d17810 icedtea-3.16.0pre01
 a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01
 5bd3b8c0555292a967ea3b4c39a220d0c2cf40ad jdk8u252-b02
 2e972804450764c9ec3b7e548b07be869948ecca jdk8u252-b03
@@ -1306,6 +1387,9 @@
 8f2780b3e4faf4792ac885f470bb1602d4ca5526 jdk8u252-b08
 095e60e7fc8c7813c2e0e68637bd53c01f8cba64 jdk8u252-b09
 095e60e7fc8c7813c2e0e68637bd53c01f8cba64 jdk8u252-ga
+eeb08cfebdedf877ac22637a4f55a006f01ad990 icedtea-3.16.0
+eeb08cfebdedf877ac22637a4f55a006f01ad990 icedtea-3.17.0pre00
+88961de57e438b0b542677680ce540336cc8ca83 icedtea-3.17.0pre01
 0826fcd359395f47b968f3251ec77061109b2821 jdk8u262-b01
 4373df7c4a92ccf76b94769d9ff6b3f0e26f9659 jdk8u262-b02
 545fe7caa2fb4a6dc4b4f9bba9556e30886ca1f1 jdk8u262-b03
@@ -1324,6 +1408,7 @@
 85c9d74850ed3a6c99dd97c85d25ffb29afc0a28 jdk8u272-b01
 414c1dcfc3f3620b73cc7faf23f9a3ffde83b240 jdk8u272-b02
 e649f213636810823e761473ac871ce55a5235f7 jdk8u272-b03
+9cc00eb32cbd7a2081ebf67a778ab2137fafc3d1 icedtea-3.17.0pre02
 cbabffce5685f9a18bfd05bd1fb18c4c73be98cf jdk8u272-b04
 1b2d99958c293b7ab324c5786664f82c8e9c4e50 jdk8u272-b05
 4b0aa85a95653f44cc45f2ec0571153017ebbf03 jdk8u272-b06
@@ -1333,10 +1418,12 @@
 176a7e5cc0609cface769e5e8a31b00700d223ba jdk8u272-b09
 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u272-b10
 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u272-ga
+7caa24d952f7a997decdd33dcfed5261f6e0b74b icedtea-3.17.0
 7f7c1e1fbc8a70f9730339872ddf56fee812304c jdk8u282-b01
 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u275-b00
 b36c3f635d937798abe5e7c5a40a868705fed15e jdk8u275-b01
 b36c3f635d937798abe5e7c5a40a868705fed15e jdk8u275-ga
+e7fd2b284bd059020c3edfa7ba8c02febe0d5a59 icedtea-3.17.1
 312e9cb580c5c3f8f6ebf660b1f78ff060590ac4 jdk8u282-b02
 83661fdee9f08747a1d7a98123c00732b6a3a43d jdk8u282-b03
 d7c102fe9c4736bca65b25da69093d84da141e65 jdk8u282-b04
@@ -1345,6 +1432,7 @@
 3d42d5d7117dc6559c0d71fc8fceaaab96de376f jdk8u282-b07
 fcfacb8f9da0749c20b9618246adda82e5e6241f jdk8u282-b08
 fcfacb8f9da0749c20b9618246adda82e5e6241f jdk8u282-ga
+adc340baec52aad297d19836cc3f9050c9d2fbba icedtea-3.18.0
 d7c102fe9c4736bca65b25da69093d84da141e65 jdk8u292-b00
 4fbe1b3f53bf38bbc326e9ec6714758c4abf0818 jdk8u292-b01
 540c4d7153913e8ab6f65441d93941cc427b27bb jdk8u292-b02
--- a/.jcheck/conf	Mon Mar 01 20:02:58 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-project=jdk8
-bugids=dup
--- a/agent/make/Makefile	Mon Mar 01 20:02:58 2021 +0000
+++ b/agent/make/Makefile	Sun Apr 25 18:18:49 2021 +0100
@@ -151,7 +151,6 @@
 sun/jvm/hotspot/debugger/posix/*.java \
 sun/jvm/hotspot/debugger/posix/elf/*.java \
 sun/jvm/hotspot/debugger/proc/*.java \
-sun/jvm/hotspot/debugger/proc/amd64/*.java \
 sun/jvm/hotspot/debugger/proc/sparc/*.java \
 sun/jvm/hotspot/debugger/proc/x86/*.java \
 sun/jvm/hotspot/debugger/proc/aarch64/*.java \
--- a/make/aix/makefiles/defs.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/aix/makefiles/defs.make	Sun Apr 25 18:18:49 2021 +0100
@@ -186,12 +186,14 @@
 # client and server subdirectories have symbolic links to ../libjsig.so
 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
 #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+#ifneq ($(STRIP_POLICY),no_strip)
 #  ifeq ($(ZIP_DEBUGINFO_FILES),1)
 #    EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
 #  else
 #    EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
 #  endif
 #endif
+#endif
 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
 EXPORT_MINIMAL_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/minimal
@@ -200,24 +202,28 @@
   EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
   EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
 #  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+#  ifneq ($(STRIP_POLICY),no_strip)
 #    ifeq ($(ZIP_DEBUGINFO_FILES),1)
 #      EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
 #    else
 #      EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
 #    endif
 #  endif
+#  endif
 endif
 
 ifeq ($(JVM_VARIANT_CLIENT),true)
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
 #  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+#  ifneq ($(STRIP_POLICY),no_strip)
 #    ifeq ($(ZIP_DEBUGINFO_FILES),1)
 #      EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
 #    else
 #      EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
 #    endif
 #  endif
+#  endif
 endif
 
 # Serviceability Binaries
--- a/make/aix/makefiles/jsig.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/aix/makefiles/jsig.make	Sun Apr 25 18:18:49 2021 +0100
@@ -65,6 +65,7 @@
                          $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(JSIG_OPT_FLAGS) -o $@ $< -ldl
 
 #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+#ifneq ($(STRIP_POLICY),no_strip)
 #	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
 #	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
 #  ifeq ($(STRIP_POLICY),all_strip)
@@ -80,6 +81,7 @@
 #	$(RM) $(LIBJSIG_DEBUGINFO)
 #  endif
 #endif
+#endif
 
 install_jsig: $(LIBJSIG)
 	@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
--- a/make/aix/makefiles/saproc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/aix/makefiles/saproc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -88,8 +88,10 @@
 	           -o $@                                                \
 	           -lthread_db
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
 	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+  endif
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -99,8 +101,10 @@
     endif
   endif
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
+    ifneq ($(STRIP_POLICY),no_strip)
 	$(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
 	$(RM) $(LIBSAPROC_DEBUGINFO)
+    endif
   endif
 endif
 
--- a/make/aix/makefiles/vm.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/aix/makefiles/vm.make	Sun Apr 25 18:18:49 2021 +0100
@@ -330,6 +330,7 @@
 #	}
 
 #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+#ifneq ($(STRIP_POLICY),no_strip)
 #	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
 #	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
 #    ifeq ($(STRIP_POLICY),all_strip)
@@ -345,6 +346,7 @@
 #	$(RM) $(LIBJVM_DEBUGINFO)
 #  endif
 #endif
+#endif
 
 DEST_SUBDIR        = $(JDK_LIBDIR)/$(VM_SUBDIR)
 DEST_JVM           = $(DEST_SUBDIR)/$(LIBJVM)
--- a/make/bsd/makefiles/defs.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/bsd/makefiles/defs.make	Sun Apr 25 18:18:49 2021 +0100
@@ -269,6 +269,7 @@
 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
 
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
   else
@@ -279,6 +280,7 @@
     endif
   endif
 endif
+endif
 
 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
@@ -289,6 +291,7 @@
   EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
 
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
         EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
     else
@@ -299,6 +302,7 @@
       endif
     endif
   endif
+  endif
 endif
 
 ifeq ($(JVM_VARIANT_CLIENT),true)
@@ -306,6 +310,7 @@
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
 
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
         EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
     else
@@ -316,6 +321,7 @@
       endif
     endif
   endif
+  endif
 endif
 
 ifeq ($(JVM_VARIANT_MINIMAL1),true)
@@ -329,6 +335,7 @@
                         $(EXPORT_LIB_DIR)/sa-jdi.jar
 
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
       ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
   else
@@ -346,6 +353,7 @@
                             $(EXPORT_LIB_DIR)/sa-jdi.jar
 
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
       ADD_SA_BINARIES/universal += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
   else
@@ -356,6 +364,7 @@
     endif
   endif
 endif
+endif
 
 ADD_SA_BINARIES/ppc   =
 ADD_SA_BINARIES/ia64  =
@@ -398,6 +407,7 @@
     UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/server/Xusage.txt
     UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/client/Xusage.txt
     ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    ifneq ($(STRIP_POLICY),no_strip)
       ifeq ($(ZIP_DEBUGINFO_FILES),1)
           UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/server/libjvm.diz
           UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/client/libjvm.diz
@@ -410,6 +420,7 @@
           UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM
       endif
     endif
+    endif
 
   endif
 endif
--- a/make/bsd/makefiles/jsig.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/bsd/makefiles/jsig.make	Sun Apr 25 18:18:49 2021 +0100
@@ -69,6 +69,7 @@
 	$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
                          $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(JSIG_OPT_FLAGS) $(EXTRA_CFLAGS) -o $@ $<
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(OS_VENDOR), Darwin)
 	$(DSYMUTIL) $@
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
@@ -92,6 +93,7 @@
     endif
   endif
 endif
+endif
 
 install_jsig: $(LIBJSIG)
 	@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
--- a/make/bsd/makefiles/saproc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/bsd/makefiles/saproc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -137,6 +137,7 @@
 	           -o $@                                                \
 	           $(SALIBS)
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(OS_VENDOR), Darwin)
 	$(DSYMUTIL) $@
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
@@ -160,6 +161,7 @@
     endif
   endif
 endif
+endif
 
 install_saproc: $(BUILDLIBSAPROC)
 	@echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"
--- a/make/bsd/makefiles/vm.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/bsd/makefiles/vm.make	Sun Apr 25 18:18:49 2021 +0100
@@ -341,6 +341,7 @@
 	}
 
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(OS_VENDOR), Darwin)
 	$(DSYMUTIL) $@
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
@@ -364,6 +365,7 @@
     endif
   endif
 endif
+endif
 
 DEST_SUBDIR        = $(JDK_LIBDIR)/$(VM_SUBDIR)
 DEST_JVM           = $(DEST_SUBDIR)/$(LIBJVM)
--- a/make/linux/makefiles/buildtree.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/linux/makefiles/buildtree.make	Sun Apr 25 18:18:49 2021 +0100
@@ -237,6 +237,8 @@
 	echo "VENDOR_URL = $(VENDOR_URL)"; \
 	echo "VENDOR_URL_BUG = $(VENDOR_URL_BUG)"; \
 	echo "VENDOR_URL_VM_BUG = $(VENDOR_URL_VM_BUG)"; \
+	echo "DERIVATIVE_ID = $(DERIVATIVE_ID)"; \
+	echo "DISTRIBUTION_ID = $(DISTRIBUTION_ID)"; \
 	echo "OPENJDK = $(OPENJDK)"; \
 	echo "$(LP64_SETTING/$(DATA_MODE))"; \
 	echo; \
--- a/make/linux/makefiles/gcc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/linux/makefiles/gcc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -202,14 +202,16 @@
 endif
 
 # Compiler warnings are treated as errors
+ifneq ($(COMPILER_WARNINGS_FATAL),false)
 WARNINGS_ARE_ERRORS = -Werror
+endif
 
 ifeq ($(USE_CLANG), true)
   # However we need to clean the code up before we can unrestrictedly enable this option with Clang
   WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses
   WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-constant-out-of-range-compare -Wno-tautological-compare
   WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess
-  WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
+  WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body -Qunused-arguments -Wno-uninitialized
 endif
 
 WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wformat=2 -Wreturn-type
@@ -263,6 +265,9 @@
   ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
     OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT)
   endif
+  ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 9), 1)
+    OPT_CFLAGS += -fno-devirtualize
+  endif
 endif
 
 # Flags for generating make dependency flags.
@@ -337,18 +342,40 @@
 # DEBUG_BINARIES uses full -g debug information for all configs
 ifeq ($(DEBUG_BINARIES), true)
   CFLAGS += -g
+  ASFLAGS += -g
 else
+  # Use the stabs format for debugging information (this is the default
+  # on gcc-2.91). It's good enough, has all the information about line
+  # numbers and local variables, and libjvm.so is only about 16M.
+  # Change this back to "-g" if you want the most expressive format.
+  # (warning: that could easily inflate libjvm.so to 150M!)
+  # Note: The Itanium gcc compiler crashes when using -gstabs.
+  DEBUG_CFLAGS/ia64  = -g
+  DEBUG_CFLAGS/amd64 = -g
+  DEBUG_CFLAGS/aarch64 = -g
+  DEBUG_CFLAGS/ppc64 = -g
+  DEBUG_CFLAGS/zero = -g
   DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
   ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
     DEBUG_CFLAGS += -g
   endif
   
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    FASTDEBUG_CFLAGS/ia64  = -g
+    FASTDEBUG_CFLAGS/amd64 = -g
+    FASTDEBUG_CFLAGS/aarch64 = -g
+    FASTDEBUG_CFLAGS/ppc64 = -g
+    FASTDEBUG_CFLAGS/zero = -g
     FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
     ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
       FASTDEBUG_CFLAGS/$(BUILDARCH) = -g
     endif
   
+    OPT_CFLAGS/ia64  = -g
+    OPT_CFLAGS/amd64 = -g
+    OPT_CFLAGS/aarch64 = -g
+    OPT_CFLAGS/ppc64 = -g
+    OPT_CFLAGS/zero = -g
     OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
     ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
       OPT_CFLAGS/$(BUILDARCH) = -g
--- a/make/linux/makefiles/rules.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/linux/makefiles/rules.make	Sun Apr 25 18:18:49 2021 +0100
@@ -136,33 +136,23 @@
 COMPILE_DONE    = && { echo Done with $<; }
 endif
 
-# Include $(NONPIC_OBJ_FILES) definition
-ifndef LP64
-include $(GAMMADIR)/make/pic.make
-endif
-
 include $(GAMMADIR)/make/altsrc.make
 
-# The non-PIC object files are only generated for 32 bit platforms.
-ifdef LP64
 %.o: %.cpp
 	@echo Compiling $<
 	$(QUIETLY) $(REMOVE_TARGET)
 	$(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-else
-%.o: %.cpp
-	@echo Compiling $<
-	$(QUIETLY) $(REMOVE_TARGET)
-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
-	   $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
-endif
 
 %.o: %.s
 	@echo Assembling $<
 	$(QUIETLY) $(REMOVE_TARGET)
 	$(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
 
+%.o: %.S
+	@echo Assembling $<
+	$(QUIETLY) $(REMOVE_TARGET)
+	$(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+
 %.s: %.cpp
 	@echo Generating assembly for $<
 	$(QUIETLY) $(GENASM.CXX) -o $@ $<
--- a/make/linux/makefiles/vm.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/linux/makefiles/vm.make	Sun Apr 25 18:18:49 2021 +0100
@@ -99,6 +99,14 @@
   ${HS_LIB_ARCH}     \
   ${VM_DISTRO}
 
+ifdef DERIVATIVE_ID
+CXXFLAGS += -DDERIVATIVE_ID="\"$(DERIVATIVE_ID)\""
+endif
+
+ifdef DISTRIBUTION_ID
+CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\""
+endif
+
 # This is VERY important! The version define must only be supplied to vm_version.o
 # If not, ccache will not re-use the cache at all, since the version string might contain
 # a time and date.
@@ -221,7 +229,7 @@
 # Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
 define findsrc
 	$(notdir $(shell find $(1)/. ! -name . -prune \
-		-a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
+		-a \( -name \*.c -o -name \*.cpp -o -name \*.s -o -name \*.S \) \
 		-a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
 endef
 
--- a/make/linux/makefiles/zeroshark.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/linux/makefiles/zeroshark.make	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
 # Copyright 2007, 2008 Red Hat, Inc.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
@@ -29,12 +29,6 @@
 ifeq ($(JVM_VARIANT_ZEROSHARK), true)
   WARNING_FLAGS += -Wno-undef
 endif
-# Suppress some warning flags that are normally turned on for hotspot,
-# because some of the zero code has not been updated accordingly.
-WARNING_FLAGS += -Wno-return-type \
-  -Wno-format-nonliteral -Wno-format-security \
-  -Wno-maybe-uninitialized
- 
 
 # If FDLIBM_CFLAGS is non-empty it holds CFLAGS needed to be passed to
 # the compiler so as to be able to produce optimized objects
--- a/make/solaris/makefiles/adlc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/adlc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -73,8 +73,10 @@
 
 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
 # Compiler warnings are treated as errors
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-  CFLAGS_WARN = +w -errwarn
+ifneq ($(COMPILER_WARNINGS_FATAL),false)
+  ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
+    CFLAGS_WARN = +w -errwarn
+  endif
 endif
 # When using compiler version 5.13 (Solaris Studio 12.4), calls to explicitly 
 # instantiated template functions trigger this warning when +w is active.
--- a/make/solaris/makefiles/defs.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/defs.make	Sun Apr 25 18:18:49 2021 +0100
@@ -226,12 +226,14 @@
 # client and server subdirectories have symbolic links to ../libjsig.$(LIBRARY_SUFFIX)
 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
     EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
   else
     EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
   endif
 endif
+endif
 
 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
@@ -246,6 +248,7 @@
     EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
   endif
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz
@@ -264,6 +267,7 @@
       endif
     endif
   endif
+  endif
 endif
 ifeq ($(JVM_VARIANT_CLIENT),true)
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
@@ -275,6 +279,7 @@
     EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
   endif
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
       EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.diz
@@ -293,10 +298,12 @@
       endif
     endif
   endif
+  endif
 endif
 
 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX)
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
     EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
   else
--- a/make/solaris/makefiles/gcc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/gcc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -116,7 +116,9 @@
 
 
 # Compiler warnings are treated as errors 
-WARNINGS_ARE_ERRORS = -Werror 
+ifneq ($(COMPILER_WARNINGS_FATAL),false)
+WARNINGS_ARE_ERRORS = -Werror
+endif
 # Enable these warnings. See 'info gcc' about details on these options
 WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef -Wformat=2
 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
--- a/make/solaris/makefiles/jsig.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/jsig.make	Sun Apr 25 18:18:49 2021 +0100
@@ -57,8 +57,10 @@
 	$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
                          $(LFLAGS_JSIG) $(JSIG_OPT_FLAGS) -o $@ $(JSIGSRCDIR)/jsig.c -ldl
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
 	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
+  endif
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -67,10 +69,12 @@
     # implied else here is no stripping at all
     endif
   endif
+  ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
 	$(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
 	$(RM) $(LIBJSIG_DEBUGINFO)
   endif
+  endif
 endif
 
 install_jsig: $(LIBJSIG)
--- a/make/solaris/makefiles/saproc.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/saproc.make	Sun Apr 25 18:18:49 2021 +0100
@@ -121,8 +121,10 @@
 	           -c -o $(SADISOBJ)
 	
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
 	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
+  endif
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -132,8 +134,10 @@
     endif
   endif
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
+    ifneq ($(STRIP_POLICY),no_strip)
 	$(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
 	$(RM) $(LIBSAPROC_DEBUGINFO)
+    endif
   endif
 endif
 
--- a/make/solaris/makefiles/vm.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/solaris/makefiles/vm.make	Sun Apr 25 18:18:49 2021 +0100
@@ -85,6 +85,10 @@
   ${HS_LIB_ARCH}     \
   ${VM_DISTRO}
 
+ifdef DERIVATIVE_ID
+CXXFLAGS += -DDERIVATIVE_ID="\"$(DERIVATIVE_ID)\""
+endif
+
 # This is VERY important! The version define must only be supplied to vm_version.o
 # If not, ccache will not re-use the cache at all, since the version string might contain
 # a time and date.
@@ -101,6 +105,10 @@
 CXXFLAGS/ostream.o += -D_FILE_OFFSET_BITS=64
 endif # ifneq ($(LP64), 1)
 
+ifdef DISTRIBUTION_ID
+CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\""
+endif
+
 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
 CFLAGS += $(CFLAGS_WARN)
 
@@ -299,8 +307,10 @@
 	$(QUIETLY) $(LINK_LIB.CXX/POST_HOOK)
 	$(QUIETLY) rm -f $@.1 && ln -s $@ $@.1
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
 	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
+  endif
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -309,10 +319,12 @@
     # implied else here is no stripping at all
     endif
   endif
+  ifneq ($(STRIP_POLICY),no_strip)
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
 	$(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
 	$(RM) $(LIBJVM_DEBUGINFO)
   endif
+  endif
 endif
 endif # filter -sbfast -xsbfast
 
--- a/make/windows/makefiles/debug.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/debug.make	Sun Apr 25 18:18:49 2021 +0100
@@ -60,11 +60,13 @@
 	$(MT) /manifest $@.manifest /outputresource:$@;#2
 !endif
 !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
+!if "$(STRIP_POLICY)" != "no_strip"
 !if "$(ZIP_DEBUGINFO_FILES)" == "1"
 	$(ZIPEXE) -q $*.diz $*.map $*.pdb
 	$(RM) $*.map $*.pdb
 !endif
 !endif
+!endif
 
 !include $(WorkSpace)/make/windows/makefiles/shared.make
 !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/defs.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/defs.make	Sun Apr 25 18:18:49 2021 +0100
@@ -262,6 +262,7 @@
   EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
   EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.$(LIBRARY_SUFFIX)
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.diz
     else
@@ -269,11 +270,13 @@
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.map
     endif
   endif
+  endif
 endif
 ifeq ($(JVM_VARIANT_CLIENT),true)
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.$(LIBRARY_SUFFIX)
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.diz
     else
@@ -281,6 +284,7 @@
       EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.map
     endif
   endif
+  endif
 endif
 
 EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib
@@ -288,6 +292,7 @@
 ifeq ($(BUILD_WIN_SA), 1)
   EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.$(LIBRARY_SUFFIX)
   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+  ifneq ($(STRIP_POLICY),no_strip)
     ifeq ($(ZIP_DEBUGINFO_FILES),1)
       EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.diz
     else
@@ -295,6 +300,7 @@
       EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.map
     endif
   endif
+  endif
   EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
   # Must pass this down to nmake.
   MAKE_ARGS += BUILD_WIN_SA=1
--- a/make/windows/makefiles/fastdebug.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/fastdebug.make	Sun Apr 25 18:18:49 2021 +0100
@@ -38,7 +38,7 @@
 !include ../local.make
 !include compile.make
 
-CXX_FLAGS=$(CXX_FLAGS) $(FASTDEBUG_OPT_OPTION)
+CXX_FLAGS=$(CXX_FLAGS) $(FASTDEBUG_OPT_OPTION) /D "CHECK_UNHANDLED_OOPS"
 
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
@@ -59,11 +59,13 @@
 	$(MT) /manifest $@.manifest /outputresource:$@;#2
 !endif
 !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
+!if "$(STRIP_POLICY)" != "no_strip"
 !if "$(ZIP_DEBUGINFO_FILES)" == "1"
 	$(ZIPEXE) -q $*.diz $*.map $*.pdb
 	$(RM) $*.map $*.pdb
 !endif
 !endif
+!endif
 
 !include $(WorkSpace)/make/windows/makefiles/shared.make
 !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/product.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/product.make	Sun Apr 25 18:18:49 2021 +0100
@@ -62,11 +62,13 @@
 	$(MT) /manifest $@.manifest /outputresource:$@;#2
 !endif
 !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
+!if "$(STRIP_POLICY)" != "no_strip"
 !if "$(ZIP_DEBUGINFO_FILES)" == "1"
 	$(ZIPEXE) -q $*.diz $*.map $*.pdb
 	$(RM) $*.map $*.pdb
 !endif
 !endif
+!endif
 
 !include $(WorkSpace)/make/windows/makefiles/shared.make
 !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/sa.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/sa.make	Sun Apr 25 18:18:49 2021 +0100
@@ -165,11 +165,13 @@
 	$(MT) -manifest $(@F).manifest -outputresource:$(@F);#2
 !endif
 !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
+!if "$(STRIP_POLICY)" != "no_strip"
 !if "$(ZIP_DEBUGINFO_FILES)" == "1"
 	$(ZIPEXE) -q $*.diz $*.map $*.pdb
 	$(RM) $*.map $*.pdb
 !endif
 !endif
+!endif
 	-@rm -f $*.obj
 
 cleanall :
--- a/make/windows/makefiles/vm.make	Mon Mar 01 20:02:58 2021 +0000
+++ b/make/windows/makefiles/vm.make	Sun Apr 25 18:18:49 2021 +0100
@@ -68,6 +68,14 @@
 # Define that so jni.h is on correct side
 CXX_FLAGS=$(CXX_FLAGS) /D "_JNI_IMPLEMENTATION_"
 
+!ifdef DERIVATIVE_ID
+CXX_FLAGS = $(CPP_FLAGS) /D "DERIVATIVE_ID=\"$(DERIVATIVE_ID)\""
+!endif
+
+!ifdef DISTRIBUTION_ID
+CXX_FLAGS = $(CPP_FLAGS) /D "DISTRIBUTION_ID=\"$(DISTRIBUTION_ID)\""
+!endif
+
 !if "$(BUILDARCH)" == "ia64"
 STACK_SIZE="/STACK:1048576,262144"
 !else
--- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -435,6 +435,7 @@
     __ mov(c_rarg0, rthread);
     __ mov_metadata(c_rarg1, method()->constant_encoding());
     __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), c_rarg0, c_rarg1);
+>>>>>>> merge rev
   }
 
   if (method()->is_synchronized() || compilation()->env()->dtrace_method_probes()) {
--- a/src/cpu/aarch64/vm/vm_version_aarch64.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/aarch64/vm/vm_version_aarch64.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -295,6 +295,11 @@
     UsePopCountInstruction = true;
   }
 
+  // This machine allows unaligned memory accesses
+  if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
+    FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
+  }
+
   if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
     UseMontgomeryMultiplyIntrinsic = true;
   }
--- a/src/cpu/ppc/vm/vm_version_ppc.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/ppc/vm/vm_version_ppc.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -29,6 +29,7 @@
 #include "compiler/disassembler.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/java.hpp"
+#include "runtime/os.hpp"
 #include "runtime/stubCodeGenerator.hpp"
 #include "utilities/defaultStream.hpp"
 #include "vm_version_ppc.hpp"
@@ -128,7 +129,7 @@
                (has_vshasig() ? " sha"     : "")
                // Make sure number of %s matches num_features!
               );
-  _features_str = strdup(buf);
+  _features_str = os::strdup(buf);
   if (Verbose) {
     print_features();
   }
@@ -242,6 +243,11 @@
   if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
     UseMontgomerySquareIntrinsic = true;
   }
+
+  // This machine allows unaligned memory accesses
+  if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
+    FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
+  }
 }
 
 void VM_Version::print_features() {
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -26,6 +26,7 @@
 #include "asm/macroAssembler.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/java.hpp"
+#include "runtime/os.hpp"
 #include "runtime/stubCodeGenerator.hpp"
 #include "vm_version_sparc.hpp"
 #ifdef TARGET_OS_FAMILY_linux
@@ -270,7 +271,7 @@
                (!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
 
   // buf is started with ", " or is empty
-  _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf);
+  _features_str = os::strdup(strlen(buf) > 2 ? buf + 2 : buf);
 
   // UseVIS is set to the smallest of what hardware supports and what
   // the command line requires.  I.e., you cannot set UseVIS to 3 on
@@ -386,6 +387,13 @@
     (cache_line_size > ContendedPaddingWidth))
     ContendedPaddingWidth = cache_line_size;
 
+  // This machine does not allow unaligned memory accesses
+  if (UseUnalignedAccesses) {
+    if (!FLAG_IS_DEFAULT(UseUnalignedAccesses))
+      warning("Unaligned memory access is not available on this CPU");
+    FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
+  }
+
 #ifndef PRODUCT
   if (PrintMiscellaneous && Verbose) {
     tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size());
@@ -489,7 +497,7 @@
 int VM_Version::parse_features(const char* implementation) {
   int features = unknown_m;
   // Convert to UPPER case before compare.
-  char* impl = os::strdup(implementation);
+  char* impl = os::strdup_check_oom(implementation);
 
   for (int i = 0; impl[i] != 0; i++)
     impl[i] = (char)toupper((uint)impl[i]);
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -312,7 +312,7 @@
   Register OSR_buf = osrBufferPointer()->as_pointer_register();
   { assert(frame::interpreter_frame_monitor_size() == BasicObjectLock::size(), "adjust code below");
     int monitor_offset = BytesPerWord * method()->max_locals() +
-      (2 * BytesPerWord) * (number_of_locks - 1);
+      (BasicObjectLock::size() * BytesPerWord) * (number_of_locks - 1);
     // SharedRuntime::OSR_migration_begin() packs BasicObjectLocks in
     // the OSR buffer using 2 word entries: first the lock and then
     // the oop.
@@ -3171,11 +3171,11 @@
       if (PrintC1Statistics) {
         __ incrementl(ExternalAddress((address)&Runtime1::_generic_arraycopystub_cnt));
       }
-#endif
+#endif // PRODUCT
       __ call(RuntimeAddress(copyfunc_addr));
     }
     __ addptr(rsp, 6*wordSize);
-#else
+#else // 
     __ mov(c_rarg4, j_rarg4);
     if (copyfunc_addr == NULL) { // Use C version if stub was not generated
       __ call(RuntimeAddress(C_entry));
--- a/src/cpu/x86/vm/interp_masm_x86_32.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -722,7 +722,7 @@
     // Save (object->mark() | 1) into BasicLock's displaced header
     movptr(Address(lock_reg, mark_offset), swap_reg);
 
-    assert(lock_offset == 0, "displached header must be first word in BasicObjectLock");
+    assert(lock_offset == 0, "displaced header must be first word in BasicObjectLock");
     if (os::is_MP()) {
       lock();
     }
@@ -811,7 +811,7 @@
     if (os::is_MP()) lock();
     cmpxchgptr(header_reg, Address(obj_reg, 0));
 
-    // zero for recursive case
+    // zero for simple unlock of a stack-lock case
     jcc(Assembler::zero, done);
 
     // Call the runtime routine for slow case.
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -725,7 +725,7 @@
     movptr(Address(lock_reg, mark_offset), swap_reg);
 
     assert(lock_offset == 0,
-           "displached header must be first word in BasicObjectLock");
+           "displaced header must be first word in BasicObjectLock");
 
     if (os::is_MP()) lock();
     cmpxchgptr(lock_reg, Address(obj_reg, 0));
@@ -778,7 +778,7 @@
 // Kills:
 //      rax
 //      c_rarg0, c_rarg1, c_rarg2, c_rarg3, ... (param regs)
-//      rscratch1, rscratch2 (scratch regs)
+//      rscratch1 (scratch reg)
 void InterpreterMacroAssembler::unlock_object(Register lock_reg) {
   assert(lock_reg == c_rarg1, "The argument is only for looks. It must be rarg1");
 
@@ -823,7 +823,7 @@
     if (os::is_MP()) lock();
     cmpxchgptr(header_reg, Address(obj_reg, 0));
 
-    // zero for recursive case
+    // zero for simple unlock of a stack-lock case
     jcc(Assembler::zero, done);
 
     // Call the runtime routine for slow case.
--- a/src/cpu/x86/vm/macroAssembler_x86.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/macroAssembler_x86.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1078,7 +1078,7 @@
   }
   assert(markOopDesc::age_shift == markOopDesc::lock_bits + markOopDesc::biased_lock_bits, "biased locking makes assumptions about bit layout");
   Address mark_addr      (obj_reg, oopDesc::mark_offset_in_bytes());
-  Address saved_mark_addr(lock_reg, 0);
+  NOT_LP64( Address saved_mark_addr(lock_reg, 0); )
 
   if (PrintBiasedLockingStatistics && counters == NULL) {
     counters = BiasedLocking::counters();
@@ -1699,7 +1699,7 @@
                                RTMLockingCounters* stack_rtm_counters,
                                Metadata* method_data,
                                bool use_rtm, bool profile_rtm) {
-  // Ensure the register assignents are disjoint
+  // Ensure the register assignments are disjoint
   assert(tmpReg == rax, "");
 
   if (use_rtm) {
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -107,10 +107,6 @@
   return Address(rsp,  Interpreter::expr_offset_in_bytes(2));
 }
 
-static inline Address at_tos_p3() {
-  return Address(rsp,  Interpreter::expr_offset_in_bytes(3));
-}
-
 // Condition conversion
 static Assembler::Condition j_not(TemplateTable::Condition cc) {
   switch (cc) {
--- a/src/cpu/x86/vm/vm_version_x86.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/x86/vm/vm_version_x86.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -27,6 +27,7 @@
 #include "asm/macroAssembler.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/java.hpp"
+#include "runtime/os.hpp"
 #include "runtime/stubCodeGenerator.hpp"
 #include "vm_version_x86.hpp"
 #ifdef TARGET_OS_FAMILY_linux
@@ -527,7 +528,7 @@
                (supports_bmi1() ? ", bmi1" : ""),
                (supports_bmi2() ? ", bmi2" : ""),
                (supports_adx() ? ", adx" : ""));
-  _features_str = strdup(buf);
+  _features_str = os::strdup(buf);
 
   // UseSSE is set to the smaller of what hardware supports and what
   // the command line requires.  I.e., you cannot set UseSSE to 2 on
@@ -1056,6 +1057,11 @@
      (cache_line_size > ContendedPaddingWidth))
      ContendedPaddingWidth = cache_line_size;
 
+  // This machine allows unaligned memory accesses
+  if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
+    FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
+  }
+
 #ifndef PRODUCT
   if (PrintMiscellaneous && Verbose) {
     tty->print_cr("Logical CPUs per core: %u",
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -102,7 +102,7 @@
       return result;
     default:
       ShouldNotReachHere();
-      return result; // silence compiler warnings
+      return NULL_WORD; // silence compiler warnings
   }
 }
 
--- a/src/cpu/zero/vm/entry_zero.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/entry_zero.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2008, 2009, 2010 Red Hat, Inc.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/src/cpu/zero/vm/interpreterRT_zero.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/interpreterRT_zero.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -62,7 +62,7 @@
 }
 
 void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
-  ffi_type *ftype;
+  ffi_type *ftype = NULL;
   switch (type) {
   case T_VOID:
     ftype = &ffi_type_void;
--- a/src/cpu/zero/vm/methodHandles_zero.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/methodHandles_zero.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2011 Red Hat, Inc.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,8 @@
  *
  */
 
+#ifndef CPU_ZERO_VM_METHODHANDLES_ZERO_HPP
+#define CPU_ZERO_VM_METHODHANDLES_ZERO_HPP
 
 // Adapters
 enum /* platform_dependent_constants */ {
@@ -37,3 +39,5 @@
   static int method_handle_entry_linkToVirtual(Method* method, intptr_t UNUSED, TRAPS);
   static int method_handle_entry_linkToInterface(Method* method, intptr_t UNUSED, TRAPS);
   static int method_handle_entry_invalid(Method* method, intptr_t UNUSED, TRAPS);
+
+#endif // CPU_ZERO_VM_METHODHANDLES_ZERO_HPP
--- a/src/cpu/zero/vm/nativeInst_zero.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/nativeInst_zero.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2008 Red Hat, Inc.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/src/cpu/zero/vm/vm_version_zero.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/vm_version_zero.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -36,4 +36,11 @@
 # include "os_bsd.inline.hpp"
 #endif
 
-// This file is intentionally empty
+
+void VM_Version::initialize() {
+  // This machine does not allow unaligned memory accesses
+  if (! FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
+    warning("Unaligned memory access is not available on this CPU");
+    FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
+  }
+}
--- a/src/cpu/zero/vm/vm_version_zero.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/cpu/zero/vm/vm_version_zero.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007 Red Hat, Inc.
+ * Copyright 2015 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,6 +34,7 @@
   static const char* cpu_features() {
     return "";
   }
+  static void initialize();
 };
 
 #endif // CPU_ZERO_VM_VM_VERSION_ZERO_HPP
--- a/src/os/aix/vm/os_aix.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os/aix/vm/os_aix.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -56,6 +56,7 @@
 #include "runtime/mutexLocker.hpp"
 #include "runtime/objectMonitor.hpp"
 #include "runtime/orderAccess.inline.hpp"
+#include "runtime/os.hpp"
 #include "runtime/osThread.hpp"
 #include "runtime/perfMemory.hpp"
 #include "runtime/sharedRuntime.hpp"
@@ -389,10 +390,10 @@
   // default should be 4K.
   size_t data_page_size = SIZE_4K;
   {
-    void* p = ::malloc(SIZE_16M);
+    void* p = os::malloc(SIZE_16M, mtInternal);
     guarantee(p != NULL, "malloc failed");
     data_page_size = os::Aix::query_pagesize(p);
-    ::free(p);
+    os::free(p);
   }
 
   // query default shm page size (LDR_CNTRL SHMPSIZE)
--- a/src/os/aix/vm/porting_aix.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os/aix/vm/porting_aix.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -23,6 +23,8 @@
  */
 
 #include "asm/assembler.hpp"
+#include "memory/allocation.inline.hpp"
+#include "runtime/os.hpp"
 #include "loadlib_aix.hpp"
 #include "porting_aix.hpp"
 #include "utilities/debug.hpp"
@@ -82,7 +84,7 @@
     while (n) {
       node* p = n;
       n = n->next;
-      free(p->v);
+      os::free(p->v);
       delete p;
     }
   }
@@ -94,7 +96,7 @@
       }
     }
     node* p = new node;
-    p->v = strdup(s);
+    p->v = os::strdup_check_oom(s);
     p->next = first;
     first = p;
     return p->v;
--- a/src/os/linux/vm/os_linux.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os/linux/vm/os_linux.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -103,6 +103,8 @@
 # include <inttypes.h>
 # include <sys/ioctl.h>
 
+#include <sys/prctl.h>
+
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
 #ifndef _GNU_SOURCE
@@ -1954,6 +1956,10 @@
   #define EM_AARCH64    183               /* ARM AARCH64 */
   #endif
 
+  #ifndef EM_AARCH64
+  #define EM_AARCH64	183
+  #endif
+
   static const arch_t arch_array[]={
     {EM_386,         EM_386,     ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
     {EM_486,         EM_386,     ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
@@ -4944,8 +4950,9 @@
 static os_sigaction_t os_sigaction = NULL;
 
 void os::Linux::check_signal_handler(int sig) {
-  char buf[O_BUFLEN];
+  char buf[O_BUFLEN], enbuf[O_BUFLEN];
   address jvmHandler = NULL;
+  const char* exname = os::exception_name(sig, enbuf, O_BUFLEN);
 
 
   struct sigaction act;
@@ -4996,7 +5003,7 @@
   }
 
   if (thisHandler != jvmHandler) {
-    tty->print("Warning: %s handler ", exception_name(sig, buf, O_BUFLEN));
+    tty->print("Warning: %s handler ", exname == NULL ? "(null)" : exname);
     tty->print("expected:%s", get_signal_handler_name(jvmHandler, buf, O_BUFLEN));
     tty->print_cr("  found:%s", get_signal_handler_name(thisHandler, buf, O_BUFLEN));
     // No need to check this sig any longer
@@ -5004,10 +5011,10 @@
     // Running under non-interactive shell, SHUTDOWN2_SIGNAL will be reassigned SIG_IGN
     if (sig == SHUTDOWN2_SIGNAL && !isatty(fileno(stdin))) {
       tty->print_cr("Running in non-interactive shell, %s handler is replaced by shell",
-                    exception_name(sig, buf, O_BUFLEN));
+                    exname == NULL ? "(null)" : exname);
     }
   } else if(os::Linux::get_our_sigflags(sig) != 0 && (int)act.sa_flags != os::Linux::get_our_sigflags(sig)) {
-    tty->print("Warning: %s handler flags ", exception_name(sig, buf, O_BUFLEN));
+    tty->print("Warning: %s handler flags ", exname == NULL ? "(null)" : exname);
     tty->print("expected:" PTR32_FORMAT, os::Linux::get_our_sigflags(sig));
     tty->print_cr("  found:" PTR32_FORMAT, act.sa_flags);
     // No need to check this sig any longer
@@ -5036,6 +5043,48 @@
   }
 }
 
+/* Per task speculation control */
+#ifndef PR_GET_SPECULATION_CTRL
+# define PR_GET_SPECULATION_CTRL    52
+#endif
+#ifndef PR_SET_SPECULATION_CTRL
+# define PR_SET_SPECULATION_CTRL    53
+#endif
+/* Speculation control variants */
+#ifndef PR_SPEC_STORE_BYPASS
+# define PR_SPEC_STORE_BYPASS          0
+#endif
+/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
+
+#ifndef PR_SPEC_NOT_AFFECTED
+# define PR_SPEC_NOT_AFFECTED          0
+#endif
+#ifndef PR_SPEC_PRCTL
+# define PR_SPEC_PRCTL                 (1UL << 0)
+#endif
+#ifndef PR_SPEC_ENABLE
+# define PR_SPEC_ENABLE                (1UL << 1)
+#endif
+#ifndef PR_SPEC_DISABLE
+# define PR_SPEC_DISABLE               (1UL << 2)
+#endif
+#ifndef PR_SPEC_FORCE_DISABLE
+# define PR_SPEC_FORCE_DISABLE         (1UL << 3)
+#endif
+#ifndef PR_SPEC_DISABLE_NOEXEC
+# define PR_SPEC_DISABLE_NOEXEC        (1UL << 4)
+#endif
+
+static void set_speculation() __attribute__((constructor));
+static void set_speculation() {
+  if ( prctl(PR_SET_SPECULATION_CTRL,
+             PR_SPEC_STORE_BYPASS,
+             PR_SPEC_DISABLE_NOEXEC, 0, 0) == 0 ) {
+    return;
+  }
+  prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
+}
+
 // this is called _before_ most of the global arguments have been parsed
 void os::init(void) {
   char dummy;   /* used to get a guess on initial stack address */
@@ -5572,11 +5621,41 @@
     errno = ENAMETOOLONG;
     return -1;
   }
-  int fd;
   int o_delete = (oflag & O_DELETE);
   oflag = oflag & ~O_DELETE;
 
-  fd = ::open64(path, oflag, mode);
+
+    /* All file descriptors that are opened in the Java process and not
+     * specifically destined for a subprocess should have the close-on-exec
+     * flag set.  If we don't set it, then careless 3rd party native code
+     * might fork and exec without closing all appropriate file descriptors
+     * (e.g. as we do in closeDescriptors in UNIXProcess.c), and this in
+     * turn might:
+     *
+     * - cause end-of-file to fail to be detected on some file
+     *   descriptors, resulting in mysterious hangs, or
+     *
+     * - might cause an fopen in the subprocess to fail on a system
+     *   suffering from bug 1085341.
+     *
+     * (Yes, the default setting of the close-on-exec flag is a Unix
+     * design flaw)
+     *
+     * See:
+     * 1085341: 32-bit stdio routines should support file descriptors >255
+     * 4843136: (process) pipe file descriptor from Runtime.exec not being closed
+     * 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9
+     */
+  // Modern Linux kernels (after 2.6.23 2007) support O_CLOEXEC with open().
+  // O_CLOEXEC is preferable to using FD_CLOEXEC on an open file descriptor
+  // because it saves a system call and removes a small window where the flag
+  // is unset.  On ancient Linux kernels the O_CLOEXEC flag will be ignored
+  // and we fall back to using FD_CLOEXEC (see below).
+#ifdef O_CLOEXEC
+  oflag |= O_CLOEXEC;
+#endif
+
+  int fd = ::open64(path, oflag, mode);
   if (fd == -1) return -1;
 
   //If the open succeeded, the file might still be a directory
@@ -5597,34 +5676,19 @@
     }
   }
 
-    /*
-     * All file descriptors that are opened in the JVM and not
-     * specifically destined for a subprocess should have the
-     * close-on-exec flag set.  If we don't set it, then careless 3rd
-     * party native code might fork and exec without closing all
-     * appropriate file descriptors (e.g. as we do in closeDescriptors in
-     * UNIXProcess.c), and this in turn might:
-     *
-     * - cause end-of-file to fail to be detected on some file
-     *   descriptors, resulting in mysterious hangs, or
-     *
-     * - might cause an fopen in the subprocess to fail on a system
-     *   suffering from bug 1085341.
-     *
-     * (Yes, the default setting of the close-on-exec flag is a Unix
-     * design flaw)
-     *
-     * See:
-     * 1085341: 32-bit stdio routines should support file descriptors >255
-     * 4843136: (process) pipe file descriptor from Runtime.exec not being closed
-     * 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9
-     */
 #ifdef FD_CLOEXEC
-    {
-        int flags = ::fcntl(fd, F_GETFD);
-        if (flags != -1)
-            ::fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
+  // Validate that the use of the O_CLOEXEC flag on open above worked.
+  // With recent kernels, we will perform this check exactly once.
+  static sig_atomic_t O_CLOEXEC_is_known_to_work = 0;
+  if (!O_CLOEXEC_is_known_to_work) {
+    int flags = ::fcntl(fd, F_GETFD);
+    if (flags != -1) {
+      if ((flags & FD_CLOEXEC) != 0)
+        O_CLOEXEC_is_known_to_work = 1;
+      else
+	::fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
     }
+  }
 #endif
 
   if (o_delete != 0) {
--- a/src/os/windows/vm/perfMemory_windows.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os/windows/vm/perfMemory_windows.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -29,6 +29,7 @@
 #include "oops/oop.inline.hpp"
 #include "os_windows.inline.hpp"
 #include "runtime/handles.inline.hpp"
+#include "runtime/os.hpp"
 #include "runtime/perfMemory.hpp"
 #include "services/memTracker.hpp"
 #include "utilities/exceptions.hpp"
@@ -1382,7 +1383,7 @@
   // the file has been successfully created and the file mapping
   // object has been created.
   sharedmem_fileHandle = fh;
-  sharedmem_fileName = strdup(filename);
+  sharedmem_fileName = os::strdup(filename);
 
   return fmh;
 }
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -891,7 +891,7 @@
  * updates (JDK-8023956).
  */
 void os::workaround_expand_exec_shield_cs_limit() {
-#if defined(IA32)
+#if defined(IA32) && !defined(ZERO)
   size_t page_size = os::vm_page_size();
 
   /*
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,6 +61,7 @@
 
 frame os::get_sender_for_C_frame(frame* fr) {
   ShouldNotCallThis();
+  return frame(NULL, NULL); // silence compile warning.
 }
 
 frame os::current_frame() {
@@ -98,16 +99,19 @@
 
 address os::Linux::ucontext_get_pc(ucontext_t* uc) {
   ShouldNotCallThis();
+  return NULL; // silence compile warnings
 }
 
 ExtendedPC os::fetch_frame_from_context(void* ucVoid,
                                         intptr_t** ret_sp,
                                         intptr_t** ret_fp) {
   ShouldNotCallThis();
+  return NULL; // silence compile warnings
 }
 
 frame os::fetch_frame_from_context(void* ucVoid) {
   ShouldNotCallThis();
+  return frame(NULL, NULL); // silence compile warnings
 }
 
 extern "C" JNIEXPORT int
@@ -247,11 +251,16 @@
   }
 #endif // !PRODUCT
 
-  const char *fmt = "caught unhandled signal %d";
   char buf[64];
 
-  sprintf(buf, fmt, sig);
+  sprintf(buf, "caught unhandled signal %d", sig);
+
+// Silence -Wformat-security warning for fatal()
+PRAGMA_DIAG_PUSH
+PRAGMA_FORMAT_NONLITERAL_IGNORED
   fatal(buf);
+PRAGMA_DIAG_POP
+  return true; // silence compiler warnings
 }
 
 void os::Linux::init_thread_fpu_state(void) {
@@ -260,6 +269,7 @@
 
 int os::Linux::get_fpu_control_word() {
   ShouldNotCallThis();
+  return -1; // silence compile warnings
 }
 
 void os::Linux::set_fpu_control_word(int fpu) {
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007, 2008, 2010 Red Hat, Inc.
+ * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -110,6 +110,7 @@
                                            void* ucontext,
                                            bool isInJava) {
     ShouldNotCallThis();
+    return false; // silence compile warning
   }
 
   bool pd_get_top_frame_for_profiling(frame* fr_addr,
--- a/src/share/vm/adlc/adlc.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/adlc/adlc.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -85,6 +85,19 @@
 #undef max
 #define max(a, b)   (((a)>(b)) ? (a) : (b))
 
+#if !defined(__clang_major__) && (__GNUC__ >= 7)
+#define PRAGMA_DIAG_PUSH             _Pragma("GCC diagnostic push")
+#define PRAGMA_DIAG_POP              _Pragma("GCC diagnostic pop")
+#define PRAGMA_FORMAT_OVERFLOW_IGNORED _Pragma("GCC diagnostic ignored \"-Wformat-overflow\"")
+#define PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL PRAGMA_FORMAT_OVERFLOW_IGNORED
+#define PRAGMA_FORMAT_OVERFLOW_IGNORED_INTERNAL PRAGMA_FORMAT_OVERFLOW_IGNORED
+#else
+#define PRAGMA_DIAG_PUSH
+#define PRAGMA_DIAG_POP
+#define PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL
+#define PRAGMA_FORMAT_OVERFLOW_IGNORED_INTERNAL
+#endif
+
 // ADLC components
 #include "arena.hpp"
 #include "opto/adlcVMDeps.hpp"
--- a/src/share/vm/adlc/output_c.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/adlc/output_c.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -543,6 +543,8 @@
   return (ndx);
 }
 
+PRAGMA_DIAG_PUSH
+PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL
 void ArchDesc::build_pipe_classes(FILE *fp_cpp) {
   const char *classname;
   const char *resourcename;
@@ -999,6 +1001,7 @@
   fprintf(fp_cpp, "}\n");
   fprintf(fp_cpp, "#endif\n");
 }
+PRAGMA_DIAG_POP
 
 // ---------------------------------------------------------------------------
 //------------------------------Utilities to build Instruction Classes--------
--- a/src/share/vm/asm/assembler.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/asm/assembler.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -32,7 +32,6 @@
 #include "utilities/debug.hpp"
 #include "utilities/growableArray.hpp"
 #include "utilities/top.hpp"
-
 #ifdef TARGET_ARCH_x86
 # include "register_x86.hpp"
 # include "vm_version_x86.hpp"
--- a/src/share/vm/asm/codeBuffer.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/asm/codeBuffer.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -977,7 +977,7 @@
     for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) {
       CodeSection* sect = code_section(n);
       if (!sect->is_allocated() || sect->is_empty())  continue;
-      xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>",
+      xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>",
                      n, sect->limit() - sect->start(), sect->limit() - sect->end());
     }
     xtty->print_cr("</blob>");
--- a/src/share/vm/c1/c1_LIRAssembler.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/c1/c1_LIRAssembler.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -30,6 +30,7 @@
 #include "c1/c1_MacroAssembler.hpp"
 #include "c1/c1_ValueStack.hpp"
 #include "ci/ciInstance.hpp"
+#include "runtime/os.hpp"
 #ifdef TARGET_ARCH_x86
 # include "nativeInst_x86.hpp"
 # include "vmreg_x86.inline.hpp"
@@ -883,7 +884,7 @@
           stringStream st;
           st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset());
 #ifdef SPARC
-          _masm->_verify_oop(r->as_Register(), strdup(st.as_string()), __FILE__, __LINE__);
+          _masm->_verify_oop(r->as_Register(), os::strdup(st.as_string(), mtCompiler), __FILE__, __LINE__);
 #else
           _masm->verify_oop(r->as_Register());
 #endif
--- a/src/share/vm/c1/c1_Runtime1.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/c1/c1_Runtime1.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -211,6 +211,7 @@
     // All other stubs should have oopmaps
     default:
       assert(oop_maps != NULL, "must have an oopmap");
+      break;
   }
 #endif
 
@@ -218,6 +219,7 @@
   sasm->align(BytesPerWord);
   // make sure all code is in code buffer
   sasm->flush();
+
   // create blob - distinguish a few special cases
   CodeBlob* blob = RuntimeStub::new_runtime_stub(name_for(id),
                                                  &code,
@@ -1134,6 +1136,7 @@
               (stub_id == Runtime1::load_klass_patching_id) ?
                                    relocInfo::metadata_type :
                                    relocInfo::oop_type;
+
             // update relocInfo to metadata
             nmethod* nm = CodeCache::find_nmethod(instr_pc);
             assert(nm != NULL, "invalid nmethod_pc");
--- a/src/share/vm/ci/ciField.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/ci/ciField.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -187,6 +187,10 @@
   // Even if general trusting is disabled, trust system-built closures in these packages.
   if (holder->is_in_package("java/lang/invoke") || holder->is_in_package("sun/invoke"))
     return true;
+  // Trust VM anonymous classes. They are private API (sun.misc.Unsafe) and can't be serialized,
+  // so there is no hacking of finals going on with them.
+  if (holder->is_anonymous())
+    return true;
   // Trust Atomic*FieldUpdaters: they are very important for performance, and make up one
   // more reason not to use Unsafe, if their final fields are trusted. See more in JDK-8140483.
   if (holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl() ||
--- a/src/share/vm/ci/ciMethod.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/ci/ciMethod.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1130,6 +1130,7 @@
 template bool ciMethod::has_option_value<uintx>(const char* option, uintx& value);
 template bool ciMethod::has_option_value<bool>(const char* option, bool& value);
 template bool ciMethod::has_option_value<ccstr>(const char* option, ccstr& value);
+template bool ciMethod::has_option_value<double>(const char* option, double& value);
 
 // ------------------------------------------------------------------
 // ciMethod::can_be_compiled
--- a/src/share/vm/classfile/classLoader.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/classfile/classLoader.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -382,7 +382,7 @@
 }
 
 LazyClassPathEntry::LazyClassPathEntry(const char* path, const struct stat* st, bool throw_exception) : ClassPathEntry() {
-  _path = strdup(path);
+  _path = os::strdup_check_oom(path);
   _st = *st;
   _meta_index = NULL;
   _resolved_entry = NULL;
@@ -390,6 +390,10 @@
   _throw_exception = throw_exception;
 }
 
+LazyClassPathEntry::~LazyClassPathEntry() {
+  os::free((void*) _path);
+}
+
 bool LazyClassPathEntry::is_jar_file() {
   return ((_st.st_mode & S_IFREG) == S_IFREG);
 }
@@ -596,7 +600,7 @@
         default:
         {
           if (!skipCurrentJar && cur_entry != NULL) {
-            char* new_name = strdup(package_name);
+            char* new_name = os::strdup_check_oom(package_name);
             boot_class_path_packages.append(new_name);
           }
         }
--- a/src/share/vm/classfile/classLoader.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/classfile/classLoader.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -134,6 +134,8 @@
   bool is_jar_file();
   const char* name()  { return _path; }
   LazyClassPathEntry(const char* path, const struct stat* st, bool throw_exception);
+  virtual ~LazyClassPathEntry();
+
   u1* open_entry(const char* name, jint* filesize, bool nul_terminate, TRAPS);
   ClassFileStream* open_stream(const char* name, TRAPS);
   void set_meta_index(MetaIndex* meta_index) { _meta_index = meta_index; }
--- a/src/share/vm/code/codeCache.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/code/codeCache.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -199,7 +199,7 @@
     }
     if (PrintCodeCacheExtension) {
       ResourceMark rm;
-      tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)",
+      tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)",
                     (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(),
                     (address)_heap->high() - (address)_heap->low_boundary());
     }
--- a/src/share/vm/compiler/compilerOracle.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/compiler/compilerOracle.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -33,6 +33,7 @@
 #include "oops/symbol.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/jniHandles.hpp"
+#include "runtime/os.hpp"
 
 class MethodMatcher : public CHeapObj<mtCompiler> {
  public:
@@ -172,6 +173,7 @@
   UintxType,
   BoolType,
   CcstrType,
+  DoubleType,
   UnknownType
 };
 
@@ -197,6 +199,10 @@
   return CcstrType;
 }
 
+template<> OptionType get_type_for<double>() {
+  return DoubleType;
+}
+
 template<typename T>
 static const T copy_value(const T value) {
   return value;
@@ -219,7 +225,7 @@
                            const T value,  MethodMatcher* next) :
     MethodMatcher(class_name, class_mode, method_name, method_mode, signature, next),
                   _type(get_type_for<T>()), _value(copy_value<T>(value)) {
-    _option = strdup(opt);
+    _option = os::strdup_check_oom(opt);
   }
 
   ~TypedMethodOptionMatcher() {
@@ -296,6 +302,15 @@
   tty->cr();
 };
 
+template<>
+void TypedMethodOptionMatcher<double>::print() {
+  ttyLocker ttyl;
+  print_base();
+  tty->print(" double %s", _option);
+  tty->print(" = %f", _value);
+  tty->cr();
+};
+
 // this must parallel the command_names below
 enum OracleCommand {
   UnknownCommand = -1,
@@ -389,6 +404,7 @@
 template bool CompilerOracle::has_option_value<uintx>(methodHandle method, const char* option, uintx& value);
 template bool CompilerOracle::has_option_value<bool>(methodHandle method, const char* option, bool& value);
 template bool CompilerOracle::has_option_value<ccstr>(methodHandle method, const char* option, ccstr& value);
+template bool CompilerOracle::has_option_value<double>(methodHandle method, const char* option, double& value);
 
 bool CompilerOracle::should_exclude(methodHandle method, bool& quietly) {
   quietly = true;
@@ -606,6 +622,18 @@
       } else {
         jio_snprintf(errorbuf, sizeof(errorbuf), "  Value cannot be read for flag %s of type %s", flag, type);
       }
+    } else if (strcmp(type, "double") == 0) {
+      char buffer[2][256];
+      // Decimal separator '.' has been replaced with ' ' or '/' earlier,
+      // so read integer and fraction part of double value separately.
+      if (sscanf(line, "%*[ \t]%255[0-9]%*[ /\t]%255[0-9]%n", buffer[0], buffer[1], &bytes_read) == 2) {
+        char value[512] = "";
+        jio_snprintf(value, sizeof(value), "%s.%s", buffer[0], buffer[1]);
+        total_bytes_read += bytes_read;
+        return add_option_string(c_name, c_match, m_name, m_match, signature, flag, atof(value));
+      } else {
+        jio_snprintf(errorbuf, buf_size, "  Value cannot be read for flag %s of type %s", flag, type);
+      }
     } else {
       jio_snprintf(errorbuf, sizeof(errorbuf), "  Type %s not supported ", type);
     }
@@ -696,11 +724,10 @@
       // (1) CompileCommand=option,Klass::method,flag
       // (2) CompileCommand=option,Klass::method,type,flag,value
       //
-      // Type (1) is used to support ciMethod::has_option("someflag")
-      // (i.e., to check if a flag "someflag" is enabled for a method).
+      // Type (1) is used to enable a boolean flag for a method.
       //
       // Type (2) is used to support options with a value. Values can have the
-      // the following types: intx, uintx, bool, ccstr, and ccstrlist.
+      // the following types: intx, uintx, bool, ccstr, ccstrlist, and double.
       //
       // For future extensions: extend scan_flag_and_value()
       char option[256]; // stores flag for Type (1) and type of Type (2)
@@ -718,6 +745,7 @@
             || strcmp(option, "bool") == 0
             || strcmp(option, "ccstr") == 0
             || strcmp(option, "ccstrlist") == 0
+            || strcmp(option, "double") == 0
             ) {
 
           // Type (2) option: parse flag name and value.
--- a/src/share/vm/compiler/oopMap.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/compiler/oopMap.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -33,9 +33,13 @@
 #include "memory/resourceArea.hpp"
 #include "runtime/frame.inline.hpp"
 #include "runtime/signature.hpp"
+#include "utilities/dtrace.hpp"
 #ifdef COMPILER1
 #include "c1/c1_Defs.hpp"
 #endif
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL1(provider, gc__collection__delete, *uintptr_t);
+#endif /* !USDT2 */
 
 // OopMapStream
 
@@ -663,6 +667,9 @@
                     " - Derived: " INTPTR_FORMAT "  Base: " INTPTR_FORMAT " (Offset: " INTX_FORMAT ")",
           p2i(derived_loc), p2i((address)*derived_loc), p2i((address)base), offset);
     }
+#ifndef USDT2
+  HS_DTRACE_PROBE1(hotspot, gc__collection__delete, entry);
+#endif /* !USDT2 */
 
     // Delete entry
     delete entry;
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -2676,7 +2676,7 @@
   if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
     size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
     n_blks +=  CMSOldPLABReactivityFactor*multiple*n_blks;
-    n_blks = MIN2(n_blks, CMSOldPLABMax);
+    n_blks = MIN2(n_blks, (size_t) CMSOldPLABMax);
   }
   assert(n_blks > 0, "Error");
   _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -63,6 +63,12 @@
 #include "runtime/vmThread.hpp"
 #include "services/memoryService.hpp"
 #include "services/runtimeService.hpp"
+#include "utilities/dtrace.hpp"
+
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool);
+#endif /* !USDT2 */
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
@@ -961,7 +967,7 @@
   if (free_percentage < desired_free_percentage) {
     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
     assert(desired_capacity >= capacity(), "invalid expansion size");
-    size_t expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
+    size_t expand_bytes = MAX2(desired_capacity - capacity(), (size_t) MinHeapDeltaBytes);
     if (PrintGCDetails && Verbose) {
       size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
       gclog_or_tty->print_cr("\nFrom compute_new_size: ");
@@ -1678,7 +1684,13 @@
                                             size_t size,
                                             bool   tlab)
 {
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, tlab);
+#endif /* !USDT2 */
   collector()->collect(full, clear_all_soft_refs, size, tlab);
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, tlab);
+#endif /* !USDT2 */
 }
 
 void CMSCollector::collect(bool   full,
@@ -6591,7 +6603,7 @@
     HeapWord* curAddr = _markBitMap.startWord();
     while (curAddr < _markBitMap.endWord()) {
       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
-      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
+      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
       _markBitMap.clear_large_range(chunk);
       if (ConcurrentMarkSweepThread::should_yield() &&
           !foregroundGCIsActive() &&
@@ -6889,7 +6901,7 @@
     return;
   }
   // Double capacity if possible
-  size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
+  size_t new_capacity = MIN2(_capacity*2, (size_t) MarkStackSizeMax);
   // Do not give up existing stack until we have managed to
   // get the double capacity that we desired.
   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -3916,7 +3916,7 @@
   // of things to do) or totally (at the very end).
   size_t target_size;
   if (partially) {
-    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
+    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t) GCDrainStackTargetSize);
   } else {
     target_size = 0;
   }
--- a/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -78,7 +78,8 @@
     size_t num_target_elems = pointer_delta(end, bottom, mapping_granularity_in_bytes);
     idx_t bias = (uintptr_t)bottom / mapping_granularity_in_bytes;
     address base = create_new_base_array(num_target_elems, target_elem_size_in_bytes);
-    initialize_base(base, num_target_elems, bias, target_elem_size_in_bytes, log2_intptr(mapping_granularity_in_bytes));
+    initialize_base(base, num_target_elems, bias, target_elem_size_in_bytes,
+                    log2_intptr((uintptr_t) mapping_granularity_in_bytes));
   }
 
   size_t bias() const { return _bias; }
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1729,7 +1729,7 @@
 
   verify_region_sets_optional();
 
-  size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes);
+  size_t expand_bytes = MAX2(word_size * HeapWordSize, (size_t) MinHeapDeltaBytes);
   ergo_verbose1(ErgoHeapSizing,
                 "attempt heap expansion",
                 ergo_format_reason("allocation request failed")
--- a/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -41,7 +41,7 @@
 }
 
 size_t G1CMObjArrayProcessor::process_array_slice(objArrayOop obj, HeapWord* start_from, size_t remaining) {
-  size_t words_to_scan = MIN2(remaining, ObjArrayMarkingStride);
+  size_t words_to_scan = MIN2(remaining, (size_t) ObjArrayMarkingStride);
 
   if (remaining > ObjArrayMarkingStride) {
     push_array_slice(start_from + ObjArrayMarkingStride);
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -51,11 +51,16 @@
 #include "runtime/thread.hpp"
 #include "runtime/vmThread.hpp"
 #include "utilities/copy.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/events.hpp"
 #if INCLUDE_JFR
 #include "jfr/jfr.hpp"
 #endif // INCLUDE_JFR
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__begin, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__end, *uintptr_t, *uintptr_t);
+ #endif /* !USDT2 */ 
 class HeapRegion;
 
 void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
@@ -89,6 +94,9 @@
   // The marking doesn't preserve the marks of biased objects.
   BiasedLocking::preserve_marks();
 
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__G1__begin, &sh, sh->gc_cause());
+#endif /* !USDT2 */
   mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
 
   mark_sweep_phase2();
@@ -104,6 +112,9 @@
   BiasedLocking::restore_marks();
   GenMarkSweep::deallocate_stacks();
 
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__G1__end, &sh, sh->gc_cause());
+#endif /* !USDT2 */
   // "free at last gc" is calculated from these.
   // CHF: cheating for now!!!
   //  Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity());
--- a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -89,7 +89,7 @@
   void pretouch_internal(size_t start_page, size_t end_page);
 
   // Returns the index of the page which contains the given address.
-  uintptr_t  addr_to_page_index(char* addr) const;
+  size_t  addr_to_page_index(char* addr) const;
   // Returns the address of the given page index.
   char*  page_start(size_t index) const;
 
--- a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -38,7 +38,7 @@
   _cancel(false),
   _empty(true),
   _dropped(0) {
-  _nqueues = MAX2(ParallelGCThreads, (size_t)1);
+  _nqueues = MAX2((size_t) ParallelGCThreads, (size_t)1);
   _queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC);
   for (size_t i = 0; i < _nqueues; i++) {
     new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
--- a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -120,7 +120,7 @@
 };
 
 G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) :
-  _nlists(MAX2(ParallelGCThreads, (size_t)1)),
+  _nlists(MAX2((size_t) ParallelGCThreads, (size_t)1)),
   _max_list_length(0),
   _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)),
   _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) {
@@ -597,7 +597,7 @@
     "   [Table]\n"
     "      [Memory Usage: " G1_STRDEDUP_BYTES_FORMAT_NS "]\n"
     "      [Size: " SIZE_FORMAT ", Min: " SIZE_FORMAT ", Max: " SIZE_FORMAT "]\n"
-    "      [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " UINTX_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n"
+    "      [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " SIZE_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n"
     "      [Resize Count: " UINTX_FORMAT ", Shrink Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS "), Grow Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS ")]\n"
     "      [Rehash Count: " UINTX_FORMAT ", Rehash Threshold: " UINTX_FORMAT ", Hash Seed: " UINT64_FORMAT "]\n"
     "      [Age Threshold: " UINTX_FORMAT "]",
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -109,7 +109,7 @@
   uintx region_size = G1HeapRegionSize;
   if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
     size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
-    region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
+    region_size = MAX2((uintx) (average_heap_size / HeapRegionBounds::target_number()),
                        (uintx) HeapRegionBounds::min_size());
   }
 
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -54,6 +54,12 @@
 #include "utilities/copy.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/workgroup.hpp"
+#include "utilities/dtrace.hpp"
+
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__begin, bool, bool, size_t, bool);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__end, bool, bool, size_t, bool);
+#endif /* !USDT2 */
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
@@ -194,7 +200,7 @@
   const size_t num_overflow_elems = of_stack->size();
   const size_t space_available = queue->max_elems() - queue->size();
   const size_t num_take_elems = MIN3(space_available / 4,
-                                     ParGCDesiredObjsFromOverflowList,
+                                     (size_t) ParGCDesiredObjsFromOverflowList,
                                      num_overflow_elems);
   // Transfer the most recent num_take_elems from the overflow
   // stack to our work queue.
@@ -914,6 +920,9 @@
                                bool   clear_all_soft_refs,
                                size_t size,
                                bool   is_tlab) {
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__begin, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
   assert(full || size > 0, "otherwise we don't want to collect");
 
   GenCollectedHeap* gch = GenCollectedHeap::heap();
@@ -1064,6 +1073,10 @@
     gch->print_heap_change(gch_prev_used);
   }
 
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__end, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
+
   if (PrintGCDetails && ParallelGCVerbose) {
     TASKQUEUE_STATS_ONLY(thread_state_set.print_termination_stats());
     TASKQUEUE_STATS_ONLY(thread_state_set.print_taskqueue_stats());
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -43,8 +43,14 @@
 #include "runtime/java.hpp"
 #include "runtime/vmThread.hpp"
 #include "services/memTracker.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/vmError.hpp"
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__begin, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__end, *uintptr_t, *uintptr_t);
+#endif /* !USDT2 */
+
 PSYoungGen*  ParallelScavengeHeap::_young_gen = NULL;
 PSOldGen*    ParallelScavengeHeap::_old_gen = NULL;
 PSAdaptiveSizePolicy* ParallelScavengeHeap::_size_policy = NULL;
@@ -535,7 +541,13 @@
   }
 
   VM_ParallelGCSystemGC op(gc_count, full_gc_count, cause);
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__begin, &op, cause);
+#endif /* !USDT2 */
   VMThread::execute(&op);
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__end, &op, cause);
+#endif /* !USDT2 */
 }
 
 void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) {
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -56,6 +56,7 @@
 #include "services/management.hpp"
 #include "services/memoryService.hpp"
 #include "services/memTracker.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/events.hpp"
 #include "utilities/stack.inline.hpp"
 #if INCLUDE_JFR
@@ -66,6 +67,12 @@
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__ParallelCompact__clear, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parallel__collect, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__move, *uintptr_t, *uintptr_t, *uintptr_t, *uintptr_t);
+#endif /* !USDT2 */
+
 // All sizes are in HeapWords.
 const size_t ParallelCompactData::Log2RegionSize  = 16; // 64K words
 const size_t ParallelCompactData::RegionSize      = (size_t)1 << Log2RegionSize;
@@ -456,6 +463,9 @@
 
 void ParallelCompactData::clear()
 {
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__ParallelCompact__clear, &_region_data, _region_data->data_location());
+#endif /* !USDT2 */
   memset(_region_data, 0, _region_vspace->committed_size());
   memset(_block_data, 0, _block_vspace->committed_size());
 }
@@ -913,8 +923,8 @@
 void PSParallelCompact::initialize_dead_wood_limiter()
 {
   const size_t max = 100;
-  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
-  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
   DEBUG_ONLY(_dwl_initialized = true;)
   _dwl_adjustment = normal_distribution(1.0);
@@ -1981,6 +1991,9 @@
          "should be in vm thread");
 
   ParallelScavengeHeap* heap = gc_heap();
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__parallel__collect, heap, heap->gc_cause());
+#endif /* !USDT2 */
   GCCause::Cause gc_cause = heap->gc_cause();
   assert(!heap->is_gc_active(), "not reentrant");
 
@@ -3266,6 +3279,9 @@
   // past the end of the partial object entering the region (if any).
   HeapWord* const dest_addr = sd.partial_obj_end(dp_region);
   HeapWord* const new_top = _space_info[space_id].new_top();
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__move, &beg_addr, &end_addr, &dest_addr, &new_top);
+#endif /* !USDT2 */
   assert(new_top >= dest_addr, "bad new_top value");
   const size_t words = pointer_delta(new_top, dest_addr);
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -54,10 +54,20 @@
 #include "runtime/vmThread.hpp"
 #include "runtime/vm_operations.hpp"
 #include "services/memoryService.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/stack.inline.hpp"
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__begin, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__end, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__begin, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__end, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__begin, *uintptr_t, *uintptr_t);
+  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__end, *uintptr_t, *uintptr_t);
+#endif /* !USDT2 */
+
 HeapWord*                  PSScavenge::_to_space_top_before_gc = NULL;
 int                        PSScavenge::_consecutive_skipped_scavenges = 0;
 ReferenceProcessor*        PSScavenge::_ref_processor = NULL;
@@ -229,7 +239,13 @@
   PSAdaptiveSizePolicy* policy = heap->size_policy();
   IsGCActiveMark mark;
 
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__begin, &heap, heap->gc_cause());
+#endif /* !USDT2 */
   const bool scavenge_done = PSScavenge::invoke_no_policy();
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__end, &heap, heap->gc_cause());
+#endif /* !USDT2 */
   const bool need_full_gc = !scavenge_done ||
     policy->should_full_GC(heap->old_gen()->free_in_bytes());
   bool full_gc_done = false;
@@ -246,9 +262,21 @@
     const bool clear_all_softrefs = cp->should_clear_all_soft_refs();
 
     if (UseParallelOldGC) {
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__begin, &heap, heap->gc_cause());
+#endif /* !USDT2 */
       full_gc_done = PSParallelCompact::invoke_no_policy(clear_all_softrefs);
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__end, &heap, heap->gc_cause());
+#endif /* !USDT2 */
     } else {
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__begin, &heap, heap->gc_cause());
+#endif /* !USDT2 */
       full_gc_done = PSMarkSweep::invoke_no_policy(clear_all_softrefs);
+#ifndef USDT2
+  HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__end, &heap, heap->gc_cause());
+#endif /* !USDT2 */
     }
   }
 
--- a/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -31,12 +31,14 @@
 #ifndef CC_INTERP
 
 class TemplateInterpreterGenerator: public AbstractInterpreterGenerator {
+
  protected:
 
   // entry points for shared code sequence
   address _unimplemented_bytecode;
   address _illegal_bytecode_sequence;
 
+
   // shared code sequences
   // Converter for native abi result to tosca result
   address generate_result_handler_for(BasicType type);
--- a/src/share/vm/memory/blockOffsetTable.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/blockOffsetTable.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -57,7 +57,7 @@
     gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: ");
     gclog_or_tty->print_cr("  "
                   "  rs.base(): " INTPTR_FORMAT
-                  "  rs.size(): " INTPTR_FORMAT
+                  "  rs.size(): " SIZE_FORMAT
                   "  rs end(): " INTPTR_FORMAT,
                   p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size()));
     gclog_or_tty->print_cr("  "
--- a/src/share/vm/memory/collectorPolicy.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/collectorPolicy.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -385,7 +385,7 @@
       uintx calculated_size = NewSize + OldSize;
       double shrink_factor = (double) MaxHeapSize / calculated_size;
       uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
-      FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), smaller_new_size));
+      FLAG_SET_ERGO(uintx, NewSize, MAX2((uintx) young_gen_size_lower_bound(), smaller_new_size));
       _initial_gen0_size = NewSize;
 
       // OldSize is already aligned because above we aligned MaxHeapSize to
@@ -423,7 +423,7 @@
 
   // Determine maximum size of gen0
 
-  size_t max_new_size = 0;
+  uintx max_new_size = 0;
   if (!FLAG_IS_DEFAULT(MaxNewSize)) {
     max_new_size = MaxNewSize;
   } else {
@@ -448,7 +448,7 @@
     _initial_gen0_size = max_new_size;
     _max_gen0_size = max_new_size;
   } else {
-    size_t desired_new_size = 0;
+    uintx desired_new_size = 0;
     if (FLAG_IS_CMDLINE(NewSize)) {
       // If NewSize is set on the command line, we must use it as
       // the initial size and it also makes sense to use it as the
@@ -461,7 +461,7 @@
       // limit, but use NewRatio to calculate the initial size.
       _min_gen0_size = NewSize;
       desired_new_size =
-        MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize);
+        MAX2((uintx) (scale_by_NewRatio_aligned(_initial_heap_byte_size)), NewSize);
       max_new_size = MAX2(max_new_size, NewSize);
     } else {
       // For the case where NewSize is the default, use NewRatio
@@ -469,9 +469,9 @@
       // Use the default NewSize as the floor for these values.  If
       // NewRatio is overly large, the resulting sizes can be too
       // small.
-      _min_gen0_size = MAX2(scale_by_NewRatio_aligned(_min_heap_byte_size), NewSize);
+      _min_gen0_size = MAX2((uintx) (scale_by_NewRatio_aligned(_min_heap_byte_size)), NewSize);
       desired_new_size =
-        MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize);
+        MAX2((uintx) (scale_by_NewRatio_aligned(_initial_heap_byte_size)), NewSize);
     }
 
     assert(_min_gen0_size > 0, "Sanity check");
@@ -573,7 +573,7 @@
   } else {
     // It's been explicitly set on the command line.  Use the
     // OldSize and then determine the consequences.
-    _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size);
+    _min_gen1_size = MIN2(OldSize, (uintx) (_min_heap_byte_size - _min_gen0_size));
     _initial_gen1_size = OldSize;
 
     // If the user has explicitly set an OldSize that is inconsistent
@@ -1056,7 +1056,8 @@
     size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size);
     assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected));
     assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,
-        err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize));
+        err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT,
+		expected, NewSize));
   }
 
 private:
--- a/src/share/vm/memory/defNewGeneration.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/defNewGeneration.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -45,10 +45,16 @@
 #include "runtime/prefetch.inline.hpp"
 #include "runtime/thread.inline.hpp"
 #include "utilities/copy.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/stack.inline.hpp"
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__begin, bool, bool, size_t, bool);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__end, bool, bool, size_t, bool);
+#endif /* !USDT2 */
+
 //
 // DefNewGeneration functions.
 
@@ -561,6 +567,9 @@
                                bool   clear_all_soft_refs,
                                size_t size,
                                bool   is_tlab) {
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__begin, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
   assert(full || size > 0, "otherwise we don't want to collect");
 
   GenCollectedHeap* gch = GenCollectedHeap::heap();
@@ -709,6 +718,10 @@
   jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
   update_time_of_last_gc(now);
 
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__end, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
+
   gch->trace_heap_after_gc(&gc_tracer);
   gc_tracer.report_tenuring_threshold(tenuring_threshold());
 
--- a/src/share/vm/memory/generation.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/generation.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -41,10 +41,16 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/java.hpp"
 #include "utilities/copy.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/events.hpp"
 
 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool);
+#endif /* !USDT2 */
+
 Generation::Generation(ReservedSpace rs, size_t initial_size, int level) :
   _level(level),
   _ref_processor(NULL) {
@@ -642,7 +648,13 @@
   SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer();
   gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start());
 
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
   GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs);
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
 
   gc_timer->register_gc_end();
 
--- a/src/share/vm/memory/metaspace.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/metaspace.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1482,7 +1482,7 @@
 
 void MetaspaceGC::post_initialize() {
   // Reset the high-water mark once the VM initialization is done.
-  _capacity_until_GC = MAX2(MetaspaceAux::committed_bytes(), MetaspaceSize);
+  _capacity_until_GC = MAX2(MetaspaceAux::committed_bytes(), (size_t) MetaspaceSize);
 }
 
 bool MetaspaceGC::can_expand(size_t word_size, bool is_class) {
@@ -1542,7 +1542,7 @@
     (size_t)MIN2(min_tmp, double(MaxMetaspaceSize));
   // Don't shrink less than the initial generation size
   minimum_desired_capacity = MAX2(minimum_desired_capacity,
-                                  MetaspaceSize);
+                                  (size_t) MetaspaceSize);
 
   if (PrintGCDetails && Verbose) {
     gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
@@ -1600,7 +1600,7 @@
     const double max_tmp = used_after_gc / minimum_used_percentage;
     size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(MaxMetaspaceSize));
     maximum_desired_capacity = MAX2(maximum_desired_capacity,
-                                    MetaspaceSize);
+                                    (size_t) MetaspaceSize);
     if (PrintGCDetails && Verbose) {
       gclog_or_tty->print_cr("  "
                              "  maximum_free_percentage: %6.2f"
@@ -3361,7 +3361,7 @@
     // on the medium chunk list.   The next chunk will be small and progress
     // from there.  This size calculated by -version.
     _first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
-                                       (CompressedClassSpaceSize/BytesPerWord)*2);
+                                        (size_t) ((CompressedClassSpaceSize/BytesPerWord)*2));
     _first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
     // Arbitrarily set the initial virtual space to a multiple
     // of the boot class loader size.
--- a/src/share/vm/memory/tenuredGeneration.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/memory/tenuredGeneration.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -32,11 +32,17 @@
 #include "memory/tenuredGeneration.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/java.hpp"
+#include "utilities/dtrace.hpp"
 #include "utilities/macros.hpp"
 #if INCLUDE_ALL_GCS
 #include "gc_implementation/shared/parGCAllocBuffer.hpp"
 #endif
 
+#ifndef USDT2
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__begin, bool, bool, size_t, bool);
+  HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__end, bool, bool, size_t, bool);
+#endif /* !USDT2 */
+
 TenuredGeneration::TenuredGeneration(ReservedSpace rs,
                                      size_t initial_byte_size, int level,
                                      GenRemSet* remset) :
@@ -154,8 +160,14 @@
                                 size_t size,
                                 bool   is_tlab) {
   retire_alloc_buffers_before_full_gc();
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__begin, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
   OneContigSpaceCardGeneration::collect(full, clear_all_soft_refs,
                                         size, is_tlab);
+#ifndef USDT2
+  HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__end, full, clear_all_soft_refs, size, is_tlab);
+#endif  /* !USDT2 */
 }
 
 void TenuredGeneration::compute_new_size() {
--- a/src/share/vm/oops/method.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/oops/method.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -90,7 +90,6 @@
 // | signature_handler     (present only if native)       |
 // |------------------------------------------------------|
 
-
 class CheckedExceptionElement;
 class LocalVariableTableElement;
 class AdapterHandlerEntry;
--- a/src/share/vm/oops/objArrayKlass.inline.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/oops/objArrayKlass.inline.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -48,7 +48,7 @@
   const size_t beg_index = size_t(index);
   assert(beg_index < len || len == 0, "index too large");
 
-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
+  const size_t stride = MIN2(len - beg_index, (size_t) ObjArrayMarkingStride);
   const size_t end_index = beg_index + stride;
   T* const base = (T*)a->base();
   T* const beg = base + beg_index;
@@ -82,7 +82,7 @@
   const size_t beg_index = size_t(index);
   assert(beg_index < len || len == 0, "index too large");
 
-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
+  const size_t stride = MIN2(len - beg_index, (size_t) ObjArrayMarkingStride);
   const size_t end_index = beg_index + stride;
   T* const base = (T*)a->base();
   T* const beg = base + beg_index;
--- a/src/share/vm/opto/runtime.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/opto/runtime.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1571,11 +1571,11 @@
   }
   NamedCounter* c;
   if (tag == NamedCounter::BiasedLockingCounter) {
-    c = new BiasedLockingNamedCounter(strdup(st.as_string()));
+    c = new BiasedLockingNamedCounter(st.as_string());
   } else if (tag == NamedCounter::RTMLockingCounter) {
-    c = new RTMLockingNamedCounter(strdup(st.as_string()));
+    c = new RTMLockingNamedCounter(st.as_string());
   } else {
-    c = new NamedCounter(strdup(st.as_string()), tag);
+    c = new NamedCounter(st.as_string(), tag);
   }
 
   // atomically add the new counter to the head of the list.  We only
--- a/src/share/vm/opto/runtime.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/opto/runtime.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -74,11 +74,17 @@
 
  public:
   NamedCounter(const char *n, CounterTag tag = NoTag):
-    _name(n),
+    _name(n == NULL ? NULL : os::strdup(n)),
     _count(0),
     _next(NULL),
     _tag(tag) {}
 
+  ~NamedCounter() {
+    if (_name != NULL) {
+      os::free((void*)_name);
+    }
+  }
+
   const char * name() const     { return _name; }
   int count() const             { return _count; }
   address addr()                { return (address)&_count; }
--- a/src/share/vm/prims/jvm.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/prims/jvm.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1171,7 +1171,6 @@
   return (jclass) JNIHandles::make_local(env, k->java_mirror());
 }
 
-
 JVM_ENTRY(jclass, JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd))
   JVMWrapper2("JVM_DefineClass %s", name);
 
--- a/src/share/vm/prims/jvmtiTagMap.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/prims/jvmtiTagMap.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -2806,6 +2806,7 @@
 }
 
 // verify that a static oop field is in range
+#ifdef ASSERT
 static inline bool verify_static_oop(InstanceKlass* ik,
                                      oop mirror, int offset) {
   address obj_p = (address)mirror + offset;
@@ -2819,6 +2820,7 @@
     return false;
   }
 }
+#endif
 
 // a class references its super class, interfaces, class loader, ...
 // and finally its static fields
--- a/src/share/vm/prims/methodHandles.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/prims/methodHandles.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +32,10 @@
 #include "runtime/globals.hpp"
 #include "runtime/interfaceSupport.hpp"
 
+#ifdef TARGET_ARCH_zero
+#include "entry_zero.hpp"
+#endif
+
 class MacroAssembler;
 class Label;
 
--- a/src/share/vm/prims/unsafe.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/prims/unsafe.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -377,6 +377,24 @@
 
 #endif // not SUPPORTS_NATIVE_CX8
 
+UNSAFE_ENTRY(jboolean, Unsafe_isBigEndian0(JNIEnv *env, jobject unsafe))
+  UnsafeWrapper("Unsafe_IsBigEndian0");
+  {
+#ifdef VM_LITTLE_ENDIAN
+    return false;
+#else
+    return true;
+#endif
+  }
+UNSAFE_END
+
+UNSAFE_ENTRY(jint, Unsafe_unalignedAccess0(JNIEnv *env, jobject unsafe))
+  UnsafeWrapper("Unsafe_UnalignedAccess0");
+  {
+    return UseUnalignedAccesses;
+  }
+UNSAFE_END
+
 #define DEFINE_GETSETOOP(jboolean, Boolean) \
  \
 UNSAFE_ENTRY(jboolean, Unsafe_Get##Boolean##140(JNIEnv *env, jobject unsafe, jobject obj, jint offset)) \
@@ -706,6 +724,36 @@
   Copy::conjoint_memory_atomic(src, dst, sz);
 UNSAFE_END
 
+// This function is a leaf since if the source and destination are both in native memory
+// the copy may potentially be very large, and we don't want to disable GC if we can avoid it.
+// If either source or destination (or both) are on the heap, the function will enter VM using
+// JVM_ENTRY_FROM_LEAF
+JVM_LEAF(void, Unsafe_CopySwapMemory0(JNIEnv *env, jobject unsafe, jobject srcObj, jlong srcOffset, jobject dstObj, jlong dstOffset, jlong size, jlong elemSize)) {
+  UnsafeWrapper("Unsafe_CopySwapMemory0");
+
+  size_t sz = (size_t)size;
+  size_t esz = (size_t)elemSize;
+
+  if (srcObj == NULL && dstObj == NULL) {
+    // Both src & dst are in native memory
+    address src = (address)srcOffset;
+    address dst = (address)dstOffset;
+
+    Copy::conjoint_swap(src, dst, sz, esz);
+  } else {
+    // At least one of src/dst are on heap, transition to VM to access raw pointers
+
+    JVM_ENTRY_FROM_LEAF(env, void, Unsafe_CopySwapMemory0) {
+      oop srcp = JNIHandles::resolve(srcObj);
+      oop dstp = JNIHandles::resolve(dstObj);
+
+      address src = (address)index_oop_from_field_offset_long(srcp, srcOffset);
+      address dst = (address)index_oop_from_field_offset_long(dstp, dstOffset);
+
+      Copy::conjoint_swap(src, dst, sz, esz);
+    } JVM_END
+  }
+} JVM_END
 
 ////// Random queries
 
@@ -1674,7 +1722,8 @@
 };
 
 JNINativeMethod memcopy_methods_17[] = {
-    {CC "copyMemory",         CC "(" OBJ "J" OBJ "JJ)V",       FN_PTR(Unsafe_CopyMemory2)},
+    {CC "copyMemory",         CC "(" OBJ "J" OBJ "JJ)V",     FN_PTR(Unsafe_CopyMemory2)},
+    {CC "copySwapMemory0",    CC "(" OBJ "J" OBJ "JJJ)V",    FN_PTR(Unsafe_CopySwapMemory0)},
     {CC "setMemory",          CC "(" OBJ "JJB)V",            FN_PTR(Unsafe_SetMemory2)}
 };
 
@@ -1695,6 +1744,9 @@
     {CC "loadFence",          CC "()V",                    FN_PTR(Unsafe_LoadFence)},
     {CC "storeFence",         CC "()V",                    FN_PTR(Unsafe_StoreFence)},
     {CC "fullFence",          CC "()V",                    FN_PTR(Unsafe_FullFence)},
+
+    {CC "isBigEndian0",       CC"()Z",                    FN_PTR(Unsafe_isBigEndian0)},
+    {CC "unalignedAccess0",   CC"()Z",                    FN_PTR(Unsafe_unalignedAccess0)}
 };
 
 #undef CC
--- a/src/share/vm/runtime/arguments.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/arguments.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -817,7 +817,7 @@
   } else {
     *bldarray = REALLOC_C_HEAP_ARRAY(char*, *bldarray, new_count, mtInternal);
   }
-  (*bldarray)[*count] = strdup(arg);
+  (*bldarray)[*count] = os::strdup_check_oom(arg);
   *count = new_count;
 }
 
@@ -1292,7 +1292,7 @@
     (ParallelGCThreads == 0 ? 1 : ParallelGCThreads);
   const size_t preferred_max_new_size_unaligned =
     MIN2(max_heap/(NewRatio+1), ScaleForWordSize(young_gen_per_worker * parallel_gc_threads));
-  size_t preferred_max_new_size =
+  uintx preferred_max_new_size = (uintx)
     align_size_up(preferred_max_new_size_unaligned, os::vm_page_size());
 
   // Unless explicitly requested otherwise, size young gen
@@ -1312,18 +1312,18 @@
     }
     if (PrintGCDetails && Verbose) {
       // Too early to use gclog_or_tty
-      tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
+      tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize);
     }
 
     // Code along this path potentially sets NewSize and OldSize
     if (PrintGCDetails && Verbose) {
       // Too early to use gclog_or_tty
-      tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
-           " initial_heap_size:  " SIZE_FORMAT
+      tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT
+           " initial_heap_size:  " UINTX_FORMAT
            " max_heap: " SIZE_FORMAT,
            min_heap_size(), InitialHeapSize, max_heap);
     }
-    size_t min_new = preferred_max_new_size;
+    uintx min_new = preferred_max_new_size;
     if (FLAG_IS_CMDLINE(NewSize)) {
       min_new = NewSize;
     }
@@ -1335,17 +1335,17 @@
         FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
         if (PrintGCDetails && Verbose) {
           // Too early to use gclog_or_tty
-          tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
+          tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize);
         }
       }
       // Unless explicitly requested otherwise, size old gen
       // so it's NewRatio x of NewSize.
       if (FLAG_IS_DEFAULT(OldSize)) {
         if (max_heap > NewSize) {
-          FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize));
+          FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, (uintx) (max_heap - NewSize)));
           if (PrintGCDetails && Verbose) {
             // Too early to use gclog_or_tty
-            tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
+            tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize);
           }
         }
       }
@@ -1542,7 +1542,6 @@
 #endif // ZERO
 }
 
-
 // NOTE: set_use_compressed_klass_ptrs() must be called after calling
 // set_use_compressed_oops().
 void Arguments::set_use_compressed_klass_ptrs() {
@@ -1906,7 +1905,7 @@
 
       if (PrintGCDetails && Verbose) {
         // Cannot use gclog_or_tty yet.
-        tty->print_cr("  Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
+        tty->print_cr("  Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial);
       }
       FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
     }
@@ -1916,7 +1915,7 @@
       set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
       if (PrintGCDetails && Verbose) {
         // Cannot use gclog_or_tty yet.
-        tty->print_cr("  Minimum heap size " SIZE_FORMAT, min_heap_size());
+        tty->print_cr("  Minimum heap size " UINTX_FORMAT, min_heap_size());
       }
     }
   }
@@ -2080,7 +2079,7 @@
 }
 
 void Arguments::process_java_launcher_argument(const char* launcher, void* extra_info) {
-  _sun_java_launcher = strdup(launcher);
+  _sun_java_launcher = os::strdup_check_oom(launcher);
   if (strcmp("gamma", _sun_java_launcher) == 0) {
     _created_by_gamma_launcher = true;
   }
@@ -2636,11 +2635,11 @@
                 "Invalid ReservedCodeCacheSize=%dK. Must be at least %uK.\n", ReservedCodeCacheSize/K,
                 min_code_cache_size/K);
     status = false;
-  } else if (ReservedCodeCacheSize > 2*G) {
-    // Code cache size larger than MAXINT is not supported.
+  } else if (ReservedCodeCacheSize > CODE_CACHE_SIZE_LIMIT) {
+    // Code cache size larger than CODE_CACHE_SIZE_LIMIT is not supported.
     jio_fprintf(defaultStream::error_stream(),
                 "Invalid ReservedCodeCacheSize=%dM. Must be at most %uM.\n", ReservedCodeCacheSize/M,
-                (2*G)/M);
+                CODE_CACHE_SIZE_LIMIT/M);
     status = false;
   }
 
@@ -3225,7 +3224,7 @@
       // Redirect GC output to the file. -Xloggc:<filename>
       // ostream_init_log(), when called will use this filename
       // to initialize a fileStream.
-      _gc_log_filename = strdup(tail);
+      _gc_log_filename = os::strdup_check_oom(tail);
      if (!is_filename_valid(_gc_log_filename)) {
        jio_fprintf(defaultStream::output_stream(),
                   "Invalid file name for use with -Xloggc: Filename can only contain the "
@@ -3481,7 +3480,7 @@
       src ++;
     }
 
-    char* copy = os::strdup(src, mtInternal);
+    char* copy = os::strdup_check_oom(src, mtInternal);
 
     // trim all trailing empty paths
     for (char* tail = copy + strlen(copy) - 1; tail >= copy && *tail == separator; tail--) {
@@ -3867,7 +3866,7 @@
         jvm_path, os::file_separator());
     }
   } else {
-    shared_archive_path = os::strdup(SharedArchiveFile, mtInternal);
+    shared_archive_path = os::strdup_check_oom(SharedArchiveFile, mtInternal);
   }
   return shared_archive_path;
 }
--- a/src/share/vm/runtime/biasedLocking.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/biasedLocking.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -151,8 +151,13 @@
   if (!mark->has_bias_pattern()) {
     if (TraceBiasedLocking) {
       ResourceMark rm;
-      tty->print_cr("  (Skipping revocation of object of type %s because it's no longer biased)",
-                    obj->klass()->external_name());
+      tty->print_cr("  (Skipping revocation of object " INTPTR_FORMAT
+                    ", mark " INTPTR_FORMAT ", type %s"
+                    ", requesting thread " INTPTR_FORMAT
+                    " because it's no longer biased)",
+                    p2i((void *)obj), (intptr_t) mark,
+                    obj->klass()->external_name(),
+                    (intptr_t) requesting_thread);
     }
     return BiasedLocking::NOT_BIASED;
   }
@@ -163,8 +168,15 @@
 
   if (TraceBiasedLocking && (Verbose || !is_bulk)) {
     ResourceMark rm;
-    tty->print_cr("Revoking bias of object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT " , allow rebias %d , requesting thread " INTPTR_FORMAT,
-                  p2i((void *)obj), (intptr_t) mark, obj->klass()->external_name(), (intptr_t) obj->klass()->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread);
+    tty->print_cr("Revoking bias of object " INTPTR_FORMAT ", mark "
+                  INTPTR_FORMAT ", type %s, prototype header " INTPTR_FORMAT
+                  ", allow rebias %d, requesting thread " INTPTR_FORMAT,
+                  p2i((void *)obj),
+                  (intptr_t) mark,
+                  obj->klass()->external_name(),
+                  (intptr_t) obj->klass()->prototype_header(),
+                  (allow_rebias ? 1 : 0),
+                  (intptr_t) requesting_thread);
   }
 
   JavaThread* biased_thread = mark->biased_locker();
@@ -200,11 +212,17 @@
       obj->set_mark(unbiased_prototype);
     }
     if (TraceBiasedLocking && (Verbose || !is_bulk)) {
-      tty->print_cr("  Revoked bias of object biased toward dead thread");
+      tty->print_cr("  Revoked bias of object biased toward dead thread ("
+                              PTR_FORMAT ")", p2i(biased_thread));
     }
     return BiasedLocking::BIAS_REVOKED;
   }
 
+  if (TraceBiasedLocking && (Verbose || !is_bulk)) {
+    tty->print_cr("  Revoked bias of object biased toward live thread ("
+                  PTR_FORMAT ")", p2i(biased_thread));
+  }
+
   // Thread owning bias is alive.
   // Check to see whether it currently owns the lock and, if so,
   // write down the needed displaced headers to the thread's stack.
--- a/src/share/vm/runtime/fprofiler.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/fprofiler.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -628,10 +628,16 @@
   }
 
   vmNode(const char* name, const TickPosition where) : ProfilerNode() {
-    _name = name;
+    _name = os::strdup(name);
     update(where);
   }
 
+  ~vmNode() {
+    if (_name != NULL) {
+      os::free((void*)_name);
+    }
+  }
+
   const char *name()    const { return _name; }
   bool is_compiled()    const { return true; }
 
@@ -783,7 +789,7 @@
   assert(index >= 0, "Must be positive");
   // Note that we call strdup below since the symbol may be resource allocated
   if (!table[index]) {
-    table[index] = new (this) vmNode(os::strdup(name), where);
+    table[index] = new (this) vmNode(name, where);
   } else {
     ProfilerNode* prev = table[index];
     for(ProfilerNode* node = prev; node; node = node->next()) {
@@ -793,7 +799,7 @@
       }
       prev = node;
     }
-    prev->set_next(new (this) vmNode(os::strdup(name), where));
+    prev->set_next(new (this) vmNode(name, where));
   }
 }
 
--- a/src/share/vm/runtime/globals.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/globals.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -453,7 +453,7 @@
 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
 
 // A flag must be declared with one of the following types:
-// bool, intx, uintx, ccstr.
+// bool, intx, uintx, ccstr, double, or uint64_t.
 // The type "ccstr" is an alias for "const char*" and is used
 // only in this file, because the macrology requires single-token type names.
 
@@ -4004,6 +4004,9 @@
           "Allocation less than this value will be allocated "              \
           "using malloc. Larger allocations will use mmap.")                \
                                                                             \
+  diagnostic(bool, UseUnalignedAccesses, false,                             \
+          "Use unaligned memory accesses in sun.misc.Unsafe")               \
+                                                                            \
   product_pd(bool, PreserveFramePointer,                                    \
              "Use the FP register for holding the frame pointer "           \
              "and not as a general purpose register.")                      \
--- a/src/share/vm/runtime/mutex.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/mutex.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -283,16 +283,6 @@
   return x & 0x7FFFFFFF ;
 }
 
-static inline jint MarsagliaXOR (jint * const a) {
-  jint x = *a ;
-  if (x == 0) x = UNS(a)|1 ;
-  x ^= x << 6;
-  x ^= ((unsigned)x) >> 21;
-  x ^= x << 7 ;
-  *a = x ;
-  return x & 0x7FFFFFFF ;
-}
-
 static int Stall (int its) {
   static volatile jint rv = 1 ;
   volatile int OnFrame = 0 ;
--- a/src/share/vm/runtime/objectMonitor.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/objectMonitor.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -929,7 +929,7 @@
 // ~~~~~~~~
 // ::exit() uses a canonical 1-1 idiom with a MEMBAR although some of
 // the fast-path operators have been optimized so the common ::exit()
-// operation is 1-0.  See i486.ad fast_unlock(), for instance.
+// operation is 1-0, e.g., see macroAssembler_x86.cpp: fast_unlock().
 // The code emitted by fast_unlock() elides the usual MEMBAR.  This
 // greatly improves latency -- MEMBAR and CAS having considerable local
 // latency on modern processors -- but at the cost of "stranding".  Absent the
@@ -942,7 +942,7 @@
 //
 // The CAS() in enter provides for safety and exclusion, while the CAS or
 // MEMBAR in exit provides for progress and avoids stranding.  1-0 locking
-// eliminates the CAS/MEMBAR from the exist path, but it admits stranding.
+// eliminates the CAS/MEMBAR from the exit path, but it admits stranding.
 // We detect and recover from stranding with timers.
 //
 // If a thread transiently strands it'll park until (a) another
--- a/src/share/vm/runtime/os.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/os.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -552,6 +552,14 @@
 }
 
 
+char* os::strdup_check_oom(const char* str, MEMFLAGS flags) {
+  char* p = os::strdup(str, flags);
+  if (p == NULL) {
+    vm_exit_out_of_memory(strlen(str) + 1, OOM_MALLOC_ERROR, "os::strdup_check_oom");
+  }
+  return p;
+}
+
 
 #define paranoid                 0  /* only set to 1 if you suspect checking code has bug */
 
@@ -1274,12 +1282,13 @@
 }
 
 void os::set_memory_serialize_page(address page) {
-  int count = log2_intptr(sizeof(class JavaThread)) - log2_int(64);
+  int count = log2_intptr((uintptr_t) sizeof(class JavaThread)) - log2_int(64);
   _mem_serialize_page = (volatile int32_t *)page;
   // We initialize the serialization page shift count here
   // We assume a cache line size of 64 bytes
   assert(SerializePageShiftCount == count,
-         "thread size changed, fix SerializePageShiftCount constant");
+         err_msg("JavaThread size changed; "
+                 "SerializePageShiftCount constant should be %d", count));
   set_serialize_page_mask((uintptr_t)(vm_page_size() - sizeof(int32_t)));
 }
 
--- a/src/share/vm/runtime/os.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/os.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -730,6 +730,8 @@
   static void  free    (void *memblock, MEMFLAGS flags = mtNone);
   static bool  check_heap(bool force = false);      // verify C heap integrity
   static char* strdup(const char *, MEMFLAGS flags = mtInternal);  // Like strdup
+  // Like strdup, but exit VM when strdup() returns NULL
+  static char* strdup_check_oom(const char*, MEMFLAGS flags = mtInternal);
 
 #ifndef PRODUCT
   static julong num_mallocs;         // # of calls to malloc/realloc
--- a/src/share/vm/runtime/sharedRuntime.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -2957,7 +2957,7 @@
   Method* moop = fr.interpreter_frame_method();
   int max_locals = moop->max_locals();
   // Allocate temp buffer, 1 word per local & 2 per active monitor
-  int buf_size_words = max_locals + active_monitor_count*2;
+  int buf_size_words = max_locals + active_monitor_count * BasicObjectLock::size();
   intptr_t *buf = NEW_C_HEAP_ARRAY(intptr_t,buf_size_words, mtCode);
 
   // Copy the locals.  Order is preserved so that loading of longs works.
--- a/src/share/vm/runtime/synchronizer.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/synchronizer.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -184,38 +184,52 @@
 }
 
 void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) {
-  assert(!object->mark()->has_bias_pattern(), "should not see bias pattern here");
-  // if displaced header is null, the previous enter is recursive enter, no-op
+  markOop mark = object->mark();
+  // We cannot check for Biased Locking if we are racing an inflation.
+  assert(mark == markOopDesc::INFLATING() ||
+         !mark->has_bias_pattern(), "should not see bias pattern here");
+
   markOop dhw = lock->displaced_header();
-  markOop mark ;
   if (dhw == NULL) {
-     // Recursive stack-lock.
-     // Diagnostics -- Could be: stack-locked, inflating, inflated.
-     mark = object->mark() ;
-     assert (!mark->is_neutral(), "invariant") ;
-     if (mark->has_locker() && mark != markOopDesc::INFLATING()) {
-        assert(THREAD->is_lock_owned((address)mark->locker()), "invariant") ;
+    // If the displaced header is NULL, then this exit matches up with
+    // a recursive enter. No real work to do here except for diagnostics.
+#ifndef PRODUCT
+    if (mark != markOopDesc::INFLATING()) {
+      // Only do diagnostics if we are not racing an inflation. Simply
+      // exiting a recursive enter of a Java Monitor that is being
+      // inflated is safe; see the has_monitor() comment below.
+      assert(!mark->is_neutral(), "invariant");
+      assert(!mark->has_locker() ||
+             THREAD->is_lock_owned((address)mark->locker()), "invariant");
+      if (mark->has_monitor()) {
+        // The BasicLock's displaced_header is marked as a recursive
+        // enter and we have an inflated Java Monitor (ObjectMonitor).
+        // This is a special case where the Java Monitor was inflated
+        // after this thread entered the stack-lock recursively. When a
+        // Java Monitor is inflated, we cannot safely walk the Java
+        // Monitor owner's stack and update the BasicLocks because a
+        // Java Monitor can be asynchronously inflated by a thread that
+        // does not own the Java Monitor.
+        ObjectMonitor * m = mark->monitor();
+        assert(((oop)(m->object()))->mark() == mark, "invariant");
+        assert(m->is_entered(THREAD), "invariant");
+      }
      }
-     if (mark->has_monitor()) {
-        ObjectMonitor * m = mark->monitor() ;
-        assert(((oop)(m->object()))->mark() == mark, "invariant") ;
-        assert(m->is_entered(THREAD), "invariant") ;
-     }
-     return ;
+#endif
+     return;
   }
 
-  mark = object->mark() ;
-
-  // If the object is stack-locked by the current thread, try to
-  // swing the displaced header from the box back to the mark.
   if (mark == (markOop) lock) {
-     assert (dhw->is_neutral(), "invariant") ;
-     if ((markOop) Atomic::cmpxchg_ptr (dhw, object->mark_addr(), mark) == mark) {
-        TEVENT (fast_exit: release stacklock) ;
-        return;
-     }
+    // If the object is stack-locked by the current thread, try to
+    // swing the displaced header from the BasicLock back to the mark.
+    assert (dhw->is_neutral(), "invariant") ;
+    if ((markOop) Atomic::cmpxchg_ptr(dhw, object->mark_addr(), mark) == mark) {
+      TEVENT(fast_exit: release stack-lock);
+      return;
+    }
   }
 
+  // We have to take the slow-path of possible inflation and then exit.
   ObjectSynchronizer::inflate(THREAD, object)->exit (true, THREAD) ;
 }
 
--- a/src/share/vm/runtime/vmStructs.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/runtime/vmStructs.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -51,6 +51,7 @@
 #include "interpreter/bytecodes.hpp"
 #include "interpreter/interpreter.hpp"
 #include "memory/allocation.hpp"
+#include "memory/allocation.inline.hpp"
 #include "memory/cardTableRS.hpp"
 #include "memory/defNewGeneration.hpp"
 #include "memory/freeBlockDictionary.hpp"
@@ -92,6 +93,7 @@
 #include "runtime/globals.hpp"
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
+#include "runtime/os.hpp"
 #include "runtime/perfMemory.hpp"
 #include "runtime/serviceThread.hpp"
 #include "runtime/sharedRuntime.hpp"
@@ -3284,14 +3286,14 @@
     }
   }
   if (strstr(typeName, " const") == typeName + len - 6) {
-    char * s = strdup(typeName);
+    char * s = os::strdup_check_oom(typeName);
     s[len - 6] = '\0';
     // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
     if (recursiveFindType(origtypes, s, true) == 1) {
-      free(s);
+      os::free(s);
       return 1;
     }
-    free(s);
+    os::free(s);
   }
   if (!isRecurse) {
     tty->print_cr("type \"%s\" not found", typeName);
--- a/src/share/vm/services/management.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/services/management.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1819,7 +1819,7 @@
   ResourceMark rm(THREAD); // thread->name() uses ResourceArea
 
   assert(thread->name() != NULL, "All threads should have a name");
-  _names_chars[_count] = strdup(thread->name());
+  _names_chars[_count] = os::strdup(thread->name());
   _times->long_at_put(_count, os::is_thread_cpu_time_supported() ?
                         os::thread_cpu_time(thread) : -1);
   _count++;
@@ -1837,7 +1837,7 @@
 
 ThreadTimesClosure::~ThreadTimesClosure() {
   for (int i = 0; i < _count; i++) {
-    free(_names_chars[i]);
+    os::free(_names_chars[i]);
   }
   FREE_C_HEAP_ARRAY(char *, _names_chars, mtInternal);
 }
--- a/src/share/vm/shark/sharkBuilder.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/shark/sharkBuilder.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -413,7 +413,7 @@
   const char *name;
   if (value->hasName())
     // XXX this leaks, but it's only debug code
-    name = strdup(value->getName().str().c_str());
+    name = os::strdup(value->getName().str().c_str());
   else
     name = "unnamed_value";
 
--- a/src/share/vm/utilities/copy.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/utilities/copy.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -64,8 +64,8 @@
    * @param elem_size size of the elements to copy-swap
    */
   static void conjoint_swap(address src, address dst, size_t byte_count, size_t elem_size) {
-    assert(src != NULL, "address must not be NULL");
-    assert(dst != NULL, "address must not be NULL");
+    assert(src != NULL, err_msg("address must not be NULL"));
+    assert(dst != NULL, err_msg("address must not be NULL"));
     assert(elem_size == 2 || elem_size == 4 || elem_size == 8,
            err_msg("incorrect element size: " SIZE_FORMAT, elem_size));
     assert(is_size_aligned(byte_count, elem_size),
--- a/src/share/vm/utilities/globalDefinitions.hpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/utilities/globalDefinitions.hpp	Sun Apr 25 18:18:49 2021 +0100
@@ -1449,12 +1449,21 @@
 
 #define INTPTR_FORMAT_W(width)   "%" #width PRIxPTR
 
+#if defined(S390) && !defined(_LP64)
+#define SSIZE_FORMAT          "%z"   PRIdPTR
+#define SIZE_FORMAT           "%z"   PRIuPTR
+#define SIZE_FORMAT_HEX       "0x%z" PRIxPTR
+#define SSIZE_FORMAT_W(width) "%"   #width "z" PRIdPTR
+#define SIZE_FORMAT_W(width)  "%"   #width "z" PRIuPTR
+#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR
+#else   // !S390
 #define SSIZE_FORMAT          "%"   PRIdPTR
 #define SIZE_FORMAT           "%"   PRIuPTR
 #define SIZE_FORMAT_HEX       "0x%" PRIxPTR
 #define SSIZE_FORMAT_W(width) "%"   #width PRIdPTR
 #define SIZE_FORMAT_W(width)  "%"   #width PRIuPTR
 #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR
+#endif  // S390
 
 #define INTX_FORMAT           "%" PRIdPTR
 #define UINTX_FORMAT          "%" PRIuPTR
--- a/src/share/vm/utilities/vmError.cpp	Mon Mar 01 20:02:58 2021 +0000
+++ b/src/share/vm/utilities/vmError.cpp	Sun Apr 25 18:18:49 2021 +0100
@@ -202,7 +202,8 @@
 
 static void print_bug_submit_message(outputStream *out, Thread *thread) {
   if (out == NULL) return;
-  out->print_raw_cr("# If you would like to submit a bug report, please visit:");
+  out->print_raw_cr("# If you would like to submit a bug report, please include");
+  out->print_raw_cr("# instructions on how to reproduce the bug and visit:");
   out->print_raw   ("#   ");
   out->print_raw_cr(Arguments::java_vendor_url_bug());
   // If the crash is in native code, encourage user to submit a bug to the
@@ -497,6 +498,13 @@
                    UseCompressedOops ? "compressed oops" : ""
                  );
 
+#ifdef DERIVATIVE_ID
+     st->print_cr("# Derivative: %s", DERIVATIVE_ID);
+#endif
+#ifdef DISTRIBUTION_ID
+     st->print_cr("# Distribution: %s", DISTRIBUTION_ID);
+#endif
+
   STEP(60, "(printing problematic frame)")
 
      // Print current frame if we have a context (i.e. it's a crash)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/oracle/CheckCompileCommandOption.java	Sun Apr 25 18:18:49 2021 +0100
@@ -0,0 +1,216 @@
+/*
+ * 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.
+ */
+
+import com.oracle.java.testlibrary.*;
+
+/*
+ * @test CheckCompileCommandOption
+ * @bug 8055286 8056964 8059847
+ * @summary "Checks parsing of -XX:+CompileCommand=option"
+ * @library /testlibrary
+ * @run main CheckCompileCommandOption
+ */
+
+public class CheckCompileCommandOption {
+
+    // Currently, two types of trailing options can be used with
+    // -XX:CompileCommand=option
+    //
+    // (1) CompileCommand=option,Klass::method,flag
+    // (2) CompileCommand=option,Klass::method,type,flag,value
+    //
+    // Type (1) is used to enable a boolean flag for a method.
+    //
+    // Type (2) is used to support flags with a value. Values can
+    // have the the following types: intx, uintx, bool, ccstr,
+    // ccstrlist, and double.
+
+    private static final String[][] TYPE_1_ARGUMENTS = {
+        {
+            "-XX:CompileCommand=option,com/oracle/Test.test,MyBoolOption1",
+            "-XX:CompileCommand=option,com/oracle/Test,test,MyBoolOption2",
+            "-XX:CompileCommand=option,com.oracle.Test::test,MyBoolOption3",
+            "-XX:CompileCommand=option,com/oracle/Test::test,MyBoolOption4",
+            "-version"
+        },
+        {
+            "-XX:CompileCommand=option,com/oracle/Test.test,MyBoolOption1,MyBoolOption2",
+            "-version"
+        },
+        {
+            "-XX:CompileCommand=option,com/oracle/Test,test,MyBoolOption1,MyBoolOption2",
+            "-version"
+        }
+    };
+
+    private static final String[][] TYPE_1_EXPECTED_OUTPUTS = {
+        {
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true",
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true",
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption3 = true",
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption4 = true"
+        },
+        {
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true",
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true",
+        },
+        {
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true",
+            "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true",
+        }
+    };
+
+    private static final String[][] TYPE_2_ARGUMENTS = {
+        {
+            "-XX:CompileCommand=option,Test::test,ccstrlist,MyListOption,_foo,_bar",
+            "-XX:CompileCommand=option,Test::test,ccstr,MyStrOption,_foo",
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false",
+            "-XX:CompileCommand=option,Test::test,intx,MyIntxOption,-1",
+            "-XX:CompileCommand=option,Test::test,uintx,MyUintxOption,1",
+            "-XX:CompileCommand=option,Test::test,MyFlag",
+            "-XX:CompileCommand=option,Test::test,double,MyDoubleOption,1.123",
+            "-version"
+        },
+        {
+            "-XX:CompileCommand=option,Test.test,double,MyDoubleOption,1.123",
+            "-version"
+        },
+        {
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntxOption,-1,uintx,MyUintxOption,1,MyFlag,double,MyDoubleOption,1.123",
+            "-version"
+        }
+    };
+
+    private static final String[][] TYPE_2_EXPECTED_OUTPUTS = {
+        {
+            "CompilerOracle: option Test.test const char* MyListOption = '_foo _bar'",
+            "CompilerOracle: option Test.test const char* MyStrOption = '_foo'",
+            "CompilerOracle: option Test.test bool MyBoolOption = false",
+            "CompilerOracle: option Test.test intx MyIntxOption = -1",
+            "CompilerOracle: option Test.test uintx MyUintxOption = 1",
+            "CompilerOracle: option Test.test bool MyFlag = true",
+            "CompilerOracle: option Test.test double MyDoubleOption = 1.123000"
+        },
+        {
+            "CompilerOracle: option Test.test double MyDoubleOption = 1.123000"
+        },
+        {
+            "CompilerOracle: option Test.test bool MyBoolOption = false",
+            "CompilerOracle: option Test.test intx MyIntxOption = -1",
+            "CompilerOracle: option Test.test uintx MyUintxOption = 1",
+            "CompilerOracle: option Test.test bool MyFlag = true",
+            "CompilerOracle: option Test.test double MyDoubleOption = 1.123000",
+        }
+    };
+
+    private static final String[][] TYPE_2_INVALID_ARGUMENTS = {
+        {
+            // bool flag name missing
+            "-XX:CompileCommand=option,Test::test,bool",
+            "-version"
+        },
+        {
+            // bool flag value missing
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption",
+            "-version"
+        },
+        {
+            // wrong value for bool flag
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,100",
+            "-version"
+        },
+        {
+            // intx flag name missing
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx",
+            "-version"
+        },
+        {
+            // intx flag value missing
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntOption",
+            "-version"
+        },
+        {
+            // wrong value for intx flag
+            "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntOption,true",
+            "-version"
+        },
+        {
+            // wrong value for flag double flag
+            "-XX:CompileCommand=option,Test::test,double,MyDoubleOption,1",
+            "-version"
+        }
+    };
+
+    private static void verifyValidOption(String[] arguments, String[] expected_outputs) throws Exception {
+        ProcessBuilder pb;
+        OutputAnalyzer out;
+
+        pb = ProcessTools.createJavaProcessBuilder(arguments);
+        out = new OutputAnalyzer(pb.start());
+
+        for (String expected_output : expected_outputs) {
+            out.shouldContain(expected_output);
+        }
+
+        out.shouldNotContain("CompilerOracle: unrecognized line");
+        out.shouldHaveExitValue(0);
+    }
+
+    private static void verifyInvalidOption(String[] arguments) throws Exception {
+        ProcessBuilder pb;
+        OutputAnalyzer out;
+
+        pb = ProcessTools.createJavaProcessBuilder(arguments);
+        out = new OutputAnalyzer(pb.start());
+
+        out.shouldContain("CompilerOracle: unrecognized line");
+        out.shouldHaveExitValue(0);
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        if (TYPE_1_ARGUMENTS.length != TYPE_1_EXPECTED_OUTPUTS.length) {
+            throw new RuntimeException("Test is set up incorrectly: length of arguments and expected outputs for type (1) options does not match.");
+        }
+
+        if (TYPE_2_ARGUMENTS.length != TYPE_2_EXPECTED_OUTPUTS.length) {
+            throw new RuntimeException("Test is set up incorrectly: length of arguments and expected outputs for type (2) options does not match.");
+        }
+
+        // Check if type (1) options are parsed correctly
+        for (int i = 0; i < TYPE_1_ARGUMENTS.length; i++) {
+            verifyValidOption(TYPE_1_ARGUMENTS[i], TYPE_1_EXPECTED_OUTPUTS[i]);
+        }
+
+        // Check if type (2) options are parsed correctly
+        for (int i = 0; i < TYPE_2_ARGUMENTS.length; i++) {
+            verifyValidOption(TYPE_2_ARGUMENTS[i], TYPE_2_EXPECTED_OUTPUTS[i]);
+        }
+
+        // Check if error is reported for invalid type (2) options
+        // (flags with type information specified)
+        for (String[] arguments: TYPE_2_INVALID_ARGUMENTS) {
+            verifyInvalidOption(arguments);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	Sun Apr 25 18:18:49 2021 +0100
@@ -0,0 +1,315 @@
+/*
+ * Copyright (c) 2016 SAP SE. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact 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 8158260
+ * @summary Test unaligned Unsafe accesses
+ * @modules java.base/jdk.internal.misc
+ * @run main/othervm -Diters=20000 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation JdkInternalMiscUnsafeUnalignedAccess
+ * @author volker.simonis@gmail.com
+ */
+
+import java.lang.reflect.Field;
+import java.nio.ByteOrder;
+import sun.misc.Unsafe;
+
+public class JdkInternalMiscUnsafeUnalignedAccess {
+    static final int ITERS = Integer.getInteger("iters", 20_000);
+    private static final boolean BIG_ENDIAN = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN);
+    private static final Unsafe UNSAFE;
+    private static final int SIZE = 1024;
+    private static long memory;
+
+    static {
+        try {
+            Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
+            unsafeField.setAccessible(true);
+            UNSAFE = (Unsafe) unsafeField.get(null);
+        }
+        catch (Exception e) {
+            throw new RuntimeException("Unable to get Unsafe instance.", e);
+        }
+    }
+
+    static int getInt_0() {
+        return UNSAFE.getInt(memory + 0);
+    }
+    static int getInt_1() {
+        return UNSAFE.getInt(memory + 1);
+    }
+    static int getInt_4() {
+        return UNSAFE.getInt(memory + 4);
+    }
+    static int getInt_17() {
+        return UNSAFE.getInt(memory + 17);
+    }
+
+    static long getIntAsLong_0() {
+        return UNSAFE.getInt(memory + 0);
+    }
+    static long getIntAsLong_1() {
+        return UNSAFE.getInt(memory + 1);
+    }
+    static long getIntAsLong_4() {
+        return UNSAFE.getInt(memory + 4);
+    }
+    static long getIntAsLong_17() {
+        return UNSAFE.getInt(memory + 17);
+    }
+
+    static long getLong_0() {
+        return UNSAFE.getLong(memory + 0);
+    }
+    static long getLong_1() {
+        return UNSAFE.getLong(memory + 1);
+    }
+    static long getLong_4() {
+        return UNSAFE.getLong(memory + 4);
+    }
+    static long getLong_8() {
+        return UNSAFE.getLong(memory + 8);
+    }
+    static long getLong_17() {
+        return UNSAFE.getLong(memory + 17);
+    }
+
+    static void putInt_0(int i) {
+        UNSAFE.putInt(memory + 0, i);
+    }
+    static void putInt_1(int i) {
+        UNSAFE.putInt(memory + 1, i);
+    }
+    static void putInt_4(int i) {
+        UNSAFE.putInt(memory + 4, i);
+    }
+    static void putInt_17(int i) {
+        UNSAFE.putInt(memory + 17, i);
+    }
+
+    static void putLong_0(long l) {
+        UNSAFE.putLong(memory + 0, l);
+    }
+    static void putLong_1(long l) {
+        UNSAFE.putLong(memory + 1, l);
+    }
+    static void putLong_4(long l) {
+        UNSAFE.putLong(memory + 4, l);
+    }
+    static void putLong_8(long l) {
+        UNSAFE.putLong(memory + 8, l);
+    }
+    static void putLong_17(long l) {
+        UNSAFE.putLong(memory + 17, l);
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        if (!UNSAFE.unalignedAccess()) {
+            System.out.println("Platform is not supporting unaligned access - nothing to test.");
+            return;
+        }
+
+        memory = UNSAFE.allocateMemory(SIZE);
+
+        UNSAFE.putInt(memory +  0, 0x00112233);
+        UNSAFE.putInt(memory +  4, 0x44556677);
+        UNSAFE.putInt(memory +  8, 0x8899aabb);
+        UNSAFE.putInt(memory + 12, 0xccddeeff);
+        UNSAFE.putInt(memory + 16, 0x01234567);
+        UNSAFE.putInt(memory + 20, 0x89abcdef);
+        UNSAFE.putInt(memory + 24, 0x01234567);
+
+        // Unsafe.getInt()
+        int res;
+        for (int i = 0; i < ITERS; i++) {
+            res = getInt_0();
+            if (res != 0x00112233) {
+                throw new Exception(res + " != 0x00112233");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            res = getInt_1();
+            if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) {
+                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            res = getInt_4();
+            if (res != 0x44556677) {
+                throw new Exception(res + " != 0x44556677");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            res = getInt_17();
+            if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) {
+                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345));
+            }
+        }
+
+        // (long)Unsafe.getInt()
+        long lres;
+        for (int i = 0; i < ITERS; i++) {
+            lres = getIntAsLong_0();
+            if (lres != (long)0x00112233) {
+                throw new Exception(lres + " != 0x00112233");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getIntAsLong_1();
+            if (lres != (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getIntAsLong_4();
+            if (lres != (long)0x44556677) {
+                throw new Exception(lres + " != 0x44556677");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getIntAsLong_17();
+            if (lres != (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345));
+            }
+        }
+
+        // Unsafe.getLong()
+        for (int i = 0; i < ITERS; i++) {
+            lres = getLong_0();
+            if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getLong_1();
+            if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getLong_4();
+            if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getLong_8();
+            if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            lres = getLong_17();
+            if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L));
+            }
+        }
+
+        // Unsafe.putInt()
+        for (int i = 0; i < ITERS; i++) {
+            putInt_0(0x00112233);
+            res = getInt_0();
+            if (res != 0x00112233) {
+                throw new Exception(res + " != 0x00112233");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putInt_1(BIG_ENDIAN ? 0x11223344 : 0x77001122);
+            res = getInt_1();
+            if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) {
+                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putInt_4(0x44556677);
+            res = getInt_4();
+            if (res != 0x44556677) {
+                throw new Exception(res + " != 0x44556677");
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putInt_17(BIG_ENDIAN ? 0x23456789 : 0xef012345);
+            res = getInt_17();
+            if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) {
+                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345));
+            }
+        }
+
+
+        // Unsafe.putLong()
+        for (int i = 0; i < ITERS; i++) {
+            putLong_0(BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L);
+            lres = getLong_0();
+            if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putLong_1(BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L);
+            lres = getLong_1();
+            if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putLong_4(BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L);
+            lres = getLong_4();
+            if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putLong_8(BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL);
+            lres = getLong_8();
+            if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL));
+            }
+        }
+
+        for (int i = 0; i < ITERS; i++) {
+            putLong_17(BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L);
+            lres = getLong_17();
+            if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) {
+                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L));
+            }
+        }
+    }
+
+}
--- a/test/gc/metaspace/TestPerfCountersAndMemoryPools.java	Mon Mar 01 20:02:58 2021 +0000
+++ b/test/gc/metaspace/TestPerfCountersAndMemoryPools.java	Sun Apr 25 18:18:49 2021 +0100
@@ -33,8 +33,8 @@
  * @requires vm.gc=="Serial" | vm.gc=="null"
  * @summary Tests that a MemoryPoolMXBeans and PerfCounters for metaspace
  *          report the same data.
- * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
- * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData TestPerfCountersAndMemoryPools
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData TestPerfCountersAndMemoryPools
  */
 public class TestPerfCountersAndMemoryPools {
     public static void main(String[] args) throws Exception {