changeset 14422:3df509b41e51

Merge
author andrew
date Fri, 23 Apr 2021 01:47:38 +0100
parents 1bb0d5a206fe (diff) bbffc81f10de (current diff)
children 06dcb7564c86
files
diffstat 87 files changed, 2423 insertions(+), 720 deletions(-) [+]
line wrap: on
line diff
--- a/make/CompileLaunchers.gmk	Tue Apr 20 19:19:09 2021 +0100
+++ b/make/CompileLaunchers.gmk	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -556,7 +556,9 @@
 	$(call install-file)
 
 $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(DEBUGINFO_EXT): $(BUILD_UNPACKEXE)
-	$(call install-file)
+	$(MKDIR) -p $(@D)
+	$(RM) $@
+	$(CP) -R $(JDK_OUTPUTDIR)/objs/unpackexe$(OUTPUT_SUBDIR)/unpack200$(DEBUGINFO_EXT) $@
 
 BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(EXE_SUFFIX)
 ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
--- a/make/Images.gmk	Tue Apr 20 19:19:09 2021 +0100
+++ b/make/Images.gmk	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -139,7 +139,7 @@
       clhsdb$(EXE_SUFFIX) \
       hsdb$(EXE_SUFFIX) \
       jfr$(EXE_SUFFIX)
-  NOT_JRE_DEBUGINFO_FILES := $(patsubst %$(EXE_SUFFIX),%$(DEBUGINFO_EXT),$(NOT_JRE_BIN_FILES))
+  NOT_JRE_BIN_DEBUGINFO_FILES := $(patsubst %$(EXE_SUFFIX),%$(DEBUGINFO_EXT),$(NOT_JRE_BIN_FILES))
 endif
 
 WINDOWS_JDK_BIN_FILES = \
@@ -157,17 +157,8 @@
 # Prevent sjavac from entering the images.
 ALL_BIN_LIST := $(filter-out %/sjavac, $(ALL_BIN_LIST))
 
-ifeq ($(OPENJDK_TARGET_OS), windows)
-  # On windows, the libraries are in the bin dir, only filter out debuginfo files
-  # for executables. "java" is both a library and executable.
-  ALL_BIN_EXEC_FILES := $(filter-out java.exe, $(notdir $(filter %.exe, $(ALL_BIN_LIST))))
-  ALL_BIN_DEBUG_FILTER := $(addprefix %, $(patsubst %.exe, %.debuginfo, $(ALL_BIN_EXEC_FILES)) \
-      $(patsubst %.exe, %.diz, $(ALL_BIN_EXEC_FILES))) %.pdb
-  ALL_BIN_LIST := $(filter-out $(ALL_BIN_DEBUG_FILTER), $(ALL_BIN_LIST))
-endif
-
-JDKJRE_BIN_LIST := $(filter-out $(addprefix %, $(NOT_JRE_BIN_FILES)), $(ALL_BIN_LIST))
-JRE_BIN_LIST := $(filter-out $(addprefix %, $(WINDOWS_JDKJRE_BIN_FILES)) $(addprefix %, $(NOT_JRE_DEBUGINFO_FILES)), $(JDKJRE_BIN_LIST))
+JDKJRE_BIN_LIST := $(filter-out $(addprefix %, $(NOT_JRE_BIN_FILES)) $(addprefix %, $(NOT_JRE_BIN_DEBUGINFO_FILES)), $(ALL_BIN_LIST))
+JRE_BIN_LIST := $(filter-out $(addprefix %, $(WINDOWS_JDKJRE_BIN_FILES)), $(JDKJRE_BIN_LIST))
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
   JDK_BIN_LIST := $(filter $(addprefix %, $(WINDOWS_JDK_BIN_FILES)), $(ALL_BIN_LIST))
--- a/make/data/cacerts/thawtepremiumserverca	Tue Apr 20 19:19:09 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-Owner: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
-Issuer: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
-Serial number: 36122296c5e338a520a1d25f4cd70954
-Valid from: Thu Aug 01 00:00:00 GMT 1996 until: Fri Jan 01 23:59:59 GMT 2021
-Signature algorithm name: SHA1withRSA
-Subject Public Key Algorithm: 1024-bit RSA key
-Version: 3
------BEGIN CERTIFICATE-----
-MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB
-zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
-Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
-CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
-d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
-cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow
-gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT
-CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV
-BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo
-YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z
-ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560
-ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j
-+ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/
-BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI
-CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH
-IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga
-WuFg3GQjPEIuTQ==
------END CERTIFICATE-----
--- a/make/data/cacerts/verisignclass2g2ca	Tue Apr 20 19:19:09 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
-Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
-Serial number: b92f60cc889fa17a4609b85b706c8aaf
-Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
-Signature algorithm name: SHA1withRSA
-Subject Public Key Algorithm: 1024-bit RSA key
-Version: 1
------BEGIN CERTIFICATE-----
-MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns
-YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
-MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
-aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe
-Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX
-MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj
-IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx
-KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
-eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM
-HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw
-DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC
-AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji
-nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
-rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn
-jBJ7xUS0rg==
------END CERTIFICATE-----
--- a/make/data/cacerts/verisignclass3ca	Tue Apr 20 19:19:09 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-Owner: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
-Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
-Serial number: 3c9131cb1ff6d01b0e9ab8d044bf12be
-Valid from: Mon Jan 29 00:00:00 GMT 1996 until: Wed Aug 02 23:59:59 GMT 2028
-Signature algorithm name: SHA1withRSA
-Subject Public Key Algorithm: 1024-bit RSA key
-Version: 1
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
-A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
-cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
-MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
-BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
-YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
-ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
-BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
-I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
-CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
-2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
-2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
------END CERTIFICATE-----
--- a/make/data/cacerts/verisignclass3g2ca	Tue Apr 20 19:19:09 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
-Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
-Serial number: 7dd9fe07cfa81eb7107967fba78934c6
-Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
-Signature algorithm name: SHA1withRSA
-Subject Public Key Algorithm: 1024-bit RSA key
-Version: 1
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
-BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
-c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
-MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
-emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
-DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
-FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
-UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
-YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
-MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
-pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
-13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
-AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
-U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
-F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
-oJ2daZH9
------END CERTIFICATE-----
--- a/make/data/cacerts/verisigntsaca	Tue Apr 20 19:19:09 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-Owner: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
-Issuer: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
-Serial number: 67c8e1e8e3be1cbdfc913b8ea6238749
-Valid from: Wed Jan 01 00:00:00 GMT 1997 until: Fri Jan 01 23:59:59 GMT 2021
-Signature algorithm name: SHA1withRSA
-Subject Public Key Algorithm: 1024-bit RSA key
-Version: 3
------BEGIN CERTIFICATE-----
-MIICsDCCAhmgAwIBAgIQZ8jh6OO+HL38kTuOpiOHSTANBgkqhkiG9w0BAQUFADCB
-izELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxML
-RHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENl
-cnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcN
-OTcwMTAxMDAwMDAwWhcNMjEwMTAxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
-BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNV
-BAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNV
-BAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
-MIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u
-6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522
-FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAS+mqF4EF+3kKMZ/F
-QfRWVKvpwuWXjhj+kckMPiZkyaFMJ2SnvQGTVXFuF0853BvcSTUQOSP/ypvIz2Y/
-3Ewa1IEGQlIf4SaxFhe65nByMUToTo1b5NP50OOPJWQx5yr4GIg2GlLFDUE1G2m3
-JvUXzMEZXkt8XOKDgJH6L/uatxY=
------END CERTIFICATE-----
--- a/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1305,14 +1305,18 @@
             this.pixelStream = new DataInputStream(is);
 
             /*
-             * NB: the PNG spec declares that valid range for width
+             * PNG spec declares that valid range for width
              * and height is [1, 2^31-1], so here we may fail to allocate
              * a buffer for destination image due to memory limitation.
              *
-             * However, the recovery strategy for this case should be
-             * defined on the level of application, so we will not
-             * try to estimate the required amount of the memory and/or
-             * handle OOM in any way.
+             * If the read operation triggers OutOfMemoryError, the same
+             * will be wrapped in an IIOException at PNGImageReader.read
+             * method.
+             *
+             * The recovery strategy for this case should be defined at
+             * the level of application, so we will not try to estimate
+             * the required amount of the memory and/or handle OOM in
+             * any way.
              */
             theImage = getDestination(param,
                                       getImageTypes(0),
@@ -1611,7 +1615,16 @@
             throw new IndexOutOfBoundsException("imageIndex != 0!");
         }
 
-        readImage(param);
+        try {
+            readImage(param);
+        } catch (IOException |
+                 IllegalStateException |
+                 IllegalArgumentException e)
+        {
+            throw e;
+        } catch (Throwable e) {
+            throw new IIOException("Caught exception during read: ", e);
+        }
         return theImage;
     }
 
--- a/src/share/classes/java/beans/IndexedPropertyDescriptor.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/java/beans/IndexedPropertyDescriptor.java	Fri Apr 23 01:47:38 2021 +0100
@@ -429,7 +429,7 @@
     /**
      * Package-private constructor.
      * Merge two property descriptors.  Where they conflict, give the
-     * second argument (y) priority over the first argumnnt (x).
+     * second argument (y) priority over the first argument (x).
      *
      * @param x  The first (lower priority) PropertyDescriptor
      * @param y  The second (higher priority) PropertyDescriptor
@@ -437,39 +437,37 @@
 
     IndexedPropertyDescriptor(PropertyDescriptor x, PropertyDescriptor y) {
         super(x,y);
-        if (x instanceof IndexedPropertyDescriptor) {
-            IndexedPropertyDescriptor ix = (IndexedPropertyDescriptor)x;
-            try {
-                Method xr = ix.getIndexedReadMethod();
-                if (xr != null) {
-                    setIndexedReadMethod(xr);
-                }
+        Method tr = null;
+        Method tw = null;
 
-                Method xw = ix.getIndexedWriteMethod();
-                if (xw != null) {
-                    setIndexedWriteMethod(xw);
-                }
-            } catch (IntrospectionException ex) {
-                // Should not happen
-                throw new AssertionError(ex);
+        if (x instanceof IndexedPropertyDescriptor) {
+            IndexedPropertyDescriptor ix = (IndexedPropertyDescriptor) x;
+            tr = ix.getIndexedReadMethod();
+            tw = ix.getIndexedWriteMethod();
+        }
+        if (y instanceof IndexedPropertyDescriptor) {
+            IndexedPropertyDescriptor iy = (IndexedPropertyDescriptor) y;
+            Method yr = iy.getIndexedReadMethod();
+            if (isAssignable(tr, yr)) {
+                tr = yr;
+            }
+
+            Method yw = iy.getIndexedWriteMethod();
+            if (isAssignable(tw, yw)) {
+                tw = yw;
             }
         }
-        if (y instanceof IndexedPropertyDescriptor) {
-            IndexedPropertyDescriptor iy = (IndexedPropertyDescriptor)y;
-            try {
-                Method yr = iy.getIndexedReadMethod();
-                if (yr != null && yr.getDeclaringClass() == getClass0()) {
-                    setIndexedReadMethod(yr);
-                }
 
-                Method yw = iy.getIndexedWriteMethod();
-                if (yw != null && yw.getDeclaringClass() == getClass0()) {
-                    setIndexedWriteMethod(yw);
-                }
-            } catch (IntrospectionException ex) {
-                // Should not happen
-                throw new AssertionError(ex);
+        try {
+            if(tr != null) {
+                setIndexedReadMethod(tr);
             }
+            if(tw != null) {
+                setIndexedWriteMethod(tw);
+            }
+        } catch(IntrospectionException ex) {
+            // Should not happen
+            throw new AssertionError(ex);
         }
     }
 
--- a/src/share/classes/java/beans/PropertyDescriptor.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/java/beans/PropertyDescriptor.java	Fri Apr 23 01:47:38 2021 +0100
@@ -715,7 +715,7 @@
         appendTo(sb, "writeMethod", this.writeMethodRef.get());
     }
 
-    private boolean isAssignable(Method m1, Method m2) {
+    boolean isAssignable(Method m1, Method m2) {
         if (m1 == null) {
             return true; // choose second method
         }
--- a/src/share/classes/java/lang/Character.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/java/lang/Character.java	Fri Apr 23 01:47:38 2021 +0100
@@ -2571,7 +2571,7 @@
                              "ARABIC MATHEMATICAL ALPHABETIC SYMBOLS",
                              "ARABICMATHEMATICALALPHABETICSYMBOLS");
 
-        private static final int blockStarts[] = {
+        private static final int[] blockStarts = {
             0x0000,   // 0000..007F; Basic Latin
             0x0080,   // 0080..00FF; Latin-1 Supplement
             0x0100,   // 0100..017F; Latin Extended-A
@@ -4368,7 +4368,7 @@
             UNKNOWN
         };
 
-        private static HashMap<String, Character.UnicodeScript> aliases;
+        private static final HashMap<String, Character.UnicodeScript> aliases;
         static {
             aliases = new HashMap<>(128);
             aliases.put("ARAB", ARABIC);
@@ -4651,8 +4651,7 @@
      * @return  a string representation of this object.
      */
     public String toString() {
-        char buf[] = {value};
-        return String.valueOf(buf);
+        return String.valueOf(value);
     }
 
     /**
--- a/src/share/classes/javax/swing/JList.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/javax/swing/JList.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -3308,7 +3308,6 @@
                 }
 
                 s.add(AccessibleState.SELECTABLE);
-                s.add(AccessibleState.VISIBLE);
                 if (parent.isFocusOwner()
                     && (indexInParent == parent.getLeadSelectionIndex())) {
                     s.add(AccessibleState.ACTIVE);
@@ -3321,6 +3320,11 @@
                 } else if (s.contains(AccessibleState.SHOWING)) {
                     s.remove(AccessibleState.SHOWING);
                 }
+                if (this.isVisible()) {
+                    s.add(AccessibleState.VISIBLE);
+                } else if (s.contains(AccessibleState.VISIBLE)) {
+                    s.remove(AccessibleState.VISIBLE);
+                }
                 s.add(AccessibleState.TRANSIENT); // cell-rendered
                 return s;
             }
--- a/src/share/classes/sun/nio/ch/SocketAdaptor.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/sun/nio/ch/SocketAdaptor.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -198,6 +198,9 @@
             throws IOException
         {
             synchronized (sc.blockingLock()) {
+                if (!sc.isOpen()) {
+                    throw new ClosedChannelException();
+                }
                 if (!sc.isBlocking())
                     throw new IllegalBlockingModeException();
 
--- a/src/share/classes/sun/security/pkcs11/P11Cipher.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/sun/security/pkcs11/P11Cipher.java	Fri Apr 23 01:47:38 2021 +0100
@@ -70,7 +70,7 @@
     private static interface Padding {
         // ENC: format the specified buffer with padding bytes and return the
         // actual padding length
-        int setPaddingBytes(byte[] paddingBuffer, int padLen);
+        int setPaddingBytes(byte[] paddingBuffer, int startOff, int padLen);
 
         // DEC: return the length of trailing padding bytes given the specified
         // padded data
@@ -91,8 +91,8 @@
             this.blockSize = blockSize;
         }
 
-        public int setPaddingBytes(byte[] paddingBuffer, int padLen) {
-            Arrays.fill(paddingBuffer, 0, padLen, (byte) (padLen & 0x007f));
+        public int setPaddingBytes(byte[] paddingBuffer, int startOff, int padLen) {
+            Arrays.fill(paddingBuffer, startOff, startOff + padLen, (byte) (padLen & 0x007f));
             return padLen;
         }
 
@@ -169,6 +169,14 @@
     // specification mandates a fixed size of the key
     private int fixedKeySize = -1;
 
+    // Indicates whether the underlying PKCS#11 library requires block-sized
+    // updates during multi-part operations. In such case, we buffer data in
+    // padBuffer up to a block-size. This may be needed only if padding is
+    // applied on the Java side. An example of the previous is when the
+    // CKM_AES_ECB mechanism is used and the PKCS#11 library is NSS. See more
+    // on JDK-8261355.
+    private boolean reqBlockUpdates = false;
+
     P11Cipher(Token token, String algorithm, long mechanism)
             throws PKCS11Exception, NoSuchAlgorithmException {
         super();
@@ -252,6 +260,10 @@
                 // no native padding support; use our own padding impl
                 paddingObj = new PKCS5Padding(blockSize);
                 padBuffer = new byte[blockSize];
+                char[] tokenLabel = token.tokenInfo.label;
+                // NSS requires block-sized updates in multi-part operations.
+                reqBlockUpdates = ((tokenLabel[0] == 'N' && tokenLabel[1] == 'S'
+                        && tokenLabel[2] == 'S') ? true : false);
             }
         } else {
             throw new NoSuchPaddingException("Unsupported padding " + padding);
@@ -587,46 +599,54 @@
         try {
             ensureInitialized();
             int k = 0;
-            if (encrypt) {
-                k = token.p11.C_EncryptUpdate(session.id(), 0, in, inOfs, inLen,
-                        0, out, outOfs, outLen);
-            } else {
-                int newPadBufferLen = 0;
-                if (paddingObj != null) {
-                    if (padBufferLen != 0) {
-                        // NSS throws up when called with data not in multiple
-                        // of blocks. Try to work around this by holding the
-                        // extra data in padBuffer.
-                        if (padBufferLen != padBuffer.length) {
-                            int bufCapacity = padBuffer.length - padBufferLen;
-                            if (inLen > bufCapacity) {
-                                bufferInputBytes(in, inOfs, bufCapacity);
-                                inOfs += bufCapacity;
-                                inLen -= bufCapacity;
-                            } else {
-                                bufferInputBytes(in, inOfs, inLen);
-                                return 0;
-                            }
+            int newPadBufferLen = 0;
+            if (paddingObj != null && (!encrypt || reqBlockUpdates)) {
+                if (padBufferLen != 0) {
+                    if (padBufferLen != padBuffer.length) {
+                        int bufCapacity = padBuffer.length - padBufferLen;
+                        if (inLen > bufCapacity) {
+                            bufferInputBytes(in, inOfs, bufCapacity);
+                            inOfs += bufCapacity;
+                            inLen -= bufCapacity;
+                        } else {
+                            bufferInputBytes(in, inOfs, inLen);
+                            return 0;
                         }
+                    }
+                    if (encrypt) {
+                        k = token.p11.C_EncryptUpdate(session.id(),
+                                0, padBuffer, 0, padBufferLen,
+                                0, out, outOfs, outLen);
+                    } else {
                         k = token.p11.C_DecryptUpdate(session.id(),
                                 0, padBuffer, 0, padBufferLen,
                                 0, out, outOfs, outLen);
-                        padBufferLen = 0;
                     }
-                    newPadBufferLen = inLen & (blockSize - 1);
-                    if (newPadBufferLen == 0) {
-                        newPadBufferLen = padBuffer.length;
-                    }
-                    inLen -= newPadBufferLen;
+                    padBufferLen = 0;
                 }
-                if (inLen > 0) {
+                newPadBufferLen = inLen & (blockSize - 1);
+                if (!encrypt && newPadBufferLen == 0) {
+                    // While decrypting with implUpdate, the last encrypted block
+                    // is always held in a buffer. If it's the final one (unknown
+                    // at this point), it may contain padding bytes and need further
+                    // processing. In implDoFinal (where we know it's the final one)
+                    // the buffer is decrypted, unpadded and returned.
+                    newPadBufferLen = padBuffer.length;
+                }
+                inLen -= newPadBufferLen;
+            }
+            if (inLen > 0) {
+                if (encrypt) {
+                    k += token.p11.C_EncryptUpdate(session.id(), 0, in, inOfs,
+                            inLen, 0, out, (outOfs + k), (outLen - k));
+                } else {
                     k += token.p11.C_DecryptUpdate(session.id(), 0, in, inOfs,
                             inLen, 0, out, (outOfs + k), (outLen - k));
                 }
-                // update 'padBuffer' if using our own padding impl.
-                if (paddingObj != null) {
-                    bufferInputBytes(in, inOfs + inLen, newPadBufferLen);
-                }
+            }
+            // update 'padBuffer' if using our own padding impl.
+            if (paddingObj != null && newPadBufferLen > 0) {
+                bufferInputBytes(in, inOfs + inLen, newPadBufferLen);
             }
             bytesBuffered += (inLen - k);
             return k;
@@ -687,60 +707,62 @@
             }
 
             int k = 0;
-            if (encrypt) {
+            int newPadBufferLen = 0;
+            if (paddingObj != null  && (!encrypt || reqBlockUpdates)) {
+                if (padBufferLen != 0) {
+                    if (padBufferLen != padBuffer.length) {
+                        int bufCapacity = padBuffer.length - padBufferLen;
+                        if (inLen > bufCapacity) {
+                            bufferInputBytes(inBuffer, bufCapacity);
+                            inOfs += bufCapacity;
+                            inLen -= bufCapacity;
+                        } else {
+                            bufferInputBytes(inBuffer, inLen);
+                            return 0;
+                        }
+                    }
+                    if (encrypt) {
+                        k = token.p11.C_EncryptUpdate(session.id(), 0,
+                                padBuffer, 0, padBufferLen, outAddr, outArray,
+                                outOfs, outLen);
+                    } else {
+                        k = token.p11.C_DecryptUpdate(session.id(), 0,
+                                padBuffer, 0, padBufferLen, outAddr, outArray,
+                                outOfs, outLen);
+                    }
+                    padBufferLen = 0;
+                }
+                newPadBufferLen = inLen & (blockSize - 1);
+                if (!encrypt && newPadBufferLen == 0) {
+                    // While decrypting with implUpdate, the last encrypted block
+                    // is always held in a buffer. If it's the final one (unknown
+                    // at this point), it may contain padding bytes and need further
+                    // processing. In implDoFinal (where we know it's the final one)
+                    // the buffer is decrypted, unpadded and returned.
+                    newPadBufferLen = padBuffer.length;
+                }
+                inLen -= newPadBufferLen;
+            }
+            if (inLen > 0) {
                 if (inAddr == 0 && inArray == null) {
                     inArray = new byte[inLen];
                     inBuffer.get(inArray);
                 } else {
-                    inBuffer.position(origPos + inLen);
+                    inBuffer.position(inBuffer.position() + inLen);
                 }
-                k = token.p11.C_EncryptUpdate(session.id(),
-                        inAddr, inArray, inOfs, inLen,
-                        outAddr, outArray, outOfs, outLen);
-            } else {
-                int newPadBufferLen = 0;
-                if (paddingObj != null) {
-                    if (padBufferLen != 0) {
-                        // NSS throws up when called with data not in multiple
-                        // of blocks. Try to work around this by holding the
-                        // extra data in padBuffer.
-                        if (padBufferLen != padBuffer.length) {
-                            int bufCapacity = padBuffer.length - padBufferLen;
-                            if (inLen > bufCapacity) {
-                                bufferInputBytes(inBuffer, bufCapacity);
-                                inOfs += bufCapacity;
-                                inLen -= bufCapacity;
-                            } else {
-                                bufferInputBytes(inBuffer, inLen);
-                                return 0;
-                            }
-                        }
-                        k = token.p11.C_DecryptUpdate(session.id(), 0,
-                                padBuffer, 0, padBufferLen, outAddr, outArray,
-                                outOfs, outLen);
-                        padBufferLen = 0;
-                    }
-                    newPadBufferLen = inLen & (blockSize - 1);
-                    if (newPadBufferLen == 0) {
-                        newPadBufferLen = padBuffer.length;
-                    }
-                    inLen -= newPadBufferLen;
-                }
-                if (inLen > 0) {
-                    if (inAddr == 0 && inArray == null) {
-                        inArray = new byte[inLen];
-                        inBuffer.get(inArray);
-                    } else {
-                        inBuffer.position(inBuffer.position() + inLen);
-                    }
+                if (encrypt) {
+                    k += token.p11.C_EncryptUpdate(session.id(), inAddr,
+                            inArray, inOfs, inLen, outAddr, outArray,
+                            (outOfs + k), (outLen - k));
+                } else {
                     k += token.p11.C_DecryptUpdate(session.id(), inAddr,
                             inArray, inOfs, inLen, outAddr, outArray,
                             (outOfs + k), (outLen - k));
                 }
-                // update 'padBuffer' if using our own padding impl.
-                if (paddingObj != null && newPadBufferLen != 0) {
-                    bufferInputBytes(inBuffer, newPadBufferLen);
-                }
+            }
+            // update 'padBuffer' if using our own padding impl.
+            if (paddingObj != null && newPadBufferLen > 0) {
+                bufferInputBytes(inBuffer, newPadBufferLen);
             }
             bytesBuffered += (inLen - k);
             if (!(outBuffer instanceof DirectBuffer) &&
@@ -779,10 +801,14 @@
             int k = 0;
             if (encrypt) {
                 if (paddingObj != null) {
+                    int startOff = 0;
+                    if (reqBlockUpdates) {
+                        startOff = padBufferLen;
+                    }
                     int actualPadLen = paddingObj.setPaddingBytes(padBuffer,
-                            requiredOutLen - bytesBuffered);
+                            startOff, requiredOutLen - bytesBuffered);
                     k = token.p11.C_EncryptUpdate(session.id(),
-                            0, padBuffer, 0, actualPadLen,
+                            0, padBuffer, 0, startOff + actualPadLen,
                             0, out, outOfs, outLen);
                 }
                 // Some implementations such as the NSS Software Token do not
@@ -863,10 +889,14 @@
 
             if (encrypt) {
                 if (paddingObj != null) {
+                    int startOff = 0;
+                    if (reqBlockUpdates) {
+                        startOff = padBufferLen;
+                    }
                     int actualPadLen = paddingObj.setPaddingBytes(padBuffer,
-                            requiredOutLen - bytesBuffered);
+                            startOff, requiredOutLen - bytesBuffered);
                     k = token.p11.C_EncryptUpdate(session.id(),
-                            0, padBuffer, 0, actualPadLen,
+                            0, padBuffer, 0, startOff + actualPadLen,
                             outAddr, outArray, outOfs, outLen);
                 }
                 // Some implementations such as the NSS Software Token do not
--- a/src/share/classes/sun/security/util/Cache.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/sun/security/util/Cache.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2021, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -252,6 +252,7 @@
     private final Map<K, CacheEntry<K,V>> cacheMap;
     private int maxSize;
     private long lifetime;
+    private long nextExpirationTime = Long.MAX_VALUE;
 
     // ReferenceQueue is of type V instead of Cache<K,V>
     // to allow SoftCacheEntry to extend SoftReference<V>
@@ -321,12 +322,18 @@
         }
         int cnt = 0;
         long time = System.currentTimeMillis();
+        if (nextExpirationTime > time) {
+            return;
+        }
+        nextExpirationTime = Long.MAX_VALUE;
         for (Iterator<CacheEntry<K,V>> t = cacheMap.values().iterator();
                 t.hasNext(); ) {
             CacheEntry<K,V> entry = t.next();
             if (entry.isValid(time) == false) {
                 t.remove();
                 cnt++;
+            } else if (nextExpirationTime > entry.getExpirationTime()) {
+                nextExpirationTime = entry.getExpirationTime();
             }
         }
         if (DEBUG) {
@@ -360,6 +367,9 @@
         emptyQueue();
         long expirationTime = (lifetime == 0) ? 0 :
                                         System.currentTimeMillis() + lifetime;
+        if (expirationTime < nextExpirationTime) {
+            nextExpirationTime = expirationTime;
+        }
         CacheEntry<K,V> newEntry = newEntry(key, value, expirationTime, queue);
         CacheEntry<K,V> oldEntry = cacheMap.put(key, newEntry);
         if (oldEntry != null) {
@@ -474,6 +484,7 @@
 
         V getValue();
 
+        long getExpirationTime();
     }
 
     private static class HardCacheEntry<K,V> implements CacheEntry<K,V> {
@@ -496,6 +507,10 @@
             return value;
         }
 
+        public long getExpirationTime() {
+            return expirationTime;
+        }
+
         public boolean isValid(long currentTime) {
             boolean valid = (currentTime <= expirationTime);
             if (valid == false) {
@@ -533,6 +548,10 @@
             return get();
         }
 
+        public long getExpirationTime() {
+            return expirationTime;
+        }
+
         public boolean isValid(long currentTime) {
             boolean valid = (currentTime <= expirationTime) && (get() != null);
             if (valid == false) {
--- a/src/share/classes/sun/util/calendar/ZoneInfo.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/sun/util/calendar/ZoneInfo.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -293,7 +293,7 @@
             int dstoffset = tz.getOffset(msec) - rawOffset;
 
             // Check if it's in a standard-to-daylight transition.
-            if (dstoffset > 0 && tz.getOffset(msec - dstoffset) == rawoffset) {
+            if (dstoffset > 0 && tz.getOffset(msec - dstoffset) == rawoffset && type == WALL_TIME) {
                 dstoffset = 0;
             }
 
--- a/src/share/classes/sun/util/resources/LocaleNames.properties	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/classes/sun/util/resources/LocaleNames.properties	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -57,7 +57,7 @@
 bh=Bihari
 bi=Bislama
 bm=Bambara
-bn=Bengali
+bn=Bangla
 bo=Tibetan
 br=Breton
 bs=Bosnian
@@ -87,10 +87,10 @@
 fj=Fijian
 fo=Faroese
 fr=French
-fy=Frisian
+fy=Western Frisian
 ga=Irish
 gd=Scottish Gaelic
-gl=Gallegan
+gl=Galician
 gn=Guarani
 gu=Gujarati
 gv=Manx
@@ -99,7 +99,7 @@
 hi=Hindi
 ho=Hiri Motu
 hr=Croatian
-ht=Haitian
+ht=Haitian Creole
 hu=Hungarian
 hy=Armenian
 hz=Herero
@@ -121,9 +121,9 @@
 ka=Georgian
 kg=Kongo
 ki=Kikuyu
-kj=Kwanyama
+kj=Kuanyama
 kk=Kazakh
-kl=Greenlandic
+kl=Kalaallisut
 km=Khmer
 kn=Kannada
 ko=Korean
@@ -132,7 +132,7 @@
 ku=Kurdish
 kv=Komi
 kw=Cornish
-ky=Kirghiz
+ky=Kyrgyz
 la=Latin
 lb=Luxembourgish
 lg=Ganda
@@ -167,15 +167,15 @@
 oc=Occitan
 oj=Ojibwa
 om=Oromo
-or=Oriya
-os=Ossetian
-pa=Panjabi
+or=Odia
+os=Ossetic
+pa=Punjabi
 pi=Pali
 pl=Polish
-ps=Pushto
+ps=Pashto
 pt=Portuguese
 qu=Quechua
-rm=Raeto-Romance
+rm=Romansh
 rn=Rundi
 ro=Romanian
 ru=Russian
@@ -185,7 +185,7 @@
 sd=Sindhi
 se=Northern Sami
 sg=Sango
-si=Sinhalese
+si=Sinhala
 sk=Slovak
 sl=Slovenian
 sm=Samoan
@@ -206,13 +206,13 @@
 tk=Turkmen
 tl=Tagalog
 tn=Tswana
-to=Tonga
+to=Tongan
 tr=Turkish
 ts=Tsonga
 tt=Tatar
 tw=Twi
 ty=Tahitian
-ug=Uighur
+ug=Uyghur
 uk=Ukrainian
 ur=Urdu
 uz=Uzbek
@@ -246,14 +246,14 @@
 alg=Algonquian
 alt=Southern Altai
 amh=Amharic
-ang=English, Old (ca.450-1100)
+ang=Old English
 anp=Angika
 apa=Apache
 ara=Arabic
-arc=Official Aramaic (700-300 BCE)
+arc=Aramaic
 arg=Aragonese
 arm=Armenian
-arn=Mapudungun
+arn=Mapuche
 arp=Arapaho
 art=Artificial
 arw=Arawak
@@ -273,7 +273,7 @@
 bam=Bambara
 ban=Balinese
 baq=Basque
-bas=Basa
+bas=Basaa
 bat=Baltic
 bej=Beja
 bel=Belarusian
@@ -298,7 +298,7 @@
 byn=Blin
 cad=Caddo
 cai=Central American Indian
-car=Galibi Carib
+car=Carib
 cat=Catalan
 cau=Caucasian
 ceb=Cebuano
@@ -310,7 +310,7 @@
 chi=Chinese
 chk=Chuukese
 chm=Mari
-chn=Chinook jargon
+chn=Chinook Jargon
 cho=Choctaw
 chp=Chipewyan
 chr=Cherokee
@@ -325,7 +325,7 @@
 cpf=Creoles and pidgins, French-based
 cpp=Creoles and pidgins, Portuguese-based
 cre=Cree
-crh=Crimean Tatar
+crh=Crimean Turkish
 crp=Creoles and pidgins
 csb=Kashubian
 cus=Cushitic
@@ -335,7 +335,7 @@
 dar=Dargwa
 day=Land Dayak
 del=Delaware
-den=Slave (Athapascan)
+den=Slave
 dgr=Dogrib
 din=Dinka
 div=Divehi
@@ -343,16 +343,16 @@
 dra=Dravidian
 dsb=Lower Sorbian
 dua=Duala
-dum=Dutch, Middle (ca.1050-1350)
+dum=Middle Dutch
 dut=Dutch
 dyu=Dyula
 dzo=Dzongkha
 efi=Efik
-egy=Egyptian (Ancient)
+egy=Ancient Egyptian
 eka=Ekajuk
 elx=Elamite
 eng=English
-enm=English, Middle (1100-1500)
+enm=Middle English
 epo=Esperanto
 est=Estonian
 ewe=Ewe
@@ -366,8 +366,8 @@
 fiu=Finno-Ugrian
 fon=Fon
 fre=French
-frm=French, Middle (ca.1400-1600)
-fro=French, Old (842-ca.1400)
+frm=Middle French
+fro=Old French
 frr=Northern Frisian
 frs=Eastern Frisian
 fry=Western Frisian
@@ -385,18 +385,18 @@
 gle=Irish
 glg=Galician
 glv=Manx
-gmh=German, Middle High (ca.1050-1500)
-goh=German, Old High (ca.750-1050)
+gmh=Middle High German
+goh=Old High German
 gon=Gondi
 gor=Gorontalo
 got=Gothic
 grb=Grebo
-grc=Greek, Ancient (to 1453)
+grc=Ancient Greek
 gre=Greek, Modern (1453-)
 grn=Guarani
 gsw=Swiss German
 guj=Gujarati
-gwi=Gwich'in
+gwi=Gwich\u02bcin
 hai=Haida
 hat=Haitian
 hau=Hausa
@@ -488,8 +488,8 @@
 lug=Ganda
 lui=Luiseno
 lun=Lunda
-luo=Luo (Kenya and Tanzania)
-lus=Lushai
+luo=Luo
+lus=Mizo
 mac=Macedonian
 mad=Madurese
 mag=Magahi
@@ -506,7 +506,7 @@
 mdf=Moksha
 mdr=Mandar
 men=Mende
-mga=Irish, Middle (900-1200)
+mga=Middle Irish
 mic=Mi'kmaq
 min=Minangkabau
 mis=Uncoded
@@ -519,9 +519,9 @@
 moh=Mohawk
 mon=Mongolian
 mos=Mossi
-mul=Multiple
+mul=Multiple languages
 mun=Munda
-mus=Creek
+mus=Muscogee
 mwl=Mirandese
 mwr=Marwari
 myn=Mayan
@@ -536,17 +536,17 @@
 ndo=Ndonga
 nds=Low German
 nep=Nepali
-new=Nepal Bhasa
+new=Newari
 nia=Nias
 nic=Niger-Kordofanian
 niu=Niuean
 nno=Norwegian Nynorsk
 nob=Bokm\u00e5l, Norwegian
 nog=Nogai
-non=Norse, Old
+non=Old Norse
 nor=Norwegian
-nqo=N'Ko
-nso=Pedi
+nqo=N\u2019Ko
+nso=Northern Sotho
 nub=Nubian
 nwc=Classical Newari
 nya=Chichewa
@@ -560,7 +560,7 @@
 orm=Oromo
 osa=Osage
 oss=Ossetian
-ota=Turkish, Ottoman (1500-1928)
+ota=Ottoman Turkish
 oto=Otomian
 paa=Papuan
 pag=Pangasinan
@@ -569,7 +569,7 @@
 pan=Panjabi
 pap=Papiamento
 pau=Palauan
-peo=Persian, Old (ca.600-400 B.C.)
+peo=Old Persian
 per=Persian
 phi=Philippine
 phn=Phoenician
@@ -578,7 +578,7 @@
 pon=Pohnpeian
 por=Portuguese
 pra=Prakrit
-pro=Proven\u00e7al, Old (to 1500)
+pro=Old Proven\u00e7al
 pus=Pushto; Pashto
 que=Quechua
 raj=Rajasthani
@@ -593,7 +593,7 @@
 rus=Russian
 sad=Sandawe
 sag=Sango
-sah=Yakut
+sah=Sakha
 sai=South American Indian
 sal=Salishan
 sam=Samaritan Aramaic
@@ -604,7 +604,7 @@
 sco=Scots
 sel=Selkup
 sem=Semitic
-sga=Irish, Old (to 900)
+sga=Old Irish
 sgn=Sign
 shn=Shan
 sid=Sidamo
@@ -624,7 +624,7 @@
 sna=Shona
 snd=Sindhi
 snk=Soninke
-sog=Sogdian
+sog=Sogdien
 som=Somali
 son=Songhai
 sot=Sotho, Southern
@@ -662,7 +662,7 @@
 tlh=Klingon
 tli=Tlingit
 tmh=Tamashek
-tog=Tonga (Nyasa)
+tog=Nyasa Tonga
 ton=Tonga (Tonga Islands)
 tpi=Tok Pisin
 tsi=Tsimshian
@@ -681,7 +681,7 @@
 uig=Uighur
 ukr=Ukrainian
 umb=Umbundu
-und=Undetermined
+und=Unknown language
 urd=Urdu
 uzb=Uzbek
 vai=Vai
@@ -690,7 +690,7 @@
 vol=Volap\u00fck
 vot=Votic
 wak=Wakashan
-wal=Wolaitta
+wal=Wolaytta
 war=Waray
 was=Washo
 wel=Welsh
@@ -725,7 +725,7 @@
 Bamu=Bamum
 Bass=Bassa Vah
 Batk=Batak
-Beng=Bengali
+Beng=Bangla
 Blis=Blissymbols
 Bopo=Bopomofo
 Brah=Brahmi
@@ -750,7 +750,7 @@
 Egyp=Egyptian hieroglyphs
 Elba=Elbasan
 Ethi=Ethiopic
-Geok=Khutsuri
+Geok=Georgian Khutsuri
 Geor=Georgian
 Glag=Glagolitic
 Goth=Gothic
@@ -761,12 +761,12 @@
 Hang=Hangul
 Hani=Han
 Hano=Hanunoo
-Hans=Simplified Han
-Hant=Traditional Han
+Hans=Simplified
+Hant=Traditional
 Hebr=Hebrew
 Hira=Hiragana
 Hmng=Pahawh Hmong
-Hrkt=Katakana or Hiragana
+Hrkt=Japanese syllabaries
 Hung=Old Hungarian
 Inds=Indus
 Ital=Old Italic
@@ -780,7 +780,7 @@
 Kore=Korean
 Kpel=Kpelle
 Kthi=Kaithi
-Lana=Tai Tham
+Lana=Lanna
 Laoo=Lao
 Latf=Fraktur Latin
 Latg=Gaelic Latin
@@ -789,11 +789,11 @@
 Limb=Limbu
 Lina=Linear A
 Linb=Linear B
-Lisu=Lisu
+Lisu=Fraser
 Loma=Loma
 Lyci=Lycian
 Lydi=Lydian
-Mand=Mandaic
+Mand=Mandaean
 Mani=Manichaean
 Maya=Mayan hieroglyphs
 Mend=Mende
@@ -806,12 +806,12 @@
 Mymr=Myanmar
 Narb=Old North Arabian
 Nbat=Nabataean
-Nkgb=Nakhi Geba
+Nkgb=Naxi Geba
 Nkoo=N\u2019Ko
 Ogam=Ogham
 Olck=Ol Chiki
 Orkh=Orkhon
-Orya=Oriya
+Orya=Odia
 Osma=Osmanya
 Palm=Palmyrene
 Perm=Old Permic
@@ -820,7 +820,7 @@
 Phlp=Psalter Pahlavi
 Phlv=Book Pahlavi
 Phnx=Phoenician
-Plrd=Miao
+Plrd=Pollard Phonetic
 Prti=Inscriptional Parthian
 Rjng=Rejang
 Roro=Rongorongo
@@ -831,7 +831,7 @@
 Saur=Saurashtra
 Sgnw=SignWriting
 Shaw=Shavian
-Sind=Sindhi
+Sind=Khudawadi
 Sinh=Sinhala
 Sund=Sundanese
 Sylo=Syloti Nagri
@@ -854,16 +854,16 @@
 Ugar=Ugaritic
 Vaii=Vai
 Visp=Visible Speech
-Wara=Warang Citi
+Wara=Varang Kshiti
 Xpeo=Old Persian
 Xsux=Sumero-Akkadian Cuneiform
 Yiii=Yi
-Zinh=Inherited script
+Zinh=Inherited
 Zmth=Mathematical Notation
 Zsym=Symbols
 Zxxx=Unwritten
-Zyyy=Undetermined script
-Zzzz=Uncoded script
+Zyyy=Common
+Zzzz=Unknown Script
 
 # country names
 # key is ISO 3166 country code
@@ -871,7 +871,7 @@
 AD=Andorra
 AE=United Arab Emirates
 AF=Afghanistan
-AG=Antigua and Barbuda
+AG=Antigua & Barbuda
 AI=Anguilla
 AL=Albania
 AM=Armenia
@@ -885,7 +885,7 @@
 AW=Aruba
 AX=\u00c5land Islands
 AZ=Azerbaijan
-BA=Bosnia and Herzegovina
+BA=Bosnia & Herzegovina
 BB=Barbados
 BD=Bangladesh
 BE=Belgium
@@ -894,11 +894,11 @@
 BH=Bahrain
 BI=Burundi
 BJ=Benin
-BL=Saint Barth\u00e9lemy
+BL=St. Barth\u00e9lemy
 BM=Bermuda
 BN=Brunei
 BO=Bolivia
-BQ=Bonaire, Sint Eustatius and Saba
+BQ=Caribbean Netherlands
 BR=Brazil
 BS=Bahamas
 BT=Bhutan
@@ -907,12 +907,12 @@
 BY=Belarus
 BZ=Belize
 CA=Canada
-CC=Cocos Islands
-CD=The Democratic Republic Of Congo
+CC=Cocos (Keeling) Islands
+CD=Congo - Kinshasa
 CF=Central African Republic
-CG=Congo
+CG=Congo - Brazzaville
 CH=Switzerland
-CI=C\u00F4te d'Ivoire
+CI=C\u00f4te d\u2019Ivoire
 CK=Cook Islands
 CL=Chile
 CM=Cameroon
@@ -925,7 +925,7 @@
 CW=Cura\u00e7ao
 CX=Christmas Island
 CY=Cyprus
-CZ=Czech Republic
+CZ=Czechia
 DE=Germany
 DJ=Djibouti
 DK=Denmark
@@ -959,13 +959,13 @@
 GP=Guadeloupe
 GQ=Equatorial Guinea
 GR=Greece
-GS=South Georgia And The South Sandwich Islands
+GS=South Georgia & South Sandwich Islands
 GT=Guatemala
 GU=Guam
 GW=Guinea-Bissau
 GY=Guyana
-HK=Hong Kong
-HM=Heard Island And McDonald Islands
+HK=Hong Kong SAR China
+HM=Heard & McDonald Islands
 HN=Honduras
 HR=Croatia
 HT=Haiti
@@ -973,7 +973,7 @@
 ID=Indonesia
 IE=Ireland
 IL=Israel
-IM=Isle Of Man
+IM=Isle of Man
 IN=India
 IO=British Indian Ocean Territory
 IQ=Iraq
@@ -989,7 +989,7 @@
 KH=Cambodia
 KI=Kiribati
 KM=Comoros
-KN=Saint Kitts And Nevis
+KN=St. Kitts & Nevis
 KP=North Korea
 KR=South Korea
 KW=Kuwait
@@ -997,7 +997,7 @@
 KZ=Kazakhstan
 LA=Laos
 LB=Lebanon
-LC=Saint Lucia
+LC=St. Lucia
 LI=Liechtenstein
 LK=Sri Lanka
 LR=Liberia
@@ -1010,14 +1010,14 @@
 MC=Monaco
 MD=Moldova
 ME=Montenegro
-MF=Saint Martin
+MF=St. Martin
 MG=Madagascar
 MH=Marshall Islands
-MK=Macedonia
+MK=North Macedonia
 ML=Mali
-MM=Myanmar
+MM=Myanmar (Burma)
 MN=Mongolia
-MO=Macao
+MO=Macao SAR China
 MP=Northern Mariana Islands
 MQ=Martinique
 MR=Mauritania
@@ -1049,15 +1049,15 @@
 PH=Philippines
 PK=Pakistan
 PL=Poland
-PM=Saint Pierre And Miquelon
-PN=Pitcairn
+PM=St. Pierre & Miquelon
+PN=Pitcairn Islands
 PR=Puerto Rico
-PS=Palestine
+PS=Palestinian Territories
 PT=Portugal
 PW=Palau
 PY=Paraguay
 QA=Qatar
-RE=Reunion
+RE=R\u00e9union
 RO=Romania
 RS=Serbia
 RU=Russia
@@ -1068,9 +1068,9 @@
 SD=Sudan
 SE=Sweden
 SG=Singapore
-SH=Saint Helena
+SH=St. Helena
 SI=Slovenia
-SJ=Svalbard And Jan Mayen
+SJ=Svalbard & Jan Mayen
 SK=Slovakia
 SL=Sierra Leone
 SM=San Marino
@@ -1078,12 +1078,12 @@
 SO=Somalia
 SR=Suriname
 SS=South Sudan
-ST=Sao Tome And Principe
+ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe
 SV=El Salvador
-SX=Sint Maarten (Dutch part)
+SX=Sint Maarten
 SY=Syria
-SZ=Swaziland
-TC=Turks And Caicos Islands
+SZ=Eswatini
+TC=Turks & Caicos Islands
 TD=Chad
 TF=French Southern Territories
 TG=Togo
@@ -1095,24 +1095,24 @@
 TN=Tunisia
 TO=Tonga
 TR=Turkey
-TT=Trinidad and Tobago
+TT=Trinidad & Tobago
 TV=Tuvalu
 TW=Taiwan
 TZ=Tanzania
 UA=Ukraine
 UG=Uganda
-UM=United States Minor Outlying Islands
+UM=U.S. Outlying Islands
 US=United States
 UY=Uruguay
 UZ=Uzbekistan
-VA=Vatican
-VC=Saint Vincent And The Grenadines
+VA=Vatican City
+VC=St. Vincent & Grenadines
 VE=Venezuela
 VG=British Virgin Islands
 VI=U.S. Virgin Islands
 VN=Vietnam
 VU=Vanuatu
-WF=Wallis And Futuna
+WF=Wallis & Futuna
 WS=Samoa
 YE=Yemen
 YT=Mayotte
@@ -1139,9 +1139,9 @@
 029=Caribbean
 030=Eastern Asia
 034=Southern Asia
-035=South-Eastern Asia
+035=Southeast Asia
 039=Southern Europe
-053=Australia and New Zealand
+053=Australasia
 054=Melanesia
 057=Micronesian Region
 061=Polynesia
@@ -1152,7 +1152,7 @@
 151=Eastern Europe
 154=Northern Europe
 155=Western Europe
-419=Latin America and the Caribbean
+419=Latin America
 
 # variant names
 # key is %%variant
--- a/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1712,7 +1712,7 @@
     // Releases the specified inflater to the list of available inflaters.
     private void releaseDeflater(Deflater def) {
         synchronized (deflaters) {
-            if (inflaters.size() < MAX_FLATER) {
+            if (deflaters.size() < MAX_FLATER) {
                def.reset();
                deflaters.add(def);
             } else {
--- a/src/windows/classes/com/sun/java/accessibility/AccessBridge.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/src/windows/classes/com/sun/java/accessibility/AccessBridge.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1550,38 +1550,6 @@
         return null;
     }
 
-    private int getNonVisibleChildrenCountTillIndex(AccessibleContext parentAC, int index) {
-        if (parentAC != null && index >= 0 && index < parentAC.getAccessibleChildrenCount()) {
-            int nonVisibleChildrenCount = 0;
-            for (int i = 0; i <= index; i++) {
-                if (!parentAC.getAccessibleChild(i).getAccessibleContext().getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                    nonVisibleChildrenCount++;
-                }
-            }
-            return nonVisibleChildrenCount;
-        }
-        return 0;
-    }
-
-    private Accessible getVisibleChildAtIndex(AccessibleContext parentAC, int index) {
-        if (parentAC != null && index >= 0 && index < parentAC.getAccessibleChildrenCount()) {
-            int visibleIndex = -1;
-            int childrenCount = parentAC.getAccessibleChildrenCount();
-            for (int i = 0; i <= childrenCount; i++) {
-                Accessible child = parentAC.getAccessibleChild(i);
-                if (child != null) {
-                    AccessibleContext ac = child.getAccessibleContext();
-                    if (ac != null && ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        visibleIndex++;
-                    }
-                    if (visibleIndex == index) {
-                        return child;
-                    }
-                }
-            }
-        }
-        return null;
-    }
     /**
      * returns the AccessibleParent from an AccessibleContext
      */
@@ -1612,12 +1580,7 @@
         return InvocationUtils.invokeAndWait(new Callable<Integer>() {
             @Override
             public Integer call() throws Exception {
-                int indexInParent = ac.getAccessibleIndexInParent();
-                Accessible parent = ac.getAccessibleParent();
-                if (parent != null) {
-                    indexInParent -= getNonVisibleChildrenCountTillIndex(parent.getAccessibleContext(), indexInParent);
-                }
-                return indexInParent;
+                return ac.getAccessibleIndexInParent();
             }
         }, ac);
     }
@@ -1631,8 +1594,7 @@
         return InvocationUtils.invokeAndWait(new Callable<Integer>() {
             @Override
             public Integer call() throws Exception {
-                int childrenCount = ac.getAccessibleChildrenCount();
-                return childrenCount - getNonVisibleChildrenCountTillIndex(ac, childrenCount - 1);
+                return ac.getAccessibleChildrenCount();
             }
         }, ac);
     }
@@ -1668,7 +1630,7 @@
             return InvocationUtils.invokeAndWait(new Callable<AccessibleContext>() {
                 @Override
                 public AccessibleContext call() throws Exception {
-                    Accessible a = getVisibleChildAtIndex(ac, index);
+                    Accessible a = ac.getAccessibleChild(index);
                     if (a != null) {
                         return a.getAccessibleContext();
                     }
@@ -3653,11 +3615,7 @@
                         AccessibleRelation[] relations = ars.toArray();
                         if (relations != null && i >= 0 && i < relations.length) {
                             Object[] targets = relations[i].getTarget();
-                            if (targets != null) {
-                                int targetCount = targets.length -
-                                        getNonVisibleTargetCountTillIndex(targets, targets.length - 1);
-                                return targetCount;
-                            }
+                            return targets.length;
                         }
                     }
                 }
@@ -3683,7 +3641,7 @@
                         if (relations != null && i >= 0 && i < relations.length) {
                             Object[] targets = relations[i].getTarget();
                             if (targets != null && j >= 0 & j < targets.length) {
-                                Object o = getVisibleTargetAtIndex(targets, j);
+                                Object o = targets[j];
                                 if (o instanceof Accessible) {
                                     return ((Accessible) o).getAccessibleContext();
                                 }
@@ -3696,40 +3654,6 @@
         }, ac);
     }
 
-    private Object getVisibleTargetAtIndex(Object[] targets, int index) {
-        if (index >= 0 && index < targets.length) {
-            int visibleTargetIndex = -1;
-            for (int i = 0; i < targets.length; i++) {
-                if (targets[i] instanceof Accessible) {
-                    AccessibleContext ac = ((Accessible) targets[i]).getAccessibleContext();
-                    if (ac != null && ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        visibleTargetIndex++;
-                    }
-                    if (visibleTargetIndex == index) {
-                        return targets[i];
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    private int getNonVisibleTargetCountTillIndex(Object[] targets, int index) {
-        if (index >= 0 && index < targets.length) {
-            int nonVisibleTargetsCount = 0;
-            for (int i = 0; i <= index; i++) {
-                if (targets[i] instanceof Accessible) {
-                    AccessibleContext ac = ((Accessible) targets[i]).getAccessibleContext();
-                    if (ac != null && !ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        nonVisibleTargetsCount++;
-                    }
-                }
-            }
-            return nonVisibleTargetsCount;
-        }
-        return 0;
-    }
-
     // ========= AccessibleHypertext =========
 
     private Map<AccessibleHypertext, AccessibleContext> hyperTextContextMap = new WeakHashMap<>();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/demo/zipfs/ReleaseDeflater.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact 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 8234011
+ * @summary Check that jdk.nio.zipfs.ZipFileSystem doesn't cache more than ZipFileSystem.MAX_FLATER Inflater/Deflater objects
+ * @run main ReleaseDeflater
+ * @author Volker Simonis
+ */
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.spi.FileSystemProvider;
+import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class ReleaseDeflater {
+    public static void main(String[] args) throws Throwable {
+        Path zipFile = Paths.get("ReleaseDeflaterTest.zip").toAbsolutePath();
+        URI zipURI = URI.create("jar:" + zipFile.toUri());
+        Map<String, String> env = new HashMap<>();
+        env.put("create", "true");
+        try (FileSystem fs = FileSystems.newFileSystem(zipURI, env)) {
+            FileSystemProvider zprov = fs.provider();
+            Path test = fs.getPath("test.txt");
+            int STREAMS = 100;
+            List<OutputStream> ostreams = new ArrayList<>(STREAMS);
+            List<InputStream> istreams = new ArrayList<>(STREAMS);
+            for (int i = 0; i < STREAMS; i++) {
+                OutputStream zos = zprov.newOutputStream(test);
+                ostreams.add(zos);
+                zos.write("Hello".getBytes());
+            }
+            for (OutputStream os : ostreams) {
+                os.close();
+            }
+            for (int i = 0; i < STREAMS; i++) {
+                InputStream zis = zprov.newInputStream(test);
+                istreams.add(zis);
+            }
+            for (InputStream is : istreams) {
+                is.close();
+            }
+            try {
+                Field max_flaters = fs.getClass().getDeclaredField("MAX_FLATER");
+                max_flaters.setAccessible(true);
+                int MAX_FLATERS = max_flaters.getInt(fs);
+                Field inflaters = fs.getClass().getDeclaredField("inflaters");
+                inflaters.setAccessible(true);
+                int inflater_count = ((List<?>) inflaters.get(fs)).size();
+                if (inflater_count > MAX_FLATERS) {
+                    throw new Exception("Too many inflaters " + inflater_count);
+                }
+                Field deflaters = fs.getClass().getDeclaredField("deflaters");
+                deflaters.setAccessible(true);
+                int deflater_count = ((List<?>) deflaters.get(fs)).size();
+                if (deflater_count > MAX_FLATERS) {
+                    throw new Exception("Too many deflaters " + deflater_count);
+                }
+            } catch (NoSuchFieldException nsfe) {
+                // Probably the implementation has changed, so there's not much we can do...
+                throw new RuntimeException("Implementation of jdk.nio.zipfs.ZipFileSystem changed - disable or fix the test");
+            }
+        } finally {
+            Files.deleteIfExists(zipFile);
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/EmbeddedFrame/GraphicsConfigTest/GraphicsConfigTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6356322
+ * @summary Tests that embedded frame's graphics configuration is updated
+ *          correctly when it is moved to another screen in multiscreen system,
+ *          XToolkit
+ * @author artem.ananiev@sun.com: area=awt.multiscreen
+ * @requires (os.family == "linux") | (os.family == "solaris")
+ * @run main GraphicsConfigTest
+ */
+
+import java.awt.*;
+import java.awt.peer.*;
+import java.lang.reflect.*;
+import java.util.*;
+import sun.awt.*;
+import sun.awt.X11.*;
+
+public class GraphicsConfigTest {
+
+    private static void init()
+        throws InterruptedException, AWTException {
+        if (!isXToolkit()) {
+            System.err.println("The test should be run only on XToolkit");
+            return;
+        }
+
+        GraphicsEnvironment ge =
+                GraphicsEnvironment.getLocalGraphicsEnvironment();
+        GraphicsDevice[] gds = ge.getScreenDevices();
+        if (gds.length < 2) {
+            System.err.println("The test should be run only in"
+                + " multiscreen configuration");
+            return;
+        }
+
+        boolean xinerama = Arrays.stream(gds)
+            .map((gd) -> gd.getDefaultConfiguration().getBounds())
+            .filter((r) -> r.x != 0 || r.y != 0).findFirst().isPresent();
+
+        if (!xinerama) {
+            System.err.println("The test should be run only with Xinerama ON");
+            return;
+        }
+
+        Rectangle r0 = gds[0].getDefaultConfiguration().getBounds();
+        Rectangle r1 = gds[1].getDefaultConfiguration().getBounds();
+
+        System.setProperty("sun.awt.xembedserver", "true");
+        Frame f = new Frame("F");
+        try {
+            final Robot robot = new Robot();
+
+            f.setBounds(r0.x + 100, r0.y + 100, 200, 200);
+            f.setVisible(true);
+            robot.waitForIdle();
+            Thread.sleep(1000);
+
+            Canvas c = new Canvas();
+            f.add(c);
+            AWTAccessor.ComponentAccessor acc =
+                        AWTAccessor.getComponentAccessor();
+            WindowIDProvider wip = (XEmbedCanvasPeer)acc.getPeer(c);
+            long h = wip.getWindow();
+
+            EmbeddedFrame e = createEmbeddedFrame(h);
+            ((FramePeer)acc.getPeer(e)).setBoundsPrivate(0, 0, 100,
+                100); // triggers XConfigureEvent
+            e.registerListeners();
+            e.setVisible(true);
+            robot.waitForIdle();
+            Thread.sleep(1000);
+
+            if (!checkGC(f, e)) {
+                throw new RuntimeException("Failed at checkpoint 1");
+            }
+
+            f.setLocation(r1.x + 100, r1.y + 100);
+            Thread.sleep(100);
+            ((FramePeer)acc.getPeer(e)).setBoundsPrivate(0, 0, 101,
+                101); // triggers XConfigureEvent
+            robot.waitForIdle();
+            Thread.sleep(1000);
+
+            if (!checkGC(f, e)) {
+                throw new RuntimeException("Failed at checkpoint 2");
+            }
+
+            f.setLocation(r0.x + 100, r0.y + 100);
+            Thread.sleep(100);
+            ((FramePeer)acc.getPeer(e)).setBoundsPrivate(0, 0, 102,
+                102); // triggers XConfigureEvent
+            robot.waitForIdle();
+            Thread.sleep(1000);
+
+            if (!checkGC(f, e)) {
+                throw new RuntimeException("Failed at checkpoint 3");
+            }
+
+        } finally {
+            f.dispose();
+        }
+    }
+
+    private static boolean isXToolkit() {
+        return Toolkit.getDefaultToolkit().getClass()
+                        .getName().equals("sun.awt.X11.XToolkit");
+    }
+
+    private static EmbeddedFrame createEmbeddedFrame(long window) {
+        try {
+            Class cl = Class.forName("sun.awt.X11.XEmbeddedFrame");
+            Constructor cons = cl.getConstructor(
+                new Class[]{Long.TYPE, Boolean.TYPE});
+            return (EmbeddedFrame) cons.newInstance(new Object[]{window, true});
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("Can't create embedded frame");
+        }
+    }
+
+    private static boolean checkGC(Component c, Component d) {
+        GraphicsConfiguration g1 = c.getGraphicsConfiguration();
+        System.err.println(g1);
+        GraphicsConfiguration g2 = d.getGraphicsConfiguration();
+        System.err.println(g2);
+
+        return g1.equals(g2);
+    }
+
+    public static void main(String args[]) throws InterruptedException, AWTException {
+        init();
+    }
+}
--- a/test/java/awt/EventQueue/6980209/bug6980209.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/awt/EventQueue/6980209/bug6980209.java	Fri Apr 23 01:47:38 2021 +0100
@@ -27,18 +27,17 @@
    @author Semyon Sadetsky
   */
 
-import sun.util.logging.PlatformLogger;
-
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
+import java.util.logging.Logger;
 
 public class bug6980209 implements ActionListener {
-    private final static PlatformLogger log =
-            PlatformLogger.getLogger("java.awt.event.WaitDispatchSupport");
+    private final static Logger log =
+            Logger.getLogger("java.awt.event.WaitDispatchSupport");
     public static final int ATTEMPTS = 100;
     public static final int EVENTS = 5;
 
@@ -52,8 +51,8 @@
     public static void main(String[] args) throws Exception {
         System.out.println(
                 "PLEASE DO NOT TOUCH KEYBOARD AND MOUSE DURING THE TEST RUN!");
-        // log.setLevel(PlatformLogger.Level.FINE);
-        // log.setLevel(PlatformLogger.Level.FINEST);
+        // log.setLevel(java.util.logging.Level.FINE);
+        // log.setLevel(java.util.logging.Level.FINEST);
         try {
             SwingUtilities.invokeAndWait(new Runnable() {
                 public void run() {
@@ -238,4 +237,4 @@
         }
         log.fine("\n---TEST END---");
     }
-}
\ No newline at end of file
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/Frame/NonEDT_GUI_DeadlockTest/NonEDT_GUI_Deadlock.html	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,44 @@
+<html>
+<!--
+ Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
+<!--  
+  @test
+  @bug 4828019
+  @summary Frame/Window deadlock
+  @author yan@sparc.spb.su: area=
+  @run applet/timeout=9999 NonEDT_GUI_Deadlock.html
+  -->
+<head>
+<title>  </title>
+</head>
+<body>
+
+<h1>NonEDT_GUI_Deadlock<br>Bug ID: 4828019</h1>
+
+<p> This is an AUTOMATIC test, simply wait for completion </p>
+
+<APPLET CODE="NonEDT_GUI_Deadlock.class" WIDTH=200 HEIGHT=200></APPLET>
+</body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/Frame/NonEDT_GUI_DeadlockTest/NonEDT_GUI_Deadlock.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,323 @@
+/*
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/*
+  test
+  @bug 4828019
+  @summary Frame/Window deadlock
+  @author yan@sparc.spb.su: area=
+  @run applet NonEDT_GUI_Deadlock.html
+*/
+
+// Note there is no @ in front of test above.  This is so that the
+//  harness will not mistake this file as a test file.  It should
+//  only see the html file as a test file. (the harness runs all
+//  valid test files, so it would run this test twice if this file
+//  were valid as well as the html file.)
+// Also, note the area= after Your Name in the author tag.  Here, you
+//  should put which functional area the test falls in.  See the
+//  AWT-core home page -> test areas and/or -> AWT team  for a list of
+//  areas.
+// Note also the 'AutomaticAppletTest.html' in the run tag.  This should
+//  be changed to the name of the test.
+
+
+/**
+ * NonEDT_GUI_Deadlock.java
+ *
+ * summary:
+ */
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.*;
+import java.io.*;
+
+
+//Automated tests should run as applet tests if possible because they
+// get their environments cleaned up, including AWT threads, any
+// test created threads, and any system resources used by the test
+// such as file descriptors.  (This is normally not a problem as
+// main tests usually run in a separate VM, however on some platforms
+// such as the Mac, separate VMs are not possible and non-applet
+// tests will cause problems).  Also, you don't have to worry about
+// synchronisation stuff in Applet tests they way you do in main
+// tests...
+
+
+public class NonEDT_GUI_Deadlock extends Applet
+{
+    //Declare things used in the test, like buttons and labels here
+    boolean bOK = false;
+    Thread badThread = null;
+
+    public void init()
+    {
+        //Create instructions for the user here, as well as set up
+        // the environment -- set the layout manager, add buttons,
+        // etc.
+
+
+        String[] instructions =
+        {
+            "This is an AUTOMATIC test",
+            "simply wait until it is done"
+        };
+        Sysout.createDialog( );
+        Sysout.printInstructions( instructions );
+
+    }//End  init()
+
+    public void start ()
+    {
+        //Get things going.  Request focus, set size, et cetera
+
+        setSize (200,300);
+        setVisible(true);
+        validate();
+
+        final Frame theFrame = new Frame("Window test");
+        theFrame.setSize(240, 200);
+
+        Thread thKiller = new Thread() {
+           public void run() {
+              try {
+                 Thread.sleep( 9000 );
+              }catch( Exception ex ) {
+              }
+              if( !bOK ) {
+                 // oops,
+                 //Sysout.println("Deadlock!");
+                 Runtime.getRuntime().halt(0);
+              }else{
+                 //Sysout.println("Passed ok.");
+              }
+           }
+        };
+        thKiller.setName("Killer thread");
+        thKiller.start();
+        Window w = new TestWindow(theFrame);
+        theFrame.toBack();
+        theFrame.setVisible(true);
+
+        theFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
+        EventQueue.invokeLater(new Runnable() {
+           public void run() {
+               bOK = true;
+           }
+        });
+
+
+
+    }// start()
+    class TestWindow extends Window implements Runnable {
+
+        TestWindow(Frame f) {
+            super(f);
+
+            //setSize(240, 75);
+            setLocation(0, 75);
+
+            show();
+            toFront();
+
+            badThread = new Thread(this);
+            badThread.setName("Bad Thread");
+            badThread.start();
+
+        }
+
+        public void paint(Graphics g) {
+            g.drawString("Deadlock or no deadlock?",20,80);
+        }
+
+        public void run() {
+
+            long ts = System.currentTimeMillis();
+
+            while (true) {
+                if ((System.currentTimeMillis()-ts)>3000) {
+                    this.setVisible( false );
+                    dispose();
+                    break;
+                }
+
+                toFront();
+                try {
+                    Thread.sleep(80);
+                } catch (Exception e) {
+                }
+            }
+        }
+    }
+
+
+
+    public static void main(String args[]) {
+       NonEDT_GUI_Deadlock imt = new NonEDT_GUI_Deadlock();
+       imt.init();
+       imt.start();
+    }
+
+
+}// class NonEDT_GUI_Deadlock
+
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard
+  chunk of code whose purpose is to make user
+  interaction uniform, and thereby make it simpler
+  to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+  for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+  WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+  with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well
+  as standalone.
+ */
+
+class Sysout
+{
+    private static TestDialog dialog;
+
+    public static void createDialogWithInstructions( String[] instructions )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        dialog.printInstructions( instructions );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+    public static void createDialog( )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        String[] defInstr = { "Instructions will appear here. ", "" } ;
+        dialog.printInstructions( defInstr );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+
+    public static void printInstructions( String[] instructions )
+    {
+        dialog.printInstructions( instructions );
+    }
+
+
+    public static void println( String messageIn )
+    {
+        dialog.displayMessage( messageIn );
+    }
+
+}// Sysout  class
+
+/**
+  This is part of the standard test machinery.  It provides a place for the
+   test instructions to be displayed, and a place for interactive messages
+   to the user to be displayed.
+  To have the test instructions displayed, see Sysout.
+  To have a message to the user be displayed, see Sysout.
+  Do not call anything in this dialog directly.
+  */
+class TestDialog extends Dialog
+{
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+
+    //DO NOT call this directly, go through Sysout
+    public TestDialog( Frame frame, String name )
+    {
+        super( frame, name );
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
+        add( "North", instructionsText );
+
+        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
+        add("Center", messageText);
+
+        pack();
+
+        show();
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions( String[] instructions )
+    {
+        //Clear out any current instructions
+        instructionsText.setText( "" );
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for( int i=0; i < instructions.length; i++ )
+        {
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[ i ];
+            while( remainingStr.length() > 0 )
+            {
+                //if longer than max then chop off first max chars to print
+                if( remainingStr.length() >= maxStringLength )
+                {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                        lastIndexOf( ' ', maxStringLength - 1 );
+
+                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
+
+                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
+                    remainingStr = remainingStr.substring( posOfSpace + 1 );
+                }
+                //else just print
+                else
+                {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+
+                instructionsText.append( printStr + "\n" );
+
+            }// while
+
+        }// for
+
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage( String messageIn )
+    {
+        messageText.append( messageIn + "\n" );
+        System.out.println(messageIn);
+    }
+
+}// TestDialog  class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/List/FocusEmptyListTest/FocusEmptyListTest.html	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,44 @@
+<!--
+ Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ 
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+ 
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+ 
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ 
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+<html>
+<!--  
+  @test
+  @bug 6387275
+  @summary List: the focus is at the top of the first item, XAWT
+  @author Dmitry.Cherepanov@SUN.COM area=awt.list
+  @requires (os.family == "linux" | os.family == "solaris")
+  @run applet FocusEmptyListTest.html
+  -->
+<head>
+<title> FocusEmptyListTest </title>
+</head>
+<body>
+
+<h1>FocusEmptyListTest<br>Bug ID: 6387275 </h1>
+
+<p> This is an AUTOMATIC test, simply wait for completion </p>
+
+<APPLET CODE="FocusEmptyListTest.class" WIDTH=200 HEIGHT=200></APPLET>
+</body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/List/FocusEmptyListTest/FocusEmptyListTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+  test
+  @bug 6387275
+  @summary List: the focus is at the top of the first item, XAWT
+  @author Dmitry.Cherepanov@SUN.COM area=awt.list
+  @run applet FocusEmptyListTest.html
+*/
+
+import java.applet.Applet;
+import java.awt.*;
+import java.lang.reflect.*;
+import java.awt.peer.ListPeer;
+
+import sun.awt.AWTAccessor;
+
+public class FocusEmptyListTest extends Applet {
+
+    public void init() {
+        setLayout(new BorderLayout());
+    }//End  init()
+
+    public void start() {
+        boolean isXToolkit = Toolkit.getDefaultToolkit()
+            .getClass().getName().equals("sun.awt.X11.XToolkit");
+        if (!isXToolkit) {
+            System.out.println("The test is XAWT-only.");
+            return;
+        }
+
+        List list = new List();
+        Object isIndexDisplayed = null;
+        setLayout(new FlowLayout());
+
+        getToolkit().addAWTEventListener(System.out::println,
+            AWTEvent.FOCUS_EVENT_MASK | AWTEvent.WINDOW_FOCUS_EVENT_MASK);
+
+        add(list);
+        list.add("item1");
+
+        setSize(200, 200);
+        setVisible(true);
+        validate();
+
+        list.removeAll();
+
+        try {
+
+            // peer = List.getPeer()
+            ListPeer peer = (ListPeer)AWTAccessor.getComponentAccessor().getPeer(list);
+            System.out.println("peer = " + peer);
+            Class peerClass = peer.getClass();
+            System.out.println("peer's class = " + peerClass);
+
+            // isIndexDisplayed = peer.isIndexDisplayed(-1)
+            Method isIndexDisplayedM
+                = peerClass.getDeclaredMethod("isIndexDisplayed", Integer.TYPE);
+            System.out.println("method = " + isIndexDisplayedM);
+            isIndexDisplayedM.setAccessible(true);
+            isIndexDisplayed = isIndexDisplayedM.invoke(peer, -1);
+            System.out.println("isIndexDisplayed=" + isIndexDisplayed);
+
+        } catch (Throwable thr) {
+            throw new RuntimeException("TEST FAILED: " + thr);
+        }
+
+        if ((Boolean) isIndexDisplayed) {
+            throw new RuntimeException("TEST FAILED: -1 should be"
+                + " invisible index");
+        }
+
+    }// start()
+
+}// class AutomaticAppletTest
--- a/test/java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java	Fri Apr 23 01:47:38 2021 +0100
@@ -40,7 +40,8 @@
 
 /**
  * AWT/Swing overlapping test for {@link javax.swing.JSplitPane } component.
- * <p>This test creates puts heavyweight and lightweight components into different panels and test if splitter image and components itself are drawn correctly.
+ * <p>This test puts heavyweight and lightweight components into different
+ * panels and test if splitter image and components itself are drawn correctly.
  * <p>See base class for test info.
  */
 /*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/font/GlyphVector/TestLayoutFlags.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/* @test
+   @bug 4328745 5090704
+   @summary exercise getLayoutFlags, getGlyphCharIndex, getGlyphCharIndices
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.font.*;
+import java.awt.geom.*;
+
+public class TestLayoutFlags {
+
+    static public void main(String[] args) {
+        new TestLayoutFlags().runTest();
+    }
+
+    void runTest() {
+
+        Font font = new Font("Lucida Sans", Font.PLAIN, 24);
+
+        String latin1 = "This is a latin1 string"; // none
+        String hebrew = "\u05d0\u05d1\u05d2\u05d3"; // rtl
+        String arabic = "\u0646\u0644\u0622\u0646"; // rtl + mc/g
+        String hindi = "\u0939\u093f\u0923\u094d\u0921\u0940"; // ltr + reorder
+        //      String tamil = "\u0b9c\u0bcb"; // ltr + mg/c + split
+
+        FontRenderContext frc = new FontRenderContext(null, true, true);
+
+        // get glyph char indices needs to initializes layoutFlags before use (5090704)
+        {
+          GlyphVector gv = font.createGlyphVector(frc, "abcde");
+          int ix = gv.getGlyphCharIndex(0);
+          if (ix != 0) {
+            throw new Error("glyph 0 incorrectly mapped to char " + ix);
+          }
+          int[] ixs = gv.getGlyphCharIndices(0, gv.getNumGlyphs(), null);
+          for (int i = 0; i < ixs.length; ++i) {
+            if (ixs[i] != i) {
+              throw new Error("glyph " + i + " incorrectly mapped to char " + ixs[i]);
+            }
+          }
+        }
+
+        GlyphVector latinGV = makeGlyphVector("Lucida Sans", frc, latin1, false, 1 /* ScriptRun.LATIN */);
+        GlyphVector hebrewGV = makeGlyphVector("Lucida Sans", frc, hebrew, true, 5 /* ScriptRun.HEBREW */);
+        GlyphVector arabicGV = makeGlyphVector("Lucida Sans", frc, arabic, true, 6 /* ScriptRun.ARABIC */);
+        GlyphVector hindiGV = makeGlyphVector("Lucida Sans", frc, hindi, false, 7 /* ScriptRun.DEVANAGARI */);
+        //      GlyphVector tamilGV = makeGlyphVector("Devanagari MT for IBM", frc, tamil, false, 12 /* ScriptRun.TAMIL */);
+
+        GlyphVector latinPos = font.createGlyphVector(frc, latin1);
+        Point2D pt = latinPos.getGlyphPosition(0);
+        pt.setLocation(pt.getX(), pt.getY() + 1.0);
+        latinPos.setGlyphPosition(0, pt);
+
+        GlyphVector latinTrans = font.createGlyphVector(frc, latin1);
+        latinTrans.setGlyphTransform(0, AffineTransform.getRotateInstance(.15));
+
+        test("latin", latinGV, GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS);
+        test("hebrew", hebrewGV, GlyphVector.FLAG_RUN_RTL |
+             GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS);
+        test("arabic", arabicGV, GlyphVector.FLAG_RUN_RTL |
+             GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS);
+        test("hindi", hindiGV, GlyphVector.FLAG_COMPLEX_GLYPHS |
+             GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS);
+        //      test("tamil", tamilGV, GlyphVector.FLAG_COMPLEX_GLYPHS);
+        test("pos", latinPos, GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS);
+        test("trans", latinTrans, GlyphVector.FLAG_HAS_TRANSFORMS);
+    }
+
+    GlyphVector makeGlyphVector(String fontname, FontRenderContext frc, String text, boolean rtl, int script) {
+        Font font = new Font(fontname, Font.PLAIN, 14);
+        System.out.println("asking for " + fontname + " and got " + font.getFontName());
+        int flags = rtl ? 1 : 0;
+        return font.layoutGlyphVector(frc, text.toCharArray(), 0, text.length(), flags);
+    }
+
+    void test(String name, GlyphVector gv, int expectedFlags) {
+        expectedFlags &= gv.FLAG_MASK;
+        int computedFlags = computeFlags(gv) & gv.FLAG_MASK;
+        int actualFlags = gv.getLayoutFlags() & gv.FLAG_MASK;
+
+        System.out.println("\n*** " + name + " ***");
+        System.out.println(" test flags");
+        System.out.print("expected ");
+        printFlags(expectedFlags);
+        System.out.print("computed ");
+        printFlags(computedFlags);
+        System.out.print("  actual ");
+        printFlags(actualFlags);
+
+        if (expectedFlags != actualFlags) {
+            throw new Error("layout flags in test: " + name +
+                            " expected: " + Integer.toHexString(expectedFlags) +
+                            " but got: " + Integer.toHexString(actualFlags));
+        }
+    }
+
+    static public void printFlags(int flags) {
+        System.out.print("flags:");
+        if ((flags & GlyphVector.FLAG_HAS_POSITION_ADJUSTMENTS) != 0) {
+            System.out.print(" pos");
+        }
+        if ((flags & GlyphVector.FLAG_HAS_TRANSFORMS) != 0) {
+            System.out.print(" trans");
+        }
+        if ((flags & GlyphVector.FLAG_RUN_RTL) != 0) {
+            System.out.print(" rtl");
+        }
+        if ((flags & GlyphVector.FLAG_COMPLEX_GLYPHS) != 0) {
+            System.out.print(" complex");
+        }
+        if ((flags & GlyphVector.FLAG_MASK) == 0) {
+            System.out.print(" none");
+        }
+        System.out.println();
+    }
+
+    int computeFlags(GlyphVector gv) {
+        validateCharIndexMethods(gv);
+
+        int result = 0;
+        if (glyphsAreRTL(gv)) {
+            result |= GlyphVector.FLAG_RUN_RTL;
+        }
+        if (hasComplexGlyphs(gv)) {
+            result |= GlyphVector.FLAG_COMPLEX_GLYPHS;
+        }
+
+        return result;
+    }
+
+    /**
+     * throw an exception if getGlyphCharIndices returns a different result than
+     * you get from iterating through getGlyphCharIndex one at a time.
+     */
+    void validateCharIndexMethods(GlyphVector gv) {
+        int[] indices = gv.getGlyphCharIndices(0, gv.getNumGlyphs(), null);
+        for (int i = 0; i < gv.getNumGlyphs(); ++i) {
+            if (gv.getGlyphCharIndex(i) != indices[i]) {
+                throw new Error("glyph index mismatch at " + i);
+            }
+        }
+    }
+
+    /**
+     * Return true if the glyph indices are pure ltr
+     */
+    boolean glyphsAreLTR(GlyphVector gv) {
+        int[] indices = gv.getGlyphCharIndices(0, gv.getNumGlyphs(), null);
+        for (int i = 0; i < indices.length; ++i) {
+            if (indices[i] != i) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Return true if the glyph indices are pure rtl
+     */
+    boolean glyphsAreRTL(GlyphVector gv) {
+        int[] indices = gv.getGlyphCharIndices(0, gv.getNumGlyphs(), null);
+        for (int i = 0; i < indices.length; ++i) {
+            if (indices[i] != indices.length - i - 1) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Return true if there is a local reordering (the run is not ltr or rtl).
+     * !!! We can't have mixed bidi runs in the glyphs.
+     */
+    boolean hasComplexGlyphs(GlyphVector gv) {
+        return !glyphsAreLTR(gv) && !glyphsAreRTL(gv);
+    }
+}
+
+/*
+rect getPixelBounds(frc, x, y)
+rect getGlyphPixelBounds(frc, int, x, y)
+getGlyphOutline(int index, x, y)
+getGlyphInfo()
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/font/Underline/UnderlineTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/**
+ * @test
+ * @bug 6216010
+ * @summary check to see that underline thickness scales.
+ * @run main UnderlineTest
+ */
+
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GridLayout;
+import java.awt.font.FontRenderContext;
+import java.awt.font.LineMetrics;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.util.HashMap;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+
+public class UnderlineTest {
+    static class FontsPanel extends Container {
+        FontsPanel(Font[] fonts) {
+            setLayout(new GridLayout(0, 1));
+            for (int i = 0; i < fonts.length; ++i) {
+              add(new FontPanel(fonts[i]));
+            }
+        }
+    }
+
+    static String fps = "Stellar glyphs";
+    static Dimension fpd = new Dimension(600, 120);
+    static class FontPanel extends JComponent {
+        Font f;
+        FontPanel(Font f) {
+            this.f = f;
+            setPreferredSize(fpd);
+            setMinimumSize(fpd);
+            setMaximumSize(fpd);
+            setSize(fpd);
+        }
+
+        public void paintComponent(Graphics g) {
+            g.setColor(Color.WHITE);
+            g.fillRect(0, 0, fpd.width, fpd.height);
+
+            g.setColor(Color.RED);
+            FontRenderContext frc = ((Graphics2D)g).getFontRenderContext();
+            LineMetrics lm = f.getLineMetrics(fps, frc);
+            int h = (int)(fpd.height - 20 - lm.getAscent());
+            g.drawLine(20, h, fpd.width - 20, h);
+            h = fpd.height - 20;
+            g.drawLine(20, h, fpd.width - 20, h);
+            h = (int)(fpd.height - 20 + lm.getDescent());
+            g.drawLine(20, h, fpd.width - 20, h);
+
+            g.setColor(Color.BLACK);
+            g.setFont(f);
+            g.drawString(fps, 50, fpd.height - 20);
+        }
+    }
+
+    public static void main(String args[]) {
+        String fontName = "Lucida Sans";
+        if (args.length > 0) {
+            fontName = args[0];
+        }
+        FontRenderContext frc = new FontRenderContext(null, false, false);
+        FontRenderContext frc2 = new FontRenderContext(AffineTransform.getScaleInstance(1.5, 1.5), false, false);
+
+        Font font0 = new Font(fontName, 0, 20);
+        HashMap map = new HashMap();
+        map.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+        map.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
+        Font font = font0.deriveFont(map);
+
+        System.out.println("Using font: " + font);
+
+        double rot = -Math.PI/4;
+        AffineTransform scrtx = AffineTransform.getRotateInstance(rot);
+        scrtx.scale(1, 2);
+
+        Font[] fonts = {
+            font.deriveFont(1f),
+            font.deriveFont(20f),
+            font.deriveFont(40f),
+            font.deriveFont(80f),
+            font.deriveFont(AffineTransform.getRotateInstance(rot)),
+            font.deriveFont(AffineTransform.getScaleInstance(1, 2)),
+            font.deriveFont(AffineTransform.getScaleInstance(2, 4)),
+            font.deriveFont(scrtx),
+        };
+
+        LineMetrics[] metrics = new LineMetrics[fonts.length * 2];
+        for (int i = 0; i < metrics.length; ++i) {
+            Font f = fonts[i % fonts.length];
+            FontRenderContext frcx = i < fonts.length ? frc : frc2;
+            metrics[i] = f.getLineMetrics("X", frcx);
+      //       dumpMetrics("Metrics for " + f.getSize2D() + " pt. font,\n  tx: " +
+      //       f.getTransform() + ",\n   frctx: " + frcx.getTransform(), metrics[i]);
+        }
+
+        // test for linear scale
+        // this seems to work, might need to get fancy to deal with last-significant-bit issues?
+        double ds1 = metrics[2].getStrikethroughOffset() - metrics[1].getStrikethroughOffset();
+        double du1 = metrics[2].getUnderlineThickness() - metrics[1].getUnderlineThickness();
+        double ds2 = metrics[3].getStrikethroughOffset() - metrics[2].getStrikethroughOffset();
+        double du2 = metrics[3].getUnderlineThickness() - metrics[2].getUnderlineThickness();
+        if (ds2 != ds1 * 2 || du2 != du1 * 2) {
+            throw new IllegalStateException("non-linear scale: " + ds1 + " / " + ds2 + ", " +
+                                            du1 + " / " + du2);
+        }
+
+        JFrame jf = new JFrame("Fonts");
+        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        jf.add(new JScrollPane(new FontsPanel(fonts)));
+        jf.pack();
+        jf.setVisible(true);
+    }
+
+    static void dumpMetrics(String header, LineMetrics lm) {
+        if (header != null) {
+            System.out.println(header);
+        }
+        System.out.println("asc: " + lm.getAscent());
+        System.out.println("dsc: " + lm.getDescent());
+        System.out.println("ulo: " + lm.getUnderlineOffset());
+        System.out.println("ult: " + lm.getUnderlineThickness());
+        System.out.println("sto: " + lm.getStrikethroughOffset());
+        System.out.println("stt: " + lm.getStrikethroughThickness());
+    }
+}
--- a/test/java/awt/xembed/server/TestXEmbedServer.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/awt/xembed/server/TestXEmbedServer.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,8 @@
 import java.io.*;
 import java.util.logging.*;
 import sun.awt.WindowIDProvider;
+import sun.awt.AWTAccessor;
+import sun.awt.AWTAccessor.ComponentAccessor;
 import java.awt.dnd.*;
 import java.awt.datatransfer.*;
 
@@ -182,7 +184,8 @@
         client.setBackground(new Color(30, 220, 40));
         clientCont.add(client);
         clientCont.validate();
-        WindowIDProvider pid = (WindowIDProvider)client.getPeer();
+        final ComponentAccessor acc = AWTAccessor.getComponentAccessor();
+        WindowIDProvider pid = (WindowIDProvider)acc.getPeer(client);
         log.fine("Added XEmbed server(Canvas) with X window ID " + pid.getWindow());
         Rectangle toFocusBounds = toFocus.getBounds();
         toFocusBounds.setLocation(toFocus.getLocationOnScreen());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/nio/channels/SocketChannel/AdaptSocketReadAfterClose.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2021, Huawei Technologies Co., Ltd. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketAddress;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
+
+import org.testng.annotations.Test;
+import org.testng.Assert;
+
+/*
+ * @test
+ * @bug 8260875
+ * @summary Reading a closed SocketChannel should throw a ClosedChannelException
+ * @run testng AdaptSocketReadAfterClose
+ */
+
+public class AdaptSocketReadAfterClose {
+
+    @Test
+    public void testReadAfterClose() throws InterruptedException, IOException {
+        ServerSocketChannel ssc = ServerSocketChannel.open();
+        ssc.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0));
+        SocketAddress saddr = ssc.getLocalAddress();
+
+        SocketChannel channel = SocketChannel.open(saddr);
+        channel.configureBlocking(false);
+        Socket s = channel.socket();
+        InputStream is = s.getInputStream();
+        channel.close();
+
+        byte[] buf = new byte[10];
+        Throwable ex = Assert.expectThrows(ClosedChannelException.class, () -> is.read(buf));
+        Assert.assertEquals(ex.getClass(), ClosedChannelException.class);
+        ssc.close();
+    }
+}
--- a/test/java/rmi/activation/Activatable/checkActivateRef/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/checkActivateRef/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -30,8 +30,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/checkAnnotations/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/checkAnnotations/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/checkImplClassLoader/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/checkImplClassLoader/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -33,8 +33,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/checkRegisterInLog/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/checkRegisterInLog/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/createPrivateActivable/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/createPrivateActivable/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/downloadParameterClass/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/downloadParameterClass/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -32,8 +32,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -31,8 +31,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/extLoadedImpl/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/extLoadedImpl/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -18,8 +18,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/forceLogSnapshot/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/forceLogSnapshot/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/inactiveGroup/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/inactiveGroup/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/nestedActivate/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/nestedActivate/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/nonExistentActivatable/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/nonExistentActivatable/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/restartCrashedService/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/restartCrashedService/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/restartLatecomer/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/restartLatecomer/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/restartService/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/restartService/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/shutdownGracefully/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/shutdownGracefully/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/Activatable/unregisterInactive/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/Activatable/unregisterInactive/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/ActivationSystem/activeGroup/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/ActivationSystem/activeGroup/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -16,8 +16,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -22,8 +22,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/activation/CommandEnvironment/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/activation/CommandEnvironment/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -23,8 +23,7 @@
   permission java.util.PropertyPermission "java.compiler", "read";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "java.rmi.activation.port", "write";
--- a/test/java/rmi/dgc/VMID/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/dgc/VMID/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -9,8 +9,7 @@
 grant {
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 };
--- a/test/java/rmi/registry/classPathCodebase/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/registry/classPathCodebase/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -15,8 +15,7 @@
   permission java.io.FilePermission ".${/}-", "read,write,delete";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -19,8 +19,7 @@
   permission java.io.FilePermission ".${/}codebase${/}-", "read,write,delete";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 };
--- a/test/java/rmi/server/RMIClassLoader/downloadArrayClass/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/downloadArrayClass/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -17,8 +17,7 @@
 	".${/}-", "read,write,delete";
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMIClassLoader/getClassLoader/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/getClassLoader/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -14,8 +14,7 @@
 	".${/}-", "read,write,delete";
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMIClassLoader/loadProxyClasses/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/loadProxyClasses/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -20,8 +20,7 @@
     permission java.lang.reflect.ReflectPermission "newProxyInPackage.java.util.zip";
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 };
--- a/test/java/rmi/server/RMIClassLoader/spi/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/spi/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -17,8 +17,7 @@
 	".${/}-", "read,write,delete";
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -21,8 +21,7 @@
 	".${/}-", "read,write,delete";
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMIClassLoader/useGetURLs/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMIClassLoader/useGetURLs/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -16,8 +16,7 @@
   permission java.io.FilePermission ".${/}-", "read,write,delete";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 };
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -25,8 +25,7 @@
   permission java.util.PropertyPermission "java.security.manager", "read";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -17,8 +17,7 @@
   permission java.io.FilePermission "${java.home}${/}bin${/}java", "execute";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -17,8 +17,7 @@
   permission java.io.FilePermission "${java.home}${/}bin${/}java", "execute";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/server/useCustomRef/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/server/useCustomRef/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -17,8 +17,7 @@
   permission java.util.PropertyPermission "package.restrict.access.sun.rmi", "read";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/testlibrary/ActivationLibrary.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/testlibrary/ActivationLibrary.java	Fri Apr 23 01:47:38 2021 +0100
@@ -103,72 +103,6 @@
         }
     }
 
-    /**
-     * Simple method call to see if rmid is running.
-     *
-     * This method intentionally avoids performing a lookup on the
-     * activation system.
-     */
-    public static boolean rmidRunning(int port) {
-        int allowedNotReady = 50;
-        int connectionRefusedExceptions = 0;
-
-        /* We wait as much as a total of 7.5 secs trying to see Rmid running.
-         * We do this by pausing steps of 100 milliseconds (so up to 75 steps),
-         * right after trying to lookup and find RMID running in the other vm.
-         */
-        final long rmidWaitingStepTime = 100;
-        for (int i = 0; i <= 74; i++) {
-
-            try {
-                LocateRegistry.getRegistry(port).lookup(SYSTEM_NAME);
-                mesg("Activation System available after " +
-                     (i * rmidWaitingStepTime) + " milliseconds");
-                return true;
-
-            } catch (java.rmi.ConnectException e) {
-                mesg("Remote connection refused after " +
-                     (i * rmidWaitingStepTime) + " milliseconds");
-
-                // ignore connect exceptions until we decide rmid is not up
-                if ((connectionRefusedExceptions ++) >= allowedNotReady) {
-                    return false;
-                }
-
-            } catch (java.rmi.NoSuchObjectException nsoe) {
-                /* Activation System still unavailable.
-                 * Ignore this since we are just waiting for its availibility.
-                 * Just signal unavailibility.
-                 */
-                mesg("Activation System still unavailable after more than " +
-                     (i * rmidWaitingStepTime) + " milliseconds");
-
-            } catch (NotBoundException e) {
-                return false;
-
-            } catch (Exception e) {
-                /* print out other types of exceptions as an FYI.
-                 * test should not fail as rmid is likely to be in an
-                 * undetermined state at this point.
-                 */
-                mesg("caught an exception trying to" +
-                     " start rmid, last exception was: " +
-                     e.getMessage());
-                e.printStackTrace();
-            }
-
-            // Waiting for another 100 milliseconds.
-            try {
-                Thread.sleep(100);
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                mesg("Thread interrupted while checking if Activation System is running. Exiting check");
-                return false;
-            }
-        }
-        return false;
-    }
-
     /** cleanup after rmid */
     public static void rmidCleanup(RMID rmid) {
         if (rmid != null) {
@@ -216,7 +150,7 @@
         }
 
         public void run() {
-            if (ActivationLibrary.rmidRunning(port)) {
+            if (RMID.lookupSystem(port) != null) {
                 rmid.destroy();
                 synchronized (this) {
                     // flag that the test was able to shutdown rmid
--- a/test/java/rmi/testlibrary/JavaVM.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/testlibrary/JavaVM.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -135,7 +135,11 @@
             addOptions(new String[] { option });
         }
 
-        addOptions(new String[] { getCodeCoverageOptions() });
+        addOptions(new String[] {
+            getCodeCoverageOptions(),
+            TestParams.testJavaOpts,
+            TestParams.testVmOpts
+        });
 
         StringTokenizer optionsTokenizer = new StringTokenizer(options);
         StringTokenizer argsTokenizer = new StringTokenizer(args);
--- a/test/java/rmi/testlibrary/RMID.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/testlibrary/RMID.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -28,6 +28,7 @@
 import java.io.*;
 import java.rmi.*;
 import java.rmi.activation.*;
+import java.rmi.registry.*;
 
 /**
  * Utility class that creates an instance of rmid with a policy
@@ -38,6 +39,9 @@
  */
 public class RMID extends JavaVM {
 
+    private static final String SYSTEM_NAME = ActivationSystem.class.getName();
+        // "java.rmi.activation.ActivationSystem"
+
     public static String MANAGER_OPTION="-Djava.security.manager=";
 
     /** Test port for rmid */
@@ -113,6 +117,18 @@
             args += " -C-Dtest.classes=" + TestParams.testClasses;
         }
 
+        if (!TestParams.testJavaOpts.equals("")) {
+            for (String a : TestParams.testJavaOpts.split(" +")) {
+                args += " -C" + a;
+            }
+        }
+
+        if (!TestParams.testVmOpts.equals("")) {
+            for (String a : TestParams.testVmOpts.split(" +")) {
+                args += " -C" + a;
+            }
+        }
+
         args += " -C-Djava.rmi.server.useCodebaseOnly=false ";
 
         args += " " + getCodeCoverageArgs();
@@ -207,6 +223,22 @@
         start(60000);
     }
 
+    /**
+     * Looks up the activation system in the registry on the given port,
+     * returning its stub, or null if it's not present. This method differs from
+     * ActivationGroup.getSystem() because this method looks on a specific port
+     * instead of using the java.rmi.activation.port property like
+     * ActivationGroup.getSystem() does. This method also returns null instead
+     * of throwing exceptions.
+     */
+    public static ActivationSystem lookupSystem(int port) {
+        try {
+            return (ActivationSystem)LocateRegistry.getRegistry(port).lookup(SYSTEM_NAME);
+        } catch (RemoteException | NotBoundException ex) {
+            return null;
+        }
+    }
+
     public void start(long waitTime) throws IOException {
 
         // if rmid is already running, then the test will fail with
@@ -238,8 +270,8 @@
             waitTime -= rmidStartSleepTime;
 
             // Checking if rmid is present
-            if (ActivationLibrary.rmidRunning(port)) {
-                /**
+            if (lookupSystem(port) != null) {
+                /*
                  * We need to set the java.rmi.activation.port value as the
                  * activation system will use the property to determine the
                  * port #.  The activation system will use this value if set.
@@ -249,11 +281,11 @@
                 System.setProperty("java.rmi.activation.port", Integer.toString(port));
                 mesg("finished starting rmid.");
                 return;
+            } else {
+                if (waitTime > 0) {
+                    mesg("rmid not started, will retry for " + waitTime + "ms");
+                }
             }
-            else {
-                mesg("rmid still not started");
-            }
-
         } while (waitTime > 0);
         TestLibrary.bomb("start rmid failed... giving up", null);
     }
@@ -274,24 +306,13 @@
     public static void shutdown(int port) {
 
         try {
-            ActivationSystem system = null;
-
-            try {
-                mesg("getting a reference to the activation system");
-                system = (ActivationSystem) Naming.lookup("//:" +
-                    port +
-                    "/java.rmi.activation.ActivationSystem");
-                mesg("obtained a reference to the activation system");
-            } catch (RemoteException re) {
-                mesg("could not contact registry while trying to shutdown activation system");
-            } catch (java.net.MalformedURLException mue) {
-            }
+            ActivationSystem system = lookupSystem(port);
 
             if (system == null) {
                 TestLibrary.bomb("reference to the activation system was null");
             }
+
             system.shutdown();
-
         } catch (RemoteException re) {
             mesg("shutting down the activation daemon failed");
         } catch (Exception e) {
--- a/test/java/rmi/testlibrary/TestLibrary.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/testlibrary/TestLibrary.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -154,15 +154,19 @@
         return false;
     }
 
-    public static String getProperty(String property, String defaultVal) {
-        final String prop = property;
-        final String def = defaultVal;
-        return java.security.AccessController.doPrivileged(
-            new java.security.PrivilegedAction<String>() {
-                public String run() {
-                    return System.getProperty(prop, def);
-                }
-            });
+    public static String getProperty(final String property,
+                                     final String defaultVal) {
+        try {
+            return java.security.AccessController.doPrivileged(
+                new java.security.PrivilegedAction<String>() {
+                    public String run() {
+                        return System.getProperty(property, defaultVal);
+                    }
+                });
+        } catch (Exception ex) {
+            bomb("Exception getting property " + property, ex);
+            throw new AssertionError("this should be unreachable");
+        }
     }
 
     /**
--- a/test/java/rmi/testlibrary/TestParams.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/testlibrary/TestParams.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -32,55 +32,49 @@
 public class TestParams {
 
     /** variables that hold value property values */
-    public static String testSrc = null;
-    public static String testClasses = null;
+    public static final String testSrc;
+    public static final String testClasses;
 
-    /** name of default security policy */
-    public static String defaultPolicy = null;
+    /** name of default security policy for test JVM */
+    public static final String defaultPolicy;
 
     /** name of default security policy for RMID */
-    public static String defaultRmidPolicy = null;
+    public static final String defaultRmidPolicy;
 
     /** name of default security policy for activation groups */
-    public static String defaultGroupPolicy = null;
+    public static final String defaultGroupPolicy;
 
     /** name of default security manager */
-    public static String defaultSecurityManager =
-        "java.rmi.RMISecurityManager";
+    public static final String defaultSecurityManager;
 
+    /** VM options string */
+    public static final String testVmOpts;
+
+    /** Java options string */
+    public static final String testJavaOpts;
 
     /* Initalize commonly used strings */
     static {
-        try {
-            testSrc = TestLibrary.
-                getProperty("test.src", ".");
-            testClasses = TestLibrary.
-                getProperty("test.classes", ".");
+        testSrc = TestLibrary.getProperty("test.src", ".");
+        testClasses = TestLibrary.getProperty("test.classes", ".");
 
-            // if policy file already set use it
-            defaultPolicy = TestLibrary.
-                getProperty("java.security.policy",
-                            defaultPolicy);
-            if (defaultPolicy == null) {
-                defaultPolicy = testSrc + File.separatorChar +
-                    "security.policy";
-            }
+        String dp = TestLibrary.getProperty("java.security.policy", null);
+        if (dp == null) {
+            dp = testSrc + File.separatorChar + "security.policy";
+        }
+        defaultPolicy = dp;
 
-            // if manager prop set use it
-            defaultSecurityManager = TestLibrary.
-                getProperty("java.security.manager",
-                            defaultSecurityManager);
+        defaultRmidPolicy =
+            testSrc + File.separatorChar + "rmid.security.policy";
 
-            defaultRmidPolicy =
-                testSrc + File.separatorChar + "rmid.security.policy";
+        defaultGroupPolicy =
+            testSrc + File.separatorChar + "group.security.policy";
 
-            defaultGroupPolicy = testSrc +
-                File.separatorChar + "group.security.policy";
+        defaultSecurityManager = TestLibrary.getProperty(
+            "java.security.manager", "java.lang.SecurityManager");
 
-        } catch (SecurityException se) {
-            TestLibrary.bomb("Security exception received" +
-                             " during test initialization:",
-                             se);
-        }
+        testVmOpts = TestLibrary.getProperty("test.vm.opts", "");
+
+        testJavaOpts = TestLibrary.getProperty("test.java.opts", "");
     }
 }
--- a/test/java/rmi/transport/checkLeaseInfoLeak/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/transport/checkLeaseInfoLeak/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -14,8 +14,7 @@
   permission java.io.FilePermission "${java.home}${/}bin${/}java", "execute";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/rmi/transport/dgcDeadLock/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/rmi/transport/dgcDeadLock/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -19,8 +19,7 @@
   permission java.io.FilePermission "${java.home}${/}bin${/}java", "execute";
 
   // used by TestLibrary to determine test environment 
-  permission java.util.PropertyPermission "test.classes", "read";
-  permission java.util.PropertyPermission "test.src", "read";
+  permission java.util.PropertyPermission "test.*", "read";
   permission java.util.PropertyPermission "user.dir", "read";
   permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/java/util/Arrays/TimSortStackSize2.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/util/Arrays/TimSortStackSize2.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,22 +24,64 @@
 /*
  * @test
  * @bug 8072909
- * @run main/othervm -Xms385m TimSortStackSize2 67108864
  * @summary Test TimSort stack size on big arrays
- * big tests not for regular execution on all platforms:
- * run main/othervm -Xmx8g TimSortStackSize2 1073741824
- * run main/othervm -Xmx16g TimSortStackSize2 2147483644
+ * @key intermittent
+ * @library /lib/testlibrary /lib
+ * @build jdk.testlibrary.*
+ * @build TimSortStackSize2
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ *                                sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
+ *     -XX:+WhiteBoxAPI TimSortStackSize2
  */
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.List;
 import java.util.function.Consumer;
 
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.Utils;
+import sun.hotspot.WhiteBox;
+
 public class TimSortStackSize2 {
 
     public static void main(String[] args) {
-        int lengthOfTest = Integer.parseInt(args[0]);
+        if ( args == null || args.length == 0 ){
+            startMeWithArgs();
+        } else {
+            doTestOfTwoTimSorts(Integer.parseInt(args[0]));
+        }
+    }
+
+    private static void startMeWithArgs(){
+        /*
+         * big tests not for regular execution on all platforms:
+         * run main/othervm -Xmx8g TimSortStackSize2 1073741824
+         * run main/othervm -Xmx16g TimSortStackSize2 2147483644
+         */
+        try {
+            Boolean compressedOops = WhiteBox.getWhiteBox()
+                                             .getBooleanVMFlag("UseCompressedOops");
+            long memory = (compressedOops == null || compressedOops) ? 385 : 770;
+            final String xmsValue = "-Xms" +     memory + "m";
+            final String xmxValue = "-Xmx" + 2 * memory + "m";
+
+            System.out.printf("compressedOops: %s; Test will be started with \"%s %s\"%n",
+                              compressedOops, xmsValue, xmxValue);
+            OutputAnalyzer output = ProcessTools.executeTestJvm(xmsValue,
+                                                                xmxValue,
+                                                                "TimSortStackSize2",
+                                                                "67108864");
+            System.out.println(output.getOutput());
+            output.shouldHaveExitValue(0);
+        } catch (Throwable e) {
+            e.printStackTrace();
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static void doTestOfTwoTimSorts(final int lengthOfTest){
         boolean passed = doTest("TimSort", lengthOfTest,
             (Integer [] a) -> Arrays.sort(a));
         passed = doTest("ComparableTimSort", lengthOfTest, (Integer [] a) ->
--- a/test/java/util/Locale/LocaleEnhanceTest.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/util/Locale/LocaleEnhanceTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,8 @@
 
 /**
  * @test
- * @bug 6875847 6992272 7002320 7015500 7023613 7032820 7033504 7004603 7044019
+ * @bug 6875847 6992272 7002320 7015500 7023613 7032820 7033504 7004603
+ *    7044019 8255086
  * @summary test API changes to Locale
  * @compile LocaleEnhanceTest.java
  * @run main/othervm -esa LocaleEnhanceTest
@@ -612,7 +613,7 @@
 
         Locale.setDefault(Locale.US);
         assertEquals("latn US", "Latin", latnLocale.getDisplayScript());
-        assertEquals("hans US", "Simplified Han", hansLocale.getDisplayScript());
+        assertEquals("hans US", "Simplified", hansLocale.getDisplayScript());
 
         Locale.setDefault(Locale.GERMANY);
         assertEquals("latn DE", "Lateinisch", latnLocale.getDisplayScript());
@@ -626,7 +627,7 @@
         Locale hansLocale = Locale.forLanguageTag("und-hans");
 
         assertEquals("latn US", "Latin", latnLocale.getDisplayScript(Locale.US));
-        assertEquals("hans US", "Simplified Han", hansLocale.getDisplayScript(Locale.US));
+        assertEquals("hans US", "Simplified", hansLocale.getDisplayScript(Locale.US));
 
         assertEquals("latn DE", "Lateinisch", latnLocale.getDisplayScript(Locale.GERMANY));
         assertEquals("hans DE", "Vereinfachte Chinesische Schrift", hansLocale.getDisplayScript(Locale.GERMANY));
@@ -653,10 +654,10 @@
                 "United States",
                 "Norwegian (Norway,Nynorsk)",
                 "Nynorsk",
-                "Chinese (Simplified Han)",
-                "Chinese (Traditional Han)",
-                "Chinese (Simplified Han,China)",
-                "Simplified Han",
+                "Chinese (Simplified)",
+                "Chinese (Traditional)",
+                "Chinese (Simplified,China)",
+                "Simplified",
         };
 
         final String[] displayNameSimplifiedChinese = {
--- a/test/java/util/Locale/LocaleTest.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/java/util/Locale/LocaleTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
  * @bug 4052404 4052440 4084688 4092475 4101316 4105828 4107014 4107953 4110613
  * 4118587 4118595 4122371 4126371 4126880 4135316 4135752 4139504 4139940 4143951
  * 4147315 4147317 4147552 4335196 4778440 4940539 5010672 6475525 6544471 6627549
- * 6786276 7066203 7085757
+ * 6786276 7066203 7085757 8255086
  * @summary test Locales
  */
 /*
@@ -576,7 +576,7 @@
         // names, and other stuff like that.  This test just checks specific language
         // and country codes to make sure we have the correct names for them.
         String[] languageCodes = { "he", "id", "iu", "ug", "yi", "za" };
-        String[] languageNames = { "Hebrew", "Indonesian", "Inuktitut", "Uighur", "Yiddish",
+        String[] languageNames = {"Hebrew", "Indonesian", "Inuktitut", "Uyghur", "Yiddish",
                                    "Zhuang" };
 
         for (int i = 0; i < languageCodes.length; i++) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/imageio/plugins/png/PngLargeIHDRDimensionTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     8190332
+ * @summary Test verifies whether PNGImageReader throws IIOException
+ *          or not when IHDR width value is very high.
+ * @run     main PngLargeIHDRDimensionTest
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Base64;
+import javax.imageio.IIOException;
+import javax.imageio.ImageIO;
+
+public class PngLargeIHDRDimensionTest {
+
+    /*
+     * IHDR width is very large and when we try to create buffer to store
+     * image information of each row it overflows and we get
+     * NegativeArraySizeException without the fix for this bug.
+     */
+    private static String negativeArraySizeExceptionInput = "iVBORw0KGgoAAAANS"
+            + "UhEUg////0AAAABEAIAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAAB"
+            + "JRU5ErkJgggo=";
+
+    /*
+     * IHDR width is ((2 to the power of 31) - 2), which is the maximum VM
+     * limit to create an array we get OutOfMemoryError without the fix
+     * for this bug.
+     */
+    private static String outOfMemoryErrorInput = "iVBORw0KGgoAAAANSUhEUgAAAAF/"
+            + "///+CAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5"
+            + "ErkJgggo=";
+
+    private static InputStream input;
+    private static Boolean firstTestFailed = true, secondTestFailed = true;
+    public static void main(String[] args) throws java.io.IOException {
+        byte[] inputBytes = Base64.getDecoder().
+                decode(negativeArraySizeExceptionInput);
+        input = new ByteArrayInputStream(inputBytes);
+
+        try {
+            ImageIO.read(input);
+        } catch (IIOException e) {
+            firstTestFailed = false;
+        }
+
+        inputBytes = Base64.getDecoder().decode(outOfMemoryErrorInput);
+        input = new ByteArrayInputStream(inputBytes);
+
+        try {
+            ImageIO.read(input);
+        } catch (IIOException e) {
+            secondTestFailed = false;
+        }
+
+        if (firstTestFailed || secondTestFailed) {
+            throw new RuntimeException("Test doesn't throw required"
+                    + " IIOException");
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/security/infra/java/security/cert/CertPathValidator/certification/HaricaCA.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,320 @@
+/*
+ * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact 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 8256421
+ * @summary Interoperability tests with Harica CAs
+ * @build ValidatePathWithParams
+ * @run main/othervm -Djava.security.debug=certpath HaricaCA OCSP
+ * @run main/othervm -Djava.security.debug=certpath HaricaCA CRL
+ */
+
+/*
+ * Obtain test artifacts for Harica CA from:
+ *
+ * CA has no published test sites so we will need to communicate with CA for test.
+ */
+public class HaricaCA {
+
+    public static void main(String[] args) throws Exception {
+
+        ValidatePathWithParams pathValidator = new ValidatePathWithParams(null);
+        boolean ocspEnabled = false;
+
+        if (args.length >= 1 && "CRL".equalsIgnoreCase(args[0])) {
+            pathValidator.enableCRLCheck();
+        } else {
+            // OCSP check by default
+            pathValidator.enableOCSPCheck();
+            ocspEnabled = true;
+        }
+
+        new Harica_CA().runTest(pathValidator, ocspEnabled);
+        new Harica_ECC().runTest(pathValidator, ocspEnabled);
+    }
+}
+
+class Harica_CA {
+
+    // Owner: CN=Hellenic Academic and Research Institutions Code Signing CA R1,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Serial number: 1bc8b59e0cea0b7c
+    // Valid from: Fri Apr 08 00:37:41 PDT 2016 until: Sat Apr 06 00:37:41 PDT 2024
+    private static final String INT = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIHnjCCBYagAwIBAgIIG8i1ngzqC3wwDQYJKoZIhvcNAQELBQAwgaYxCzAJBgNV\n" +
+            "BAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFjYWRl\n" +
+            "bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAw\n" +
+            "PgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRp\n" +
+            "b25zIFJvb3RDQSAyMDE1MB4XDTE2MDQwODA3Mzc0MVoXDTI0MDQwNjA3Mzc0MVow\n" +
+            "ga0xCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxl\n" +
+            "bmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0\n" +
+            "aG9yaXR5MUcwRQYDVQQDEz5IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2gg\n" +
+            "SW5zdGl0dXRpb25zIENvZGUgU2lnbmluZyBDQSBSMTCCAiIwDQYJKoZIhvcNAQEB\n" +
+            "BQADggIPADCCAgoCggIBAJYQhJz8QjfP1wOc1sHxTKe9wy7d3oBScTslX5Yn1IE8\n" +
+            "j5SzsKilvbu9rp8bd8IKHnPrl1Vnjpvna/Vx/XKlXDxnIxgfLINfmbjJRoEbzj1t\n" +
+            "fxdTnZSN5c6vHYr5112/XCr2VQ7gIL+2jujXlJQYs/aUzAb9RR35dy4z2tQJQwtA\n" +
+            "gG/paNGgnOU2ROrcaEYfvG4YQWaHAwqjJ53ZY5HVD7NmLp5SZTA5Q3eHAYae99fq\n" +
+            "iEgMti3zMejzrAM1h+iVpLUxA7iMFh5nwCOvYJWVYqN3YOEmksxh7HOWlpe1PgDT\n" +
+            "5SezPCHmOilNizMSRsdW7fE8apYVq/O0yStFW32kS9RQzYiBsdgPvNzDGec7Jj8X\n" +
+            "SozhS6to+A6RdgfpHccHc2jhIRkFocA63OEde3Eo/NPf/WbFX2tpgDIv+HF/YZV3\n" +
+            "iaMeKeOKDIxa4c3t3qBsZNtFEGOQyDouVH4g2Y8gHhUCcR7gQrHEYy/9FbtUDviu\n" +
+            "abBVPFnNbEwT0uKS20aLgldkJ4/b3UzeTVzXVwLB8ruBfZX/e60YFaUJAZbbYRbE\n" +
+            "mD6KmDOCTfalpBRhXar6U1wf+GRp1wv01Vw88EJ6VEBxXAYrfQ28ER9IuLqVQRlN\n" +
+            "xpZCP71DRCvWljkXAKvWrs3JAw926n5K7sL+fv6mn+6iGBHrSEcyX8g8EZv6XuLP\n" +
+            "AgMBAAGjggHFMIIBwTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAT\n" +
+            "BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUDyz8Ez5xsy3SqelOr4FBCaaY\n" +
+            "3UgwRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2NybHYxLmhhcmljYS5nci9IYXJp\n" +
+            "Y2FSb290Q0EyMDE1L2NybHYxLmRlci5jcmwwHwYDVR0jBBgwFoAUcRVnyMjJvXVd\n" +
+            "ctA4GGqd83EkVAswbgYIKwYBBQUHAQEEYjBgMCEGCCsGAQUFBzABhhVodHRwOi8v\n" +
+            "b2NzcC5oYXJpY2EuZ3IwOwYIKwYBBQUHMAKGL2h0dHA6Ly93d3cuaGFyaWNhLmdy\n" +
+            "L2NlcnRzL0hhcmljYVJvb3RDQTIwMTUuY3J0MIGQBgNVHSAEgYgwgYUwgYIGBFUd\n" +
+            "IAAwejAyBggrBgEFBQcCARYmaHR0cDovL3d3dy5oYXJpY2EuZ3IvZG9jdW1lbnRz\n" +
+            "L0NQUy5waHAwRAYIKwYBBQUHAgIwOAw2VGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJq\n" +
+            "ZWN0IHRvIEdyZWVrIGxhd3MgYW5kIG91ciBDUFMuMA0GCSqGSIb3DQEBCwUAA4IC\n" +
+            "AQA2t84B3ImFaWsnaYoPxwYu9njKaDc/QsaxT4AKP8env/Zr+fjD5s0Bjd1gZijC\n" +
+            "9LRTzIovpldc/yADy7SVboIH0uNEiBC0kc0DaCq0ceCGIe6dw92Mu9DJ3UpMGAuF\n" +
+            "fLpyearmfX9qzi0KhPGhjTxSTD4vWw3E0nvDVMBG54Im0OUGeVzZ9SpvRRhRnPOk\n" +
+            "1eplEYRRDVTGYQJ84GdVC4H4U3TjlbO9gppeSnBoVHyCqDDpyd8HhTuY3P5VRWaf\n" +
+            "dvAkwrW2Vv53zIYpDtcwG7mf4UXKbfYGtOIg/xaqHV82J6MYZHW1RNIlSh7F+1S5\n" +
+            "XamkPCQZZI87CMt/OZH+RaO87Vr2V02wkYwEeAvjOwq9l7LtOJaOznKS+BlMi009\n" +
+            "ljgHWUQcA2wk25hOAS3YtvhI1l2UrRHSqmHd7Jah4clskIjURt3b2Ez9nuZh1dC8\n" +
+            "NfaoPCkpK3leLBezubtq48MRe5jkAgen5UXvxq9zOZSen4pYeBK72ugNyLjzOhY8\n" +
+            "GrSeE1voLnvyZIguM2hrI8nEjI4rSXL6lsqXyG/ODzDMMdKq4FrjoW3y9KnV/n8t\n" +
+            "BvKTAlDcXQTqfdTykDWnxwNTp6dU+MOom9LGy6ZNFbei7XuvjrREiXUEJ/I2dGSD\n" +
+            "3zeNek32BS2BBZNN8jeP4szLs85G5HWql59OyePZfARA6Q==\n" +
+            "-----END CERTIFICATE-----";
+
+    // Owner: OID.1.3.6.1.4.1.311.60.2.1.3=GR, OID.2.5.4.15=Private Organization,
+    // CN=Greek Universities Network (GUnet), SERIALNUMBER=VATGR-099028220,
+    // OU=Class A - Private Key created and stored in hardware CSP, O=Greek Universities Network, L=Athens, C=GR
+    // Issuer: CN=Hellenic Academic and Research Institutions Code Signing CA R1,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Serial number: 2c9a7af519251c645c1bed40b9d1aeca
+    // Valid from: Mon Sep 09 01:15:13 PDT 2019 until: Wed Sep 08 01:15:13 PDT 2021
+    private static final String VALID = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIGyzCCBLOgAwIBAgIQLJp69RklHGRcG+1AudGuyjANBgkqhkiG9w0BAQsFADCB\n" +
+            "rTELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVu\n" +
+            "aWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRo\n" +
+            "b3JpdHkxRzBFBgNVBAMTPkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJ\n" +
+            "bnN0aXR1dGlvbnMgQ29kZSBTaWduaW5nIENBIFIxMB4XDTE5MDkwOTA4MTUxM1oX\n" +
+            "DTIxMDkwODA4MTUxM1owggEBMQswCQYDVQQGEwJHUjEPMA0GA1UEBwwGQXRoZW5z\n" +
+            "MSMwIQYDVQQKDBpHcmVlayBVbml2ZXJzaXRpZXMgTmV0d29yazFBMD8GA1UECww4\n" +
+            "Q2xhc3MgQSAtIFByaXZhdGUgS2V5IGNyZWF0ZWQgYW5kIHN0b3JlZCBpbiBoYXJk\n" +
+            "d2FyZSBDU1AxGDAWBgNVBAUTD1ZBVEdSLTA5OTAyODIyMDErMCkGA1UEAwwiR3Jl\n" +
+            "ZWsgVW5pdmVyc2l0aWVzIE5ldHdvcmsgKEdVbmV0KTEdMBsGA1UEDwwUUHJpdmF0\n" +
+            "ZSBPcmdhbml6YXRpb24xEzARBgsrBgEEAYI3PAIBAxMCR1IwggEiMA0GCSqGSIb3\n" +
+            "DQEBAQUAA4IBDwAwggEKAoIBAQDdkvuJzgjD3Hr1RoDtPZPp5ZelMl6Xh5vnKVuG\n" +
+            "KX9gwHbDaXpLkp2bF2497R3olBaeYcEgappsWLPvLMEA75BSRopFQmhX3PAsjfAG\n" +
+            "JZGM3A53n4NAQscCmtD6echJi4P6RThRcpfqObfe0vqZUVzSWRC8fU1P4lt/KzJj\n" +
+            "DGSJtOP/SJfgp3M7hEp54fn+15DlYp+0e4aa5HF2HpGIy2ghPbRvkMJWbHmp3KZG\n" +
+            "NOXViQdr/ogpqRsbdP7kN78WLhwrLu+xRUmf9A845jxyNO7269jOQHztfPAcgvDw\n" +
+            "NbZouGtN3IIWoXWMLipNgzC9CYdqgLsLI9lXV9oQrXaICQ27AgMBAAGjggGOMIIB\n" +
+            "ijAfBgNVHSMEGDAWgBQPLPwTPnGzLdKp6U6vgUEJppjdSDB0BggrBgEFBQcBAQRo\n" +
+            "MGYwQQYIKwYBBQUHMAKGNWh0dHA6Ly9yZXBvLmhhcmljYS5nci9jZXJ0cy9IYXJp\n" +
+            "Y2FDb2RlU2lnbmluZ0NBUjEuY3J0MCEGCCsGAQUFBzABhhVodHRwOi8vb2NzcC5o\n" +
+            "YXJpY2EuZ3IwYAYDVR0gBFkwVzAHBgVngQwBAzAIBgYEAI96AQIwQgYMKwYBBAGB\n" +
+            "zxEBAQMDMDIwMAYIKwYBBQUHAgEWJGh0dHBzOi8vcmVwby5oYXJpY2EuZ3IvZG9j\n" +
+            "dW1lbnRzL0NQUzATBgNVHSUEDDAKBggrBgEFBQcDAzBLBgNVHR8ERDBCMECgPqA8\n" +
+            "hjpodHRwOi8vY3JsdjEuaGFyaWNhLmdyL0hhcmljYUNvZGVTaWduaW5nQ0FSMS9j\n" +
+            "cmx2MS5kZXIuY3JsMB0GA1UdDgQWBBR0K0c/UEGkfRtqAEwoONenOUa0WTAOBgNV\n" +
+            "HQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBAHXVdzMwKeZSWmXZu/MyoyH8\n" +
+            "yTHYi/yvaPpR88/Q/j5wxzuceECZJgH74xgePCIXx74IKTADUyIj7eWuTkzEnZF9\n" +
+            "yqJyG+tArrIH7zdnjC0OgbJVFeUUY45rS24u8n/+46LnXy4A+bRa0qX/QikHxMvj\n" +
+            "0I0/RTZpdQFjhnmhZyZzUWReFlAEG1fUz9TNwcCfGrv3z6YHCNAh/HWFtM7te6H7\n" +
+            "LNjoRw0fC5edqI16ca2VrOLObbg64zdk7Ll/fu3Ll5UcAthve/PTez6R1wm47ETT\n" +
+            "ItjinmQI3vRhIls/UwvF4ey5Linz80rnzIlrrMgn3G2gRpfJ55CxsXOZDGS9iy8C\n" +
+            "jU8EiKkjbdDH6mOdQO11+FlwhBwSxVbr004RDPJJqKHKtKTWx6mEbW+ZrMXaEUNZ\n" +
+            "mSPwDCUgDzrFfSspYJL0UW7zV+SbK9u5nf09m6qOpkZ5OE91IEpkotTWqMe/yOJu\n" +
+            "Yey5wvAmEqQM6fcQCTfV5JBtzU5LOsm5Uwg728DcHfal21dJWtY3fi7+CgDRutU3\n" +
+            "Ee8uZUmCd/KCSQgP8B/QTu7wLXHd4IQz2EP2tmN9Zrv/MsDjpSHgRrU6Hwi49bPQ\n" +
+            "R43rmXHC7e2GZpBdPsfG0VDnpzgCx5Kogi5nJwwUevbvC2CT11AAlaOmTQPflqQj\n" +
+            "w2LPatMDMTAga/l+CE8j\n" +
+            "-----END CERTIFICATE-----";
+
+    // Owner: CN=Greek Universities Network (GUnet), SERIALNUMBER=VATGR-099028220,
+    // OU=Class B - Private Key created and stored in software CSP, O=Greek Universities Network, L=Athens, C=GR
+    // Issuer: CN=Hellenic Academic and Research Institutions Code Signing CA R1,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Serial number: 29c4a7abf35bd0acb1638abbf22da1d3
+    // Valid from: Mon Feb 17 01:47:19 PST 2020 until: Mon Feb 15 16:00:00 PST 2021
+    private static final String REVOKED = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIGmDCCBICgAwIBAgIQKcSnq/Nb0KyxY4q78i2h0zANBgkqhkiG9w0BAQsFADCB\n" +
+            "rTELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVu\n" +
+            "aWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRo\n" +
+            "b3JpdHkxRzBFBgNVBAMTPkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJ\n" +
+            "bnN0aXR1dGlvbnMgQ29kZSBTaWduaW5nIENBIFIxMB4XDTIwMDIxNzA5NDcxOVoX\n" +
+            "DTIxMDIxNjAwMDAwMFowgc0xCzAJBgNVBAYTAkdSMQ8wDQYDVQQHDAZBdGhlbnMx\n" +
+            "IzAhBgNVBAoMGkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3b3JrMUEwPwYDVQQLDDhD\n" +
+            "bGFzcyBCIC0gUHJpdmF0ZSBLZXkgY3JlYXRlZCBhbmQgc3RvcmVkIGluIHNvZnR3\n" +
+            "YXJlIENTUDEYMBYGA1UEBRMPVkFUR1ItMDk5MDI4MjIwMSswKQYDVQQDDCJHcmVl\n" +
+            "ayBVbml2ZXJzaXRpZXMgTmV0d29yayAoR1VuZXQpMIIBIjANBgkqhkiG9w0BAQEF\n" +
+            "AAOCAQ8AMIIBCgKCAQEArSBfy0xwIHpFxFrAHiYpMOkILjOvlhRCBmfzrJFSILou\n" +
+            "8vc1wxZw/olBa38khtIybE0GJnzZqoFTsalAcLg0CzfqucDoWL+uVLURmEmYZExj\n" +
+            "ngYfjrpB7ypjWqxfBVqqLgxugY1XV3oaQRNWgFEn/mrQhv+0azySJdRSiW0BH4rP\n" +
+            "wXp9LHgzHc7oxVOHsOKApwRN7TRVKz0/EoPhyUzdk5xoRTQMRalwZ0/E24v+CyoF\n" +
+            "bPl/v+dlRK5n9It8yjCtqOMZ1z7l8sKmJ7q9iLvzAF58a8B5lPueC+opHPEy4VD0\n" +
+            "7xZHYgdHliDsVIcWDXAzfcfo7l9EUX17onEXKMWKDwIDAQABo4IBkDCCAYwwHwYD\n" +
+            "VR0jBBgwFoAUDyz8Ez5xsy3SqelOr4FBCaaY3UgwdAYIKwYBBQUHAQEEaDBmMEEG\n" +
+            "CCsGAQUFBzAChjVodHRwOi8vcmVwby5oYXJpY2EuZ3IvY2VydHMvSGFyaWNhQ29k\n" +
+            "ZVNpZ25pbmdDQVIxLmNydDAhBggrBgEFBQcwAYYVaHR0cDovL29jc3AuaGFyaWNh\n" +
+            "LmdyMGIGA1UdIARbMFkwCAYGZ4EMAQQBMAgGBgQAj3oBATBDBg0rBgEEAYHPEQEB\n" +
+            "AwEBMDIwMAYIKwYBBQUHAgEWJGh0dHBzOi8vcmVwby5oYXJpY2EuZ3IvZG9jdW1l\n" +
+            "bnRzL0NQUzATBgNVHSUEDDAKBggrBgEFBQcDAzBLBgNVHR8ERDBCMECgPqA8hjpo\n" +
+            "dHRwOi8vY3JsdjEuaGFyaWNhLmdyL0hhcmljYUNvZGVTaWduaW5nQ0FSMS9jcmx2\n" +
+            "MS5kZXIuY3JsMB0GA1UdDgQWBBTj6v8Qkmosm+VNGsd/prwylbsM7TAOBgNVHQ8B\n" +
+            "Af8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBADYBQvc68KwX28UFeE/nXcowBTSd\n" +
+            "z+tQexloeBa4Z5G0yRr9URPc95H1R4SJiGQxb/KKqX2LqZtowc5rOXFBchI3da24\n" +
+            "kn8pmoi4/U2o8iS+DSlAMsn4ZW2lyDd0jyNeRiuZXvkdpqxa9u/x0TyXJ6qUxSYM\n" +
+            "oUC/H7RI1rxA+NgQ+otLHVs4ye53qzO44mXJv5Qq4dQ+GEdD+dShrYs69WMC0mV0\n" +
+            "mVs//R1qp8G3tThAiJJF55kV8w1JH2+yv8RXAdQ2cRpN2W6wsnm2DxldHKM4Kel4\n" +
+            "ON0TXlARGjoGqfEjFyZYtvpjzIPGoj3MHgCdiVb+zQJavYZJfLymlnIXajVb80Hh\n" +
+            "9xSar/uZ0NwtZgX8EwOrBiDUuCjyvlYrcbpSN26Q4fuUfPdIJQXMQDLTFMQLQ/o4\n" +
+            "5dn9FLLaJF7CA8VFeyJYi9pWEiIIpmPzIibd2+CAEQ43Q87GAvLpC09Rf6yggRh5\n" +
+            "by/FAOOzfbEQMhvJfGcJrPeG8JdzG95N5ycAeeyb/iboYptRwsLWwurASmUEKn0y\n" +
+            "BHlQPhut0mqNJQsoxvW6yIipFAQPBxfRHeLG71UO1kRxCleDTMsb3Zzt8hv1G4+m\n" +
+            "Nsm3ZMOV8TMdlBxYO/xA9dqwAxMuPvShx6LdiiyQhdeEmIFvKZeTD22cIOVLDsrd\n" +
+            "D2GbhbvPInvh21Qz\n" +
+            "-----END CERTIFICATE-----";
+
+    public void runTest(ValidatePathWithParams pathValidator, boolean ocspEnabled) throws Exception {
+        // Validate valid
+        pathValidator.validate(new String[]{VALID, INT},
+                ValidatePathWithParams.Status.GOOD, null, System.out);
+
+        // Validate Revoked
+        pathValidator.validate(new String[]{REVOKED, INT},
+                ValidatePathWithParams.Status.REVOKED,
+                "Mon Feb 17 02:00:10 PST 2020", System.out);
+    }
+}
+
+class Harica_ECC {
+
+    // Owner: CN=HARICA Code Signing ECC SubCA R2,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Serial number: 1f6ea9c2f4d7f80ee6a046d8b822dd3f
+    // Valid from: Wed Mar 06 02:49:26 PST 2019 until: Thu Mar 02 02:49:26 PST 2034
+    private static final String INT = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIDxzCCA02gAwIBAgIQH26pwvTX+A7moEbYuCLdPzAKBggqhkjOPQQDAzCBqjEL\n" +
+            "MAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg\n" +
+            "QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3Jp\n" +
+            "dHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0\n" +
+            "aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE5MDMwNjEwNDkyNloXDTM0MDMw\n" +
+            "MjEwNDkyNlowgY8xCzAJBgNVBAYTAkdSMQ8wDQYDVQQHDAZBdGhlbnMxRDBCBgNV\n" +
+            "BAoMO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMg\n" +
+            "Q2VydC4gQXV0aG9yaXR5MSkwJwYDVQQDDCBIQVJJQ0EgQ29kZSBTaWduaW5nIEVD\n" +
+            "QyBTdWJDQSBSMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABKPWDfLT76KnCZ7dujms\n" +
+            "bFYFLTvCWTyk8l0JqdhvZ+Tk6dWYAViIX90fc8+3HPAdHvkofNWvI/PW0qlZoRn3\n" +
+            "De/Nrp+ZCWjg7UrUrmKH2z/N3A7lgZFqrwlWPxHSPSYVkqOCAU8wggFLMBIGA1Ud\n" +
+            "EwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUtCILgpkkAQ6cu+QO/b/7lyCTmSow\n" +
+            "cgYIKwYBBQUHAQEEZjBkMD8GCCsGAQUFBzAChjNodHRwOi8vcmVwby5oYXJpY2Eu\n" +
+            "Z3IvY2VydHMvSGFyaWNhRUNDUm9vdENBMjAxNS5jcnQwIQYIKwYBBQUHMAGGFWh0\n" +
+            "dHA6Ly9vY3NwLmhhcmljYS5ncjARBgNVHSAECjAIMAYGBFUdIAAwEwYDVR0lBAww\n" +
+            "CgYIKwYBBQUHAwMwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybHYxLmhhcmlj\n" +
+            "YS5nci9IYXJpY2FFQ0NSb290Q0EyMDE1L2NybHYxLmRlci5jcmwwHQYDVR0OBBYE\n" +
+            "FMdgA8SpJhybKTZTnW4Xu3NWRKZeMA4GA1UdDwEB/wQEAwIBhjAKBggqhkjOPQQD\n" +
+            "AwNoADBlAjAcJj7q9ujC+87/b81QowGo87VJhn9XWzRtpwjQFbIilqEfO3ot1d5F\n" +
+            "MWT1Xn2Qg3sCMQCoM+eV2KkQluHn2N6+GMImJqVObVUyZv0E+BvvszdJubo1cAM0\n" +
+            "SUImVT1t2wZpJKg=\n" +
+            "-----END CERTIFICATE-----";
+
+    // Owner: CN=Dimitrios Zacharopoulos, GIVENNAME=Dimitrios, SURNAME=Zacharopoulos,
+    // OU=Class B - Private Key created and stored in software CSP,
+    // O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
+    // Issuer: CN=HARICA Code Signing ECC SubCA R2, O=Hellenic Academic and Research Institutions Cert. Authority,
+    // L=Athens, C=GR
+    // Serial number: 11a187e3b5b0eabea4ba4987e76cd09d
+    // Valid from: Fri Jul 31 02:11:08 PDT 2020 until: Sun Jul 31 02:11:08 PDT 2022
+    private static final String VALID = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIENTCCA7ugAwIBAgIQEaGH47Ww6r6kukmH52zQnTAKBggqhkjOPQQDAzCBjzEL\n" +
+            "MAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczFEMEIGA1UECgw7SGVsbGVuaWMg\n" +
+            "QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3Jp\n" +
+            "dHkxKTAnBgNVBAMMIEhBUklDQSBDb2RlIFNpZ25pbmcgRUNDIFN1YkNBIFIyMB4X\n" +
+            "DTIwMDczMTA5MTEwOFoXDTIyMDczMTA5MTEwOFowgfUxCzAJBgNVBAYTAkdSMQ8w\n" +
+            "DQYDVQQHDAZBdGhlbnMxRDBCBgNVBAoMO0hlbGxlbmljIEFjYWRlbWljIGFuZCBS\n" +
+            "ZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUEwPwYDVQQLDDhD\n" +
+            "bGFzcyBCIC0gUHJpdmF0ZSBLZXkgY3JlYXRlZCBhbmQgc3RvcmVkIGluIHNvZnR3\n" +
+            "YXJlIENTUDEWMBQGA1UEBAwNWmFjaGFyb3BvdWxvczESMBAGA1UEKgwJRGltaXRy\n" +
+            "aW9zMSAwHgYDVQQDDBdEaW1pdHJpb3MgWmFjaGFyb3BvdWxvczBZMBMGByqGSM49\n" +
+            "AgEGCCqGSM49AwEHA0IABOzRSqoI9HoxXjWerBBw8Croi1bJlUzoFXGjdszJIThf\n" +
+            "UG3YOiR1whG7wY5H5v8v4IIB5pJanArJk4CzxBLKob6jggGPMIIBizAfBgNVHSME\n" +
+            "GDAWgBTHYAPEqSYcmyk2U51uF7tzVkSmXjB6BggrBgEFBQcBAQRuMGwwRwYIKwYB\n" +
+            "BQUHMAKGO2h0dHA6Ly9yZXBvLmhhcmljYS5nci9jZXJ0cy9IYXJpY2FFQ0NDb2Rl\n" +
+            "U2lnbmluZ1N1YkNBUjIuY3J0MCEGCCsGAQUFBzABhhVodHRwOi8vb2NzcC5oYXJp\n" +
+            "Y2EuZ3IwYQYDVR0gBFowWDAIBgZngQwBBAEwCAYGBACPegEBMEIGDCsGAQQBgc8R\n" +
+            "AQMCATAyMDAGCCsGAQUFBwIBFiRodHRwczovL3JlcG8uaGFyaWNhLmdyL2RvY3Vt\n" +
+            "ZW50cy9DUFMwEwYDVR0lBAwwCgYIKwYBBQUHAwMwRQYDVR0fBD4wPDA6oDigNoY0\n" +
+            "aHR0cDovL2NybC5oYXJpY2EuZ3IvSGFyaWNhRUNDQ29kZVNpZ25pbmdTdWJDQVIy\n" +
+            "LmNybDAdBgNVHQ4EFgQUpNjChUi9LGgwz7E18N1EwXooEFcwDgYDVR0PAQH/BAQD\n" +
+            "AgeAMAoGCCqGSM49BAMDA2gAMGUCMQCDvQIjqgssTRHqp+gu7l21XmAQ4EMqr4+B\n" +
+            "05iU/edLxxV+z5roTswxnPnr43+EbvkCMHq4aFW1u1+RvPBQJNRnYmdXCnj0lUw4\n" +
+            "Ug7JnsEYMffLakDudzgsNv5ByJf9SO84Lw==\n" +
+            "-----END CERTIFICATE-----";
+
+    // Owner: CN=Greek Universities Network (GUnet), SERIALNUMBER=VATGR-099028220,
+    // OU=Class B - Private Key created and stored in software CSP, O=Greek Universities Network, L=Athens, C=GR
+    // Issuer: CN=HARICA Code Signing ECC SubCA R2, O=Hellenic Academic and Research Institutions Cert. Authority,
+    // L=Athens, C=GR
+    // Serial number: 4b14719c7195c96de8a5663724454205
+    // Valid from: Mon Feb 17 01:48:32 PST 2020 until: Mon Feb 15 16:00:00 PST 2021
+    private static final String REVOKED = "-----BEGIN CERTIFICATE-----\n" +
+            "MIIEDjCCA5SgAwIBAgIQSxRxnHGVyW3opWY3JEVCBTAKBggqhkjOPQQDAzCBjzEL\n" +
+            "MAkGA1UEBhMCR1IxDzANBgNVBAcMBkF0aGVuczFEMEIGA1UECgw7SGVsbGVuaWMg\n" +
+            "QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3Jp\n" +
+            "dHkxKTAnBgNVBAMMIEhBUklDQSBDb2RlIFNpZ25pbmcgRUNDIFN1YkNBIFIyMB4X\n" +
+            "DTIwMDIxNzA5NDgzMloXDTIxMDIxNjAwMDAwMFowgc0xCzAJBgNVBAYTAkdSMQ8w\n" +
+            "DQYDVQQHDAZBdGhlbnMxIzAhBgNVBAoMGkdyZWVrIFVuaXZlcnNpdGllcyBOZXR3\n" +
+            "b3JrMUEwPwYDVQQLDDhDbGFzcyBCIC0gUHJpdmF0ZSBLZXkgY3JlYXRlZCBhbmQg\n" +
+            "c3RvcmVkIGluIHNvZnR3YXJlIENTUDEYMBYGA1UEBRMPVkFUR1ItMDk5MDI4MjIw\n" +
+            "MSswKQYDVQQDDCJHcmVlayBVbml2ZXJzaXRpZXMgTmV0d29yayAoR1VuZXQpMFkw\n" +
+            "EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECC+lD6hphUDLSGs/Vw4Tvj8RAuCQAyi+\n" +
+            "MUiXXXzGSp5e6ksBVlRlawluNR+BUtY93BRCjjNr3OuvSVALyrH7HKOCAZAwggGM\n" +
+            "MB8GA1UdIwQYMBaAFMdgA8SpJhybKTZTnW4Xu3NWRKZeMHoGCCsGAQUFBwEBBG4w\n" +
+            "bDBHBggrBgEFBQcwAoY7aHR0cDovL3JlcG8uaGFyaWNhLmdyL2NlcnRzL0hhcmlj\n" +
+            "YUVDQ0NvZGVTaWduaW5nU3ViQ0FSMi5jcnQwIQYIKwYBBQUHMAGGFWh0dHA6Ly9v\n" +
+            "Y3NwLmhhcmljYS5ncjBiBgNVHSAEWzBZMAgGBmeBDAEEATAIBgYEAI96AQEwQwYN\n" +
+            "KwYBBAGBzxEBAQMBATAyMDAGCCsGAQUFBwIBFiRodHRwczovL3JlcG8uaGFyaWNh\n" +
+            "LmdyL2RvY3VtZW50cy9DUFMwEwYDVR0lBAwwCgYIKwYBBQUHAwMwRQYDVR0fBD4w\n" +
+            "PDA6oDigNoY0aHR0cDovL2NybC5oYXJpY2EuZ3IvSGFyaWNhRUNDQ29kZVNpZ25p\n" +
+            "bmdTdWJDQVIyLmNybDAdBgNVHQ4EFgQUT4+WfQu125tLqla60vhK7ijBBWkwDgYD\n" +
+            "VR0PAQH/BAQDAgeAMAoGCCqGSM49BAMDA2gAMGUCMQDADGDAxKpUkyEKBLzpX+88\n" +
+            "ONLYDgFSie5W2ULWk02sDRO/k5xcSSjTf0FFa4+l6E8CME/b27e7NUGHPVYTLTWL\n" +
+            "5yPiboyNsT8QpV+hZiWh/Qqiw1E/bR2SPIGEwYUrOV61fA==\n" +
+            "-----END CERTIFICATE-----";
+
+    public void runTest(ValidatePathWithParams pathValidator, boolean ocspEnabled) throws Exception {
+        // Validate valid
+        pathValidator.validate(new String[]{VALID, INT},
+                ValidatePathWithParams.Status.GOOD, null, System.out);
+
+        // Validate Revoked
+        pathValidator.validate(new String[]{REVOKED, INT},
+                ValidatePathWithParams.Status.REVOKED,
+                "Mon Feb 17 02:00:57 PST 2020", System.out);
+    }
+}
--- a/test/sun/net/www/ftptest/FtpCommandHandler.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/sun/net/www/ftptest/FtpCommandHandler.java	Fri Apr 23 01:47:38 2021 +0100
@@ -458,6 +458,10 @@
             try {
                 str = in.readLine();
                 System.out.println("line: " + str);
+                if (str == null) {
+                    System.out.println("EOF read from input");
+                    break;
+                }
                 buf = new StringBuffer(str);
                 res = parseCmd(buf);
                 switch (res) {
--- a/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/security.policy	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/security.policy	Fri Apr 23 01:47:38 2021 +0100
@@ -9,8 +9,7 @@
 grant {
 
     // used by TestLibrary to determine test environment
-    permission java.util.PropertyPermission "test.classes", "read";
-    permission java.util.PropertyPermission "test.src", "read";
+    permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "java.home", "read";
 
--- a/test/sun/security/lib/cacerts/VerifyCACerts.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/sun/security/lib/cacerts/VerifyCACerts.java	Fri Apr 23 01:47:38 2021 +0100
@@ -27,7 +27,7 @@
  * @bug 8189131 8198240 8191844 8189949 8191031 8196141 8204923 8195774 8199779
  *      8209452 8209506 8210432 8195793 8216577 8222089 8222133 8222137 8222136
  *      8223499 8225392 8232019 8234245 8233223 8225068 8225069 8243321 8243320
- *      8225072 8258630 8259312
+ *      8225072 8258630 8259312 8243559
  * @summary Check root CA entries in cacerts file
  */
 import java.io.ByteArrayInputStream;
@@ -53,12 +53,12 @@
             + File.separator + "security" + File.separator + "cacerts";
 
     // The numbers of certs now.
-    private static final int COUNT = 97;
+    private static final int COUNT = 92;
 
     // SHA-256 of cacerts, can be generated with
     // shasum -a 256 cacerts | sed -e 's/../&:/g' | tr '[:lower:]' '[:upper:]' | cut -c1-95
     private static final String CHECKSUM
-            = "9F:6B:41:1D:05:AF:E3:C5:4F:E8:39:89:50:79:60:B1:F6:A4:02:40:0C:28:8D:73:78:08:E5:61:7C:17:EA:59";
+            = "02:AE:2C:37:34:B1:B1:3D:74:CB:99:8B:31:4F:C9:BB:23:51:BB:B3:90:59:47:72:C1:4A:36:DA:97:98:06:01";
 
     // map of cert alias to SHA-256 fingerprint
     @SuppressWarnings("serial")
@@ -133,16 +133,6 @@
                     "A4:31:0D:50:AF:18:A6:44:71:90:37:2A:86:AF:AF:8B:95:1F:FB:43:1D:83:7F:1E:56:88:B4:59:71:ED:15:57");
             put("thawteprimaryrootcag3 [jdk]",
                     "4B:03:F4:58:07:AD:70:F2:1B:FC:2C:AE:71:C9:FD:E4:60:4C:06:4C:F5:FF:B6:86:BA:E5:DB:AA:D7:FD:D3:4C");
-            put("thawtepremiumserverca [jdk]",
-                    "3F:9F:27:D5:83:20:4B:9E:09:C8:A3:D2:06:6C:4B:57:D3:A2:47:9C:36:93:65:08:80:50:56:98:10:5D:BC:E9");
-            put("verisigntsaca [jdk]",
-                    "CB:6B:05:D9:E8:E5:7C:D8:82:B1:0B:4D:B7:0D:E4:BB:1D:E4:2B:A4:8A:7B:D0:31:8B:63:5B:F6:E7:78:1A:9D");
-            put("verisignclass2g2ca [jdk]",
-                    "3A:43:E2:20:FE:7F:3E:A9:65:3D:1E:21:74:2E:AC:2B:75:C2:0F:D8:98:03:05:BC:50:2C:AF:8C:2D:9B:41:A1");
-            put("verisignclass3ca [jdk]",
-                    "A4:B6:B3:99:6F:C2:F3:06:B3:FD:86:81:BD:63:41:3D:8C:50:09:CC:4F:A3:29:C2:CC:F0:E2:FA:1B:14:03:05");
-            put("verisignclass3g2ca [jdk]",
-                    "83:CE:3C:12:29:68:8A:59:3D:48:5F:81:97:3C:0F:91:95:43:1E:DA:37:CC:5E:36:43:0E:79:C7:A8:88:63:8B");
             put("verisignuniversalrootca [jdk]",
                     "23:99:56:11:27:A5:71:25:DE:8C:EF:EA:61:0D:DF:2F:A0:78:B5:C8:06:7F:4E:82:82:90:BF:B8:60:E8:4B:3C");
             put("verisignclass3g3ca [jdk]",
@@ -273,10 +263,6 @@
             add("addtrustexternalca [jdk]");
             // Valid until: Sat May 30 10:44:50 GMT 2020
             add("addtrustqualifiedca [jdk]");
-            // Valid until: Fri Jan 01 15:59:59 PST 2021
-            add("verisigntsaca [jdk]");
-            // Valid until: Fri Jan 01 15:59:59 PST 2021
-            add("thawtepremiumserverca [jdk]");
             // Valid until: Wed Mar 17 02:51:37 PDT 2021
             add("luxtrustglobalrootca [jdk]");
             // Valid until: Wed Mar 17 11:33:33 PDT 2021
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/pkcs11/Cipher/EncryptionPadding.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2021, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact 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 8261355
+ * @library ..
+ * @run main/othervm EncryptionPadding
+ */
+
+import java.nio.ByteBuffer;
+import java.security.Key;
+import java.security.Provider;
+import java.util.Arrays;
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+
+public class EncryptionPadding extends PKCS11Test {
+
+    private static String transformation = "AES/ECB/PKCS5Padding";
+    private static Key key = new SecretKeySpec(new byte[16], "AES");
+
+    public static void main(String[] args) throws Exception {
+        main(new EncryptionPadding(), args);
+    }
+
+    @Override
+    public void main(Provider p) throws Exception {
+        testWithInputSize(p, 1);
+        testWithInputSize(p, 15);
+        testWithInputSize(p, 16);
+        testWithInputSize(p, 17);
+        System.out.println("TEST PASS - OK");
+    }
+
+    private static void testWithInputSize(Provider p, int inputSize)
+            throws Exception {
+        testWithInputSize(p, inputSize, false);
+        testWithInputSize(p, inputSize, true);
+    }
+
+    private static void testWithInputSize(Provider p, int inputSize,
+            boolean isByteBuffer) throws Exception {
+        byte[] plainText = new byte[inputSize];
+        Arrays.fill(plainText, (byte)(inputSize & 0xFF));
+        ByteBuffer cipherText =
+                ByteBuffer.allocate(((inputSize / 16 ) + 1) * 16);
+        byte[] tmp;
+
+        Cipher sunPKCS11cipher = Cipher.getInstance(transformation, p);
+        sunPKCS11cipher.init(Cipher.ENCRYPT_MODE, key);
+        for (int i = 0; i < ((inputSize - 1) / 16) + 1; i++) {
+            int updateLength = Math.min(inputSize - (16 * i), 16);
+            if (!isByteBuffer) {
+                tmp = sunPKCS11cipher.update(plainText, i * 16,
+                        updateLength);
+                if (tmp != null) {
+                    cipherText.put(tmp);
+                }
+            } else {
+                ByteBuffer bb = ByteBuffer.allocate(updateLength);
+                bb.put(plainText, i * 16, updateLength);
+                bb.flip();
+                sunPKCS11cipher.update(bb, cipherText);
+            }
+        }
+        if (!isByteBuffer) {
+            tmp = sunPKCS11cipher.doFinal();
+            if (tmp != null) {
+                cipherText.put(tmp);
+            }
+        } else {
+            sunPKCS11cipher.doFinal(ByteBuffer.allocate(0), cipherText);
+        }
+
+        Cipher sunJCECipher = Cipher.getInstance(transformation, "SunJCE");
+        sunJCECipher.init(Cipher.DECRYPT_MODE, key);
+        byte[] sunJCEPlain = sunJCECipher.doFinal(cipherText.array());
+
+        if (!Arrays.equals(plainText, sunJCEPlain)) {
+            throw new Exception("Cross-provider cipher test failed.");
+        }
+    }
+}
--- a/test/sun/text/resources/LocaleData	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/sun/text/resources/LocaleData	Fri Apr 23 01:47:38 2021 +0100
@@ -2399,7 +2399,7 @@
 FormatData/uk_UA/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4
 
 # bug #4122468 # Use common country names
-LocaleNames//CI=C\u00F4te d'Ivoire
+LocaleNames//CI=C\u00F4te d\u2019Ivoire
 LocaleNames//LY=Libya
 LocaleNames//RU=Russia
 LocaleNames//VN=Vietnam
@@ -2470,7 +2470,7 @@
 LocaleNames//fo=Faroese
 LocaleNames//iu=Inuktitut
 LocaleNames//sg=Sango
-LocaleNames//si=Sinhalese
+LocaleNames//si=Sinhala
 
 #bug 4331446 Localized country and language names for major locales (excerpt only)
 LocaleNames/es/SV=El Salvador
@@ -5471,7 +5471,7 @@
 # JE, GG, IM (6544471)
 LocaleNames//JE=Jersey
 LocaleNames//GG=Guernsey
-LocaleNames//IM=Isle Of Man
+LocaleNames//IM=Isle of Man
 
 # bugs 6497154
 CalendarData/sk/firstDayOfWeek=2
@@ -5550,11 +5550,11 @@
 # JE, GG, IM (6544471)
 LocaleNames//JE=Jersey
 LocaleNames//GG=Guernsey
-LocaleNames//IM=Isle Of Man
+LocaleNames//IM=Isle of Man
 
 # BL, MF (6627549)
-LocaleNames//BL=Saint Barth\u00e9lemy
-LocaleNames//MF=Saint Martin
+LocaleNames//BL=St. Barth\u00e9lemy
+LocaleNames//MF=St. Martin
 
 # bug 6609737
 FormatData/de/TimePatterns/0=HH:mm' Uhr 'z
@@ -8324,3 +8324,114 @@
 TimeZoneNames/en/Turkey/2=TRT
 TimeZoneNames/en/Turkey/3=Turkey Summer Time
 TimeZoneNames/en/Turkey/4=TRST
+
+# bug 8255086
+LocaleNames//bn=Bangla
+LocaleNames//fy=Western Frisian
+LocaleNames//gl=Galician
+LocaleNames//ht=Haitian Creole
+LocaleNames//kj=Kuanyama
+LocaleNames//kl=Kalaallisut
+LocaleNames//ky=Kyrgyz
+LocaleNames//nb=Norwegian Bokm\u00E5l
+LocaleNames//or=Odia
+LocaleNames//os=Ossetic
+LocaleNames//pa=Punjabi
+LocaleNames//ps=Pashto
+LocaleNames//rm=Romansh
+LocaleNames//si=Sinhala
+LocaleNames//to=Tongan
+LocaleNames//ug=Uyghur
+LocaleNames//vo=Volap\u00FCk
+LocaleNames//ang=Old English
+LocaleNames//arc=Aramaic
+LocaleNames//arn=Mapuche
+LocaleNames//bas=Basaa
+LocaleNames//car=Carib
+LocaleNames//chn=Chinook Jargon
+LocaleNames//crh=Crimean Turkish
+LocaleNames//den=Slave
+LocaleNames//dum=Middle Dutch
+LocaleNames//egy=Ancient Egyptian
+LocaleNames//enm=Middle English
+LocaleNames//frm=Middle French
+LocaleNames//fro=Old French
+LocaleNames//gmh=Middle High German
+LocaleNames//goh=Old High German
+LocaleNames//grc=Ancient Greek
+LocaleNames//gwi=Gwich\u02BCin
+LocaleNames//luo=Luo
+LocaleNames//lus=Mizo
+LocaleNames//mga=Middle Irish
+LocaleNames//mul=Multiple languages
+LocaleNames//mus=Muscogee
+LocaleNames//new=Newari
+LocaleNames//nob=Bokm\u00E5l, Norwegian
+LocaleNames//non=Old Norse
+LocaleNames//nqo=N\u2019Ko
+LocaleNames//nso=Northern Sotho
+LocaleNames//ota=Ottoman Turkish
+LocaleNames//peo=Old Persian
+LocaleNames//pro=Old Proven\u00E7al
+LocaleNames//sah=Sakha
+LocaleNames//sga=Old Irish
+LocaleNames//sog=Sogdien
+LocaleNames//tog=Nyasa Tonga
+LocaleNames//und=Unknown language
+LocaleNames//vol=Volap\u00FCk
+LocaleNames//wal=Wolaytta
+LocaleNames//Beng=Bangla
+LocaleNames//Geok=Georgian Khutsuri
+LocaleNames//Hans=Simplified
+LocaleNames//Hant=Traditional
+LocaleNames//Hrkt=Japanese syllabaries
+LocaleNames//Lana=Lanna
+LocaleNames//Lisu=Fraser
+LocaleNames//Mand=Mandaean
+LocaleNames//Nkgb=Naxi Geba
+LocaleNames//Orya=Odia
+LocaleNames//Plrd=Pollard Phonetic
+LocaleNames//Sind=Khudawadi
+LocaleNames//Wara=Varang Kshiti
+LocaleNames//Zinh=Inherited
+LocaleNames//Zyyy=Common
+LocaleNames//Zzzz=Unknown Script
+LocaleNames//AG=Antigua & Barbuda
+LocaleNames//AX=\u00C5land Islands
+LocaleNames//BA=Bosnia & Herzegovina
+LocaleNames//BL=St. Barth\u00E9lemy
+LocaleNames//BQ=Caribbean Netherlands
+LocaleNames//CC=Cocos (Keeling) Islands
+LocaleNames//CD=Congo - Kinshasa
+LocaleNames//CG=Congo - Brazzaville
+LocaleNames//CI=C\u00F4te d\u2019Ivoire
+LocaleNames//CW=Cura\u00E7ao
+LocaleNames//CZ=Czechia
+LocaleNames//GS=South Georgia & South Sandwich Islands
+LocaleNames//HK=Hong Kong SAR China
+LocaleNames//HM=Heard & McDonald Islands
+LocaleNames//IM=Isle of Man
+LocaleNames//KN=St. Kitts & Nevis
+LocaleNames//LC=St. Lucia
+LocaleNames//MF=St. Martin
+LocaleNames//MK=North Macedonia
+LocaleNames//MM=Myanmar (Burma)
+LocaleNames//MO=Macao SAR China
+LocaleNames//PM=St. Pierre & Miquelon
+LocaleNames//PN=Pitcairn Islands
+LocaleNames//PS=Palestinian Territories
+LocaleNames//RE=R\u00E9union
+LocaleNames//SH=St. Helena
+LocaleNames//SJ=Svalbard & Jan Mayen
+LocaleNames//ST=S\u00E3o Tom\u00E9 & Pr\u00EDncipe
+LocaleNames//SX=Sint Maarten
+LocaleNames//SZ=Eswatini
+LocaleNames//TC=Turks & Caicos Islands
+LocaleNames//TT=Trinidad & Tobago
+LocaleNames//UM=U.S. Outlying Islands
+LocaleNames//VA=Vatican City
+LocaleNames//VC=St. Vincent & Grenadines
+LocaleNames//WF=Wallis & Futuna
+LocaleNames//035=Southeast Asia
+LocaleNames//053=Australasia
+LocaleNames//419=Latin America
--- a/test/sun/text/resources/LocaleDataTest.java	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/sun/text/resources/LocaleDataTest.java	Fri Apr 23 01:47:38 2021 +0100
@@ -38,7 +38,7 @@
  *      7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 7090826
  *      8017142 8037343 8055222 8042126 8074791 8075173 8080774 8129361 8145952
  *      8164784 8187946 8195478 8193552 8202026 8204269 8208746 8209775 8234228
- *      8250665
+ *      8250665 8255086
  * @summary Verify locale data
  *
  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/util/calendar/zi/Beyond2037.java	Fri Apr 23 01:47:38 2021 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact 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 8073446 8262110
+ * @summary Tests DST related beyond the year 2037
+ * @run testng Beyond2037
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.TimeZone;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
+@Test
+public class Beyond2037 {
+
+    @DataProvider
+    Object[][] dstTransition() {
+        return new Object[][] {
+            {"2037/03/08 01:59:59:999", "2037/03/08 01:59:59:999"},
+            {"2037/03/08 02:00:00:000", "2037/03/08 03:00:00:000"},
+            {"2038/03/14 01:59:59:999", "2038/03/14 01:59:59:999"},
+            {"2038/03/14 02:00:00:000", "2038/03/14 03:00:00:000"},
+            {"2099/03/08 01:59:59:999", "2099/03/08 01:59:59:999"},
+            {"2099/03/08 02:00:00:000", "2099/03/08 03:00:00:000"},
+            {"2100/03/14 01:59:59:999", "2100/03/14 01:59:59:999"},
+            {"2100/03/14 02:00:00:000", "2100/03/14 03:00:00:000"},
+            {"8000/03/12 01:59:59:999", "8000/03/12 01:59:59:999"},
+            {"8000/03/12 02:00:00:000", "8000/03/12 03:00:00:000"},
+        };
+    }
+
+    @Test(dataProvider="dstTransition")
+    public void testDstTransition(String source, String expected) throws Exception {
+        TimeZone timeZone = TimeZone.getTimeZone("America/New_York");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS" );
+        sdf.setTimeZone(timeZone);
+        assertEquals(sdf.format(sdf.parse(source)), expected);
+    }
+
+    @Test
+    public void testGetOffset() throws Exception {
+        TimeZone timeZone = TimeZone.getTimeZone("PST8PDT");
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        df.setTimeZone(timeZone);
+        long tMilli = df.parse("7681-03-09 03:20:49").getTime();
+        assertEquals(timeZone.getOffset(tMilli), -25200000);
+    }
+}
--- a/test/tools/launcher/MultipleJRE.sh	Tue Apr 20 19:19:09 2021 +0100
+++ b/test/tools/launcher/MultipleJRE.sh	Fri Apr 23 01:47:38 2021 +0100
@@ -308,7 +308,7 @@
 # Main test sequence starts here
 #
 RELEASE=`$JAVA -version 2>&1 | head -n 1 | cut -d ' ' -f 3 | \
-  sed -e "s/\"//g"`
+  sed -e "s/\"//g" | sed -e "s/\r//g"`
 BASE_RELEASE=`echo $RELEASE | sed -e "s/-.*//g"`
 
 #