Skip to content

[GR-65267] Update labsjdk to 25+24-jvmci-b01 #11267

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 52 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
ec2a10a
Automatic merge of master into galahad
OracleLabsAutomation May 15, 2025
bed1547
Automatic merge of master into galahad
OracleLabsAutomation May 15, 2025
4069c00
Automatic merge of master into galahad
OracleLabsAutomation May 16, 2025
c13ffc8
Automatic merge of master into galahad
OracleLabsAutomation May 16, 2025
29b86c5
Automatic merge of master into galahad
OracleLabsAutomation May 16, 2025
bb41fcd
Automatic merge of master into galahad
OracleLabsAutomation May 16, 2025
3ee3222
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
71f8d45
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
a284611
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
f5cc6f2
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
9cc2553
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
9c6fc20
Automatic merge of master into galahad
OracleLabsAutomation May 17, 2025
5ae7a16
Automatic merge of master into galahad
OracleLabsAutomation May 20, 2025
6b595f1
Automatic merge of master into galahad
OracleLabsAutomation May 20, 2025
4e8fa86
Adapt JDK-8334717: Add JVMCI support for APX EGPRs
mur47x111 Jan 21, 2025
723fd0c
Automatic merge of master into galahad
OracleLabsAutomation May 21, 2025
85b7dcb
Update galahad jdk
mur47x111 May 20, 2025
2927179
Automatic merge of master into galahad
OracleLabsAutomation May 21, 2025
a4726e0
Adapt JDK-8354556: Expand value-based class warnings to java.lang.ref…
mur47x111 May 21, 2025
4f45128
[JDK-8348174] Adapt JDK-8334717: Add JVMCI support for APX EGPRs
mur47x111 May 21, 2025
3741770
Automatic merge of master into galahad
OracleLabsAutomation May 21, 2025
da301e5
Automatic merge of master into galahad
OracleLabsAutomation May 21, 2025
2190dc6
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
6552a47
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
92c2c22
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
7d79273
Update galahad jdk
mur47x111 May 22, 2025
47d21f7
Adapt JDK-8345826: Do not automatically resolve jdk.internal.vm.ci wh…
dougxc May 15, 2025
e8efbb9
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
f29de13
[JDK-8357519] Adapt JDK-8357063: Document preconditions for DecimalDi…
mur47x111 May 22, 2025
8049cfb
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
02f480f
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
190e996
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
8e5e943
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
8b39a98
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
6fccaab
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
5563d43
Automatic merge of master into galahad
OracleLabsAutomation May 22, 2025
d49e96e
Automatic merge of master into galahad
OracleLabsAutomation May 23, 2025
b3bf297
Automatic merge of master into galahad
OracleLabsAutomation May 23, 2025
2a8dc3d
Automatic merge of master into galahad
OracleLabsAutomation May 23, 2025
f8c0125
Automatic merge of master into galahad
OracleLabsAutomation May 24, 2025
af304a0
Automatic merge of master into galahad
OracleLabsAutomation May 24, 2025
7c2cb6e
Automatic merge of master into galahad
OracleLabsAutomation May 24, 2025
286fd92
update JVMCI to 25+24-jvmci-b01
OracleLabsAutomation May 24, 2025
39d7479
Merge remote-tracking branch 'origin/galahad' into labsjdk/adopt-25+2…
dougxc May 25, 2025
6f420e7
[JDK-8348174] Adapt JDK-8334717: Add JVMCI support for APX EGPRs
dougxc May 25, 2025
3ca6190
Update JVMCI check
dougxc May 25, 2025
861c08e
[JDK-8345826] Adapt JDK-8345826: Do not automatically resolve jdk.int…
dougxc May 15, 2025
f6fcd82
deploy labsjdk snapshots
marwan-hallaoui May 25, 2025
288354d
svm: review ContainerLibrary changes for JDK 25+24
zapster May 26, 2025
a6a3079
svm: rename AccessControllerUtil -> PrivilegedStack to avoid rebuilds…
zapster May 26, 2025
e697712
AtomicReference will participate in PEA while WeakReference won't
mur47x111 May 26, 2025
947184b
Use jdk latest for github espresso style gate
gilles-duboscq May 27, 2025
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
3 changes: 2 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ jobs:
PRIMARY: "compiler"
# /espresso
- env:
JDK_VERSION: "21"
JDK_VERSION: "latest"
TOOLS_JDK_VERSION: "21"
GATE_TAGS: "style,fullbuild"
PRIMARY: "espresso"
# /substratevm
Expand Down
2 changes: 1 addition & 1 deletion ci/common.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ local common_json = import "../common.json";
[name]: jdk_base + common_json.jdks[name] + { jdk_version:: 21 }
for name in ["oraclejdk21"] + variants("labsjdk-ce-21") + variants("labsjdk-ee-21")
} + {
'oraclejdk23': jdk_base + common_json.jdks["oraclejdk23"] + { jdk_version:: 23 },
'oraclejdk24': jdk_base + common_json.jdks["oraclejdk24"] + { jdk_version:: 24 },
} + {
[name]: jdk_base + common_json.jdks[name] + { jdk_version:: parse_labsjdk_version(self), jdk_name:: "jdk-latest"}
for name in ["oraclejdk-latest"] + variants("labsjdk-ce-latest") + variants("labsjdk-ee-latest")
Expand Down
18 changes: 9 additions & 9 deletions common.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
"galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+23-2725", "platformspecific": true, "extrabundles": ["static-libs"]},
"galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+24-2970", "platformspecific": true, "extrabundles": ["static-libs"]},

"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true },
Expand Down Expand Up @@ -43,15 +43,15 @@
"labsjdk-ee-21-llvm": {"name": "labsjdk", "version": "ee-21.0.2+13-jvmci-23.1-b33-sulong", "platformspecific": true },
"graalvm-ee-21": {"name": "graalvm-java21", "version": "23.1.6", "platformspecific": true },

"oraclejdk23": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+37", "platformspecific": true, "extrabundles": ["static-libs"]},
"oraclejdk24": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24.0.1+9", "platformspecific": true, "extrabundles": ["static-libs"]},

"oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+23", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01-sulong", "platformspecific": true }
"oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+24", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+24-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+24-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+24-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+24-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+24-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+24-jvmci-b01-sulong", "platformspecific": true }
},

"eclipse": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2025, 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 @@ -29,16 +29,16 @@

import java.util.EnumSet;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import jdk.graal.compiler.asm.aarch64.AArch64Address;
import jdk.graal.compiler.asm.aarch64.AArch64Assembler;
import jdk.graal.compiler.asm.aarch64.AArch64MacroAssembler;
import jdk.graal.compiler.core.aarch64.test.AArch64TestMacroAssembler;
import jdk.graal.compiler.core.common.NumUtil;
import jdk.graal.compiler.test.GraalTest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import jdk.vm.ci.aarch64.AArch64;
import jdk.vm.ci.aarch64.AArch64.CPUFeature;
import jdk.vm.ci.code.Architecture;
Expand All @@ -59,16 +59,11 @@ private static EnumSet<AArch64.CPUFeature> computeFeatures() {
return features;
}

private static EnumSet<AArch64.Flag> computeFlags() {
EnumSet<AArch64.Flag> flags = EnumSet.noneOf(AArch64.Flag.class);
return flags;
}

private static TargetDescription createTarget() {
final int stackFrameAlignment = 16;
final int implicitNullCheckLimit = 4096;
final boolean inlineObjects = true;
Architecture arch = new AArch64(computeFeatures(), computeFlags());
Architecture arch = new AArch64(computeFeatures());
return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2017, 2025, 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 All @@ -24,12 +24,13 @@
*/
package jdk.graal.compiler.core.test.ea;

import java.lang.ref.WeakReference;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

import org.junit.Assert;
import org.junit.Test;

import jdk.graal.compiler.nodes.EndNode;
import jdk.graal.compiler.nodes.extended.BoxNode;
import jdk.graal.compiler.nodes.extended.UnboxNode;
import jdk.graal.compiler.nodes.java.StoreFieldNode;
Expand All @@ -38,13 +39,9 @@

public class PartialEscapeAnalysisIterationTest extends EATestBase {

// remember boxing nodes from before PEA
private List<BoxNode> boxNodes;

@Override
protected void canonicalizeGraph() {
super.canonicalizeGraph();
boxNodes = graph.getNodes().filter(BoxNode.class).snapshot();
}

private static final class AllocatedObject {
Expand All @@ -59,30 +56,33 @@ private static final class AllocatedObject {
}
}

public static int cnt;
public static volatile Object obj1;
public static volatile Double object1 = (double) 123;
public static volatile AllocatedObject object2 = new AllocatedObject(123);

public static String moveIntoBranchBox(int id) {
Double box = object1 + 1;
if (id == 0) {
obj1 = new WeakReference<>(box);
// Prevent if simplification
cnt++;
obj1 = new AtomicReference<>(box);
}
return "value";
}

public static String moveIntoBranch(int id) {
AllocatedObject box = new AllocatedObject(object2.value + 1);
if (id == 0) {
obj1 = new WeakReference<>(box);
obj1 = new AtomicReference<>(box);
}
return "value";
}

@Test
public void testJMHBlackholePattern() {
/*
* The overall number of allocations in this methods does not change during PEA, but the
* The overall number of allocations in these methods does not change during PEA, but the
* effects still need to be applied since they move the allocation between blocks.
*/

Expand All @@ -91,7 +91,7 @@ public void testJMHBlackholePattern() {
Assert.assertEquals(1, graph.getNodes().filter(UnboxNode.class).count());
Assert.assertEquals(1, graph.getNodes().filter(BoxNode.class).count());
// the boxing needs to be moved into the branch
Assert.assertTrue(graph.getNodes().filter(BoxNode.class).first().next() instanceof StoreFieldNode);
Assert.assertTrue(graph.getNodes().filter(BoxNode.class).first().next() instanceof CommitAllocationNode);

// test with a normal object
prepareGraph("moveIntoBranch", false);
Expand All @@ -104,7 +104,7 @@ public static String noLoopIterationBox(int id) {
Double box = object1 + 1;
for (int i = 0; i < 100; i++) {
if (id == i) {
obj1 = new WeakReference<>(box);
obj1 = new AtomicReference<>(box);
}
}
return "value";
Expand All @@ -114,7 +114,7 @@ public static String noLoopIteration(int id) {
AllocatedObject box = new AllocatedObject(object2.value + 1);
for (int i = 0; i < 100; i++) {
if (id == i) {
obj1 = new WeakReference<>(box);
obj1 = new AtomicReference<>(box);
}
}
return "value";
Expand All @@ -124,7 +124,7 @@ public static String noLoopIterationEmpty(int id) {
AllocatedObject box = new AllocatedObject();
for (int i = 0; i < 100; i++) {
if (id == i) {
obj1 = new WeakReference<>(box);
obj1 = new AtomicReference<>(box);
}
}
return "value";
Expand All @@ -133,23 +133,24 @@ public static String noLoopIterationEmpty(int id) {
@Test
public void testNoLoopIteration() {
/*
* PEA should not apply any effects on this method, since it cannot move the allocation into
* the branch anyway (it needs to stay outside the loop).
* After PEA, the BoxNode stays outside the loop.
*/

// test with a boxing object
prepareGraph("noLoopIterationBox", true);
List<BoxNode> boxNodes = graph.getNodes().filter(BoxNode.class).snapshot();
Assert.assertEquals(1, boxNodes.size());
Assert.assertTrue(boxNodes.get(0).isAlive());
Assert.assertTrue(boxNodes.getFirst().next() instanceof EndNode);

// test with a normal object (needs one iteration to replace NewInstance with
// CommitAllocation)
for (String name : new String[]{"noLoopIterationEmpty", "noLoopIteration"}) {
prepareGraph(name, false);
List<CommitAllocationNode> allocations = graph.getNodes().filter(CommitAllocationNode.class).snapshot();
new PartialEscapePhase(true, false, createCanonicalizerPhase(), null, graph.getOptions()).apply(graph, context);
Assert.assertEquals(1, allocations.size());
Assert.assertEquals(2, allocations.size());
Assert.assertTrue(allocations.get(0).isAlive());
Assert.assertTrue(allocations.get(1).isAlive());
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2025, 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 @@ -28,16 +28,14 @@

import java.util.Arrays;

import jdk.graal.compiler.core.test.GraalCompilerTest;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;

import jdk.graal.compiler.asm.amd64.AMD64Assembler;

import jdk.graal.compiler.core.test.GraalCompilerTest;
import jdk.vm.ci.code.InstalledCode;
import jdk.vm.ci.code.Register;
import jdk.vm.ci.code.RegisterArray;
import jdk.vm.ci.code.TargetDescription;
import jdk.vm.ci.hotspot.HotSpotCallingConventionType;
import jdk.vm.ci.meta.JavaKind;
Expand Down Expand Up @@ -128,7 +126,6 @@ private void testHelper(String name, CodeGenerator gen) {
}

private Register getArgumentRegister(int index, JavaKind kind) {
RegisterArray regs = getCodeCache().getRegisterConfig().getCallingConventionRegisters(HotSpotCallingConventionType.JavaCall, kind);
return regs.get(index);
return getCodeCache().getRegisterConfig().getCallingConventionRegisters(HotSpotCallingConventionType.JavaCall, kind).get(index);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2025, 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 @@ -69,19 +69,16 @@ public int getAsInt() {
}

private static class CompilationFinalWeakReferenceTestNode extends AbstractTestNode {
@CompilationFinal private WeakReference<Integer> finalWeakRefInteger;
@CompilationFinal private WeakReference<Object> finalWeakRefNull;
@CompilationFinal private WeakReference<IntSupplier> finalWeakRef;

CompilationFinalWeakReferenceTestNode(IntSupplier data) {
this.finalWeakRefInteger = new WeakReference<>(0);
this.finalWeakRefNull = new WeakReference<>(null);
this.finalWeakRef = new WeakReference<>(data);
}

@Override
public int execute(VirtualFrame frame) {
partialEvaluationConstantAndEquals(finalWeakRefInteger.get(), Integer.valueOf(0));
partialEvaluationConstantAndEquals(finalWeakRefNull.get(), null);

IntSupplier supplier = finalWeakRef.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,8 +232,10 @@ private enum OpAssertion {
}

protected boolean checkOperands(AMD64Op op, OperandSize size, Register resultReg, Register inputReg) {
assert resultReg == null || resultCategory.equals(resultReg.getRegisterCategory()) : "invalid result register " + resultReg + " used in " + op;
assert inputReg == null || inputCategory.equals(inputReg.getRegisterCategory()) : "invalid input register " + inputReg + " used in " + op;
GraalError.guarantee(resultReg == null || resultCategory.equals(resultReg.getRegisterCategory()), "invalid result register %s used in %s ", resultReg, op);
GraalError.guarantee(inputReg == null || inputCategory.equals(inputReg.getRegisterCategory()), "invalid input register %s used in %s ", inputReg, op);
GraalError.guarantee(resultReg == null || !inRC(CPU, resultReg) || (resultReg.encoding < 16), "APX register %s used in %s is not yet supported", resultReg, op);
GraalError.guarantee(inputReg == null || !inRC(CPU, inputReg) || (inputReg.encoding < 16), "APX register %s used in %s is not yet supported", inputReg, op);

for (OperandSize s : allowedSizes) {
if (size == s) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,9 @@ protected static int getRXB(Register reg, Register rm) {
* There is an SIB byte: In that case, X extends SIB.index and B extends SIB.base.
*/
protected static int getRXB(Register reg, AMD64Address rm) {
assert !isInvalidEncoding(reg);
GraalError.guarantee(!isInvalidEncoding(reg), "invalid encoding %s", reg);
GraalError.guarantee(rm.getBase() == null || rm.getBase().encoding < 16, "APX register used in %s not yet supported", rm);
GraalError.guarantee(rm.getIndex() == null || rm.getIndex().encoding < 16, "APX register used in %s not yet supported", rm);
int rxb = (reg == null ? 0 : reg.encoding & 0x08) >> 1;
if (!isInvalidEncoding(rm.getIndex())) {
rxb |= (rm.getIndex().encoding & 0x08) >> 2;
Expand Down
Loading