Skip to content

Commit 738cb98

Browse files
authored
Merge pull request #2086 from SAP/pr-jdk-26+21
Merge to tag jdk-26+21
2 parents 01872fc + 34139f9 commit 738cb98

File tree

501 files changed

+13334
-6527
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

501 files changed

+13334
-6527
lines changed

doc/testing.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ <h4 id="timeout_factor-1">TIMEOUT_FACTOR</h4>
450450
programmatically wait a certain amount of time will apply this factor.
451451
If we run in forced compilation mode (<code>-Xcomp</code>), the build
452452
system will automatically adjust this factor to compensate for less
453-
performance. Defaults to 1.</p>
453+
performance. Defaults to 4.</p>
454454
<h4 id="failure_handler_timeout">FAILURE_HANDLER_TIMEOUT</h4>
455455
<p>Sets the argument <code>-timeoutHandlerTimeout</code> for JTReg. The
456456
default value is 0. This is only valid if the failure handler is

doc/testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ The `TIMEOUT_FACTOR` is forwarded to JTReg framework itself
387387
(`-timeoutFactor`). Also, some test cases that programmatically wait a
388388
certain amount of time will apply this factor. If we run in forced
389389
compilation mode (`-Xcomp`), the build system will automatically
390-
adjust this factor to compensate for less performance. Defaults to 1.
390+
adjust this factor to compensate for less performance. Defaults to 4.
391391

392392
#### FAILURE_HANDLER_TIMEOUT
393393

make/RunTests.gmk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -946,8 +946,8 @@ define SetupRunJtregTestBody
946946
JTREG_ALL_OPTIONS := $$(JTREG_JAVA_OPTIONS) $$(JTREG_VM_OPTIONS)
947947

948948
JTREG_AUTO_PROBLEM_LISTS :=
949-
# Please reach consensus before changing this. It was not easy changing it to a `1`.
950-
JTREG_AUTO_TIMEOUT_FACTOR := 1
949+
# Please reach consensus before changing this.
950+
JTREG_AUTO_TIMEOUT_FACTOR := 4
951951

952952
ifneq ($$(findstring -Xcomp, $$(JTREG_ALL_OPTIONS)), )
953953
JTREG_AUTO_PROBLEM_LISTS += ProblemList-Xcomp.txt

make/conf/github-actions.conf

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,21 @@ GTEST_VERSION=1.14.0
2929
JTREG_VERSION=8.1+1
3030

3131
LINUX_X64_BOOT_JDK_EXT=tar.gz
32-
LINUX_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-24/sapmachine-jdk-24_linux-x64_bin.tar.gz
33-
LINUX_X64_BOOT_JDK_SHA256=1455b8ad267251de4a2e79e4394b17a64d12af9b1fba8dde380b965561b6137e
32+
LINUX_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-25.0.1/sapmachine-jdk-25.0.1_linux-x64_bin.tar.gz
33+
LINUX_X64_BOOT_JDK_SHA256=af77b90d3b326b1e8cb1be0a9d8773e1eba167081c6da21391be05f2d89bebe6
3434

3535
ALPINE_LINUX_X64_BOOT_JDK_EXT=tar.gz
36-
ALPINE_LINUX_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-24/sapmachine-jdk-24_linux-x64-musl_bin.tar.gz
37-
ALPINE_LINUX_X64_BOOT_JDK_SHA256=9805254760f03016a268d89961ae9bd205da3c22055ff388bf79c502e0bca436
36+
ALPINE_LINUX_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-25.0.1/sapmachine-jdk-25.0.1_linux-x64-musl_bin.tar.gz
37+
ALPINE_LINUX_X64_BOOT_JDK_SHA256=5c0ad882de88c9200859a68b749c1fb9096d2e2aed09c0611957e458af747dce
3838

3939
MACOS_AARCH64_BOOT_JDK_EXT=tar.gz
40-
MACOS_AARCH64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-24/sapmachine-jdk-24_macos-aarch64_bin.tar.gz
41-
MACOS_AARCH64_BOOT_JDK_SHA256=620cb45627a30cd1152f7be4903b341d612034af766ff5711e40a35f04672537
40+
MACOS_AARCH64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-25.0.1/sapmachine-jdk-25.0.1_macos-aarch64_bin.tar.gz
41+
MACOS_AARCH64_BOOT_JDK_SHA256=8f050771b58bf09db9f352840f23c914aa069c609950d55614ca938d13cdbc71
4242

4343
MACOS_X64_BOOT_JDK_EXT=tar.gz
44-
MACOS_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-24/sapmachine-jdk-24_macos-x64_bin.tar.gz
45-
MACOS_X64_BOOT_JDK_SHA256=c08f9fbe18ded438cd56bc3b51c705999759221899acc83d4bd2cdeea0e4989f
44+
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk25/bd75d5f9689641da8e1daabeccb5528b/36/GPL/openjdk-25_macos-x64_bin.tar.gz
45+
MACOS_X64_BOOT_JDK_SHA256=47482ad9888991ecac9b2bcc131e2b53ff78aff275104cef85f66252308e8a09
4646

4747
WINDOWS_X64_BOOT_JDK_EXT=zip
48-
WINDOWS_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-24/sapmachine-jdk-24_windows-x64_bin.zip
49-
WINDOWS_X64_BOOT_JDK_SHA256=222ab67f81af2a25261a82403f4cf12dc9e82bf3e16ba9872cf4fdf91ef38e2e
48+
WINDOWS_X64_BOOT_JDK_URL=https://github.com/SAP/SapMachine/releases/download/sapmachine-25.0.1/sapmachine-jdk-25.0.1_windows-x64_bin.zip
49+
WINDOWS_X64_BOOT_JDK_SHA256=02ccc14e55949b8eb03bcf5d631c99510c55983b68b04dfe6ecc4927d0ae398f

make/conf/jib-profiles.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,8 @@ var getJibProfilesCommon = function (input, data) {
387387
};
388388
};
389389

390-
common.boot_jdk_version = "24";
391-
common.boot_jdk_build_number = "36";
390+
common.boot_jdk_version = "25";
391+
common.boot_jdk_build_number = "37";
392392
common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-"
393393
+ common.boot_jdk_version
394394
+ (input.build_os == "macosx" ? ".jdk/Contents/Home" : "");

make/conf/version-numbers.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ DEFAULT_VERSION_DATE=2026-03-17
3737
DEFAULT_VERSION_CLASSFILE_MAJOR=70 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
3838
DEFAULT_VERSION_CLASSFILE_MINOR=0
3939
DEFAULT_VERSION_DOCS_API_SINCE=11
40-
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="24 25 26"
40+
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26"
4141
DEFAULT_JDK_SOURCE_TARGET_VERSION=26
4242
DEFAULT_PROMOTED_VERSION_PRE=ea

src/hotspot/cpu/aarch64/aarch64.ad

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,39 +1266,39 @@ source %{
12661266
// adlc register classes to make AArch64 rheapbase (r27) and rfp (r29)
12671267
// registers conditionally reserved.
12681268

1269-
_ANY_REG32_mask = _ALL_REG32_mask;
1270-
_ANY_REG32_mask.Remove(OptoReg::as_OptoReg(r31_sp->as_VMReg()));
1269+
_ANY_REG32_mask.assignFrom(_ALL_REG32_mask);
1270+
_ANY_REG32_mask.remove(OptoReg::as_OptoReg(r31_sp->as_VMReg()));
12711271

1272-
_ANY_REG_mask = _ALL_REG_mask;
1272+
_ANY_REG_mask.assignFrom(_ALL_REG_mask);
12731273

1274-
_PTR_REG_mask = _ALL_REG_mask;
1274+
_PTR_REG_mask.assignFrom(_ALL_REG_mask);
12751275

1276-
_NO_SPECIAL_REG32_mask = _ALL_REG32_mask;
1277-
_NO_SPECIAL_REG32_mask.SUBTRACT(_NON_ALLOCATABLE_REG32_mask);
1276+
_NO_SPECIAL_REG32_mask.assignFrom(_ALL_REG32_mask);
1277+
_NO_SPECIAL_REG32_mask.subtract(_NON_ALLOCATABLE_REG32_mask);
12781278

1279-
_NO_SPECIAL_REG_mask = _ALL_REG_mask;
1280-
_NO_SPECIAL_REG_mask.SUBTRACT(_NON_ALLOCATABLE_REG_mask);
1279+
_NO_SPECIAL_REG_mask.assignFrom(_ALL_REG_mask);
1280+
_NO_SPECIAL_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
12811281

1282-
_NO_SPECIAL_PTR_REG_mask = _ALL_REG_mask;
1283-
_NO_SPECIAL_PTR_REG_mask.SUBTRACT(_NON_ALLOCATABLE_REG_mask);
1282+
_NO_SPECIAL_PTR_REG_mask.assignFrom(_ALL_REG_mask);
1283+
_NO_SPECIAL_PTR_REG_mask.subtract(_NON_ALLOCATABLE_REG_mask);
12841284

12851285
// r27 is not allocatable when compressed oops is on and heapbase is not
12861286
// zero, compressed klass pointers doesn't use r27 after JDK-8234794
12871287
if (UseCompressedOops && (CompressedOops::base() != nullptr)) {
1288-
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
1289-
_NO_SPECIAL_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
1290-
_NO_SPECIAL_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r27->as_VMReg()));
1288+
_NO_SPECIAL_REG32_mask.remove(OptoReg::as_OptoReg(r27->as_VMReg()));
1289+
_NO_SPECIAL_REG_mask.remove(OptoReg::as_OptoReg(r27->as_VMReg()));
1290+
_NO_SPECIAL_PTR_REG_mask.remove(OptoReg::as_OptoReg(r27->as_VMReg()));
12911291
}
12921292

12931293
// r29 is not allocatable when PreserveFramePointer is on
12941294
if (PreserveFramePointer) {
1295-
_NO_SPECIAL_REG32_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1296-
_NO_SPECIAL_REG_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1297-
_NO_SPECIAL_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1295+
_NO_SPECIAL_REG32_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1296+
_NO_SPECIAL_REG_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1297+
_NO_SPECIAL_PTR_REG_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
12981298
}
12991299

1300-
_NO_SPECIAL_NO_RFP_PTR_REG_mask = _NO_SPECIAL_PTR_REG_mask;
1301-
_NO_SPECIAL_NO_RFP_PTR_REG_mask.Remove(OptoReg::as_OptoReg(r29->as_VMReg()));
1300+
_NO_SPECIAL_NO_RFP_PTR_REG_mask.assignFrom(_NO_SPECIAL_PTR_REG_mask);
1301+
_NO_SPECIAL_NO_RFP_PTR_REG_mask.remove(OptoReg::as_OptoReg(r29->as_VMReg()));
13021302
}
13031303

13041304
// Optimizaton of volatile gets and puts
@@ -1734,7 +1734,7 @@ uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
17341734
}
17351735

17361736
//=============================================================================
1737-
const RegMask& MachConstantBaseNode::_out_RegMask = RegMask::Empty;
1737+
const RegMask& MachConstantBaseNode::_out_RegMask = RegMask::EMPTY;
17381738

17391739
int ConstantTable::calculate_table_base_offset() const {
17401740
return 0; // absolute addressing, no offset
@@ -2520,10 +2520,10 @@ uint Matcher::int_pressure_limit()
25202520
// as a spilled LRG. Spilling heuristics(Spill-USE) explicitly skip
25212521
// derived pointers and lastly fail to spill after reaching maximum
25222522
// number of iterations. Lowering the default pressure threshold to
2523-
// (_NO_SPECIAL_REG32_mask.Size() minus 1) forces CallNode to become
2523+
// (_NO_SPECIAL_REG32_mask.size() minus 1) forces CallNode to become
25242524
// a high register pressure area of the code so that split_DEF can
25252525
// generate DefinitionSpillCopy for the derived pointer.
2526-
uint default_int_pressure_threshold = _NO_SPECIAL_REG32_mask.Size() - 1;
2526+
uint default_int_pressure_threshold = _NO_SPECIAL_REG32_mask.size() - 1;
25272527
if (!PreserveFramePointer) {
25282528
// When PreserveFramePointer is off, frame pointer is allocatable,
25292529
// but different from other SOC registers, it is excluded from
@@ -2538,34 +2538,34 @@ uint Matcher::int_pressure_limit()
25382538
uint Matcher::float_pressure_limit()
25392539
{
25402540
// _FLOAT_REG_mask is generated by adlc from the float_reg register class.
2541-
return (FLOATPRESSURE == -1) ? _FLOAT_REG_mask.Size() : FLOATPRESSURE;
2541+
return (FLOATPRESSURE == -1) ? _FLOAT_REG_mask.size() : FLOATPRESSURE;
25422542
}
25432543

25442544
bool Matcher::use_asm_for_ldiv_by_con(jlong divisor) {
25452545
return false;
25462546
}
25472547

2548-
RegMask Matcher::divI_proj_mask() {
2548+
const RegMask& Matcher::divI_proj_mask() {
25492549
ShouldNotReachHere();
2550-
return RegMask();
2550+
return RegMask::EMPTY;
25512551
}
25522552

25532553
// Register for MODI projection of divmodI.
2554-
RegMask Matcher::modI_proj_mask() {
2554+
const RegMask& Matcher::modI_proj_mask() {
25552555
ShouldNotReachHere();
2556-
return RegMask();
2556+
return RegMask::EMPTY;
25572557
}
25582558

25592559
// Register for DIVL projection of divmodL.
2560-
RegMask Matcher::divL_proj_mask() {
2560+
const RegMask& Matcher::divL_proj_mask() {
25612561
ShouldNotReachHere();
2562-
return RegMask();
2562+
return RegMask::EMPTY;
25632563
}
25642564

25652565
// Register for MODL projection of divmodL.
2566-
RegMask Matcher::modL_proj_mask() {
2566+
const RegMask& Matcher::modL_proj_mask() {
25672567
ShouldNotReachHere();
2568-
return RegMask();
2568+
return RegMask::EMPTY;
25692569
}
25702570

25712571
bool size_fits_all_mem_uses(AddPNode* addp, int shift) {

src/hotspot/cpu/aarch64/aarch64_vector.ad

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7081,29 +7081,31 @@ instruct vcompress(vReg dst, vReg src, pRegGov pg) %{
70817081
%}
70827082

70837083
instruct vcompressB(vReg dst, vReg src, pReg pg, vReg tmp1, vReg tmp2,
7084-
vReg tmp3, vReg tmp4, pReg ptmp, pRegGov pgtmp) %{
7084+
vReg tmp3, pReg ptmp, pRegGov pgtmp) %{
70857085
predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) == T_BYTE);
7086-
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP ptmp, TEMP pgtmp);
7086+
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP ptmp, TEMP pgtmp);
70877087
match(Set dst (CompressV src pg));
7088-
format %{ "vcompressB $dst, $src, $pg\t# KILL $tmp1, $tmp2, $tmp3, tmp4, $ptmp, $pgtmp" %}
7088+
format %{ "vcompressB $dst, $src, $pg\t# KILL $tmp1, $tmp2, $tmp3, $ptmp, $pgtmp" %}
70897089
ins_encode %{
7090+
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
70907091
__ sve_compress_byte($dst$$FloatRegister, $src$$FloatRegister, $pg$$PRegister,
7091-
$tmp1$$FloatRegister,$tmp2$$FloatRegister,
7092-
$tmp3$$FloatRegister,$tmp4$$FloatRegister,
7093-
$ptmp$$PRegister, $pgtmp$$PRegister);
7092+
$tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister,
7093+
$ptmp$$PRegister, $pgtmp$$PRegister, length_in_bytes);
70947094
%}
70957095
ins_pipe(pipe_slow);
70967096
%}
70977097

7098-
instruct vcompressS(vReg dst, vReg src, pReg pg,
7099-
vReg tmp1, vReg tmp2, pRegGov pgtmp) %{
7098+
instruct vcompressS(vReg dst, vReg src, pReg pg, vReg tmp1, vReg tmp2, pRegGov pgtmp) %{
71007099
predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) == T_SHORT);
71017100
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP pgtmp);
71027101
match(Set dst (CompressV src pg));
71037102
format %{ "vcompressS $dst, $src, $pg\t# KILL $tmp1, $tmp2, $pgtmp" %}
71047103
ins_encode %{
7104+
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
7105+
__ sve_dup($tmp1$$FloatRegister, __ H, 0);
71057106
__ sve_compress_short($dst$$FloatRegister, $src$$FloatRegister, $pg$$PRegister,
7106-
$tmp1$$FloatRegister,$tmp2$$FloatRegister, $pgtmp$$PRegister);
7107+
$tmp1$$FloatRegister, $tmp2$$FloatRegister, $pgtmp$$PRegister,
7108+
length_in_bytes);
71077109
%}
71087110
ins_pipe(pipe_slow);
71097111
%}

src/hotspot/cpu/aarch64/aarch64_vector_ad.m4

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5069,29 +5069,31 @@ instruct vcompress(vReg dst, vReg src, pRegGov pg) %{
50695069
%}
50705070

50715071
instruct vcompressB(vReg dst, vReg src, pReg pg, vReg tmp1, vReg tmp2,
5072-
vReg tmp3, vReg tmp4, pReg ptmp, pRegGov pgtmp) %{
5072+
vReg tmp3, pReg ptmp, pRegGov pgtmp) %{
50735073
predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) == T_BYTE);
5074-
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP ptmp, TEMP pgtmp);
5074+
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP ptmp, TEMP pgtmp);
50755075
match(Set dst (CompressV src pg));
5076-
format %{ "vcompressB $dst, $src, $pg\t# KILL $tmp1, $tmp2, $tmp3, tmp4, $ptmp, $pgtmp" %}
5076+
format %{ "vcompressB $dst, $src, $pg\t# KILL $tmp1, $tmp2, $tmp3, $ptmp, $pgtmp" %}
50775077
ins_encode %{
5078+
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
50785079
__ sve_compress_byte($dst$$FloatRegister, $src$$FloatRegister, $pg$$PRegister,
5079-
$tmp1$$FloatRegister,$tmp2$$FloatRegister,
5080-
$tmp3$$FloatRegister,$tmp4$$FloatRegister,
5081-
$ptmp$$PRegister, $pgtmp$$PRegister);
5080+
$tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister,
5081+
$ptmp$$PRegister, $pgtmp$$PRegister, length_in_bytes);
50825082
%}
50835083
ins_pipe(pipe_slow);
50845084
%}
50855085

5086-
instruct vcompressS(vReg dst, vReg src, pReg pg,
5087-
vReg tmp1, vReg tmp2, pRegGov pgtmp) %{
5086+
instruct vcompressS(vReg dst, vReg src, pReg pg, vReg tmp1, vReg tmp2, pRegGov pgtmp) %{
50885087
predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) == T_SHORT);
50895088
effect(TEMP_DEF dst, TEMP tmp1, TEMP tmp2, TEMP pgtmp);
50905089
match(Set dst (CompressV src pg));
50915090
format %{ "vcompressS $dst, $src, $pg\t# KILL $tmp1, $tmp2, $pgtmp" %}
50925091
ins_encode %{
5092+
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
5093+
__ sve_dup($tmp1$$FloatRegister, __ H, 0);
50935094
__ sve_compress_short($dst$$FloatRegister, $src$$FloatRegister, $pg$$PRegister,
5094-
$tmp1$$FloatRegister,$tmp2$$FloatRegister, $pgtmp$$PRegister);
5095+
$tmp1$$FloatRegister, $tmp2$$FloatRegister, $pgtmp$$PRegister,
5096+
length_in_bytes);
50955097
%}
50965098
ins_pipe(pipe_slow);
50975099
%}

src/hotspot/cpu/aarch64/assembler_aarch64.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3486,6 +3486,7 @@ template<typename R, typename... Rx>
34863486
INSN(sve_smaxv, 0b00000100, 0b001000001); // signed maximum reduction to scalar
34873487
INSN(sve_smin, 0b00000100, 0b001010000); // signed minimum vectors
34883488
INSN(sve_sminv, 0b00000100, 0b001010001); // signed minimum reduction to scalar
3489+
INSN(sve_splice,0b00000101, 0b101100100); // splice two vectors under predicate control, destructive
34893490
INSN(sve_sub, 0b00000100, 0b000001000); // vector sub
34903491
INSN(sve_uaddv, 0b00000100, 0b000001001); // unsigned add reduction to scalar
34913492
INSN(sve_umax, 0b00000100, 0b001001000); // unsigned maximum vectors

0 commit comments

Comments
 (0)