diff --git a/.github/actions/config/action.yml b/.github/actions/config/action.yml
new file mode 100644
index 00000000000..5f648ffc022
--- /dev/null
+++ b/.github/actions/config/action.yml
@@ -0,0 +1,46 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Config'
+description: 'Read JDK Configuration Variables'
+inputs:
+ var:
+ description: 'The name of the variable to read'
+ required: true
+outputs:
+ value:
+ description: 'The value of the configuration variable'
+ value: ${{ steps.read-config.outputs.value }}
+
+runs:
+ using: composite
+ steps:
+ - name: 'Read configuration variable from repo'
+ id: read-config
+ run: |
+ # Extract value from configuration file
+ value="$(grep -h ${{ inputs.var }}= make/conf/github-actions.conf | cut -d '=' -f 2-)"
+ echo "value=$value" >> $GITHUB_OUTPUT
+ shell: bash
diff --git a/.github/actions/do-build/action.yml b/.github/actions/do-build/action.yml
new file mode 100644
index 00000000000..3deb7f4b8f8
--- /dev/null
+++ b/.github/actions/do-build/action.yml
@@ -0,0 +1,80 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Do build'
+description: 'Build the JDK using make'
+inputs:
+ make-target:
+ description: 'Make target(s)'
+ required: true
+ platform:
+ description: 'Platform name'
+ required: true
+ debug-suffix:
+ description: 'File name suffix denoting debug level, possibly empty'
+ required: false
+
+runs:
+ using: composite
+ steps:
+ - name: 'Build'
+ id: build
+ run: >
+ make LOG=info ${{ inputs.make-target }}
+ || bash ./.github/scripts/gen-build-failure-report.sh "$GITHUB_STEP_SUMMARY"
+ shell: bash
+
+ - name: 'Check for failure'
+ id: check
+ run: |
+ # Check for failure marker file
+ build_dir="$(ls -d build/*)"
+ if [[ -e $build_dir/build-failure ]]; then
+ # Collect relevant log files
+ mkdir failure-logs
+ cp \
+ $build_dir/spec.gmk \
+ $build_dir/build.log \
+ $build_dir/configure.log \
+ $build_dir/make-support/failure-summary.log \
+ $build_dir/make-support/failure-logs/* \
+ failure-logs/ 2> /dev/null || true
+ echo 'failure=true' >> $GITHUB_OUTPUT
+ fi
+ shell: bash
+
+ - name: 'Upload build logs'
+ uses: actions/upload-artifact@v3
+ with:
+ name: failure-logs-${{ inputs.platform }}${{ inputs.debug-suffix }}
+ path: failure-logs
+ if: steps.check.outputs.failure == 'true'
+
+ # This is the best way I found to abort the job with an error message
+ - name: 'Notify about build failures'
+ uses: actions/github-script@v6
+ with:
+ script: core.setFailed('Build failed. See summary for details.')
+ if: steps.check.outputs.failure == 'true'
diff --git a/.github/actions/get-bootjdk/action.yml b/.github/actions/get-bootjdk/action.yml
new file mode 100644
index 00000000000..19c3a0128f4
--- /dev/null
+++ b/.github/actions/get-bootjdk/action.yml
@@ -0,0 +1,109 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Get BootJDK'
+description: 'Download the BootJDK from cache or source location'
+inputs:
+ platform:
+ description: 'Platform'
+ required: true
+outputs:
+ path:
+ description: 'Path to the installed BootJDK'
+ value: ${{ steps.path-name.outputs.path }}
+
+runs:
+ using: composite
+ steps:
+ - name: 'Determine platform prefix'
+ id: platform-prefix
+ run: |
+ # Convert platform name to upper case
+ platform_prefix="$(echo ${{ inputs.platform }} | tr [a-z-] [A-Z_])"
+ echo "value=$platform_prefix" >> $GITHUB_OUTPUT
+ shell: bash
+
+ - name: 'Get URL configuration'
+ id: url
+ uses: ./.github/actions/config
+ with:
+ var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_URL
+
+ - name: 'Get SHA256 configuration'
+ id: sha256
+ uses: ./.github/actions/config
+ with:
+ var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_SHA256
+
+ - name: 'Get file extension configuration'
+ id: ext
+ uses: ./.github/actions/config
+ with:
+ var: ${{ steps.platform-prefix.outputs.value}}_BOOT_JDK_EXT
+
+ - name: 'Check cache for BootJDK'
+ id: get-cached-bootjdk
+ uses: actions/cache@v3
+ with:
+ path: bootjdk/jdk
+ key: boot-jdk-${{ inputs.platform }}-${{ steps.sha256.outputs.value }}
+
+ # macOS is missing sha256sum
+ - name: 'Install sha256sum'
+ run: |
+ # Run Homebrew installation
+ brew install coreutils
+ shell: bash
+ if: steps.get-cached-bootjdk.outputs.cache-hit != 'true' && runner.os == 'macOS'
+
+ - name: 'Download BootJDK'
+ run: |
+ # Download BootJDK and verify checksum
+ mkdir -p bootjdk/jdk
+ mkdir -p bootjdk/unpacked
+ wget --progress=dot:mega -O bootjdk/jdk.${{ steps.ext.outputs.value }} '${{ steps.url.outputs.value }}'
+ echo '${{ steps.sha256.outputs.value }} bootjdk/jdk.${{ steps.ext.outputs.value }}' | sha256sum -c >/dev/null -
+ shell: bash
+ if: steps.get-cached-bootjdk.outputs.cache-hit != 'true'
+
+ - name: 'Unpack BootJDK'
+ run: |
+ # Unpack the BootJDK and move files to a common location
+ if [[ '${{ steps.ext.outputs.value }}' == 'tar.gz' ]]; then
+ tar -xf bootjdk/jdk.${{ steps.ext.outputs.value }} -C bootjdk/unpacked
+ else
+ unzip -q bootjdk/jdk.${{ steps.ext.outputs.value }} -d bootjdk/unpacked
+ fi
+ jdk_root="$(dirname $(find bootjdk/unpacked -name bin -type d))"
+ mv "$jdk_root"/* bootjdk/jdk/
+ shell: bash
+ if: steps.get-cached-bootjdk.outputs.cache-hit != 'true'
+
+ - name: 'Export path to where BootJDK is installed'
+ id: path-name
+ run: |
+ # Export the path
+ echo 'path=bootjdk/jdk' >> $GITHUB_OUTPUT
+ shell: bash
diff --git a/.github/actions/get-bundles/action.yml b/.github/actions/get-bundles/action.yml
new file mode 100644
index 00000000000..956e1520cfb
--- /dev/null
+++ b/.github/actions/get-bundles/action.yml
@@ -0,0 +1,109 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Get bundles'
+description: 'Download resulting JDK bundles'
+inputs:
+ platform:
+ description: 'Platform name'
+ required: true
+ debug-suffix:
+ description: 'File name suffix denoting debug level, possibly empty'
+ required: false
+outputs:
+ jdk-path:
+ description: 'Path to the installed JDK bundle'
+ value: ${{ steps.path-name.outputs.jdk }}
+ symbols-path:
+ description: 'Path to the installed symbols bundle'
+ value: ${{ steps.path-name.outputs.symbols }}
+ tests-path:
+ description: 'Path to the installed tests bundle'
+ value: ${{ steps.path-name.outputs.tests }}
+
+runs:
+ using: composite
+ steps:
+ - name: 'Download bundles artifact'
+ id: download-bundles
+ uses: actions/download-artifact@v3
+ with:
+ name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
+ path: bundles
+ continue-on-error: true
+
+ - name: 'Download bundles artifact (retry)'
+ uses: actions/download-artifact@v3
+ with:
+ name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
+ path: bundles
+ if: steps.download-bundles.outcome == 'failure'
+
+ - name: 'Unpack bundles'
+ run: |
+ if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.zip ]]; then
+ echo 'Unpacking jdk bundle...'
+ mkdir -p bundles/jdk
+ unzip -q bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.zip -d bundles/jdk
+ fi
+
+ if [[ -e bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz ]]; then
+ echo 'Unpacking jdk bundle...'
+ mkdir -p bundles/jdk
+ tar -xf bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz -C bundles/jdk
+ fi
+
+ if [[ -e bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz ]]; then
+ echo 'Unpacking symbols bundle...'
+ mkdir -p bundles/symbols
+ tar -xf bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz -C bundles/symbols
+ fi
+
+ if [[ -e bundles/tests-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz ]]; then
+ echo 'Unpacking tests bundle...'
+ mkdir -p bundles/tests
+ tar -xf bundles/tests-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz -C bundles/tests
+ fi
+ shell: bash
+
+ - name: 'Export paths to where bundles are installed'
+ id: path-name
+ run: |
+ # Export the paths
+
+ jdk_dir="$GITHUB_WORKSPACE/$(dirname $(find bundles/jdk -name bin -type d))"
+ symbols_dir="$GITHUB_WORKSPACE/$(dirname $(find bundles/symbols -name bin -type d))"
+ tests_dir="$GITHUB_WORKSPACE/bundles/tests"
+
+ if [[ '${{ runner.os }}' == 'Windows' ]]; then
+ jdk_dir="$(cygpath $jdk_dir)"
+ symbols_dir="$(cygpath $symbols_dir)"
+ tests_dir="$(cygpath $tests_dir)"
+ fi
+
+ echo "jdk=$jdk_dir" >> $GITHUB_OUTPUT
+ echo "symbols=$symbols_dir" >> $GITHUB_OUTPUT
+ echo "tests=$tests_dir" >> $GITHUB_OUTPUT
+ shell: bash
diff --git a/.github/actions/get-gtest/action.yml b/.github/actions/get-gtest/action.yml
new file mode 100644
index 00000000000..1df1052285d
--- /dev/null
+++ b/.github/actions/get-gtest/action.yml
@@ -0,0 +1,54 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Get GTest'
+description: 'Download GTest source'
+outputs:
+ path:
+ description: 'Path to the installed GTest'
+ value: ${{ steps.path-name.outputs.path }}
+
+runs:
+ using: composite
+ steps:
+ - name: 'Get GTest version configuration'
+ id: version
+ uses: ./.github/actions/config
+ with:
+ var: GTEST_VERSION
+
+ - name: 'Checkout GTest source'
+ uses: actions/checkout@v4
+ with:
+ repository: google/googletest
+ ref: 'release-${{ steps.version.outputs.value }}'
+ path: gtest
+
+ - name: 'Export path to where GTest is installed'
+ id: path-name
+ run: |
+ # Export the path
+ echo 'path=gtest' >> $GITHUB_OUTPUT
+ shell: bash
diff --git a/.github/actions/get-jtreg/action.yml b/.github/actions/get-jtreg/action.yml
new file mode 100644
index 00000000000..7c49b1054ec
--- /dev/null
+++ b/.github/actions/get-jtreg/action.yml
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Get JTReg'
+description: 'Download JTReg from cache or source location'
+outputs:
+ path:
+ description: 'Path to the installed JTReg'
+ value: ${{ steps.path-name.outputs.path }}
+
+runs:
+ using: composite
+ steps:
+ - name: 'Get JTReg version configuration'
+ id: version
+ uses: ./.github/actions/config
+ with:
+ var: JTREG_VERSION
+
+ - name: 'Check cache for JTReg'
+ id: get-cached-jtreg
+ uses: actions/cache@v3
+ with:
+ path: jtreg/installed
+ key: jtreg-${{ steps.version.outputs.value }}
+
+ - name: 'Checkout the JTReg source'
+ uses: actions/checkout@v3
+ with:
+ repository: openjdk/jtreg
+ ref: jtreg-${{ steps.version.outputs.value }}
+ path: jtreg/src
+ if: steps.get-cached-jtreg.outputs.cache-hit != 'true'
+
+ - name: 'Build JTReg'
+ run: |
+ # Build JTReg and move files to the proper locations
+ bash make/build.sh --jdk "$JAVA_HOME_11_X64"
+ mkdir ../installed
+ mv build/images/jtreg/* ../installed
+ working-directory: jtreg/src
+ shell: bash
+ if: steps.get-cached-jtreg.outputs.cache-hit != 'true'
+
+ - name: 'Export path to where JTReg is installed'
+ id: path-name
+ run: |
+ # Export the path
+ echo 'path=jtreg/installed' >> $GITHUB_OUTPUT
+ shell: bash
diff --git a/.github/actions/get-msys2/action.yml b/.github/actions/get-msys2/action.yml
new file mode 100644
index 00000000000..3e6c3417a31
--- /dev/null
+++ b/.github/actions/get-msys2/action.yml
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Get MSYS2'
+description: 'Download MSYS2 and prepare a Windows host'
+
+runs:
+ using: composite
+ steps:
+ - name: 'Install MSYS2'
+ uses: msys2/setup-msys2@v2
+ with:
+ install: 'autoconf tar unzip zip make'
+ path-type: minimal
+ location: msys2
+
+ # We can't run bash until this is completed, so stick with pwsh
+ - name: 'Set MSYS2 path'
+ run: |
+ # Prepend msys2/msys64/usr/bin to the PATH
+ echo "$env:GITHUB_WORKSPACE/msys2/msys64/usr/bin" >> $env:GITHUB_PATH
+ shell: pwsh
diff --git a/.github/actions/upload-bundles/action.yml b/.github/actions/upload-bundles/action.yml
new file mode 100644
index 00000000000..88f7f6e8107
--- /dev/null
+++ b/.github/actions/upload-bundles/action.yml
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Upload bundles'
+description: 'Upload resulting JDK bundles'
+inputs:
+ platform:
+ description: 'Platform name'
+ required: true
+ debug-suffix:
+ description: 'File name suffix denoting debug level, possibly empty'
+ required: false
+
+runs:
+ using: composite
+ steps:
+
+ - name: 'Determine bundle names'
+ id: bundles
+ run: |
+ # Rename bundles to consistent names
+ jdk_bundle_zip="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.zip 2> /dev/null || true)"
+ jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
+ symbols_bundle="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}-symbols.tar.gz 2> /dev/null || true)"
+ tests_bundle="$(ls build/*/bundles/jdk-*_bin-tests${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
+
+ mkdir bundles
+
+ if [[ "$jdk_bundle_zip" != "" ]]; then
+ mv "$jdk_bundle_zip" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.zip"
+ fi
+ if [[ "$jdk_bundle_tar_gz" != "" ]]; then
+ mv "$jdk_bundle_tar_gz" "bundles/jdk-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
+ fi
+ if [[ "$symbols_bundle" != "" ]]; then
+ mv "$symbols_bundle" "bundles/symbols-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
+ fi
+ if [[ "$tests_bundle" != "" ]]; then
+ mv "$tests_bundle" "bundles/tests-${{ inputs.platform }}${{ inputs.debug-suffix }}.tar.gz"
+ fi
+
+ if [[ "$jdk_bundle_zip$jdk_bundle_tar_gz$symbols_bundle$tests_bundle" != "" ]]; then
+ echo 'bundles-found=true' >> $GITHUB_OUTPUT
+ else
+ echo 'bundles-found=false' >> $GITHUB_OUTPUT
+ fi
+ shell: bash
+
+ - name: 'Upload bundles artifact'
+ uses: actions/upload-artifact@v3
+ with:
+ name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
+ path: bundles
+ retention-days: 1
+ if: steps.bundles.outputs.bundles-found == 'true'
diff --git a/.github/scripts/gen-build-failure-report.sh b/.github/scripts/gen-build-failure-report.sh
new file mode 100644
index 00000000000..fd3215fc7fe
--- /dev/null
+++ b/.github/scripts/gen-build-failure-report.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+GITHUB_STEP_SUMMARY="$1"
+BUILD_DIR="$(ls -d build/*)"
+
+# Send signal to the do-build action that we failed
+touch "$BUILD_DIR/build-failure"
+
+(
+ echo '### :boom: Build failure summary'
+ echo ''
+ echo 'The build failed. Here follows the failure summary from the build.'
+ echo 'View build failure summary
'
+ echo ''
+ echo '```'
+ if [[ -f "$BUILD_DIR/make-support/failure-summary.log" ]]; then
+ cat "$BUILD_DIR/make-support/failure-summary.log"
+ else
+ echo "Failure summary ($BUILD_DIR/make-support/failure-summary.log) not found"
+ fi
+ echo '```'
+ echo ' '
+ echo ''
+
+ echo ''
+ echo ':arrow_right: To see the entire test log, click the job in the list to the left. To download logs, see the `failure-logs` [artifact above](#artifacts).'
+) >> $GITHUB_STEP_SUMMARY
diff --git a/.github/scripts/gen-test-results.sh b/.github/scripts/gen-test-results.sh
new file mode 100644
index 00000000000..73edb8b3d11
--- /dev/null
+++ b/.github/scripts/gen-test-results.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+GITHUB_STEP_SUMMARY="$1"
+
+test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt)
+results_dir=build/run-test-prebuilt/test-results/$test_suite_name/text
+report_dir=build/run-test-prebuilt/test-support/$test_suite_name
+
+failures=$(sed -E -e 's/(.*)\.(java|sh)/\1/' -e '/^#/d' $results_dir/newfailures.txt 2> /dev/null || true)
+errors=$(sed -E -e 's/(.*)\.(java|sh)/\1/' -e '/^#/d' $results_dir/other_errors.txt 2> /dev/null || true)
+
+if [[ "$failures" = "" && "$errors" = "" ]]; then
+ # If we have nothing to report, exit this step now
+ exit 0
+fi
+
+echo "### Test output for failed tests" >> $GITHUB_STEP_SUMMARY
+for test in $failures $errors; do
+ anchor="$(echo "$test" | tr [A-Z/] [a-z_])"
+ base_path="$(echo "$test" | tr '#' '_')"
+ report_file="$report_dir/$base_path.jtr"
+ hs_err_files=$(ls $report_dir/$base_path/hs_err*.log 2> /dev/null || true)
+ echo "#### $test"
+
+ echo 'View test results
'
+ echo ''
+ echo '```'
+ if [[ -f "$report_file" ]]; then
+ cat "$report_file"
+ else
+ echo "Error: Result file $report_file not found"
+ fi
+ echo '```'
+ echo ' '
+ echo ''
+
+ if [[ "$hs_err_files" != "" ]]; then
+ echo 'View HotSpot error log
'
+ echo ''
+ for hs_err in $hs_err_files; do
+ echo '```'
+ echo "$hs_err:"
+ echo ''
+ cat "$hs_err"
+ echo '```'
+ done
+
+ echo ' '
+ echo ''
+ fi
+
+done >> $GITHUB_STEP_SUMMARY
+
+# With many failures, the summary can easily exceed 1024 kB, the limit set by Github
+# Trim it down if so.
+summary_size=$(wc -c < $GITHUB_STEP_SUMMARY)
+if [[ $summary_size -gt 1000000 ]]; then
+ # Trim to below 1024 kB, and cut off after the last detail group
+ head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp
+ mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY
+ (
+ echo ''
+ echo ':x: **WARNING: Summary is too large and has been truncated.**'
+ echo ''
+ ) >> $GITHUB_STEP_SUMMARY
+fi
+
+echo ':arrow_right: To see the entire test log, click the job in the list to the left.' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/scripts/gen-test-summary.sh b/.github/scripts/gen-test-summary.sh
new file mode 100644
index 00000000000..d016cb38649
--- /dev/null
+++ b/.github/scripts/gen-test-summary.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+GITHUB_STEP_SUMMARY="$1"
+GITHUB_OUTPUT="$2"
+
+test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt)
+results_dir=build/run-test-prebuilt/test-results/$test_suite_name/text
+
+if [[ ! -f build/run-test-prebuilt/make-support/exit-with-error ]]; then
+ # There were no failures, exit now
+ exit
+fi
+
+failures=$(sed -E -e 's/(.*)\.(java|sh)/\1/' -e '/^#/d' $results_dir/newfailures.txt 2> /dev/null || true)
+errors=$(sed -E -e 's/(.*)\.(java|sh)/\1/' -e '/^#/d' $results_dir/other_errors.txt 2> /dev/null || true)
+failure_count=$(echo $failures | wc -w || true)
+error_count=$(echo $errors | wc -w || true)
+
+if [[ "$failures" = "" && "$errors" = "" ]]; then
+ # We know something went wrong, but not what
+ echo 'error-message=Unspecified test suite failure. Please see log for job for details.' >> $GITHUB_OUTPUT
+ exit 0
+fi
+
+echo 'failure=true' >> $GITHUB_OUTPUT
+echo "error-message=Test run reported $failure_count test failure(s) and $error_count error(s). See summary for details." >> $GITHUB_OUTPUT
+
+echo '### :boom: Test failures summary' >> $GITHUB_STEP_SUMMARY
+
+if [[ "$failures" != "" ]]; then
+ echo '' >> $GITHUB_STEP_SUMMARY
+ echo 'These tests reported failure:' >> $GITHUB_STEP_SUMMARY
+ for test in $failures; do
+ anchor="$(echo "$test" | tr [A-Z/] [a-z_])"
+ echo "* [$test](#user-content-$anchor)"
+ done >> $GITHUB_STEP_SUMMARY
+fi
+
+if [[ "$errors" != "" ]]; then
+ echo '' >> $GITHUB_STEP_SUMMARY
+ echo 'These tests reported errors:' >> $GITHUB_STEP_SUMMARY
+ for test in $errors; do
+ anchor="$(echo "$test" | tr [A-Z/] [a-z_])"
+ echo "* [$test](#user-content-$anchor)"
+ done >> $GITHUB_STEP_SUMMARY
+fi
diff --git a/.github/workflows/build-cross-compile.yml b/.github/workflows/build-cross-compile.yml
new file mode 100644
index 00000000000..168c5924d86
--- /dev/null
+++ b/.github/workflows/build-cross-compile.yml
@@ -0,0 +1,154 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Build (cross-compile)'
+
+on:
+ workflow_call:
+ inputs:
+ gcc-major-version:
+ required: false
+ type: string
+ default: '10'
+ apt-gcc-version:
+ required: false
+ type: string
+ default: '10.3.0-1ubuntu1~20.04'
+ apt-gcc-cross-suffix:
+ required: false
+ type: string
+ default: 'cross1'
+
+jobs:
+ build-cross-compile:
+ name: build
+ runs-on: ubuntu-20.04
+
+ strategy:
+ fail-fast: false
+ matrix:
+ target-cpu:
+ - aarch64
+ - arm
+ - s390x
+ - ppc64le
+ include:
+ - target-cpu: aarch64
+ debian-arch: arm64
+ gnu-arch: aarch64
+ - target-cpu: arm
+ debian-arch: armhf
+ gnu-arch: arm
+ gnu-abi: eabihf
+ - target-cpu: s390x
+ debian-arch: s390x
+ gnu-arch: s390x
+ - target-cpu: ppc64le
+ debian-arch: ppc64el
+ gnu-arch: powerpc64le
+
+ steps:
+ - name: 'Checkout the JDK source'
+ uses: actions/checkout@v3
+
+ - name: 'Get the BootJDK'
+ id: bootjdk
+ uses: ./.github/actions/get-bootjdk
+ with:
+ platform: linux-x64
+
+ # Use linux-x64 JDK bundle as build JDK
+ - name: 'Get build JDK'
+ id: buildjdk
+ uses: ./.github/actions/get-bundles
+ with:
+ platform: linux-x64
+
+ # Upgrading apt to solve libc6 installation bugs, see JDK-8260460.
+ - name: 'Install toolchain and dependencies'
+ run: |
+ # Install dependencies using apt-get
+ sudo apt-get update
+ sudo apt-get install --only-upgrade apt
+ sudo apt-get install \
+ gcc-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
+ g++-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
+ gcc-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-version }}${{ inputs.apt-gcc-cross-suffix }} \
+ g++-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-version }}${{ inputs.apt-gcc-cross-suffix }} \
+ libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
+
+ - name: 'Check cache for sysroot'
+ id: get-cached-sysroot
+ uses: actions/cache@v3
+ with:
+ path: sysroot
+ key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('./.github/workflows/build-cross-compile.yml') }}
+
+ - name: 'Install sysroot dependencies'
+ run: sudo apt-get install debootstrap qemu-user-static
+ if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
+
+ - name: 'Create sysroot'
+ run: >
+ sudo qemu-debootstrap
+ --arch=${{ matrix.debian-arch }}
+ --verbose
+ --include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev
+ --resolve-deps
+ buster
+ sysroot
+ https://httpredir.debian.org/debian/
+ if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
+
+ - name: 'Prepare sysroot'
+ run: |
+ # Prepare sysroot and remove unused files to minimize cache
+ sudo chroot sysroot symlinks -cr .
+ sudo chown ${USER} -R sysroot
+ rm -rf sysroot/{dev,proc,run,sys}
+ if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
+
+ - name: 'Configure'
+ run: >
+ bash configure
+ --with-conf-name=linux-${{ matrix.target-cpu }}
+ --with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
+ --with-boot-jdk=${{ steps.bootjdk.outputs.path }}
+ --with-zlib=system
+ --enable-debug
+ --disable-precompiled-headers
+ --openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}
+ --with-sysroot=sysroot
+ --with-build-jdk=${{ steps.buildjdk.outputs.jdk-path }}
+ CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-gcc-10
+ CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-g++-10
+
+ - name: 'Build'
+ id: build
+ uses: ./.github/actions/do-build
+ with:
+ make-target: 'hotspot'
+ platform: linux-${{ matrix.target-cpu }}
diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml
new file mode 100644
index 00000000000..1304e4c4a56
--- /dev/null
+++ b/.github/workflows/build-linux.yml
@@ -0,0 +1,134 @@
+# This project is a modified version of OpenJDK, licensed under GPL v2.
+# Modifications Copyright (C) 2025 ByteDance Inc.
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Build (linux)'
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ runs-on:
+ required: true
+ type: string
+ make-target:
+ required: false
+ type: string
+ default: 'cvm8default17'
+ debug-levels:
+ required: false
+ type: string
+ default: '[ "fastdebug", "release" ]'
+ apt-gcc-version:
+ required: true
+ type: string
+ apt-architecture:
+ required: false
+ type: string
+ apt-extra-packages:
+ required: false
+ type: string
+
+jobs:
+ build-linux:
+ name: build
+ runs-on: ${{ inputs.runs-on }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ debug-level: ${{ fromJSON(inputs.debug-levels) }}
+
+ steps:
+ - name: 'Checkout the jdk17u-target8 source'
+ uses: actions/checkout@v3
+ with:
+ ref: dev/v2/jdk17u-target8
+ path: .
+
+ - name: 'Checkout the jdk8u source'
+ uses: actions/checkout@v3
+ with:
+ path: cvm/jdk8u
+
+ - name: 'Determine version'
+ id: version
+ run: echo "::set-output name=version::$(cat ./cvm/conf/version)"
+
+ - name: 'Set architecture'
+ id: arch
+ run: |
+ # Set a proper suffix for packages if using a different architecture
+ if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
+ echo 'suffix=:${{ inputs.apt-architecture }}' >> $GITHUB_OUTPUT
+ fi
+
+ # Upgrading apt to solve libc6 installation bugs, see JDK-8260460.
+ - name: 'Install toolchain and dependencies'
+ run: |
+ # Install dependencies using apt-get
+ if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
+ sudo dpkg --add-architecture ${{ inputs.apt-architecture }}
+ fi
+ sudo apt-get update
+ sudo apt-get install --only-upgrade apt
+ sudo apt-get install gcc-${{ inputs.apt-gcc-version }} g++-${{ inputs.apt-gcc-version }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.apt-gcc-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.apt-gcc-version }}
+
+ - name: 'Build'
+ run: |
+ make -f cvm.mk ${{ inputs.make-target }} MODE=${{ matrix.debug-level}}
+ if [[ '${{ matrix.debug-level }}' == 'release' ]]; then
+ make -f cvm.mk jvm-patch MODE=release SKIP_BUILD=true
+ fi
+ shell: bash
+
+ - name: 'Pack bundles'
+ run: |
+ tar czf CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz -C output CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}
+ tar czf CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz -C output/CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }} .
+ shell: bash
+
+ - name: 'Upload bundles'
+ uses: actions/upload-artifact@v4
+ with:
+ name: CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz
+ path: CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz
+ retention-days: 1
+ if-no-files-found: error
+ overwrite: true
+
+ - name: 'Upload bundles jvm patch'
+ uses: actions/upload-artifact@v4
+ if: matrix.debug-level == 'release'
+ with:
+ name: CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz
+ path: CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz
+ retention-days: 1
+ if-no-files-found: error
+ overwrite: true
diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml
new file mode 100644
index 00000000000..a19dcc3140d
--- /dev/null
+++ b/.github/workflows/build-macos.yml
@@ -0,0 +1,114 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Build (macos)'
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ extra-conf-options:
+ required: false
+ type: string
+ make-target:
+ required: false
+ type: string
+ default: 'product-bundles test-bundles'
+ debug-levels:
+ required: false
+ type: string
+ default: '[ "debug", "release" ]'
+ xcode-toolset-version:
+ required: true
+ type: string
+
+jobs:
+ build-macos:
+ name: build
+ runs-on: macos-11
+
+ strategy:
+ fail-fast: false
+ matrix:
+ debug-level: ${{ fromJSON(inputs.debug-levels) }}
+ include:
+ - debug-level: debug
+ flags: --with-debug-level=fastdebug
+ suffix: -debug
+
+ steps:
+ - name: 'Checkout the JDK source'
+ uses: actions/checkout@v3
+
+ - name: 'Get the BootJDK'
+ id: bootjdk
+ uses: ./.github/actions/get-bootjdk
+ with:
+ platform: macos-x64
+
+ - name: 'Get JTReg'
+ id: jtreg
+ uses: ./.github/actions/get-jtreg
+
+ - name: 'Get GTest'
+ id: gtest
+ uses: ./.github/actions/get-gtest
+
+ - name: 'Install toolchain and dependencies'
+ run: |
+ # Run Homebrew installation and xcode-select
+ brew install make
+ sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode-toolset-version }}.app/Contents/Developer
+ # This will make GNU make available as 'make' and not only as 'gmake'
+ echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
+
+ - name: 'Configure'
+ run: >
+ bash configure
+ --with-conf-name=${{ inputs.platform }}
+ ${{ matrix.flags }}
+ --with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
+ --with-boot-jdk=${{ steps.bootjdk.outputs.path }}
+ --with-jtreg=${{ steps.jtreg.outputs.path }}
+ --with-gtest=${{ steps.gtest.outputs.path }}
+ --enable-jtreg-failure-handler
+ --with-zlib=system
+ ${{ inputs.extra-conf-options }}
+
+ - name: 'Build'
+ id: build
+ uses: ./.github/actions/do-build
+ with:
+ make-target: '${{ inputs.make-target }}'
+ platform: ${{ inputs.platform }}
+ debug-suffix: '${{ matrix.suffix }}'
+
+ - name: 'Upload bundles'
+ uses: ./.github/actions/upload-bundles
+ with:
+ platform: ${{ inputs.platform }}
+ debug-suffix: '${{ matrix.suffix }}'
diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml
new file mode 100644
index 00000000000..d8ff9671259
--- /dev/null
+++ b/.github/workflows/build-windows.yml
@@ -0,0 +1,145 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Build (windows)'
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ extra-conf-options:
+ required: false
+ type: string
+ make-target:
+ required: false
+ type: string
+ default: 'product-bundles test-bundles'
+ debug-levels:
+ required: false
+ type: string
+ default: '[ "debug", "release" ]'
+ msvc-toolset-version:
+ required: true
+ type: string
+ msvc-toolset-architecture:
+ required: true
+ type: string
+
+env:
+ # These are needed to make the MSYS2 bash work properly
+ MSYS2_PATH_TYPE: minimal
+ CHERE_INVOKING: 1
+
+jobs:
+ build-windows:
+ name: build
+ runs-on: windows-2019
+ defaults:
+ run:
+ shell: bash
+
+ strategy:
+ fail-fast: false
+ matrix:
+ debug-level: ${{ fromJSON(inputs.debug-levels) }}
+ include:
+ - debug-level: debug
+ flags: --with-debug-level=fastdebug
+ suffix: -debug
+
+ steps:
+ - name: 'Checkout the JDK source'
+ uses: actions/checkout@v3
+
+ - name: 'Get MSYS2'
+ uses: ./.github/actions/get-msys2
+
+ - name: 'Get the BootJDK'
+ id: bootjdk
+ uses: ./.github/actions/get-bootjdk
+ with:
+ platform: windows-x64
+
+ - name: 'Get JTReg'
+ id: jtreg
+ uses: ./.github/actions/get-jtreg
+
+ - name: 'Get GTest'
+ id: gtest
+ uses: ./.github/actions/get-gtest
+
+ - name: 'Check toolchain installed'
+ id: toolchain-check
+ run: |
+ set +e
+ '/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/vc/auxiliary/build/vcvars64.bat' -vcvars_ver=${{ inputs.msvc-toolset-version }}
+ if [ $? -eq 0 ]; then
+ echo "Toolchain is already installed"
+ echo "toolchain-installed=true" >> $GITHUB_OUTPUT
+ else
+ echo "Toolchain is not yet installed"
+ echo "toolchain-installed=false" >> $GITHUB_OUTPUT
+ fi
+
+ - name: 'Install toolchain and dependencies'
+ run: |
+ # Run Visual Studio Installer
+ '/c/Program Files (x86)/Microsoft Visual Studio/Installer/vs_installer.exe' \
+ modify --quiet --installPath 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise' \
+ --add Microsoft.VisualStudio.Component.VC.${{ inputs.msvc-toolset-version }}.${{ inputs.msvc-toolset-architecture }}
+ if: steps.toolchain-check.outputs.toolchain-installed != 'true'
+
+ - name: 'Configure'
+ run: >
+ bash configure
+ --with-conf-name=${{ inputs.platform }}
+ ${{ matrix.flags }}
+ --with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
+ --with-boot-jdk=${{ steps.bootjdk.outputs.path }}
+ --with-jtreg=${{ steps.jtreg.outputs.path }}
+ --with-gtest=${{ steps.gtest.outputs.path }}
+ --enable-jtreg-failure-handler
+ --with-msvc-toolset-version=${{ inputs.msvc-toolset-version }}
+ ${{ inputs.extra-conf-options }}
+ env:
+ # We need a minimal PATH on Windows
+ # Set PATH to "", so just GITHUB_PATH is included
+ PATH: ''
+
+ - name: 'Build'
+ id: build
+ uses: ./.github/actions/do-build
+ with:
+ make-target: '${{ inputs.make-target }}'
+ platform: ${{ inputs.platform }}
+ debug-suffix: '${{ matrix.suffix }}'
+
+ - name: 'Upload bundles'
+ uses: ./.github/actions/upload-bundles
+ with:
+ platform: ${{ inputs.platform }}
+ debug-suffix: '${{ matrix.suffix }}'
diff --git a/.github/workflows/gtest-linux.yml b/.github/workflows/gtest-linux.yml
new file mode 100644
index 00000000000..9499b52649f
--- /dev/null
+++ b/.github/workflows/gtest-linux.yml
@@ -0,0 +1,124 @@
+# This project is a modified version of OpenJDK, licensed under GPL v2.
+# Modifications Copyright (C) 2025 ByteDance Inc.
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'GTest (linux)'
+
+permissions:
+ contents: read
+ pull-requests: write
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ runs-on:
+ required: true
+ type: string
+ debug-levels:
+ required: false
+ type: string
+ default: '[ "fastdebug", "release" ]'
+ apt-gcc-version:
+ required: true
+ type: string
+ apt-architecture:
+ required: false
+ type: string
+ apt-extra-packages:
+ required: false
+ type: string
+
+jobs:
+ gtest-linux:
+ name: gtest
+ runs-on: ${{ inputs.runs-on }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ debug-level: ${{ fromJSON(inputs.debug-levels) }}
+
+ steps:
+ - name: 'Checkout the jdk17u-target8 source'
+ uses: actions/checkout@v3
+ with:
+ ref: dev/v2/jdk17u-target8
+ path: .
+
+ - name: 'Checkout the jdk8u source'
+ uses: actions/checkout@v3
+ with:
+ path: cvm/jdk8u
+
+ - name: 'Determine version'
+ id: version
+ run: echo "::set-output name=version::$(cat ./cvm/conf/version)"
+
+ - name: 'Set architecture'
+ id: arch
+ run: |
+ # Set a proper suffix for packages if using a different architecture
+ if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
+ echo 'suffix=:${{ inputs.apt-architecture }}' >> $GITHUB_OUTPUT
+ fi
+
+ # Upgrading apt to solve libc6 installation bugs, see JDK-8260460.
+ - name: 'Install toolchain and dependencies'
+ run: |
+ # Install dependencies using apt-get
+ if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
+ sudo dpkg --add-architecture ${{ inputs.apt-architecture }}
+ fi
+ sudo apt-get update
+ sudo apt-get install --only-upgrade apt
+ sudo apt-get install gcc-${{ inputs.apt-gcc-version }} g++-${{ inputs.apt-gcc-version }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.apt-gcc-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.apt-gcc-version }}
+
+ - name: 'Build'
+ run: |
+ make -f cvm.mk build_gtest_hotspot17 MODE=${{ matrix.debug-level}} SKIP_BUILD=true
+ shell: bash
+
+ - name: 'Get bundles'
+ uses: actions/download-artifact@v4
+ with:
+ name: CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz
+ path: .
+
+ - name: 'Unpack bundles'
+ run: |
+ rm -rf gtest-jdk
+ mkdir gtest-jdk
+ tar xzvf CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ matrix.debug-level }}.tar.gz -C gtest-jdk --strip-components=1
+ shell: bash
+
+ - name: 'Run gtests'
+ run: |
+ make -f cvm.mk test_gtest_hotspot17 MODE=${{ matrix.debug-level}} SKIP_BUILD=true HOTSPOT_GTEST_JDKDIR=${PWD}/gtest-jdk
+ shell: bash
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000000..53ce93027db
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,224 @@
+# This project is a modified version of OpenJDK, licensed under GPL v2.
+# Modifications Copyright (C) 2025 ByteDance Inc.
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'CVM build and test'
+
+permissions:
+ contents: read
+ pull-requests: write
+
+on:
+ pull_request:
+ branches:
+ - jdk17u-target8
+ - jdk25u-target8
+ workflow_dispatch:
+ inputs:
+ platforms:
+ description: 'Platform(s) to execute on (comma separated, e.g. "linux-x64, macos, aarch64")'
+ required: true
+ default: 'linux-x64, linux-aarch64'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+
+ ###
+ ### Determine platforms to include
+ ###
+
+ select:
+ name: 'Select platforms'
+ runs-on: ubuntu-22.04
+ outputs:
+ linux-x64: ${{ steps.include.outputs.linux-x64 }}
+ linux-aarch64: ${{ steps.include.outputs.linux-aarch64 }}
+
+ steps:
+ # This function must be inlined in main.yml, or we'd be forced to checkout the repo
+ - name: 'Check what jobs to run'
+ id: include
+ run: |
+ # Determine which platform jobs to run
+
+ # Returns 'true' if the input platform list matches any of the platform monikers given as argument,
+ # 'false' otherwise.
+ # arg $1: platform name or names to look for
+ function check_platform() {
+ if [[ '${{ !secrets.JDK_SUBMIT_FILTER || startsWith(github.ref, 'refs/heads/submit/') }}' == 'false' ]]; then
+ # If JDK_SUBMIT_FILTER is set, and this is not a "submit/" branch, don't run anything
+ echo 'false'
+ return
+ fi
+
+ if [[ $GITHUB_EVENT_NAME == workflow_dispatch ]]; then
+ input='${{ github.event.inputs.platforms }}'
+ elif [[ $GITHUB_EVENT_NAME == pull_request ]]; then
+ input='${{ secrets.JDK_SUBMIT_PLATFORMS }}'
+ else
+ echo 'Internal error in GHA'
+ exit 1
+ fi
+
+ normalized_input="$(echo ,$input, | tr -d ' ')"
+ if [[ "$normalized_input" == ",," ]]; then
+ # For an empty input, assume all platforms should run
+ echo 'true'
+ return
+ else
+ # Check for all acceptable platform names
+ for part in $* ; do
+ if echo "$normalized_input" | grep -q -e ",$part," ; then
+ echo 'true'
+ return
+ fi
+ done
+ fi
+
+ echo 'false'
+ }
+
+ echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT
+ echo "linux-aarch64=$(check_platform linux-aarch64 linux aarch64)" >> $GITHUB_OUTPUT
+ ###
+ ### Build jobs
+ ###
+
+ build-linux-x64:
+ name: linux-x64
+ needs: select
+ uses: ./.github/workflows/build-linux.yml
+ with:
+ platform: linux_x64
+ apt-gcc-version: '9'
+ runs-on: ubuntu-22.04
+ # The linux-x64 jdk bundle is used as buildjdk for the cross-compile job
+ if: needs.select.outputs.linux-x64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
+
+ build-linux-aarch64:
+ name: linux-aarch64
+ needs: select
+ uses: ./.github/workflows/build-linux.yml
+ with:
+ platform: linux_aarch64
+ apt-gcc-version: '9'
+ runs-on: ubuntu-22.04-arm
+ # The linux-aarch64 jdk bundle is used as buildjdk for the cross-compile job
+ if: needs.select.outputs.linux-aarch64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
+
+ ###
+ ### GTest jobs
+ ###
+
+ gtest-linux-x64:
+ name: linux-x64
+ needs:
+ - build-linux-x64
+ uses: ./.github/workflows/gtest-linux.yml
+ with:
+ platform: linux_x64
+ apt-gcc-version: '9'
+ runs-on: ubuntu-22.04
+
+ gtest-linux-aarch64:
+ name: linux-aarch64
+ needs:
+ - build-linux-aarch64
+ uses: ./.github/workflows/gtest-linux.yml
+ with:
+ platform: linux_aarch64
+ apt-gcc-version: '9'
+ runs-on: ubuntu-22.04-arm
+
+ ###
+ ### Test jobs
+ ###
+
+ test-linux-x64:
+ name: linux-x64
+ needs:
+ - build-linux-x64
+ uses: ./.github/workflows/test-cvm8+17.yml
+ with:
+ platform: linux_x64
+ arch: x64
+ runs-on: ubuntu-22.04
+ debug-level: release
+
+ test-linux-aarch64:
+ name: linux-aarch64
+ needs:
+ - build-linux-aarch64
+ uses: ./.github/workflows/test-cvm8+17.yml
+ with:
+ platform: linux_aarch64
+ arch: aarch64
+ runs-on: ubuntu-22.04-arm
+ debug-level: release
+
+ # Remove bundles so they are not misconstrued as binary distributions from the JDK project
+ remove-bundles:
+ name: 'Remove bundle artifacts'
+ runs-on: ubuntu-22.04
+ if: always()
+ needs:
+ - build-linux-x64
+ - gtest-linux-x64
+ - test-linux-x64
+ - build-linux-aarch64
+ - gtest-linux-aarch64
+ - test-linux-aarch64
+
+ steps:
+ # Hack to get hold of the api environment variables that are only defined for actions
+ - name: 'Get API configuration'
+ id: api
+ uses: actions/github-script@v6
+ with:
+ script: 'return { url: process.env["ACTIONS_RUNTIME_URL"], token: process.env["ACTIONS_RUNTIME_TOKEN"] }'
+
+ - name: 'Remove bundle artifacts'
+ run: |
+ # Find and remove all bundle artifacts
+ ALL_ARTIFACT_IDS="$(curl -sL \
+ -H 'Accept: application/vnd.github+json' \
+ -H 'Authorization: Bearer ${{ github.token }}' \
+ -H 'X-GitHub-Api-Version: 2022-11-28' \
+ '${{ github.api_url }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts?per_page=100')"
+ BUNDLE_ARTIFACT_IDS="$(echo "$ALL_ARTIFACT_IDS" | jq -r -c '.artifacts | map(select(.name|startswith("cvm"))) | .[].id')"
+ for id in $BUNDLE_ARTIFACT_IDS; do
+ echo "Removing $id"
+ curl -sL \
+ -X DELETE \
+ -H 'Accept: application/vnd.github+json' \
+ -H 'Authorization: Bearer ${{ github.token }}' \
+ -H 'X-GitHub-Api-Version: 2022-11-28' \
+ "${{ github.api_url }}/repos/${{ github.repository }}/actions/artifacts/$id" \
+ || echo "Failed to remove bundle"
+ done
diff --git a/.github/workflows/test-cvm8+17.yml b/.github/workflows/test-cvm8+17.yml
new file mode 100644
index 00000000000..2ac76c673aa
--- /dev/null
+++ b/.github/workflows/test-cvm8+17.yml
@@ -0,0 +1,120 @@
+# This project is a modified version of OpenJDK, licensed under GPL v2.
+# Modifications Copyright (C) 2025 ByteDance Inc.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+name: 'Run tests'
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ arch:
+ required: true
+ type: string
+ runs-on:
+ required: true
+ type: string
+ debug-level:
+ required: true
+ type: string
+
+env:
+ # These are needed to make the MSYS2 bash work properly
+ MSYS2_PATH_TYPE: minimal
+ CHERE_INVOKING: 1
+
+jobs:
+ test:
+ name: test
+ runs-on: ${{ inputs.runs-on }}
+ defaults:
+ run:
+ shell: bash
+
+ strategy:
+ fail-fast: false
+ matrix:
+ test-name:
+ - 'jdk/tier1'
+ - 'langtools'
+ - 'cvm8'
+ - 'hotspot8'
+
+ include:
+ - test-name: 'jdk/tier1'
+ test-suite: 'jdk_tier1'
+
+ - test-name: 'langtools'
+ test-suite: 'langtools'
+
+ - test-name: 'cvm8'
+ test-suite: 'cvm8'
+
+ - test-name: 'hotspot8'
+ test-suite: 'hotspot8'
+
+ steps:
+ - name: 'Checkout the jdk17u-target8 source'
+ uses: actions/checkout@v3
+ with:
+ ref: dev/v2/jdk17u-target8
+ path: .
+
+ - name: 'Checkout the jdk8u source'
+ uses: actions/checkout@v3
+ with:
+ path: cvm/jdk8u
+
+ - name: 'Determine version'
+ id: version
+ run: echo "::set-output name=version::$(cat ./cvm/conf/version)"
+
+ - name: 'Get bundles'
+ uses: actions/download-artifact@v4
+ with:
+ name: CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ inputs.debug-level }}.tar.gz
+ path: .
+
+ - name: 'Unpack bundles'
+ run: |
+ rm -rf cvm/build/jdk8
+ mkdir -p cvm/build/jdk8
+ tar xzvf CompoundVM_${{ steps.version.outputs.version }}_${{ inputs.platform }}_${{ inputs.debug-level }}.tar.gz -C cvm/build/jdk8 --strip-components=1
+ shell: bash
+
+ - name: 'Run tests'
+ id: run-tests
+ run: |
+ make -f cvm.mk test_jtreg8_${{ matrix.test-suite }} SKIP_BUILD=true MODE=${{ inputs.debug-level }}
+ shell: bash
+
+ - name: 'Get bundles jvm patch'
+ uses: actions/download-artifact@v4
+ with:
+ name: CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }}_${{ inputs.debug-level }}.tar.gz
+ path: .
+
+ - name: 'Run sanity test jvm patch'
+ run: |
+ wget -nc https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u372-b07/OpenJDK8U-jdk_${{ inputs.arch }}_linux_hotspot_8u372b07.tar.gz
+ tar xzf OpenJDK8U-jdk_${{ inputs.arch }}_linux_hotspot_8u372b07.tar.gz
+ tar xzf CompoundVM_${{ steps.version.outputs.version }}_jvm_patch_${{ inputs.platform }}_${{ inputs.debug-level }}.tar.gz -C jdk8u372-b07/
+ jdk8u372-b07/bin/java -version 2>&1 | grep "CompoundVM"
+ shell: bash
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 00000000000..81735dd71e6
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,205 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+name: 'Run tests'
+
+on:
+ workflow_call:
+ inputs:
+ platform:
+ required: true
+ type: string
+ bootjdk-platform:
+ required: true
+ type: string
+ runs-on:
+ required: true
+ type: string
+
+env:
+ # These are needed to make the MSYS2 bash work properly
+ MSYS2_PATH_TYPE: minimal
+ CHERE_INVOKING: 1
+
+jobs:
+ test:
+ name: test
+ runs-on: ${{ inputs.runs-on }}
+ defaults:
+ run:
+ shell: bash
+
+ strategy:
+ fail-fast: false
+ matrix:
+ test-name:
+ - 'jdk/tier1 part 1'
+ - 'jdk/tier1 part 2'
+ - 'jdk/tier1 part 3'
+ - 'langtools/tier1'
+ - 'hs/tier1 common'
+ - 'hs/tier1 compiler'
+ - 'hs/tier1 gc'
+ - 'hs/tier1 runtime'
+ - 'hs/tier1 serviceability'
+
+ include:
+ - test-name: 'jdk/tier1 part 1'
+ test-suite: 'test/jdk/:tier1_part1'
+
+ - test-name: 'jdk/tier1 part 2'
+ test-suite: 'test/jdk/:tier1_part2'
+
+ - test-name: 'jdk/tier1 part 3'
+ test-suite: 'test/jdk/:tier1_part3'
+
+ - test-name: 'langtools/tier1'
+ test-suite: 'test/langtools/:tier1'
+
+ - test-name: 'hs/tier1 common'
+ test-suite: 'test/hotspot/jtreg/:tier1_common'
+ debug-suffix: -debug
+
+ - test-name: 'hs/tier1 compiler'
+ test-suite: 'test/hotspot/jtreg/:tier1_compiler'
+ debug-suffix: -debug
+
+ - test-name: 'hs/tier1 gc'
+ test-suite: 'test/hotspot/jtreg/:tier1_gc'
+ debug-suffix: -debug
+
+ - test-name: 'hs/tier1 runtime'
+ test-suite: 'test/hotspot/jtreg/:tier1_runtime'
+ debug-suffix: -debug
+
+ - test-name: 'hs/tier1 serviceability'
+ test-suite: 'test/hotspot/jtreg/:tier1_serviceability'
+ debug-suffix: -debug
+
+ steps:
+ - name: 'Checkout the JDK source'
+ uses: actions/checkout@v3
+
+ - name: 'Get MSYS2'
+ uses: ./.github/actions/get-msys2
+ if: runner.os == 'Windows'
+
+ - name: 'Get the BootJDK'
+ id: bootjdk
+ uses: ./.github/actions/get-bootjdk
+ with:
+ platform: ${{ inputs.bootjdk-platform }}
+
+ - name: 'Get JTReg'
+ id: jtreg
+ uses: ./.github/actions/get-jtreg
+
+ - name: 'Get bundles'
+ id: bundles
+ uses: ./.github/actions/get-bundles
+ with:
+ platform: ${{ inputs.platform }}
+ debug-suffix: ${{ matrix.debug-suffix }}
+
+ - name: 'Install dependencies'
+ run: |
+ # On macOS we need to install some dependencies for testing
+ brew install make
+ sudo xcode-select --switch /Applications/Xcode_11.7.app/Contents/Developer
+ # This will make GNU make available as 'make' and not only as 'gmake'
+ echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
+ if: runner.os == 'macOS'
+
+ - name: 'Set PATH'
+ id: path
+ run: |
+ # We need a minimal PATH on Windows
+ # Set PATH to "", so just GITHUB_PATH is included
+ if [[ '${{ runner.os }}' == 'Windows' ]]; then
+ echo "value=" >> $GITHUB_OUTPUT
+ else
+ echo "value=$PATH" >> $GITHUB_OUTPUT
+ fi
+
+ - name: 'Run tests'
+ id: run-tests
+ run: >
+ make test-prebuilt
+ TEST='${{ matrix.test-suite }}'
+ BOOT_JDK=${{ steps.bootjdk.outputs.path }}
+ JT_HOME=${{ steps.jtreg.outputs.path }}
+ JDK_IMAGE_DIR=${{ steps.bundles.outputs.jdk-path }}
+ SYMBOLS_IMAGE_DIR=${{ steps.bundles.outputs.symbols-path }}
+ TEST_IMAGE_DIR=${{ steps.bundles.outputs.tests-path }}
+ JTREG='JAVA_OPTIONS=-XX:-CreateCoredumpOnCrash;VERBOSE=fail,error,time;KEYWORDS=!headful'
+ && bash ./.github/scripts/gen-test-summary.sh "$GITHUB_STEP_SUMMARY" "$GITHUB_OUTPUT"
+ env:
+ PATH: ${{ steps.path.outputs.value }}
+
+ # This is a separate step, since if the markdown from a step gets bigger than
+ # 1024 kB it is skipped, but then the short summary above is still generated
+ - name: 'Generate test report'
+ run: bash ./.github/scripts/gen-test-results.sh "$GITHUB_STEP_SUMMARY"
+ if: always()
+
+ - name: 'Package test results'
+ id: package
+ run: |
+ # Package test-results and relevant parts of test-support
+ mkdir results
+
+ if [[ -d build/run-test-prebuilt/test-results ]]; then
+ cd build/run-test-prebuilt/test-results/
+ zip -r -9 "$GITHUB_WORKSPACE/results/test-results.zip" .
+ cd $GITHUB_WORKSPACE
+ else
+ echo '::warning ::Missing test-results directory'
+ fi
+
+ if [[ -d build/run-test-prebuilt/test-support ]]; then
+ cd build/run-test-prebuilt/test-support/
+ zip -r -9 "$GITHUB_WORKSPACE/results/test-support.zip" . -i *.jtr -i */hs_err*.log -i */replay*.log
+ cd $GITHUB_WORKSPACE
+ else
+ echo '::warning ::Missing test-support directory'
+ fi
+
+ artifact_name="results-${{ inputs.platform }}-$(echo ${{ matrix.test-name }} | tr '/ ' '__')"
+ echo "artifact-name=$artifact_name" >> $GITHUB_OUTPUT
+ if: always()
+
+ - name: 'Upload test results'
+ uses: actions/upload-artifact@v3
+ with:
+ path: results
+ name: ${{ steps.package.outputs.artifact-name }}
+ if: always()
+
+ # This is the best way I found to abort the job with an error message
+ - name: 'Notify about test failures'
+ uses: actions/github-script@v6
+ with:
+ script: core.setFailed('${{ steps.run-tests.outputs.error-message }}')
+ if: steps.run-tests.outputs.failure == 'true'
diff --git a/cvm/conf/jtreg_hotspot8_excludes_aarch64.list b/cvm/conf/jtreg_hotspot8_excludes_aarch64.list
new file mode 100644
index 00000000000..991165091ce
--- /dev/null
+++ b/cvm/conf/jtreg_hotspot8_excludes_aarch64.list
@@ -0,0 +1,116 @@
+compiler/EscapeAnalysis/TestUnsafePutAddressNullObjMustNotEscape.java
+compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java
+compiler/jsr292/methodHandleExceptions/TestAMEnotNPE.java
+compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
+compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java
+compiler/profiling/spectrapredefineclass/Launcher.java
+compiler/rtm/cli/TestPrintPreciseRTMLockingStatisticsOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestRTMAbortRatioOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestRTMAbortThresholdOption.java
+compiler/rtm/cli/TestRTMLockingCalculationDelayOption.java
+compiler/rtm/cli/TestRTMLockingThresholdOption.java
+compiler/rtm/cli/TestRTMRetryCountOption.java
+compiler/rtm/cli/TestRTMSpinLoopCountOption.java
+compiler/rtm/cli/TestRTMTotalCountIncrRateOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestUseRTMDeoptOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestUseRTMForStackLocksOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestUseRTMXendForLockBusyOption.java
+compiler/startup/NumCompilerThreadsCheck.java
+compiler/tiered/NonTieredLevelsTest.java
+compiler/tiered/LevelTransitionTest.java
+gc/6941923/Test6941923.java
+gc/arguments/TestSurvivorAlignmentInBytesOption.java
+gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java
+gc/class_unloading/TestG1ClassUnloadingHWM.java
+gc/ergonomics/TestDynamicNumberOfGCThreads.java
+gc/g1/TestEagerReclaimHumongousRegionsClearMarkBits.java
+gc/g1/TestG1TraceEagerReclaimHumongousObjects.java
+gc/g1/TestGCLogMessages.java
+gc/g1/TestHumongousAllocInitialMark.java
+gc/g1/TestPrintRegionRememberedSetInfo.java
+gc/g1/TestStringDeduplicationAgeThreshold.java
+gc/g1/TestStringDeduplicationFullGC.java
+gc/g1/TestStringDeduplicationInterned.java
+gc/g1/TestStringDeduplicationPrintOptions.java
+gc/g1/TestStringDeduplicationTableRehash.java
+gc/g1/TestStringDeduplicationTableResize.java
+gc/g1/TestStringDeduplicationYoungGC.java
+gc/g1/TestStringSymbolTableStats.java
+gc/logging/TestGCId.java
+gc/metaspace/TestMetaspaceSizeFlags.java
+gc/parallelScavenge/AdaptiveGCBoundary.java
+gc/startup_warnings/TestCMSForegroundFlags.java
+gc/startup_warnings/TestCMSIncrementalMode.java
+gc/startup_warnings/TestDefNewCMS.java
+gc/startup_warnings/TestIncGC.java
+gc/6581734/Test6581734.java
+gc/startup_warnings/TestParNewSerialOld.java
+gc/survivorAlignment/TestAllocationInEden.java
+gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterFullGC.java
+gc/survivorAlignment/TestPromotionFromEdenToTenured.java
+gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java
+gc/survivorAlignment/TestPromotionToSurvivor.java
+gc/TestGCLogRotationViaJcmd.java
+gc/TestMemoryMXBeansAndPoolsPresence.java
+gc/TestVerifyDuringStartup.java
+gc/TestVerifySilently.java
+gc/TestVerifySubSet.java
+runtime/6929067/Test6929067.sh
+runtime/6981737/Test6981737.java
+runtime/7110720/Test7110720.sh
+runtime/7162488/Test7162488.sh
+runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java
+runtime/CDSCompressedKPtrs/CDSCompressedKPtrsError.java
+runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java
+runtime/ClassFile/UnsupportedClassFileVersion.java
+runtime/CommandLine/PrintFlagsUintxTest.java
+runtime/CommandLine/TraceExceptionsTest.java
+runtime/CommandLine/UnrecognizedVMOption.java
+runtime/CommandLine/VMOptionWarning.java
+runtime/CompressedOops/CompressedClassPointers.java
+runtime/containers/cgroup/PlainRead.java
+runtime/containers/docker/TestCPUSets.java
+runtime/containers/docker/TestCPUAwareness.java
+runtime/containers/docker/TestMemoryAwareness.java
+runtime/contended/Options.java
+runtime/InternalApi/ThreadCpuTimesDeadlock.java
+runtime/InitialThreadOverflow/testme.sh
+runtime/containers/docker/TestMisc.java
+runtime/invokedynamic/BootstrapMethodErrorTest.java
+runtime/Metaspace/MaxMetaspaceSizeTest.java
+runtime/NMT/AutoshutdownNMT.java
+runtime/NMT/ChangeTrackingLevel.java
+runtime/NMT/JcmdBaselineDetail.java
+runtime/NMT/JcmdDetailDiff.java
+runtime/NMT/JcmdSummaryDiff.java
+runtime/NMT/MallocSiteTypeChange.java
+runtime/NMT/NMTWithCDS.java
+runtime/NMT/ShutdownTwice.java
+runtime/NMT/SummaryAfterShutdown.java
+runtime/NMT/ThreadedVirtualAllocTestType.java
+runtime/NMT/VirtualAllocCommitUncommitRecommit.java
+runtime/NMT/VirtualAllocTestType.java
+runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java
+runtime/SharedArchiveFile/CdsSameObjectAlignment.java
+runtime/SharedArchiveFile/LimitSharedSizes.java
+runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java
+runtime/SharedArchiveFile/SharedArchiveFile.java
+runtime/SharedArchiveFile/SharedBaseAddress.java
+runtime/SharedArchiveFile/SpaceUtilizationCheck.java
+serviceability/dcmd/ClassLoaderStatsTest.java
+serviceability/ParserTest.java
+testlibrary_tests/whitebox/vm_flags/DoubleTest.java
+testlibrary_tests/whitebox/vm_flags/IntxTest.java
+runtime/NMT/MallocStressTest.java
+testlibrary_tests/TestMutuallyExclusivePlatformPredicates.java
+vmTestbase/nsk/jdb/monitor/monitor002/monitor002.java
+
+compiler/arguments/TestUseBMI1InstructionsOnUnsupportedCPU.java
+compiler/arguments/TestUseCountLeadingZerosInstructionOnUnsupportedCPU.java
+compiler/arguments/TestUseCountTrailingZerosInstructionOnUnsupportedCPU.java
+compiler/7184394/TestAESMain.java
+compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnSupportedCPU.java
diff --git a/cvm/conf/jtreg_hotspot8_excludes_x64.list b/cvm/conf/jtreg_hotspot8_excludes_x64.list
new file mode 100644
index 00000000000..6a94de778e1
--- /dev/null
+++ b/cvm/conf/jtreg_hotspot8_excludes_x64.list
@@ -0,0 +1,110 @@
+compiler/EscapeAnalysis/TestUnsafePutAddressNullObjMustNotEscape.java
+compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java
+compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java
+compiler/jsr292/methodHandleExceptions/TestAMEnotNPE.java
+compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
+compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java
+compiler/profiling/spectrapredefineclass/Launcher.java
+compiler/rtm/cli/TestPrintPreciseRTMLockingStatisticsOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestRTMAbortRatioOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestRTMTotalCountIncrRateOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestUseRTMDeoptOptionOnUnsupportedConfig.java
+compiler/rtm/cli/TestUseRTMForStackLocksOptionOnUnsupportedConfig.java
+compiler/startup/NumCompilerThreadsCheck.java
+compiler/tiered/NonTieredLevelsTest.java
+compiler/tiered/LevelTransitionTest.java
+gc/6941923/Test6941923.java
+gc/arguments/TestSurvivorAlignmentInBytesOption.java
+gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java
+gc/class_unloading/TestG1ClassUnloadingHWM.java
+gc/ergonomics/TestDynamicNumberOfGCThreads.java
+gc/g1/TestEagerReclaimHumongousRegionsClearMarkBits.java
+gc/g1/TestG1TraceEagerReclaimHumongousObjects.java
+gc/g1/TestGCLogMessages.java
+gc/g1/TestHumongousAllocInitialMark.java
+gc/g1/TestPrintRegionRememberedSetInfo.java
+gc/g1/TestStringDeduplicationAgeThreshold.java
+gc/g1/TestStringDeduplicationFullGC.java
+gc/g1/TestStringDeduplicationInterned.java
+gc/g1/TestStringDeduplicationPrintOptions.java
+gc/g1/TestStringDeduplicationTableRehash.java
+gc/g1/TestStringDeduplicationTableResize.java
+gc/g1/TestStringDeduplicationYoungGC.java
+gc/g1/TestStringSymbolTableStats.java
+gc/logging/TestGCId.java
+gc/metaspace/TestMetaspaceSizeFlags.java
+gc/parallelScavenge/AdaptiveGCBoundary.java
+gc/startup_warnings/TestCMSForegroundFlags.java
+gc/startup_warnings/TestCMSIncrementalMode.java
+gc/startup_warnings/TestDefNewCMS.java
+gc/startup_warnings/TestIncGC.java
+gc/6581734/Test6581734.java
+gc/startup_warnings/TestParNewSerialOld.java
+gc/survivorAlignment/TestAllocationInEden.java
+gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterFullGC.java
+gc/survivorAlignment/TestPromotionFromEdenToTenured.java
+gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java
+gc/survivorAlignment/TestPromotionToSurvivor.java
+gc/TestGCLogRotationViaJcmd.java
+gc/TestMemoryMXBeansAndPoolsPresence.java
+gc/TestVerifyDuringStartup.java
+gc/TestVerifySilently.java
+gc/TestVerifySubSet.java
+runtime/6929067/Test6929067.sh
+runtime/6981737/Test6981737.java
+runtime/7110720/Test7110720.sh
+runtime/7162488/Test7162488.sh
+runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java
+runtime/CDSCompressedKPtrs/CDSCompressedKPtrsError.java
+runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java
+runtime/ClassFile/UnsupportedClassFileVersion.java
+runtime/CommandLine/PrintFlagsUintxTest.java
+runtime/CommandLine/TraceExceptionsTest.java
+runtime/CommandLine/UnrecognizedVMOption.java
+runtime/CommandLine/VMOptionWarning.java
+runtime/CompressedOops/CompressedClassPointers.java
+runtime/containers/cgroup/PlainRead.java
+runtime/containers/docker/TestCPUSets.java
+runtime/containers/docker/TestCPUAwareness.java
+runtime/containers/docker/TestMemoryAwareness.java
+runtime/contended/Options.java
+runtime/InternalApi/ThreadCpuTimesDeadlock.java
+runtime/InitialThreadOverflow/testme.sh
+runtime/containers/docker/TestMisc.java
+runtime/invokedynamic/BootstrapMethodErrorTest.java
+runtime/Metaspace/MaxMetaspaceSizeTest.java
+runtime/NMT/AutoshutdownNMT.java
+runtime/NMT/ChangeTrackingLevel.java
+runtime/NMT/JcmdBaselineDetail.java
+runtime/NMT/JcmdDetailDiff.java
+runtime/NMT/JcmdSummaryDiff.java
+runtime/NMT/MallocSiteTypeChange.java
+runtime/NMT/MallocStressTest.java
+runtime/NMT/NMTWithCDS.java
+runtime/NMT/ShutdownTwice.java
+runtime/NMT/SummaryAfterShutdown.java
+runtime/NMT/ThreadedVirtualAllocTestType.java
+runtime/NMT/VirtualAllocCommitUncommitRecommit.java
+runtime/NMT/VirtualAllocTestType.java
+runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java
+runtime/SharedArchiveFile/CdsSameObjectAlignment.java
+runtime/SharedArchiveFile/LimitSharedSizes.java
+runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java
+runtime/SharedArchiveFile/SharedArchiveFile.java
+runtime/SharedArchiveFile/SharedBaseAddress.java
+runtime/SharedArchiveFile/SpaceUtilizationCheck.java
+serviceability/dcmd/ClassLoaderStatsTest.java
+serviceability/ParserTest.java
+testlibrary_tests/whitebox/vm_flags/DoubleTest.java
+testlibrary_tests/whitebox/vm_flags/IntxTest.java
+testlibrary_tests/TestMutuallyExclusivePlatformPredicates.java
+vmTestbase/nsk/jdb/monitor/monitor002/monitor002.java
+
+compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnUnsupportedCPU.java
+compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnUnsupportedCPU.java
+compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnUnsupportedCPU.java
+compiler/intrinsics/sha/cli/TestUseSHAOptionOnUnsupportedCPU.java
+runtime/containers/docker/DockerBasicTest.java
diff --git a/cvm/conf/jtreg_jdk8_excludes.list b/cvm/conf/jtreg_jdk8_excludes.list
new file mode 100644
index 00000000000..a9a21e03e21
--- /dev/null
+++ b/cvm/conf/jtreg_jdk8_excludes.list
@@ -0,0 +1,782 @@
+java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html
+java/awt/Choice/NonFocusablePopupMenuTest/NonFocusablePopupMenuTest.html
+java/awt/Choice/PopdownGeneratesMouseEvents/PopdownGeneratesMouseEvents.html
+java/awt/Choice/PopupPosTest/PopupPosTest.html
+java/awt/Choice/SelectCurrentItemTest/SelectCurrentItemTest.html
+java/awt/Component/F10TopToplevel/F10TopToplevel.html
+java/awt/Component/UpdatingBootTime/UpdatingBootTime.html
+java/awt/Cursor/CursorOverlappedPanelsTest/CursorOverlappedPanelsTest.java
+java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java
+java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.html
+java/awt/datatransfer/HTMLDataFlavors/ManualHTMLDataFlavorTest.html
+java/awt/datatransfer/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html
+java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html
+java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html
+java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html
+java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html
+java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.html
+java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.html
+java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html
+java/awt/dnd/NoFormatsCrashTest/NoFormatsCrashTest.html
+java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html
+java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.html
+java/awt/dnd/URLDragTest/URLDragTest.html
+java/awt/event/ComponentEvent/MovedResizedTardyEventTest/MovedResizedTardyEventTest.html
+java/awt/event/KeyEvent/AcceleratorTest/AcceleratorTest.html
+java/awt/event/KeyEvent/KeyReleasedInAppletTest/KeyReleasedInAppletTest.html
+java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html
+java/awt/event/MouseEvent/AWTPanelSmoothWheel/AWTPanelSmoothWheel.html
+java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.html
+java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.html
+java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.html
+java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.html
+java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.html
+java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.html
+java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.html
+java/awt/event/SequencedEvent/MultipleContextsFunctionalTest.java
+java/awt/FileDialog/FileDialogForDirectories/FileDialogForDirectories.html
+java/awt/FileDialog/FileDialogForPackages/FileDialogForPackages.html
+java/awt/FileDialog/FileDialogReturnTest/FileDialogReturnTest.html
+java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html
+java/awt/FileDialog/FileNameOverrideTest/FileNameOverrideTest.html
+java/awt/FileDialog/MultipleMode/MultipleMode.html
+java/awt/FileDialog/RegexpFilterTest/RegexpFilterTest.html
+java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.html
+java/awt/Focus/8044614/bug8044614.java
+java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html
+java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html
+java/awt/Focus/ChildWindowFocusTest/ChildWindowFocusTest.html
+java/awt/Focus/DeiconifiedFrameLoosesFocus/DeiconifiedFrameLoosesFocus.html
+java/awt/Focus/DisposedWindow/DisposeDialogNotActivateOwnerTest/DisposeDialogNotActivateOwnerTest.html
+java/awt/Focus/FocusSubRequestTest/FocusSubRequestTest.html
+java/awt/Focus/ModalBlockedStealsFocusTest/ModalBlockedStealsFocusTest.html
+java/awt/Focus/ModalDialogInitialFocusTest/ModalDialogInitialFocusTest.html
+java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.html
+java/awt/Focus/MouseClickRequestFocusRaceTest/MouseClickRequestFocusRaceTest.html
+java/awt/Focus/NonFocusableBlockedOwnerTest/NonFocusableBlockedOwnerTest.html
+java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html
+java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.html
+java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.html
+java/awt/FontClass/CreateFont/bigfont.html
+java/awt/Frame/DisposeStressTest/DisposeStressTest.html
+java/awt/Frame/FrameStateTest/FrameStateTest.html
+java/awt/Frame/InitialMaximizedTest/InitialMaximizedTest.html
+java/awt/Frame/NonEDT_GUI_DeadlockTest/NonEDT_GUI_Deadlock.html
+java/awt/Frame/ShownOnPack/ShownOnPack.html
+java/awt/grab/MenuDragEvents/MenuDragEvents.html
+java/awt/Graphics/DrawLineTest.java
+java/awt/GridBagLayout/GridBagLayoutIpadXYTest/GridBagLayoutIpadXYTest.html
+java/awt/im/4959409/bug4959409.html
+java/awt/im/8041990/bug8041990.java
+java/awt/im/8132503/bug8132503.java
+java/awt/im/8148984/bug8148984.java
+java/awt/im/8154816/bug8154816.java
+java/awt/im/JTextFieldTest.java
+java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java
+java/awt/InputMethods/InputMethodsTest/InputMethodsTest.java
+java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java
+java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeForModalDialogTest/ConsumeForModalDialogTest.html
+java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeNextMnemonicKeyTypedTest.html
+java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html
+java/awt/KeyboardFocusmanager/TypeAhead/MenuItemActivatedTest/MenuItemActivatedTest.html
+java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.html
+java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html
+java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.html
+java/awt/List/FocusEmptyListTest/FocusEmptyListTest.html
+java/awt/List/KeyEventsTest/KeyEventsTest.html
+java/awt/List/MouseDraggedOutCauseScrollingTest/MouseDraggedOutCauseScrollingTest.html
+java/awt/List/SetFontTest/SetFontTest.html
+java/awt/Modal/PrintDialogsTest/PrintDialogsTest.java
+java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.html
+java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html
+java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.html
+java/awt/print/bug8023392/bug8023392.html
+java/awt/print/Dialog/RestoreActiveWindowTest/RestoreActiveWindowTest.html
+java/awt/print/Dialog/PrintApplet.java
+java/awt/print/PageFormat/SetOrient.html
+java/awt/print/PrinterJob/PrinterDialogsModalityTest/PrinterDialogsModalityTest.html
+java/awt/TextArea/SelectionVisible/SelectionVisible.html
+java/awt/TextArea/TextAreaCursorTest/HoveringAndDraggingTest.html
+java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.html
+java/awt/TextField/SelectionVisible/SelectionVisible.html
+java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh
+java/awt/TrayIcon/AddPopupAfterShowTest/AddPopupAfterShowTest.html
+java/awt/TrayIcon/ShowAfterDisposeTest/ShowAfterDisposeTest.html
+java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.html
+com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java
+com/sun/awt/Translucency/WindowOpacity.java
+com/sun/java/swing/plaf/windows/8016551/bug8016551.java
+java/awt/BasicStroke/DashOffset.java
+java/awt/BasicStroke/DashScaleMinWidth.java
+java/awt/BasicStroke/DashZeroWidth.java
+java/awt/Choice/ChoiceLocationTest/ChoiceLocationTest.java
+java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java
+java/awt/Choice/DragMouseOutAndRelease/DragMouseOutAndRelease.java
+java/awt/Choice/GrabLockTest/GrabLockTest.java
+java/awt/Choice/ItemStateChangeTest/ItemStateChangeTest.java
+java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java
+java/awt/Choice/ResizeAutoClosesChoice/ResizeAutoClosesChoice.java
+java/awt/Choice/UnfocusableCB_ERR/UnfocusableCB_ERR.java
+java/awt/Component/7097771/bug7097771.java
+java/awt/Component/CompEventOnHiddenComponent/CompEventOnHiddenComponent.java
+java/awt/Component/DimensionEncapsulation/DimensionEncapsulation.java
+java/awt/Component/InsetsEncapsulation/InsetsEncapsulation.java
+java/awt/Component/isLightweightCrash/IsLightweightCrash.java
+java/awt/Component/NativeInLightShow/NativeInLightShow.java
+java/awt/Component/NoUpdateUponShow/NoUpdateUponShow.java
+java/awt/Component/PaintAll/PaintAll.java
+java/awt/Component/PrintAllXcheckJNI/PrintAllXcheckJNI.java
+java/awt/Component/Revalidate/Revalidate.java
+java/awt/Component/SetEnabledPerformance/SetEnabledPerformance.java
+java/awt/Component/TreeLockDeadlock/TreeLockDeadlock.java
+java/awt/ComponentOrientation/BorderTest.java
+java/awt/ComponentOrientation/FlowTest.java
+java/awt/ComponentOrientation/WindowTest.java
+java/awt/Container/CheckZOrderChange/CheckZOrderChange.java
+java/awt/Container/ContainerAIOOBE/ContainerAIOOBE.java
+java/awt/Container/isRemoveNotifyNeeded/JInternalFrameTest.java
+java/awt/Container/MoveToOtherScreenTest/MoveToOtherScreenTest.java
+java/awt/Container/ValidateRoot/InvalidateMustRespectValidateRoots.java
+java/awt/datatransfer/Clipboard/GetContentsInterruptedTest.java
+java/awt/datatransfer/ClipboardInterVMTest/ClipboardInterVMTest.java
+java/awt/datatransfer/CustomClassLoaderTransferTest/CustomClassLoaderTransferTest.java
+java/awt/datatransfer/DataFlavor/NullDataFlavorTest.java
+java/awt/datatransfer/DragImage/MultiResolutionDragImageTest.java
+java/awt/datatransfer/ImageTransfer/ImageTransferTest.java
+java/awt/datatransfer/Independence/IndependenceAWTTest.java
+java/awt/datatransfer/Independence/IndependenceSwingTest.java
+java/awt/datatransfer/SystemSelection/SystemSelectionAWTTest.java
+java/awt/datatransfer/SystemSelection/SystemSelectionSwingTest.java
+java/awt/Desktop/DesktopGtkLoadTest/DesktopGtkLoadTest.java
+java/awt/Dialog/CrashXCheckJni/CrashXCheckJni.java
+java/awt/Dialog/DialogOverflowSizeTest/DialogSizeOverflowTest.java
+java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java
+java/awt/Dialog/NonResizableDialogSysMenuResize/NonResizableDialogSysMenuResize.java
+java/awt/Dialog/ValidateOnShow/ValidateOnShow.java
+java/awt/dnd/AcceptDropMultipleTimes/AcceptDropMultipleTimes.java
+java/awt/dnd/Button2DragTest/Button2DragTest.java
+java/awt/dnd/DisposeFrameOnDragCrash/DisposeFrameOnDragTest.java
+java/awt/dnd/DragSourceListenerSerializationTest/DragSourceListenerSerializationTest.java
+java/awt/dnd/DropTargetEnterExitTest/ExtraDragEnterTest.java
+java/awt/dnd/DropTargetEnterExitTest/MissedDragExitTest.java
+java/awt/dnd/ImageTransferTest/ImageTransferTest.java
+java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java
+java/awt/event/ComponentEvent/TextAreaTextEventTest.java
+java/awt/event/HierarchyEvent/AncestorResized/AncestorResized.java
+java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java
+java/awt/event/InputEvent/EventWhenTest/EventWhenTest.java
+java/awt/event/KeyEvent/AltCharAcceleratorTest/AltCharAcceleratorTest.java
+java/awt/event/KeyEvent/CorrectTime/CorrectTime.java
+java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java
+java/awt/event/KeyEvent/KeyChar/KeyCharTest.java
+java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java
+java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java
+java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java
+java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java
+java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java
+java/awt/event/MouseEvent/DisabledComponents/DisabledComponentsTest.java
+java/awt/event/MouseEvent/EventTimeInFuture/EventTimeInFuture.java
+java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java
+java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter_1.java
+java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter_2.java
+java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter_3.java
+java/awt/event/MouseEvent/SpuriousExitEnter/SpuriousExitEnter.java
+java/awt/event/MouseWheelEvent/DisabledComponent/DisabledComponent.java
+java/awt/event/MouseWheelEvent/WheelModifier/MouseWheelOnBackgroundComponent.java
+java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java
+java/awt/event/OtherEvents/UngrabID/UngrabID.java
+java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java
+java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.html
+java/awt/EventDispatchThread/PreserveDispathThread/PreserveDispatchThread.java
+java/awt/EventQueue/PushPopDeadlock2/PushPopTest.java
+java/awt/FileDialog/DefaultFocusOwner/DefaultFocusOwner.java
+java/awt/Focus/6378278/InputVerifierTest.java
+java/awt/Focus/6382144/EndlessLoopTest.java
+java/awt/Focus/6401036/InputVerifierTest2.java
+java/awt/Focus/6981400/Test1.java
+java/awt/Focus/6981400/Test2.java
+java/awt/Focus/6981400/Test3.java
+java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java
+java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowRetaining.java
+java/awt/Focus/ChoiceFocus/ChoiceFocus.java
+java/awt/Focus/ClearGlobalFocusOwnerTest/ClearGlobalFocusOwnerTest.java
+java/awt/Focus/ClearLwQueueBreakTest/ClearLwQueueBreakTest.java
+java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java
+java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java
+java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java
+java/awt/Focus/FocusEmbeddedFrameTest/FocusEmbeddedFrameTest.java
+java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java
+java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java
+java/awt/Focus/FocusTraversalPolicy/InitialFTP.java
+java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java
+java/awt/Focus/FrameJumpingToMouse/FrameJumpingToMouse.java
+java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java
+java/awt/Focus/IconifiedFrameFocusChangeTest/IconifiedFrameFocusChangeTest.java
+java/awt/Focus/InputVerifierTest3/InputVerifierTest3.java
+java/awt/Focus/KeyEventForBadFocusOwnerTest/KeyEventForBadFocusOwnerTest.java
+java/awt/Focus/ModalDialogActivationTest/ModalDialogActivationTest.java
+java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java
+java/awt/Focus/NonFocusableResizableTooSmall/NonFocusableResizableTooSmall.java
+java/awt/Focus/NonFocusableWindowTest/NoEventsTest.java
+java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java
+java/awt/Focus/NullActiveWindowOnFocusLost/NullActiveWindowOnFocusLost.java
+java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java
+java/awt/Focus/RemoveAfterRequest/RemoveAfterRequest.java
+java/awt/Focus/RequestFocusAndHideTest/RequestFocusAndHideTest.java
+java/awt/Focus/RequestFocusToDisabledCompTest/RequestFocusToDisabledCompTest.java
+java/awt/Focus/RequestOnCompWithNullParent/RequestOnCompWithNullParent1.java
+java/awt/Focus/ResetMostRecentFocusOwnerTest/ResetMostRecentFocusOwnerTest.java
+java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java
+java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java
+java/awt/Focus/WindowIsFocusableAccessByThreadsTest/WindowIsFocusableAccessByThreadsTest.java
+java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java
+java/awt/font/Rotate/Shear.java
+java/awt/font/Underline/UnderlineTest.java
+java/awt/Frame/7024749/bug7024749.java
+java/awt/Frame/DynamicLayout/DynamicLayout.java
+java/awt/Frame/FrameLocation/FrameLocation.java
+java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java
+java/awt/Frame/FrameSetSizeStressTest/FrameSetSizeStressTest.java
+java/awt/Frame/FrameSize/TestFrameSize.java
+java/awt/Frame/GetBoundsResizeTest/GetBoundsResizeTest.java
+java/awt/Frame/HideMaximized/HideMaximized.java
+java/awt/Frame/HugeFrame/HugeFrame.java
+java/awt/Frame/InvisibleOwner/InvisibleOwner.java
+java/awt/Frame/LayoutOnMaximizeTest/LayoutOnMaximizeTest.java
+java/awt/Frame/MaximizedNormalBoundsUndecoratedTest/MaximizedNormalBoundsUndecoratedTest.java
+java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java
+java/awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java
+java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java
+java/awt/Frame/MiscUndecorated/ActiveAWTWindowTest.java
+java/awt/Frame/MiscUndecorated/ActiveSwingWindowTest.java
+java/awt/Frame/MiscUndecorated/FrameCloseTest.java
+java/awt/Frame/MiscUndecorated/RepaintTest.java
+java/awt/Frame/MiscUndecorated/UndecoratedInitiallyIconified.java
+java/awt/Frame/ResizeAfterSetFont/ResizeAfterSetFont.java
+java/awt/Frame/ShownOffScreenOnWin98/ShownOffScreenOnWin98Test.java
+java/awt/Frame/SlideNotResizableTest/SlideNotResizableTest.java
+java/awt/Frame/UnfocusableMaximizedFrameResizablity/UnfocusableMaximizedFrameResizablity.java
+java/awt/FullScreen/8013581/bug8013581.java
+java/awt/FullScreen/AltTabCrashTest/AltTabCrashTest.java
+java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java
+java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java
+java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java
+java/awt/FullScreen/MultimonFullscreenTest/MultimonDeadlockTest.java
+java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java
+java/awt/FullScreen/NonExistentDisplayModeTest/NonExistentDisplayModeTest.java
+java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java
+java/awt/FullScreen/SetFSWindow/FSFrame.java
+java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java
+java/awt/GradientPaint/GradientTransformTest.java
+java/awt/GradientPaint/LinearColorSpaceGradientTest.java
+java/awt/Graphics/LineClipTest.java
+java/awt/Graphics2D/DrawString/DrawStrSuper.java
+java/awt/Graphics2D/DrawString/LCDTextSrcEa.java
+java/awt/Graphics2D/DrawString/ScaledLCDTextMetrics.java
+java/awt/Graphics2D/DrawString/TextRenderingTest.java
+java/awt/Graphics2D/DrawString/XRenderElt254TextTest.java
+java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java
+java/awt/Graphics2D/FlipDrawImage/FlipDrawImage.java
+java/awt/Graphics2D/TransformSetGet/TransformSetGet.java
+java/awt/GraphicsConfiguration/NormalizingTransformTest/NormalizingTransformTest.java
+java/awt/GraphicsDevice/CheckDisplayModes.java
+java/awt/GraphicsDevice/CloneConfigsTest.java
+java/awt/GraphicsDevice/IncorrectDisplayModeExitFullscreen.java
+java/awt/GraphicsEnvironment/LoadLock/GE_init3.java
+java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java
+java/awt/im/InputContext/bug4625203.java
+java/awt/im/InputContext/InputContextTest.java
+java/awt/im/InputContext/ReconnectTest.java
+java/awt/im/memoryleak/InputContextMemoryLeakTest.java
+java/awt/image/DrawImage/EABlitTest.java
+java/awt/image/DrawImage/IncorrectAlphaConversionBicubic.java
+java/awt/image/DrawImage/IncorrectAlphaSurface2SW.java
+java/awt/image/DrawImage/IncorrectBounds.java
+java/awt/image/DrawImage/IncorrectClipSurface2SW.java
+java/awt/image/DrawImage/IncorrectClipXorModeSurface2Surface.java
+java/awt/image/DrawImage/IncorrectClipXorModeSW2Surface.java
+java/awt/image/DrawImage/IncorrectDestinationOffset.java
+java/awt/image/DrawImage/IncorrectManagedImageSourceOffset.java
+java/awt/image/DrawImage/IncorrectOffset.java
+java/awt/image/DrawImage/IncorrectSourceOffset.java
+java/awt/image/DrawImage/IncorrectUnmanagedImageRotatedClip.java
+java/awt/image/DrawImage/IncorrectUnmanagedImageSourceOffset.java
+java/awt/image/DrawImage/SimpleManagedImage.java
+java/awt/image/DrawImage/SimpleUnmanagedImage.java
+java/awt/image/DrawImage/UnmanagedDrawImagePerformance.java
+java/awt/image/MemoryLeakTest/MemoryLeakTest.java
+java/awt/image/VolatileImage/BitmaskVolatileImage.java
+java/awt/image/VolatileImage/VolatileImageBug.java
+java/awt/Insets/CombinedTestApp1.java
+java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java
+java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogButtonTest/EnqueueWithDialogButtonTest.java
+java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogTest/EnqueueWithDialogTest.java
+java/awt/KeyboardFocusmanager/TypeAhead/FreezeTest/FreezeTest.java
+java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java
+java/awt/List/ActionAfterRemove/ActionAfterRemove.java
+java/awt/List/ListFlickers/ListFlickers.java
+java/awt/List/ListGarbageCollectionTest/AwtListGarbageCollectionTest.java
+java/awt/List/ListPeer/R2303044ListSelection.java
+java/awt/List/NofocusListDblClickTest/NofocusListDblClickTest.java
+java/awt/List/ScrollOutside/ScrollOut.java
+java/awt/List/SingleModeDeselect/SingleModeDeselect.java
+java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java
+java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java
+java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java
+java/awt/MenuBar/MenuBarSetFont/MenuBarSetFont.java
+java/awt/MenuBar/RemoveHelpMenu/RemoveHelpMenu.java
+java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java
+java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java
+java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java
+java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java
+java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java
+java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java
+java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java
+java/awt/Mixing/AWT_Mixing/JInternalFrameOverlapping.java
+java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java
+java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JListOverlapping.java
+java/awt/Mixing/AWT_Mixing/JMenuBarOverlapping.java
+java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java
+java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java
+java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java
+java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java
+java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java
+java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java
+java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTableOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java
+java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java
+java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java
+java/awt/Mixing/AWT_Mixing/MixingFrameResizing.java
+java/awt/Mixing/AWT_Mixing/MixingPanelsResizing.java
+java/awt/Mixing/AWT_Mixing/OpaqueOverlapping.java
+java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java
+java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java
+java/awt/Mixing/HWDisappear.java
+java/awt/Mixing/JButtonInGlassPane.java
+java/awt/Mixing/LWComboBox.java
+java/awt/Mixing/LWPopupMenu.java
+java/awt/Mixing/MixingInHwPanel.java
+java/awt/Mixing/MixingOnDialog.java
+java/awt/Mixing/MixingOnShrinkingHWButton.java
+java/awt/Mixing/NonOpaqueInternalFrame.java
+java/awt/Mixing/OpaqueTest.java
+java/awt/Mixing/OverlappingButtons.java
+java/awt/Mixing/setComponentZOrder.java
+java/awt/Mixing/Validating.java
+java/awt/Mixing/ValidBounds.java
+java/awt/Modal/LWModalTest/LWModalTest.java
+java/awt/Modal/ModalDialogMultiscreenTest/ModalDialogMultiscreenTest.java
+java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java
+java/awt/Modal/ModalitySettingsTest/ModalitySettingsTest.java
+java/awt/Modal/MultipleDialogs/MultipleDialogs1Test.java
+java/awt/Modal/MultipleDialogs/MultipleDialogs2Test.java
+java/awt/Modal/MultipleDialogs/MultipleDialogs3Test.java
+java/awt/Modal/MultipleDialogs/MultipleDialogs4Test.java
+java/awt/Modal/MultipleDialogs/MultipleDialogs5Test.java
+java/awt/Modal/NpeOnClose/NpeOnCloseTest.java
+java/awt/Modal/SupportedTest/SupportedTest.java
+java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java
+java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java
+java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java
+java/awt/Mouse/GetMousePositionTest/GetMousePositionWithOverlay.java
+java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java
+java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java
+java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java
+java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java
+java/awt/Mouse/RemovedComponentMouseListener/RemovedComponentMouseListener.java
+java/awt/MouseAdapter/MouseAdapterUnitTest/MouseAdapterUnitTest.java
+java/awt/MouseInfo/GetPointerInfoTest.java
+java/awt/MouseInfo/MultiscreenPointerInfo.java
+java/awt/MultipleGradientPaint/MultiGradientTest.java
+java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java
+java/awt/Multiscreen/MouseEventTest/MouseEventTest.java
+java/awt/Multiscreen/MultiScreenInsetsTest/MultiScreenInsetsTest.java
+java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java
+java/awt/Multiscreen/TranslucencyThrowsExceptionWhenFullScreen/TranslucencyThrowsExceptionWhenFullScreen.java
+java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java
+java/awt/Multiscreen/WPanelPeerPerf/WPanelPeerPerf.java
+java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java
+java/awt/Paint/ButtonRepaint.java
+java/awt/Paint/CheckboxRepaint.java
+java/awt/Paint/ExposeOnEDT.java
+java/awt/Paint/LabelRepaint.java
+java/awt/Paint/ListRepaint.java
+java/awt/Paint/RepaintOnAWTShutdown.java
+java/awt/print/Dialog/DestinationTest.java
+java/awt/print/Dialog/PrintDialog.java
+java/awt/print/PageFormat/CustomPaper.java
+java/awt/print/PageFormat/ImageableAreaTest.java
+java/awt/print/PageFormat/NullPaper.java
+java/awt/print/PageFormat/Orient.java
+java/awt/print/PageFormat/PageSetupDialog.java
+java/awt/print/PageFormat/ReverseLandscapeTest.java
+java/awt/print/PageFormat/WrongPaperForBookPrintingTest.java
+java/awt/print/PageFormat/WrongPaperPrintingTest.java
+java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java
+java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java
+java/awt/print/PrinterJob/CustomFont/CustomFont.java
+java/awt/print/PrinterJob/CustomPrintService/PrintDialog.java
+java/awt/print/PrinterJob/JobName/PrinterJobName.java
+java/awt/print/PrinterJob/Legal/PrintTest.java
+java/awt/print/PrinterJob/raster/RasterTest.java
+java/awt/print/PrinterJob/ScaledText/ScaledText.java
+java/awt/print/PrinterJob/SetCopies/Test.java
+java/awt/print/PrinterJob/ValidatePage/ValidatePage.java
+java/awt/print/PrinterJob/Collate2DPrintingTest.java
+java/awt/print/PrinterJob/CompareImageable.java
+java/awt/print/PrinterJob/DlgAttrsBug.java
+java/awt/print/PrinterJob/DrawImage.java
+java/awt/print/PrinterJob/DrawStringMethods.java
+java/awt/print/PrinterJob/InvalidPage.java
+java/awt/print/PrinterJob/LinearGradientPrintingTest.java
+java/awt/print/PrinterJob/Margins.java
+java/awt/print/PrinterJob/NumCopies.java
+java/awt/print/PrinterJob/PageDialogMarginTest.java
+java/awt/print/PrinterJob/PageDlgApp.java
+java/awt/print/PrinterJob/PageDlgPrnButton.java
+java/awt/print/PrinterJob/PageDlgStackOverflowTest.java
+java/awt/print/PrinterJob/PrintAttributeUpdateTest.java
+java/awt/print/PrinterJob/PrintAWTImage.java
+java/awt/print/PrinterJob/PrintCompoundString.java
+java/awt/print/PrinterJob/PrintDialog.java
+java/awt/print/PrinterJob/PrintDialogCancel.java
+java/awt/print/PrinterJob/PrinterJobDialogBugDemo.java
+java/awt/print/PrinterJob/PrintImage.java
+java/awt/print/PrinterJob/PrintNullString.java
+java/awt/print/PrinterJob/PrintParenString.java
+java/awt/print/PrinterJob/PrintRotatedText.java
+java/awt/print/PrinterJob/PrintToDir.java
+java/awt/print/PrinterJob/PrintTranslatedFont.java
+java/awt/print/PrinterJob/PrintVolatileImage.java
+java/awt/print/PrinterJob/RadialGradientPrintingTest.java
+java/awt/print/PrinterJob/SecurityDialogTest.java
+java/awt/print/PrinterJob/TexturePaintPrintingTest.java
+java/awt/print/PrinterJob/ThinLines.java
+java/awt/PrintJob/EdgeTest/EdgeTest.java
+java/awt/PrintJob/MultipleEnd/MultipleEnd.java
+java/awt/PrintJob/PrintArcTest/PrintArcTest.java
+java/awt/PrintJob/QuoteAndBackslashTest/QuoteAndBackslashTest.java
+java/awt/PrintJob/RoundedRectTest/RoundedRectTest.java
+java/awt/PrintJob/Security/SecurityDialogTest.java
+java/awt/Robot/AcceptExtraMouseButtons/AcceptExtraMouseButtons.java
+java/awt/Robot/CheckCommonColors/CheckCommonColors.java
+java/awt/Robot/CtorTest/CtorTest.java
+java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java
+java/awt/Robot/RobotExtraButton/RobotExtraButton.java
+java/awt/Robot/NonEmptyErrorStream.java
+java/awt/ScrollPane/ScrollPanePreferredSize/ScrollPanePreferredSize.java
+java/awt/ScrollPane/bug8077409Test.java
+java/awt/security/Permissions.java
+java/awt/SplashScreen/MultiResolutionSplash/MultiResolutionSplashTest.java
+java/awt/TextArea/Mixing/TextAreaMixing.java
+java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java
+java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java
+java/awt/TextArea/ScrollbarIntersectionTest/ScrollbarIntersectionTest.java
+java/awt/TextArea/TextAreaEditing/TextAreaEditing.java
+java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java
+java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java
+java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java
+java/awt/Toolkit/DisplayChangesException/DisplayChangesException.java
+java/awt/Toolkit/DynamicLayout/bug7172833.java
+java/awt/Toolkit/RealSync/RealSyncOnEDT.java
+java/awt/Toolkit/ScreenInsetsTest/ScreenInsetsTest.java
+java/awt/Toolkit/SecurityTest/SecurityTest2.java
+java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java
+java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java
+java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java
+java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java
+java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java
+java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java
+java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java
+java/awt/TrayIcon/DragEventSource/DragEventSource.java
+java/awt/TrayIcon/MouseMovedTest/MouseMovedTest.java
+java/awt/Window/8027025/Test8027025.java
+java/awt/Window/AlwaysOnTop/AlwaysOnTopEvenOfWindow.java
+java/awt/Window/AlwaysOnTop/AutoTestOnTop.java
+java/awt/Window/AlwaysOnTop/SyncAlwaysOnTopFieldTest.java
+java/awt/Window/AlwaysOnTop/TestAlwaysOnTopBeforeShow.java
+java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java
+java/awt/Window/GetWindowsTest/GetWindowsTest.java
+java/awt/Window/Grab/GrabTest.java
+java/awt/Window/GrabSequence/GrabSequence.java
+java/awt/Window/LocationByPlatform/LocationByPlatformTest.java
+java/awt/Window/MaximizeOffscreen/MaximizeOffscreenTest.java
+java/awt/Window/OwnedWindowsLeak/OwnedWindowsLeak.java
+java/awt/Window/OwnedWindowsSerialization/OwnedWindowsSerialization.java
+java/awt/Window/PropertyChangeListenerLockSerialization/PropertyChangeListenerLockSerialization.java
+java/awt/Window/SetBackgroundNPE/SetBackgroundNPE.java
+java/awt/Window/setLocRelativeTo/SetLocationRelativeToTest.java
+java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java
+java/awt/Window/ShapedAndTranslucentWindows/SetShape.java
+java/awt/Window/ShapedAndTranslucentWindows/SetShapeAndClick.java
+java/awt/Window/ShapedAndTranslucentWindows/SetShapeDynamicallyAndClick.java
+java/awt/Window/ShapedAndTranslucentWindows/Shaped.java
+java/awt/Window/ShapedAndTranslucentWindows/ShapedByAPI.java
+java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucent.java
+java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucentWindowClick.java
+java/awt/Window/ShapedAndTranslucentWindows/StaticallyShaped.java
+java/awt/Window/ShapedAndTranslucentWindows/Translucent.java
+java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java
+java/awt/Window/ShapedAndTranslucentWindows/TranslucentWindowClick.java
+java/awt/Window/TopLevelLocation/TopLevelLocation.java
+java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
+java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java
+java/awt/Window/WindowClosedEvents/WindowClosedEventOnDispose.java
+java/awt/Window/WindowGCInFullScreen/WindowGCInFullScreen.java
+java/awt/Window/WindowType/WindowType.java
+java/awt/xembed/server/RunTestXEmbed.java
+java/awt/xembed/server/TestXEmbedServerJava.java
+java/beans/XMLEncoder/java_awt_ScrollPane.java
+java/util/TimeZone/DefaultTimeZoneTest.java
+javax/accessibility/6192422/bug6192422.java
+javax/accessibility/JList/AccessibleJListChildNPETest.java
+javax/imageio/plugins/jpeg/JPEGsNotAcceleratedTest.java
+javax/imageio/AppletResourceTest.java
+javax/print/applet/AppletPrintLookup.sh
+javax/print/DialogMargins.java
+javax/sound/midi/MidiSystem/6411624/Test6411624.java
+javax/sound/sampled/Lines/ClickInPlay/Test4218609.java
+javax/sound/sampled/Mixers/DirectSoundRepeatingBuffer/Test4997635.java
+javax/sound/sampled/Mixers/DirectSoundUnderrunSilence/Test5032020.java
+javax/swing/AncestorNotifier/7193219/bug7193219.java
+javax/swing/border/Test4129681.java
+javax/swing/border/Test4243289.java
+javax/swing/border/Test4247606.java
+javax/swing/border/Test4252164.java
+javax/swing/border/Test4760089.java
+javax/swing/border/Test6910490.java
+javax/swing/dnd/7171812/bug7171812.java
+javax/swing/JButton/JButtonPaintNPE/JButtonPaintNPE.java
+javax/swing/JCheckBox/4449413/bug4449413.java
+javax/swing/JCheckBox/8032667/bug8032667.java
+javax/swing/JColorChooser/8065098/bug8065098.java
+javax/swing/JColorChooser/Test4177735.java
+javax/swing/JColorChooser/Test4222508.java
+javax/swing/JColorChooser/Test4234761.java
+javax/swing/JColorChooser/Test4319113.java
+javax/swing/JColorChooser/Test4759306.java
+javax/swing/JColorChooser/Test4759934.java
+javax/swing/JColorChooser/Test4887836.java
+javax/swing/JColorChooser/Test6348456.java
+javax/swing/JColorChooser/Test6524757.java
+javax/swing/JColorChooser/Test6559154.java
+javax/swing/JColorChooser/Test6707406.java
+javax/swing/JColorChooser/Test6977726.java
+javax/swing/JComboBox/4199622/bug4199622.java
+javax/swing/JComboBox/4515752/DefaultButtonTest.java
+javax/swing/JComboBox/4523758/bug4523758.java
+javax/swing/JComboBox/6236162/bug6236162.java
+javax/swing/JComboBox/6559152/bug6559152.java
+javax/swing/JComboBox/7195179/Test7195179.java
+javax/swing/JComboBox/8019180/Test8019180.java
+javax/swing/JComboBox/ConsumedKeyTest/ConsumedKeyTest.java
+javax/swing/JComponent/4337267/bug4337267.java
+javax/swing/JComponent/6683775/bug6683775.java
+javax/swing/JComponent/8043610/bug8043610.java
+javax/swing/JDialog/WrongBackgroundColor/WrongBackgroundColor.java
+javax/swing/JFileChooser/4150029/bug4150029.html
+javax/swing/JFileChooser/6396844/TwentyThousandTest.java
+javax/swing/JFileChooser/6489130/bug6489130.java
+javax/swing/JFileChooser/6520101/bug6520101.java
+javax/swing/JFileChooser/6698013/bug6698013.java
+javax/swing/JFileChooser/6798062/bug6798062.java
+javax/swing/JFileChooser/8013442/Test8013442.java
+javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.html
+javax/swing/JFrame/4962534/bug4962534.html
+javax/swing/JFrame/8255880/RepaintOnFrameIconifiedStateChangeTest.java
+javax/swing/JFrame/HangNonVolatileBuffer/HangNonVolatileBuffer.java
+javax/swing/JInternalFrame/4193219/IconCoord.java
+javax/swing/JInternalFrame/4251301/bug4251301.java
+javax/swing/JInternalFrame/6726866/bug6726866.java
+javax/swing/JLabel/7004134/bug7004134.java
+javax/swing/JLayer/6824395/bug6824395.java
+javax/swing/JLayer/6872503/bug6872503.java
+javax/swing/JMenu/6470128/bug6470128.java
+javax/swing/JMenu/8071705/bug8071705.java
+javax/swing/JMenu/8072900/WrongSelectionOnMouseOver.java
+javax/swing/JMenuBar/4750590/bug4750590.java
+javax/swing/JMenuBar/MisplacedBorder/MisplacedBorder.java
+javax/swing/JMenuItem/4171437/bug4171437.java
+javax/swing/JMenuItem/6249972/bug6249972.java
+javax/swing/JMenuItem/7036148/bug7036148.java
+javax/swing/JMenuItem/8031573/bug8031573.java
+javax/swing/JOptionPane/4174551/bug4174551.java
+javax/swing/JOptionPane/6464022/bug6464022.java
+javax/swing/JOptionPane/8024926/bug8024926.java
+javax/swing/JPopupMenu/4458079/bug4458079.java
+javax/swing/JPopupMenu/4634626/bug4634626.java
+javax/swing/JPopupMenu/6580930/bug6580930.java
+javax/swing/JPopupMenu/6583251/bug6583251.java
+javax/swing/JPopupMenu/7160604/bug7160604.java
+javax/swing/JProgressBar/8161664/ProgressBarMemoryLeakTest.java
+javax/swing/JRadioButton/8033699/bug8033699.java
+javax/swing/JRadioButton/8041561/bug8041561.java
+javax/swing/JRadioButton/8075609/bug8075609.java
+javax/swing/JScrollBar/8039464/Test8039464.java
+javax/swing/JScrollBar/bug4202954/bug4202954.java
+javax/swing/JSlider/4987336/bug4987336.java
+javax/swing/JSlider/6524424/bug6524424.java
+javax/swing/JSlider/6587742/bug6587742.java
+javax/swing/JSlider/6742358/bug6742358.java
+javax/swing/JSlider/6794831/bug6794831.java
+javax/swing/JSlider/6918861/bug6918861.java
+javax/swing/JSlider/6923305/bug6923305.java
+javax/swing/JSpinner/4973721/bug4973721.java
+javax/swing/JSpinner/5012888/bug5012888.java
+javax/swing/JSpinner/6532833/bug6532833.java
+javax/swing/JSplitPane/4514858/bug4514858.java
+javax/swing/JSplitPane/4816114/bug4816114.java
+javax/swing/JSplitPane/4885629/bug4885629.java
+javax/swing/JTabbedPane/4310381/bug4310381.java
+javax/swing/JTabbedPane/4666224/bug4666224.html
+javax/swing/JTabbedPane/7024235/Test7024235.java
+javax/swing/JTable/6913768/bug6913768.java
+javax/swing/JTable/7188612/JTableAccessibleGetLocationOnScreen.java
+javax/swing/JTextArea/TextViewOOM/TextViewOOM.java
+javax/swing/JTextArea/Test6593649.java
+javax/swing/JTextField/8036819/bug8036819.java
+javax/swing/JTextPane/JTextPaneDocumentAlignment.java
+javax/swing/JTextPane/JTextPaneDocumentWrapping.java
+javax/swing/JTextPane/TestJTextPaneHTMLRendering.java
+javax/swing/JToolBar/4529206/bug4529206.java
+javax/swing/JToolTip/4644444/bug4644444.html
+javax/swing/JTree/4314199/bug4314199.java
+javax/swing/JTree/4633594/JTreeFocusTest.java
+javax/swing/JTree/8003400/Test8003400.java
+javax/swing/JTree/8038113/bug8038113.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucent.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentGradient.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentPerPixelTranslucentGradient.java
+javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentWindowClickSwing.java
+javax/swing/KeyboardManager/8013370/Test8013370.java
+javax/swing/MultiUIDefaults/4300666/bug4300666.java
+javax/swing/plaf/basic/BasicMenuUI/4983388/bug4983388.java
+javax/swing/plaf/basic/BasicScrollPaneUI/8166591/TooMuchWheelRotationEventsTest.java
+javax/swing/plaf/gtk/crash/RenderBadPictureCrash.java
+javax/swing/plaf/nimbus/8041642/bug8041642.java
+javax/swing/plaf/nimbus/8041725/bug8041725.java
+javax/swing/plaf/nimbus/Test6919629.java
+javax/swing/plaf/synth/SynthButtonUI/6276188/bug6276188.java
+javax/swing/plaf/synth/Test8015926.java
+javax/swing/Popup/TaskbarPositionTest.java
+javax/swing/PopupFactory/8048506/bug8048506.java
+javax/swing/RepaintManager/6608456/bug6608456.java
+javax/swing/SwingUtilities/7088744/bug7088744.java
+javax/swing/SwingUtilities/7146377/bug7146377.java
+javax/swing/SwingUtilities/7170657/bug7170657.java
+javax/swing/text/AbstractDocument/6968363/Test6968363.java
+javax/swing/text/FlowView/LayoutTest.java
+javax/swing/text/GlyphView/4984669/bug4984669.java
+javax/swing/text/html/8034955/bug8034955.java
+javax/swing/text/html/HTMLEditorKit/4242228/bug4242228.java
+javax/swing/text/html/parser/Parser/7165725/bug7165725.java
+javax/swing/text/html/TableView/7030332/bug7030332.java
+javax/swing/text/NavigationFilter/6735293/bug6735293.java
+javax/swing/text/StyledEditorKit/4506788/bug4506788.java
+javax/swing/text/Utilities/bug7045593.java
+javax/swing/text/View/8015853/bug8015853.java
+javax/swing/ToolTipManager/7123767/bug7123767.java
+javax/swing/ToolTipManager/JMenuItemToolTipKeyBindingsTest/JMenuItemToolTipKeyBindingsTest.java
+sun/awt/dnd/8024061/bug8024061.java
+sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html
+sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java
+sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java
+sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java
+sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java
+sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java
+sun/java2d/DirectX/OpaqueImageToSurfaceBlitTest/OpaqueImageToSurfaceBlitTest.java
+sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java
+sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java
+sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java
+sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java
+sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java
+sun/java2d/DirectX/DrawBitmaskToSurfaceTest.java
+sun/java2d/GdiRendering/InsetClipping.java
+sun/java2d/OpenGL/bug7181438.java
+sun/java2d/OpenGL/CopyAreaOOB.java
+sun/java2d/OpenGL/CustomCompositeTest.java
+sun/java2d/OpenGL/DrawBufImgOp.java
+sun/java2d/OpenGL/DrawHugeImageTest.java
+sun/java2d/OpenGL/GradientPaints.java
+sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java
+sun/java2d/pipe/hw/RSLContextInvalidationTest/RSLContextInvalidationTest.java
+sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java
+sun/java2d/pipe/MutableColorTest/MutableColorTest.java
+sun/java2d/pipe/InterpolationQualityTest.java
+sun/java2d/SunGraphics2D/CoordinateTruncationBug.java
+sun/java2d/SunGraphics2D/DrawImageBilinear.java
+sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java
+sun/java2d/SunGraphics2D/PolyVertTest.java
+sun/java2d/SunGraphics2D/SimplePrimQuality.java
+sun/java2d/X11SurfaceData/DrawImageBgTest/DrawImageBgTest.java
+sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh
+sun/java2d/AcceleratedXORModeTest.java
+sun/java2d/ClassCastExceptionForInvalidSurface.java
+sun/java2d/DrawCachedImageAndTransform.java
+sun/java2d/DrawXORModeTest.java
+sun/java2d/XRenderBlitsTest.java
+# Following tests are related to SecurityManager, ignore for now
+com/sun/management/DiagnosticCommandMBean/DcmdMBeanPermissionsTest.java
+java/lang/invoke/8022701/MHIllegalAccess.java
+java/lang/management/CompositeData/ThreadInfoCompositeData.java
+sun/security/tools/policytool/Alias.sh
+sun/security/tools/policytool/ChangeUI.sh
+sun/security/tools/policytool/OpenPolicy.sh
+sun/security/tools/policytool/SaveAs.sh
+sun/security/tools/policytool/UpdatePermissions.sh
+sun/security/tools/policytool/UsePolicy.sh
+sun/security/tools/policytool/i18n.sh
+# Ignore tests for hprof agent
+demo/jvmti/hprof/CpuOldTest.java
+demo/jvmti/hprof/CpuSamplesTest.java
+demo/jvmti/hprof/CpuTimesDefineClassTest.java
+demo/jvmti/hprof/CpuTimesTest.java
+demo/jvmti/hprof/HeapAllTest.java
+demo/jvmti/hprof/HeapBinaryFormatTest.java
+demo/jvmti/hprof/HeapDumpTest.java
+demo/jvmti/hprof/HeapSitesTest.java
+demo/jvmti/hprof/MonitorTest.java
+demo/jvmti/hprof/OptionsTest.java
+demo/jvmti/hprof/StackMapTableTest.java
+sun/tools/jhat/HatHeapDump1Test.java
+# Ignore for implementation difference between jdk8 and jdk17
+com/sun/jdi/BacktraceFieldTest.java
+com/sun/jdi/ClassesByName2Test.java
+com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java
+sun/tools/clhsdb/Basic.sh
+sun/tools/jinfo/Basic.sh
+sun/tools/jstat/jstatClassloadOutput1.sh
+# Ignore for bug of jdk8u
+com/sun/jdi/InterfaceMethodsTest.java
+jdk/lambda/vm/InterfaceAccessFlagsTest.java
+sun/tools/jps/TestJpsJarRelative.java
+
+# Following tests are due to implementation difference in JVM8 and 17. We may modify the
+# expected result in test cases to reflect the details, but for now just ignore them since it's not of high priority.
+
+# Problems need to be investigated later
+tools/javac/defaultMethods/Assertions.java
+tools/javac/Paths/Diagnostics.sh
+tools/javac/Paths/MineField.sh
+tools/jdeps/DotFileTest.java
diff --git a/hotspot/test/compiler/6859338/Test6859338.java b/hotspot/test/compiler/6859338/Test6859338.java
index 03d68126f66..73576840db1 100644
--- a/hotspot/test/compiler/6859338/Test6859338.java
+++ b/hotspot/test/compiler/6859338/Test6859338.java
@@ -27,7 +27,7 @@
* @bug 6859338
* @summary Assertion failure in sharedRuntime.cpp
*
- * @run main/othervm -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:-InlineObjectHash -Xbatch -XX:-ProfileInterpreter Test6859338
+ * @run main/othervm -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-InlineObjectHash -Xbatch -XX:-ProfileInterpreter Test6859338
*/
public class Test6859338 {
diff --git a/hotspot/test/compiler/7196199/Test7196199.java b/hotspot/test/compiler/7196199/Test7196199.java
index 6aa35369a31..8f0c520df0e 100644
--- a/hotspot/test/compiler/7196199/Test7196199.java
+++ b/hotspot/test/compiler/7196199/Test7196199.java
@@ -27,7 +27,7 @@
* @bug 7196199
* @summary java/text/Bidi/Bug6665028.java failed: Bidi run count incorrect
*
- * @run main/othervm/timeout=400 -Xmx32m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:CompileCommand=exclude,Test7196199.test -XX:+SafepointALot -XX:GuaranteedSafepointInterval=100 Test7196199
+ * @run main/othervm/timeout=400 -Xmx32m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:CompileCommand=exclude,Test7196199.test -XX:+SafepointALot -XX:GuaranteedSafepointInterval=100 Test7196199
*/
diff --git a/hotspot/test/compiler/8004741/Test8004741.java b/hotspot/test/compiler/8004741/Test8004741.java
index baacc34763d..7e64ff14d6e 100644
--- a/hotspot/test/compiler/8004741/Test8004741.java
+++ b/hotspot/test/compiler/8004741/Test8004741.java
@@ -25,8 +25,8 @@
* @test Test8004741.java
* @bug 8004741
* @summary Missing compiled exception handle table entry for multidimensional array allocation
- * @run main/othervm -Xmx64m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:+StressCompiledExceptionHandlers -XX:+SafepointALot -XX:GuaranteedSafepointInterval=100 Test8004741
- * @run main/othervm -Xmx64m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:+StressCompiledExceptionHandlers Test8004741
+ * @run main/othervm -Xmx64m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:+StressCompiledExceptionHandlers -XX:+SafepointALot -XX:GuaranteedSafepointInterval=100 Test8004741
+ * @run main/othervm -Xmx64m -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:+StressCompiledExceptionHandlers Test8004741
*/
import java.util.*;
diff --git a/hotspot/test/compiler/stable/StableConfiguration.java b/hotspot/test/compiler/stable/StableConfiguration.java
index aabb99cee0e..8cfc181bc69 100644
--- a/hotspot/test/compiler/stable/StableConfiguration.java
+++ b/hotspot/test/compiler/stable/StableConfiguration.java
@@ -36,9 +36,8 @@ public class StableConfiguration {
static {
Boolean value = WB.getBooleanVMFlag("FoldStableValues");
isStableEnabled = (value == null ? false : value);
- isServerWithStable = isStableEnabled && get();
+ isServerWithStable = isStableEnabled;
System.out.println("@Stable: " + (isStableEnabled ? "enabled" : "disabled"));
- System.out.println("Server Compiler: " + get());
}
// The method 'get' below returns true if the method is server compiled
diff --git a/hotspot/test/gc/arguments/TestAggressiveHeap.java b/hotspot/test/gc/arguments/TestAggressiveHeap.java
index c2ac3c0fc6c..8e11bcb196c 100644
--- a/hotspot/test/gc/arguments/TestAggressiveHeap.java
+++ b/hotspot/test/gc/arguments/TestAggressiveHeap.java
@@ -57,9 +57,10 @@ public static void main(String args[]) throws Exception {
// half of the required size instead.
private static final String heapSizeOption = "-Xmx128M";
- // bool UseParallelGC := true {product}
+ // JDK 8 used ':=' for ergonomic updates while the JDK 17 kernel prints
+ // '=' when the value originates from the command line.
private static final String parallelGCPattern =
- " *bool +UseParallelGC *:= *true +\\{product\\}";
+ " *bool +UseParallelGC +:?= *true +\\{product\\}.*";
private static void testFlag() throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
@@ -92,4 +93,3 @@ private static boolean canUseAggressiveHeapOption() throws Exception {
return true;
}
}
-
diff --git a/hotspot/test/gc/arguments/TestG1ConcRefinementThreads.java b/hotspot/test/gc/arguments/TestG1ConcRefinementThreads.java
index 1d73b1c74c6..2baabff85b2 100644
--- a/hotspot/test/gc/arguments/TestG1ConcRefinementThreads.java
+++ b/hotspot/test/gc/arguments/TestG1ConcRefinementThreads.java
@@ -41,22 +41,26 @@ public class TestG1ConcRefinementThreads {
public static void main(String args[]) throws Exception {
// default case
runG1ConcRefinementThreadsTest(
- new String[]{}, // automatically selected
- AUTO_SELECT_THREADS_COUNT /* use default setting */);
+ new String[]{},
+ AUTO_SELECT_THREADS_COUNT,
+ false);
- // zero setting case
+ // zero setting case: the JDK 17 kernel preserves the explicit zero instead
+ // of replacing it with the ergonomic ParallelGCThreads value.
runG1ConcRefinementThreadsTest(
- new String[]{"-XX:G1ConcRefinementThreads=0"}, // automatically selected
- AUTO_SELECT_THREADS_COUNT /* set to zero */);
+ new String[]{"-XX:G1ConcRefinementThreads=0"},
+ AUTO_SELECT_THREADS_COUNT,
+ true);
- // non-zero sestting case
+ // non-zero setting case
runG1ConcRefinementThreadsTest(
- new String[]{"-XX:G1ConcRefinementThreads="+Integer.toString(PASSED_THREADS_COUNT)},
- PASSED_THREADS_COUNT);
+ new String[]{"-XX:G1ConcRefinementThreads=" + Integer.toString(PASSED_THREADS_COUNT)},
+ PASSED_THREADS_COUNT,
+ false);
}
private static void runG1ConcRefinementThreadsTest(String[] passedOpts,
- int expectedValue) throws Exception {
+ int expectedValue, boolean explicitZero) throws Exception {
List vmOpts = new ArrayList<>();
if (passedOpts.length > 0) {
Collections.addAll(vmOpts, passedOpts);
@@ -68,13 +72,16 @@ private static void runG1ConcRefinementThreadsTest(String[] passedOpts,
output.shouldHaveExitValue(0);
String stdout = output.getStdout();
- checkG1ConcRefinementThreadsConsistency(stdout, expectedValue);
+ checkG1ConcRefinementThreadsConsistency(stdout, expectedValue, explicitZero);
}
- private static void checkG1ConcRefinementThreadsConsistency(String output, int expectedValue) {
+ private static void checkG1ConcRefinementThreadsConsistency(String output, int expectedValue,
+ boolean explicitZero) {
int actualValue = getIntValue("G1ConcRefinementThreads", output);
- if (expectedValue == 0) {
+ if (explicitZero) {
+ expectedValue = 0;
+ } else if (expectedValue == 0) {
// If expectedValue is automatically selected, set it same as ParallelGCThreads.
expectedValue = getIntValue("ParallelGCThreads", output);
}
diff --git a/hotspot/test/gc/arguments/TestG1HeapRegionSize.java b/hotspot/test/gc/arguments/TestG1HeapRegionSize.java
index 0442d2c61bf..90e1cd5b4f8 100644
--- a/hotspot/test/gc/arguments/TestG1HeapRegionSize.java
+++ b/hotspot/test/gc/arguments/TestG1HeapRegionSize.java
@@ -29,7 +29,7 @@
* @run main/othervm -Xmx64m TestG1HeapRegionSize 1048576
* @run main/othervm -XX:G1HeapRegionSize=2m -Xmx64m TestG1HeapRegionSize 2097152
* @run main/othervm -XX:G1HeapRegionSize=3m -Xmx64m TestG1HeapRegionSize 2097152
- * @run main/othervm -XX:G1HeapRegionSize=64m -Xmx256m TestG1HeapRegionSize 33554432
+ * @run main/othervm -XX:G1HeapRegionSize=32m -Xmx256m TestG1HeapRegionSize 33554432
*/
import sun.management.ManagementFactoryHelper;
diff --git a/hotspot/test/gc/arguments/TestHeapFreeRatio.java b/hotspot/test/gc/arguments/TestHeapFreeRatio.java
index 11e259df038..ea75c0b3bdb 100644
--- a/hotspot/test/gc/arguments/TestHeapFreeRatio.java
+++ b/hotspot/test/gc/arguments/TestHeapFreeRatio.java
@@ -54,12 +54,12 @@ private static void testMinMaxFreeRatio(String min, String max, Validation type)
output.shouldHaveExitValue(0);
break;
case MIN_INVALID:
- output.shouldContain("Bad min heap free percentage size: -Xminf" + min);
+ output.shouldMatch("(?s).*(MinHeapFreeRatio|Bad min heap free percentage size).*");
output.shouldContain("Error");
output.shouldHaveExitValue(1);
break;
case MAX_INVALID:
- output.shouldContain("Bad max heap free percentage size: -Xmaxf" + max);
+ output.shouldMatch("(?s).*(MaxHeapFreeRatio|Bad max heap free percentage size).*");
output.shouldContain("Error");
output.shouldHaveExitValue(1);
break;
diff --git a/hotspot/test/gc/arguments/TestInitialTenuringThreshold.java b/hotspot/test/gc/arguments/TestInitialTenuringThreshold.java
index 2c97ccd8fff..4309ff960f6 100644
--- a/hotspot/test/gc/arguments/TestInitialTenuringThreshold.java
+++ b/hotspot/test/gc/arguments/TestInitialTenuringThreshold.java
@@ -63,13 +63,12 @@ public static void main(String args[]) throws Exception {
// successful tests
runWithThresholds(0, 10, false);
runWithThresholds(5, 5, false);
+ runWithThresholds(8, 16, false);
// failing tests
runWithThresholds(10, 0, true);
runWithThresholds(9, 8, true);
runWithThresholds(-1, 8, true);
runWithThresholds(8, -1, true);
- runWithThresholds(8, 16, true);
runWithThresholds(16, 8, true);
}
}
-
diff --git a/hotspot/test/gc/arguments/TestUnrecognizedVMOptionsHandling.java b/hotspot/test/gc/arguments/TestUnrecognizedVMOptionsHandling.java
index a61b5f30940..cb5a087417c 100644
--- a/hotspot/test/gc/arguments/TestUnrecognizedVMOptionsHandling.java
+++ b/hotspot/test/gc/arguments/TestUnrecognizedVMOptionsHandling.java
@@ -35,35 +35,29 @@
public class TestUnrecognizedVMOptionsHandling {
public static void main(String args[]) throws Exception {
- // The first two JAVA processes are expected to fail, but with a correct VM option suggestion
+ // CompoundVM on top of the JDK 17 kernel accepts these legacy spellings,
+ // so the compatibility expectation differs from the old JDK 8 suggestion
+ // text checks.
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-XX:+PrintGc",
"-version"
);
- OutputAnalyzer outputWithError = new OutputAnalyzer(pb.start());
- outputWithError.shouldContain("Did you mean '(+/-)PrintGC'?");
- if (outputWithError.getExitValue() == 0) {
- throw new RuntimeException("Not expected to get exit value 0");
- }
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
pb = ProcessTools.createJavaProcessBuilder(
"-XX:MaxiumHeapSize=500m",
"-version"
);
- outputWithError = new OutputAnalyzer(pb.start());
- outputWithError.shouldContain("Did you mean 'MaxHeapSize='?");
- if (outputWithError.getExitValue() == 0) {
- throw new RuntimeException("Not expected to get exit value 0");
- }
+ output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
- // The last JAVA process should run successfully for the purpose of sanity check
+ // Sanity check with the canonical spelling.
pb = ProcessTools.createJavaProcessBuilder(
"-XX:+PrintGC",
"-version"
);
OutputAnalyzer outputWithNoError = new OutputAnalyzer(pb.start());
- outputWithNoError.shouldNotContain("Did you mean '(+/-)PrintGC'?");
outputWithNoError.shouldHaveExitValue(0);
}
}
-
diff --git a/hotspot/test/gc/arguments/TestUseCompressedOopsErgoTools.java b/hotspot/test/gc/arguments/TestUseCompressedOopsErgoTools.java
index 54c70672d04..edceda3fcc4 100644
--- a/hotspot/test/gc/arguments/TestUseCompressedOopsErgoTools.java
+++ b/hotspot/test/gc/arguments/TestUseCompressedOopsErgoTools.java
@@ -52,7 +52,13 @@ private static long getCompressedClassSpaceSize() {
public static long getMaxHeapForCompressedOops(String[] vmargs) throws Exception {
OutputAnalyzer output = runWhiteBoxTest(vmargs, DetermineMaxHeapForCompressedOops.class.getName(), new String[] {}, false);
- return Long.parseLong(output.getStdout());
+ String stdout = output.getStdout();
+ Matcher m = Pattern.compile("(-?\\d+)").matcher(stdout);
+ long res = 0;
+ while (m.find()) {
+ res = Long.parseLong(m.group(1)); // get the last number in stdout
+ }
+ return res;
}
public static boolean is64bitVM() {
@@ -174,4 +180,3 @@ private static String expectValid(String[] flags) throws Exception {
return expect(flags, false, false, 0);
}
}
-
diff --git a/hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java b/hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
index 059a526acf4..f8af69d3d85 100644
--- a/hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
+++ b/hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
@@ -36,7 +36,7 @@ public class TestDefaultMaxRAMFraction {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:DefaultMaxRAMFraction=4", "-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
- output.shouldContain("warning: DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. Use MaxRAMFraction instead.");
+ output.shouldContain("warning: Option DefaultMaxRAMFraction was deprecated in version 8.0 and will likely be removed in a future release. Use option MaxRAMFraction instead.");
output.shouldNotContain("error");
output.shouldHaveExitValue(0);
}
diff --git a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java b/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
index 6a14079347f..56391019bc6 100644
--- a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
+++ b/hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java
@@ -1,3 +1,5 @@
+// This project is a modified version of OpenJDK, licensed under GPL v2.
+// Modifications Copyright (C) 2025 ByteDance Inc.
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -43,6 +45,10 @@ public static boolean isServer() {
return vmName.endsWith(" Server VM");
}
+ public static boolean isCVM() {
+ return vmName.contains("CompoundVM");
+ }
+
public static boolean isGraal() {
return vmName.endsWith(" Graal VM");
}
diff --git a/hotspot/test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java b/hotspot/test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java
index 8da6c0264ef..f12bd15908a 100644
--- a/hotspot/test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java
+++ b/hotspot/test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java
@@ -1,3 +1,5 @@
+// This project is a modified version of OpenJDK, licensed under GPL v2.
+// Modifications Copyright (C) 2025 ByteDance Inc.
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -299,6 +301,8 @@ private static String getVMTypeOption() {
return "-minimal";
} else if (Platform.isGraal()) {
return "-graal";
+ } else if (Platform.isCVM()) {
+ return "-cvm";
}
throw new RuntimeException("Unknown VM mode.");
}
diff --git a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java
index 393f3b1ca8d..d5463d12fcc 100644
--- a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java
+++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java
@@ -86,9 +86,9 @@ public synchronized static WhiteBox getWhiteBox() {
// Runtime
// Make sure class name is in the correct format
public boolean isClassAlive(String name) {
- return isClassAlive0(name.replace('.', '/'));
+ return countAliveClasses0(name.replace('.', '/')) != 0;
}
- private native boolean isClassAlive0(String name);
+ private native int countAliveClasses0(String name);
public native boolean isMonitorInflated(Object obj);
public native void forceSafepoint();
diff --git a/hotspot/test/testlibrary/whitebox/sun/hotspot/code/NMethod.java b/hotspot/test/testlibrary/whitebox/sun/hotspot/code/NMethod.java
index 7cd36c25ac8..4739bca7409 100644
--- a/hotspot/test/testlibrary/whitebox/sun/hotspot/code/NMethod.java
+++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/code/NMethod.java
@@ -34,21 +34,25 @@ public static NMethod get(Executable method, boolean isOsr) {
return obj == null ? null : new NMethod(obj);
}
private NMethod(Object[] obj) {
- assert obj.length == 3;
- comp_level = (Integer) obj[0];
- compile_id = (Integer) obj[1];
+ assert obj.length == 5;
+ comp_level = (Integer) obj[1];
insts = (byte[]) obj[2];
+ compile_id = (Integer) obj[3];
+ entry_point = (Long) obj[4];
}
public final byte[] insts;
public final int comp_level;
public final int compile_id;
+ public final long entry_point;
@Override
public String toString() {
- return "NMethod{" +
- "insts=" + insts +
- ", comp_level=" + comp_level +
- ", compile_id=" + compile_id +
- '}';
+ return "NMethod{"
+ + super.toString()
+ + ", insts=" + insts
+ + ", comp_level=" + comp_level
+ + ", compile_id=" + compile_id
+ + ", entry_point=" + entry_point
+ + '}';
}
}
diff --git a/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh b/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh
index e358487d3be..27cfcb1bee1 100644
--- a/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh
+++ b/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh
@@ -120,7 +120,7 @@ jdbFailIfNotPresent 'System\..*bottom of loop'
jdbFailIfNotPresent 'System\..*end of test'
# make sure we had at least one full GC
-debuggeeFailIfNotPresent 'Full GC'
+debuggeeFailIfNotPresent 'Full GC|Pause Full'
# check for error message due to thread ID change
debuggeeFailIfPresent \
diff --git a/jdk/test/com/sun/jdi/RedefineCrossEvent.java b/jdk/test/com/sun/jdi/RedefineCrossEvent.java
index 19c04a94473..e7a71a14143 100644
--- a/jdk/test/com/sun/jdi/RedefineCrossEvent.java
+++ b/jdk/test/com/sun/jdi/RedefineCrossEvent.java
@@ -32,8 +32,6 @@
* @run compile -g AccessSpecifierTest.java
* @run compile -g AfterThreadDeathTest.java
* @run compile -g ArrayRangeTest.java
- * @run compile -g BacktraceFieldTest.java
- * @run compile -g ClassesByName2Test.java
* @run compile -g DebuggerThreadTest.java
* @run compile -g DeleteEventRequestsTest.java
* @run compile -g ExceptionEvents.java
@@ -49,8 +47,6 @@
* @run main AccessSpecifierTest -redefstart -redefevent
* @run main AfterThreadDeathTest -redefstart -redefevent
* @run main ArrayRangeTest -redefstart -redefevent
- * @run main BacktraceFieldTest -redefstart -redefevent
- * @run main ClassesByName2Test -redefstart -redefevent
* @run main DebuggerThreadTest -redefstart -redefevent
* @run main DeleteEventRequestsTest -redefstart -redefevent
* @run main/othervm ExceptionEvents -redefstart -redefevent N A StackOverflowCaughtTarg java.lang.Exception
diff --git a/jdk/test/java/lang/System/Versions.java b/jdk/test/java/lang/System/Versions.java
index 3ba41e1b1f3..308a9886de0 100644
--- a/jdk/test/java/lang/System/Versions.java
+++ b/jdk/test/java/lang/System/Versions.java
@@ -72,10 +72,12 @@ static void checkClassVersion(int major, int minor, boolean expectSupported)
public static void main(String [] args) throws Exception {
String classVersion = getProperty("java.class.version");
String javaVersion = getProperty("java.version");
- String VMVersion = getProperty("java.vm.version");
+ String VMSpecVersion = getProperty("java.vm.specification.version");
String runtimeVersion = getProperty("java.runtime.version");
String specVersion = getProperty("java.specification.version");
+ boolean isCVM = VMSpecVersion.equals("17");
+
if (! (javaVersion.startsWith(specVersion) &&
runtimeVersion.startsWith(specVersion)))
throw new Exception("Invalid version-related system properties");
@@ -95,7 +97,7 @@ public static void main(String [] args) throws Exception {
cl = new URLClassLoader(new URL[]{new File("./").toURL()}, null);
checkClassVersion(majorVersion , minorVersion , true );
- checkClassVersion(majorVersion + 1, minorVersion , false);
- checkClassVersion(majorVersion , minorVersion + 1, false);
+ checkClassVersion(majorVersion + 1, minorVersion , isCVM);
+ checkClassVersion(majorVersion , minorVersion + 1, isCVM);
}
}
diff --git a/jdk/test/sun/misc/Version/Version.java b/jdk/test/sun/misc/Version/Version.java
index 10f5c226bbe..896603e0725 100644
--- a/jdk/test/sun/misc/Version/Version.java
+++ b/jdk/test/sun/misc/Version/Version.java
@@ -46,7 +46,9 @@ public static void main(String[] args) throws Exception {
if (!jdk.equals(v1)) {
throw new RuntimeException("Unmatched version: " + jdk + " vs " + v1);
}
- VersionInfo jvm = jvmVersionInfo(System.getProperty("java.vm.version"));
+ VersionInfo jvm = System.getProperty("java.vm.specification.version").equals("17") ?
+ jvm17VersionInfo(System.getProperty("java.vm.version"))
+ : jvmVersionInfo(System.getProperty("java.vm.version"));
VersionInfo v2 = new VersionInfo(jvmMajorVersion(),
jvmMinorVersion(),
jvmMicroVersion(),
@@ -136,6 +138,36 @@ private static VersionInfo jdkVersionInfo(String version) throws Exception {
return vi;
}
+ private static VersionInfo jvm17VersionInfo(String version) throws Exception {
+ // According to jdk-version.m4 in jdk17u
+ // valid format of the version string is:
+ // [.][.][.[-]+[-]
+ int major = 0;
+ int minor = 0;
+ int build = 0;
+
+ String regex = "^(?[0-9]{1,2})"; // major
+ regex += "(\\."; // separator
+ regex += "(?[0-9]{1,3})"; // minor
+ regex += ")?"; // minor '0' might be stripped
+ regex += "(\\.[0-9]{1,3})?(\\.[0-9]{1,3})?"; // (not important) update, patch
+ regex += "(\\-[a-zA-Z0-9]+)?"; // (not important) version_pre
+ regex += "\\+(?[0-9]{1,3})"; // build
+ regex += "(\\-[a-zA-Z0-9\\.\\-]+)?$"; // (not important) version_opt
+
+ Pattern p = Pattern.compile(regex);
+ Matcher m = p.matcher(version);
+ m.matches();
+
+ major = Integer.parseInt(m.group("major"));
+ minor = m.group("minor") == null ? 0 : Integer.parseInt(m.group("minor"));
+ build = Integer.parseInt(m.group("build"));
+
+ VersionInfo vi = new VersionInfo(major, minor, 0, 0, "", build);
+ System.out.printf("jvmVersionInfo: input=%s output=%s\n", version, vi);
+ return vi;
+ }
+
private static VersionInfo jvmVersionInfo(String version) throws Exception {
try {
// valid format of the version string is:
diff --git a/langtools/test/tools/javac/6508981/TestInferBinaryName.java b/langtools/test/tools/javac/6508981/TestInferBinaryName.java
index e94ba29b4dc..bdac000159e 100644
--- a/langtools/test/tools/javac/6508981/TestInferBinaryName.java
+++ b/langtools/test/tools/javac/6508981/TestInferBinaryName.java
@@ -77,7 +77,8 @@ void testDirectory() throws IOException {
}
void testSymbolArchive() throws IOException {
- String testClassName = "java.lang.String";
+ String testClassName = "8".equals(System.getProperty("java.vm.specification.version")) ?
+ "java.lang.String" : "java.lang.StringBuilder";
JavaFileManager fm =
getFileManager("sun.boot.class.path", USE_SYMBOL_FILE, DONT_USE_ZIP_FILE_INDEX);
test("testSymbolArchive",
diff --git a/langtools/test/tools/javac/annotations/8218152/MalformedAnnotationProcessorTests.java b/langtools/test/tools/javac/annotations/8218152/MalformedAnnotationProcessorTests.java
index 19b8c60c516..24a3541aff3 100644
--- a/langtools/test/tools/javac/annotations/8218152/MalformedAnnotationProcessorTests.java
+++ b/langtools/test/tools/javac/annotations/8218152/MalformedAnnotationProcessorTests.java
@@ -133,6 +133,10 @@ public void testWrongClassFileVersion(Path base) throws Exception {
.setErrOutput(actualErrors);
ToolBox.javac(args);
+ // cvm supports a higher bytecode version, so the test would not fail. Keep
+ // the higher version support and skip the test.
+ if (!System.getProperty("java.vm.specification.version").equals("8"))
+ return;
if (!actualErrors.get(0).contains("- compiler.err.proc.cant.load.class: " +
"WrongClassFileVersion has been compiled by a more recent version")) {
throw new AssertionError("Unexpected errors reported: " + actualErrors);
diff --git a/test/jtreg-ext/requires/VMProps.java b/test/jtreg-ext/requires/VMProps.java
index 1d7652be08b..ba88618da2d 100644
--- a/test/jtreg-ext/requires/VMProps.java
+++ b/test/jtreg-ext/requires/VMProps.java
@@ -69,7 +69,7 @@ protected String vmFlavor() {
Pattern startP = Pattern.compile(".* (\\S+) VM");
Matcher m = startP.matcher(vmName);
- if (m.matches()) {
+ if (m.find()) {
return m.group(1).toLowerCase();
}
return null;