Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2e11354
8385011: GHA: Enable Linux AArch64 tests
gdams May 20, 2026
630b831
8360700: Implement JEP 534: Compact Object Headers by Default
coleenp May 20, 2026
a3b53e9
8357593: Crash in Matcher::init_first_stack_mask() during production run
May 20, 2026
026aede
8385096: Test runtime/cds/MetaspaceAllocGaps.java fails on Windows
iklam May 20, 2026
6a07b21
8378737: AArch64: Fix SVE match rule issues for VectorMask.andNot()
May 21, 2026
1161970
8384228: Cleanup compiler/arguments/TestCompilerCounts.java
May 21, 2026
e50c413
8384229: Previously accepted code is rejected after JDK-8378102
lahodaj May 21, 2026
50deb17
8384631: SwitchBoostraps.typeSwitch method Javadoc still mentions tar…
dbalek May 21, 2026
8663770
8383856: Implement JEP 523: Make G1 the Default Garbage Collector in …
May 21, 2026
36eb8ed
8383623: (fs) Update Windows file system provider to use GetFileInfor…
raneashay May 21, 2026
8549d18
8357439: Add bash autocompletion for jcmd
Domest0s May 21, 2026
cbdf5f6
8384999: Rename CodeBuffer::last_insn() to something more descriptive
jsikstro May 21, 2026
66ae550
8381851: handleMessage use uninitialized struct
May 21, 2026
dc677e9
8385116: nmethod::Flags is not guaranteed to fit uint8_t
shipilev May 21, 2026
0a9e343
8385110: JFR: Race when accessing Recording::getSettings()
egahlin May 21, 2026
4d9e49a
8384486: NTLM tests fail on Windows 11 and Windows Server 2025
raneashay May 21, 2026
05a198a
8326547: StrictMath.pow returns results outside of a 1 ulp error bound.
toxaart May 21, 2026
3e247df
Create maven.yml
Premiermoney May 21, 2026
3f56155
Add Android CI workflow configuration
Premiermoney May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Android CI

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
7 changes: 0 additions & 7 deletions .github/workflows/build-cross-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,11 @@ jobs:
fail-fast: false
matrix:
target-cpu:
- aarch64
- arm
- s390x
- ppc64le
- riscv64
include:
- target-cpu: aarch64
gnu-arch: aarch64
debian-arch: arm64
debian-repository: https://httpredir.debian.org/debian/
debian-version: trixie
tolerate-sysroot-errors: false
- target-cpu: arm
gnu-arch: arm
debian-arch: armhf
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ on:
platform:
required: true
type: string
runs-on:
required: false
type: string
default: 'ubuntu-24.04'
bootjdk-platform:
required: false
type: string
default: 'linux-x64'
extra-conf-options:
required: false
type: string
Expand Down Expand Up @@ -75,7 +83,7 @@ on:
jobs:
build-linux:
name: build
runs-on: ubuntu-24.04
runs-on: ${{ inputs.runs-on }}

strategy:
fail-fast: false
Expand All @@ -90,7 +98,7 @@ jobs:
id: bootjdk
uses: ./.github/actions/get-bootjdk
with:
platform: linux-x64
platform: ${{ inputs.bootjdk-platform }}

- name: 'Get JTReg'
id: jtreg
Expand Down
31 changes: 30 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ on:
platforms:
description: 'Platform(s) to execute on (comma separated, e.g. "linux-x64, macos, aarch64")'
required: true
default: 'linux-x64, linux-x64-variants, linux-cross-compile, alpine-linux-x64, macos-x64, macos-aarch64, windows-x64, windows-aarch64, docs'
default: 'linux-x64, linux-x64-variants, linux-aarch64, linux-cross-compile, alpine-linux-x64, macos-x64, macos-aarch64, windows-x64, windows-aarch64, docs'
configure-arguments:
description: 'Additional configure arguments'
required: false
Expand Down Expand Up @@ -64,6 +64,7 @@ jobs:
outputs:
linux-x64: ${{ steps.include.outputs.linux-x64 }}
linux-x64-variants: ${{ steps.include.outputs.linux-x64-variants }}
linux-aarch64: ${{ steps.include.outputs.linux-aarch64 }}
linux-cross-compile: ${{ steps.include.outputs.linux-cross-compile }}
alpine-linux-x64: ${{ steps.include.outputs.alpine-linux-x64 }}
macos-x64: ${{ steps.include.outputs.macos-x64 }}
Expand Down Expand Up @@ -176,6 +177,7 @@ jobs:

echo "linux-x64=$(check_platform linux-x64 linux x64)" >> $GITHUB_OUTPUT
echo "linux-x64-variants=$(check_platform linux-x64-variants variants)" >> $GITHUB_OUTPUT
echo "linux-aarch64=$(check_platform linux-aarch64 linux aarch64)" >> $GITHUB_OUTPUT
echo "linux-cross-compile=$(check_platform linux-cross-compile cross-compile)" >> $GITHUB_OUTPUT
echo "alpine-linux-x64=$(check_platform alpine-linux-x64 alpine-linux x64)" >> $GITHUB_OUTPUT
echo "macos-x64=$(check_platform macos-x64 macos x64)" >> $GITHUB_OUTPUT
Expand All @@ -201,6 +203,20 @@ jobs:
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
if: needs.prepare.outputs.linux-x64 == 'true'

build-linux-aarch64:
name: linux-aarch64
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-aarch64
runs-on: 'ubuntu-24.04-arm'
bootjdk-platform: linux-aarch64
gcc-major-version: '14'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
if: needs.prepare.outputs.linux-aarch64 == 'true'

build-linux-x64-hs-nopch:
name: linux-x64-hs-nopch
needs: prepare
Expand Down Expand Up @@ -425,6 +441,19 @@ jobs:
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
static-suffix: "-static"

test-linux-aarch64:
name: linux-aarch64
needs:
- prepare
- build-linux-aarch64
uses: ./.github/workflows/test.yml
with:
platform: linux-aarch64
bootjdk-platform: linux-aarch64
runs-on: ubuntu-24.04-arm
dry-run: ${{ needs.prepare.outputs.dry-run == 'true' }}
debug-suffix: -debug

test-macos-aarch64:
name: macos-aarch64
needs:
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Java CI with Maven

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B package --file pom.xml

# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
- name: Update dependency graph
uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
18 changes: 9 additions & 9 deletions make/Images.gmk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -137,16 +137,16 @@ CDS_DUMP_FLAGS = -Xmx128M -Xms128M
# Helper function for creating the CDS archives for the JDK and JRE
#
# Param1 - VM variant (e.g., server, client, zero, ...)
# Param2 - _nocoops, _coh, _nocoops_coh, or empty
# Param2 - _nocoops, _nocoh, _nocoops_nocoh, or empty
define CreateCDSArchive
$1_$2_COOPS_OPTION := $(if $(findstring _nocoops, $2),-XX:-UseCompressedOops)
# enable and also explicitly disable coh as needed.
ifeq ($(call isTargetCpuBits, 64), true)
$1_$2_COH_OPTION := -XX:+UnlockExperimentalVMOptions \
$(if $(findstring _coh, $2),-XX:+UseCompactObjectHeaders,-XX:-UseCompactObjectHeaders)
$1_$2_NOCOH_OPTION := -XX:+UnlockExperimentalVMOptions \
$(if $(findstring _nocoh, $2),-XX:-UseCompactObjectHeaders,-XX:+UseCompactObjectHeaders)
endif
$1_$2_DUMP_EXTRA_ARG := $$($1_$2_COOPS_OPTION) $$($1_$2_COH_OPTION)
$1_$2_DUMP_TYPE := $(if $(findstring _nocoops, $2),-NOCOOPS,)$(if $(findstring _coh, $2),-COH,)
$1_$2_DUMP_EXTRA_ARG := $$($1_$2_COOPS_OPTION) $$($1_$2_NOCOH_OPTION)
$1_$2_DUMP_TYPE := $(if $(findstring _nocoops, $2),-NOCOOPS,)$(if $(findstring _nocoh, $2),-NOCOH,)

$1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)), -XX:+UseG1GC)

Expand Down Expand Up @@ -200,12 +200,12 @@ ifeq ($(BUILD_CDS_ARCHIVE), true)
$(foreach v, $(JVM_VARIANTS), \
$(eval $(call CreateCDSArchive,$v,_nocoops)) \
)
ifeq ($(BUILD_CDS_ARCHIVE_COH), true)
ifeq ($(BUILD_CDS_ARCHIVE_NOCOH), true)
$(foreach v, $(JVM_VARIANTS), \
$(eval $(call CreateCDSArchive,$v,_coh)) \
$(eval $(call CreateCDSArchive,$v,_nocoh)) \
)
$(foreach v, $(JVM_VARIANTS), \
$(eval $(call CreateCDSArchive,$v,_nocoops_coh)) \
$(eval $(call CreateCDSArchive,$v,_nocoops_nocoh)) \
)
endif
endif
Expand Down
5 changes: 0 additions & 5 deletions make/RunTests.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -972,11 +972,6 @@ define SetupRunJtregTestBody
JTREG_AUTO_PROBLEM_LISTS += ProblemList-enable-preview.txt
endif

ifneq ($$(findstring -XX:+UseCompactObjectHeaders, $$(JTREG_ALL_OPTIONS)), )
JTREG_AUTO_PROBLEM_LISTS += ProblemList-coh.txt
endif


ifneq ($$(JTREG_EXTRA_PROBLEM_LISTS), )
# Accept both absolute paths as well as relative to the current test root.
$1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \
Expand Down
4 changes: 2 additions & 2 deletions make/autoconf/configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -260,7 +260,7 @@ LIB_TESTS_ENABLE_DISABLE_JTREG_TEST_THREAD_FACTORY
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
JDKOPT_EXCLUDE_TRANSLATIONS
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE_COH
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE_NOCOH
JDKOPT_ENABLE_DISABLE_COMPATIBLE_CDS_ALIGNMENT
JDKOPT_SETUP_MACOSX_SIGNING
JDKOPT_SETUP_SIGNING_HOOK
Expand Down
12 changes: 6 additions & 6 deletions make/autoconf/jdk-options.m4
Original file line number Diff line number Diff line change
Expand Up @@ -786,14 +786,14 @@ AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE],
#
# Enable or disable the default CDS archive generation for Compact Object Headers
#
AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE_COH],
AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE_NOCOH],
[
UTIL_ARG_ENABLE(NAME: cds-archive-coh, DEFAULT: auto, RESULT: BUILD_CDS_ARCHIVE_COH,
DESC: [enable generation of default CDS archives for compact object headers (requires --enable-cds-archive)],
UTIL_ARG_ENABLE(NAME: cds-archive-nocoh, DEFAULT: auto, RESULT: BUILD_CDS_ARCHIVE_NOCOH,
DESC: [enable generation of default CDS archives for no compact object headers (requires --enable-cds-archive)],
DEFAULT_DESC: [auto],
CHECKING_MSG: [if default CDS archives for compact object headers should be generated],
CHECKING_MSG: [if default CDS archives for no compact object headers should be generated],
CHECK_AVAILABLE: [
AC_MSG_CHECKING([if CDS archive with compact object headers is available])
AC_MSG_CHECKING([if CDS archive with no compact object headers is available])
if test "x$BUILD_CDS_ARCHIVE" = "xfalse"; then
AC_MSG_RESULT([no (CDS default archive generation is disabled)])
AVAILABLE=false
Expand All @@ -810,7 +810,7 @@ AC_DEFUN([JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE_COH],
AVAILABLE=true
fi
])
AC_SUBST(BUILD_CDS_ARCHIVE_COH)
AC_SUBST(BUILD_CDS_ARCHIVE_NOCOH)
])

################################################################################
Expand Down
2 changes: 1 addition & 1 deletion make/autoconf/spec.gmk.template
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ ENABLE_GENERATE_CLASSLIST := @ENABLE_GENERATE_CLASSLIST@
EXCLUDE_TRANSLATIONS := @EXCLUDE_TRANSLATIONS@

BUILD_CDS_ARCHIVE := @BUILD_CDS_ARCHIVE@
BUILD_CDS_ARCHIVE_COH := @BUILD_CDS_ARCHIVE_COH@
BUILD_CDS_ARCHIVE_NOCOH := @BUILD_CDS_ARCHIVE_NOCOH@

ENABLE_COMPATIBLE_CDS_ALIGNMENT := @ENABLE_COMPATIBLE_CDS_ALIGNMENT@

Expand Down
4 changes: 4 additions & 0 deletions make/conf/github-actions.conf
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ LINUX_X64_BOOT_JDK_EXT=tar.gz
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk26/c3cc523845074aa0af4f5e1e1ed4151d/35/GPL/openjdk-26_linux-x64_bin.tar.gz
LINUX_X64_BOOT_JDK_SHA256=83c78367f8c81257beef72aca4bbbf8e6dac8ca2b3a4546a85879a09e6e4e128

LINUX_AARCH64_BOOT_JDK_EXT=tar.gz
LINUX_AARCH64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk26/c3cc523845074aa0af4f5e1e1ed4151d/35/GPL/openjdk-26_linux-aarch64_bin.tar.gz
LINUX_AARCH64_BOOT_JDK_SHA256=403ccf451e88d0be9e1dec129fcb9318de9752121e0eb92dfa9a8cf06f249007

ALPINE_LINUX_X64_BOOT_JDK_EXT=tar.gz
ALPINE_LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin26-binaries/releases/download/jdk-26%2B35/OpenJDK26U-jdk_x64_alpine-linux_hotspot_26_35.tar.gz
ALPINE_LINUX_X64_BOOT_JDK_SHA256=c105e581fdccb4e7120d889235d1ad8d5b2bed0af4972bc881e0a8ba687c94a4
Expand Down
42 changes: 42 additions & 0 deletions make/modules/jdk.jcmd/Copy.gmk
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#
# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute 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.
#

################################################################################

include CopyCommon.gmk

# the autocompletion script is Bash-only
ifneq ($(call isTargetOsType, windows), true)
JCMD_CONF_DIR := $(TOPDIR)/src/jdk.jcmd/share/conf
$(eval $(call SetupCopyFiles, COPY_JCMD_BASH_COMPLETION, \
DEST := $(CONF_DST_DIR)/bash-completion, \
SRC := $(JCMD_CONF_DIR)/bash-completion, \
FILES := jcmd, \
))
endif

TARGETS += $(COPY_JCMD_BASH_COMPLETION)

################################################################################
30 changes: 28 additions & 2 deletions src/hotspot/cpu/aarch64/aarch64.ad
Original file line number Diff line number Diff line change
Expand Up @@ -2647,19 +2647,45 @@ static bool is_valid_sve_arith_imm_pattern(Node* n, Node* m) {
}

// (XorV src (Replicate m1))
// (XorVMask src (MaskAll m1))
static bool is_vector_bitwise_not_pattern(Node* n, Node* m) {
if (n != nullptr && m != nullptr) {
return (n->Opcode() == Op_XorV || n->Opcode() == Op_XorVMask) &&
return n->Opcode() == Op_XorV &&
VectorNode::is_all_ones_vector(m);
}
return false;
}

// Returns true if (n, m) matches "(XorVMask vm2 (MaskAll m1))" and that XorVMask
// is used only by an AndVMask. In that case, cloning m (the MaskAll) lets the
// matcher avoid sharing the MaskAll node and subsume the pattern into rule:
// "(AndVMask vm1 (XorVMask vm2 (MaskAll m1)))".
//
// Limitation: the "andNot" rule still cannot be matched if "m" has other
// uses outside this pattern.
static bool is_vector_mask_not_operand_in_andnot_pattern(Node* n, Node* m) {
if (n == nullptr || m == nullptr) {
return false;
}

if (VectorNode::is_all_ones_vector(m) &&
n->Opcode() == Op_XorVMask &&
n->outcnt() == 1 &&
n->unique_out()->Opcode() == Op_AndVMask) {
// If another input of the AndVMask is also a mask-not pattern that would
// qualify for the `maskAll` cloning, do not clone the "maskAll" here,
// because the match rule can only consume one such pattern.
Node* use = n->unique_out();
Node* other_input = use->in(1) == n ? use->in(2) : use->in(1);
return !VectorNode::is_vectormask_bitwise_not_pattern(other_input);
}
return false;
}

// Should the matcher clone input 'm' of node 'n'?
bool Matcher::pd_clone_node(Node* n, Node* m, Matcher::MStack& mstack) {
if (is_vshift_con_pattern(n, m) ||
is_vector_bitwise_not_pattern(n, m) ||
is_vector_mask_not_operand_in_andnot_pattern(n, m) ||
is_valid_sve_arith_imm_pattern(n, m) ||
is_encode_and_store_pattern(n, m)) {
mstack.push(m, Visit);
Expand Down
Loading