diff --git a/ci/ci_common/common.jsonnet b/ci/ci_common/common.jsonnet
index 4d4aad12589c..340b350d2911 100644
--- a/ci/ci_common/common.jsonnet
+++ b/ci/ci_common/common.jsonnet
@@ -83,6 +83,6 @@ common + common.frequencies + {
windows_amd64: common.windows_amd64 + graal_common_extras,
windows_server_2016_amd64: common.windows_server_2016_amd64 + graal_common_extras,
- // Other
+ // See GR-31169 for description of the mach5 target
mach5_target:: {targets+: ["mach5"]},
}
diff --git a/ci/common.jsonnet b/ci/common.jsonnet
index 850994500915..4f9021d53048 100644
--- a/ci/common.jsonnet
+++ b/ci/common.jsonnet
@@ -20,6 +20,9 @@ local common_json = import "../common.json";
} + {
[name]: common_json.jdks[name] + { jdk_version:: 20 }
for name in ["oraclejdk20"] + variants("labsjdk-ce-20") + variants("labsjdk-ee-20")
+ } + {
+ [name]: common_json.jdks[name] + { jdk_version:: 21 }
+ for name in ["oraclejdk21"]
},
assert std.assertEqual(std.objectFields(common_json.jdks), std.objectFields(jdks_data)),
@@ -52,6 +55,7 @@ local common_json = import "../common.json";
"windows-jdk17": { packages+: { "devkit:VS2022-17.1.0+1": "==0" }},
"windows-jdk19": { packages+: { "devkit:VS2022-17.1.0+1": "==0" }},
"windows-jdk20": { packages+: { "devkit:VS2022-17.1.0+1": "==0" }},
+ "windows-jdk21": { packages+: { "devkit:VS2022-17.1.0+1": "==1" }},
"linux-jdk17": { packages+: { "devkit:gcc10.3.0-OL6.4+1": "==0" }},
"linux-jdk19": { packages+: { "devkit:gcc11.2.0-OL6.4+1": "==0" }},
"linux-jdk20": { packages+: { "devkit:gcc11.2.0-OL6.4+1": "==0" }},
diff --git a/common.json b/common.json
index 09caa721d5c1..d44764ee62f2 100644
--- a/common.json
+++ b/common.json
@@ -32,7 +32,9 @@
"labsjdk-ce-20-llvm": {"name": "labsjdk", "version": "ce-20+34-jvmci-23.0-b10-sulong", "platformspecific": true },
"labsjdk-ee-20": {"name": "labsjdk", "version": "ee-20.0.1+9-jvmci-23.0-b10", "platformspecific": true },
"labsjdk-ee-20Debug": {"name": "labsjdk", "version": "ee-20.0.1+9-jvmci-23.0-b10-debug", "platformspecific": true },
- "labsjdk-ee-20-llvm": {"name": "labsjdk", "version": "ee-20.0.1+9-jvmci-23.0-b10-sulong", "platformspecific": true }
+ "labsjdk-ee-20-llvm": {"name": "labsjdk", "version": "ee-20.0.1+9-jvmci-23.0-b10-sulong", "platformspecific": true },
+
+ "oraclejdk21": {"name": "jpg-jdk", "version": "21", "build_id": "15", "release": true, "platformspecific": true, "extrabundles": ["static-libs"]}
},
"eclipse": {
diff --git a/compiler/ci/ci_common/gate.jsonnet b/compiler/ci/ci_common/gate.jsonnet
index 5f0d62e9e0e8..1560ba781e94 100644
--- a/compiler/ci/ci_common/gate.jsonnet
+++ b/compiler/ci/ci_common/gate.jsonnet
@@ -269,7 +269,7 @@
"weekly-compiler-coverage*": {},
- "weekly-compiler-test-labsjdk-20Debug-linux-amd64": {},
+ "weekly-compiler-test-labsjdk-20Debug-linux-amd64": t("5:00:00"),
"weekly-compiler-test_serialgc-labsjdk-20-linux-amd64": t("1:00:00") + c.mach5_target,
"weekly-compiler-test_serialgc-labsjdk-20-linux-aarch64": t("1:50:00"),
@@ -296,11 +296,12 @@
# returns: an object with a single "build" field
make_build(jdk, os_arch, task, suite="compiler", extra_tasks={},
include_common_os_arch=true,
+ jdk_name="labsjdk",
gates_manifest=gates,
dailies_manifest=dailies,
weeklies_manifest=weeklies,
monthlies_manifest=monthlies):: {
- local base_name = "%s-%s-labsjdk-%s-%s" % [suite, task, jdk, os_arch],
+ local base_name = "%s-%s-%s-%s-%s" % [suite, task, jdk_name, jdk, os_arch],
local gate_name = "gate-" + base_name,
local daily_name = "daily-" + base_name,
local weekly_name = "weekly-" + base_name,
@@ -327,7 +328,7 @@
else monthly_name
} +
(s + extra_tasks)[task] +
- c["labsjdk%s" % jdk] +
+ c["%s%s" % [jdk_name, jdk]] +
(if include_common_os_arch then c[std.strReplace(os_arch, "-", "_")] else {}) +
(if is_daily then s.daily else {}) +
(if is_weekly then s.weekly else {}) +
@@ -365,19 +366,21 @@
true
},
+ local all_os_arches = [
+ "linux-amd64",
+ "linux-aarch64",
+ "darwin-amd64",
+ "darwin-aarch64",
+ "windows-amd64"
+ ],
+
# Builds run on all platforms (platform = JDK + OS + ARCH)
local all_platforms_builds = [self.make_build(jdk, os_arch, task).build
for jdk in [
"17",
"20"
]
- for os_arch in [
- "linux-amd64",
- "linux-aarch64",
- "darwin-amd64",
- "darwin-aarch64",
- "windows-amd64"
- ]
+ for os_arch in all_os_arches
for task in [
"test",
"truffle_xcomp",
@@ -441,6 +444,14 @@
]
],
+ # Builds run on only on jdk21
+ local jdk21_builds = [self.make_build("21", os_arch, task, jdk_name="oraclejdk").build
+ for os_arch in all_os_arches
+ for task in [
+ "test",
+ ]
+ ],
+
# Builds run on only on linux-amd64-jdk20Debug
local linux_amd64_jdk20Debug_builds = [self.make_build("20Debug", "linux-amd64", task).build
for task in [
@@ -454,6 +465,7 @@
all_platforms_builds +
all_zgc_builds +
all_serialgc_builds +
+ jdk21_builds +
linux_amd64_jdk20_builds +
linux_amd64_jdk20Debug_builds,
diff --git a/compiler/mx.compiler/suite.py b/compiler/mx.compiler/suite.py
index 5f96e76328a3..ecb4be47aec5 100644
--- a/compiler/mx.compiler/suite.py
+++ b/compiler/mx.compiler/suite.py
@@ -2062,6 +2062,7 @@
"exports" : [
"""* to com.oracle.graal.graal_enterprise,org.graalvm.nativeimage.pointsto,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.llvm,com.oracle.svm.svm_enterprise,com.oracle.svm_enterprise.ml_dataset,org.graalvm.nativeimage.base,
org.graalvm.extraimage.builder,com.oracle.svm.extraimage_enterprise""",
+ "org.graalvm.compiler.java to org.graalvm.nativeimage.agent.tracing,org.graalvm.nativeimage.configure",
"org.graalvm.compiler.core.common to jdk.internal.vm.compiler.management,org.graalvm.nativeimage.agent.tracing,org.graalvm.nativeimage.objectfile",
"org.graalvm.compiler.debug to jdk.internal.vm.compiler.management,org.graalvm.nativeimage.objectfile",
"org.graalvm.compiler.hotspot to jdk.internal.vm.compiler.management",
diff --git a/compiler/src/org.graalvm.compiler.api.test/src/org/graalvm/compiler/api/test/ExportingClassLoader.java b/compiler/src/org.graalvm.compiler.api.test/src/org/graalvm/compiler/api/test/ExportingClassLoader.java
index 4354afd5efe6..e3eec111768d 100644
--- a/compiler/src/org.graalvm.compiler.api.test/src/org/graalvm/compiler/api/test/ExportingClassLoader.java
+++ b/compiler/src/org.graalvm.compiler.api.test/src/org/graalvm/compiler/api/test/ExportingClassLoader.java
@@ -29,10 +29,12 @@
* in the unnamed module associated with the loader.
*/
public class ExportingClassLoader extends ClassLoader {
+ @SuppressWarnings("this-escape")
public ExportingClassLoader() {
ModuleSupport.exportAllPackagesTo(getClass(), this);
}
+ @SuppressWarnings("this-escape")
public ExportingClassLoader(ClassLoader parent) {
super(parent);
ModuleSupport.exportAllPackagesTo(getClass(), this);
diff --git a/compiler/src/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java b/compiler/src/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java
index b77e4e014adb..1a4660767ded 100644
--- a/compiler/src/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java
+++ b/compiler/src/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java
@@ -67,6 +67,7 @@ public class AArch64MacroAssembler extends AArch64Assembler {
// preferred byte alignment for a branch target
public static final int PREFERRED_BRANCH_TARGET_ALIGNMENT = 16;
+ @SuppressWarnings("this-escape")
public AArch64MacroAssembler(TargetDescription target) {
super(target);
this.neon = new AArch64ASIMDMacroAssembler(this);
diff --git a/compiler/src/org.graalvm.compiler.core.aarch64.test/src/org/graalvm/compiler/core/aarch64/test/AArch64MembarOpTest.java b/compiler/src/org.graalvm.compiler.core.aarch64.test/src/org/graalvm/compiler/core/aarch64/test/AArch64MembarOpTest.java
index 6eeb2fca647b..8783ce43791e 100644
--- a/compiler/src/org.graalvm.compiler.core.aarch64.test/src/org/graalvm/compiler/core/aarch64/test/AArch64MembarOpTest.java
+++ b/compiler/src/org.graalvm.compiler.core.aarch64.test/src/org/graalvm/compiler/core/aarch64/test/AArch64MembarOpTest.java
@@ -55,6 +55,7 @@ public class AArch64MembarOpTest extends BackendTest {
private final JVMCIBackend providers;
private final CompilationResultBuilder crb;
+ @SuppressWarnings("this-escape")
public AArch64MembarOpTest() {
this.providers = JVMCI.getRuntime().getHostJVMCIBackend();
diff --git a/compiler/src/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/JavaConstantFieldProvider.java b/compiler/src/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/JavaConstantFieldProvider.java
index f7b124816d15..2149108b39e0 100644
--- a/compiler/src/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/JavaConstantFieldProvider.java
+++ b/compiler/src/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/JavaConstantFieldProvider.java
@@ -132,8 +132,11 @@ protected boolean isPrimitiveBoxingCacheField(ResolvedJavaField field) {
if (isArray(field) && field.isFinal() && field.getName().equals("cache")) {
ResolvedJavaType type = field.getDeclaringClass();
String typeName = type.getName();
- if (typeName.equals("Ljava/lang/Character$CharacterCache;") || typeName.equals("Ljava/lang/Byte$ByteCache;") || typeName.equals("Ljava/lang/Short$ShortCache;") ||
- typeName.equals("Ljava/lang/Integer$IntegerCache;") || typeName.equals("Ljava/lang/Long$LongCache;")) {
+ if (typeName.equals("Ljava/lang/Character$CharacterCache;") ||
+ typeName.equals("Ljava/lang/Byte$ByteCache;") ||
+ typeName.equals("Ljava/lang/Short$ShortCache;") ||
+ typeName.equals("Ljava/lang/Integer$IntegerCache;") ||
+ typeName.equals("Ljava/lang/Long$LongCache;")) {
return true;
}
}
diff --git a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationRegressionTest.java b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationRegressionTest.java
index 5ed1202c8741..ffc1c3aff7d0 100644
--- a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationRegressionTest.java
+++ b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationRegressionTest.java
@@ -55,6 +55,7 @@ public class ConditionalEliminationRegressionTest extends GraalCompilerTest {
private final SpeculationLog speculationLog;
+ @SuppressWarnings("this-escape")
public ConditionalEliminationRegressionTest() {
speculationLog = getCodeCache().createSpeculationLog();
}
diff --git a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CountedLoopOverflowTest.java b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CountedLoopOverflowTest.java
index 7d21dbbf3eb7..d2c35aa33686 100644
--- a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CountedLoopOverflowTest.java
+++ b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CountedLoopOverflowTest.java
@@ -50,6 +50,7 @@
public class CountedLoopOverflowTest extends GraalCompilerTest {
private final SpeculationLog speculationLog;
+ @SuppressWarnings("this-escape")
public CountedLoopOverflowTest() {
speculationLog = getCodeCache().createSpeculationLog();
}
diff --git a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java
index 255f90cbf1f9..734111e67643 100644
--- a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java
+++ b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java
@@ -373,6 +373,7 @@ public static void resetCache() {
cache.get().clear();
}
+ @SuppressWarnings("this-escape")
public GraalCompilerTest() {
this.backend = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend();
this.providers = getBackend().getProviders();
diff --git a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/InfopointReasonTest.java b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/InfopointReasonTest.java
index 15a4312fc7ce..33cbf5efa741 100644
--- a/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/InfopointReasonTest.java
+++ b/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/InfopointReasonTest.java
@@ -51,6 +51,7 @@ public class InfopointReasonTest extends GraalCompilerTest {
public static final String[] STRINGS = new String[]{"world", "everyone", "you"};
+ @SuppressWarnings("this-escape")
public InfopointReasonTest() {
// Call testMethod to ensure all method references are resolved.
testMethod();
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilationWrapper.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilationWrapper.java
index 0e3bfe4eaea6..7fe39f89b871 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilationWrapper.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilationWrapper.java
@@ -31,6 +31,8 @@
import static org.graalvm.compiler.core.GraalCompilerOptions.MaxCompilationProblemsPerAction;
import static org.graalvm.compiler.core.common.GraalOptions.TrackNodeSourcePosition;
import static org.graalvm.compiler.debug.DebugOptions.Dump;
+import static org.graalvm.compiler.debug.DebugOptions.Time;
+import static org.graalvm.compiler.debug.DebugOptions.Count;
import static org.graalvm.compiler.debug.DebugOptions.DumpPath;
import static org.graalvm.compiler.debug.DebugOptions.MethodFilter;
import static org.graalvm.compiler.debug.DebugOptions.PrintBackendCFG;
@@ -336,6 +338,8 @@ protected T handleFailure(DebugContext initialDebug, Throwable cause) {
OptionValues retryOptions = new OptionValues(initialOptions,
Dump, ":" + DebugOptions.DiagnoseDumpLevel.getValue(initialOptions),
MethodFilter, null,
+ Count, "",
+ Time, "",
DumpPath, dumpPath,
PrintBackendCFG, true,
TrackNodeSourcePosition, true);
@@ -343,26 +347,38 @@ protected T handleFailure(DebugContext initialDebug, Throwable cause) {
ByteArrayOutputStream logBaos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(logBaos);
try (DebugContext retryDebug = createRetryDebugContext(initialDebug, retryOptions, ps)) {
- T res = performCompilation(retryDebug);
+ T res;
+ try {
+ res = performCompilation(retryDebug);
+ } finally {
+ ps.println("");
+ retryDebug.printMetrics(initialDebug.getDescription(), ps, true);
+ ps.println("");
+ }
ps.println("There was no exception during retry.");
- return postRetry(action, retryLogFile, logBaos, ps, res);
+ finalizeRetryLog(retryLogFile, logBaos, ps);
+ return postRetry(action, res);
} catch (Throwable e) {
ps.println("Exception during retry:");
e.printStackTrace(ps);
- return postRetry(action, retryLogFile, logBaos, ps, handleException(cause));
+ finalizeRetryLog(retryLogFile, logBaos, ps);
+ return postRetry(action, handleException(cause));
}
}
}
- private T postRetry(ExceptionAction action, String retryLogFile, ByteArrayOutputStream logBaos, PrintStream ps, T res) {
+ private T postRetry(ExceptionAction action, T res) {
+ maybeExitVM(action);
+ return res;
+ }
+
+ private static void finalizeRetryLog(String retryLogFile, ByteArrayOutputStream logBaos, PrintStream ps) {
ps.close();
try (OutputStream fos = PathUtilities.openOutputStream(retryLogFile, true)) {
fos.write(logBaos.toByteArray());
} catch (Throwable e) {
TTY.printf("Error writing to %s: %s%n", retryLogFile, e);
}
- maybeExitVM(action);
- return res;
}
/**
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilerThread.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilerThread.java
index 17248eb80b4c..397b3ee3b004 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilerThread.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/CompilerThread.java
@@ -31,6 +31,7 @@
*/
public class CompilerThread extends Thread {
+ @SuppressWarnings("this-escape")
public CompilerThread(Runnable r, String namePrefix) {
super(r);
this.setName(namePrefix + "-" + GraalServices.getThreadId(this));
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/NodeLIRBuilder.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/NodeLIRBuilder.java
index 7b0c870afff5..b5c0617edd65 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/NodeLIRBuilder.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/NodeLIRBuilder.java
@@ -145,6 +145,7 @@ public abstract class NodeLIRBuilder implements NodeLIRBuilderTool, LIRGeneratio
private EconomicMap, List> matchRules;
private EconomicMap sharedMatchCounts;
+ @SuppressWarnings("this-escape")
public NodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool gen, NodeMatchRules nodeMatchRules) {
this.gen = (LIRGenerator) gen;
this.nodeMatchRules = nodeMatchRules;
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyHighTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyHighTier.java
index 96adc1adc79b..1e250105c20e 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyHighTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyHighTier.java
@@ -30,6 +30,7 @@
public class EconomyHighTier extends BaseTier {
+ @SuppressWarnings("this-escape")
public EconomyHighTier() {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
appendPhase(canonicalizer);
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyLowTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyLowTier.java
index 579c60c39dea..39112896f92c 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyLowTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyLowTier.java
@@ -36,6 +36,7 @@
public class EconomyLowTier extends BaseTier {
+ @SuppressWarnings("this-escape")
public EconomyLowTier() {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
appendPhase(new LowTierLoweringPhase(canonicalizer));
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyMidTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyMidTier.java
index cb70bb423c49..3b5c8454b248 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyMidTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/EconomyMidTier.java
@@ -35,6 +35,7 @@
public class EconomyMidTier extends BaseTier {
+ @SuppressWarnings("this-escape")
public EconomyMidTier() {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
appendPhase(new RemoveValueProxyPhase(canonicalizer));
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/HighTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/HighTier.java
index ea1a59bee3a1..fc522bd304b8 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/HighTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/HighTier.java
@@ -68,6 +68,7 @@ public static class Options {
// @formatter:on
}
+ @SuppressWarnings("this-escape")
public HighTier(OptionValues options) {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
appendPhase(canonicalizer);
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
index ab00cd303004..4b49620c20b8 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
@@ -57,6 +57,7 @@ static class Options {
}
+ @SuppressWarnings("this-escape")
public LowTier(OptionValues options) {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
CanonicalizerPhase canonicalizerWithoutGVN = canonicalizer.copyWithoutGVN();
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/MidTier.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/MidTier.java
index 5bbfd44f6150..6950f6290285 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/MidTier.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/MidTier.java
@@ -64,6 +64,7 @@
public class MidTier extends BaseTier {
+ @SuppressWarnings("this-escape")
public MidTier(OptionValues options) {
CanonicalizerPhase canonicalizer = CanonicalizerPhase.create();
diff --git a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/fuzzing/MinimalFuzzedCompilationPlan.java b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/fuzzing/MinimalFuzzedCompilationPlan.java
index 498362cd171b..6602ae45f8f7 100644
--- a/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/fuzzing/MinimalFuzzedCompilationPlan.java
+++ b/compiler/src/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/fuzzing/MinimalFuzzedCompilationPlan.java
@@ -46,6 +46,7 @@ public class MinimalFuzzedCompilationPlan extends AbstractCompilationPlan {
*/
private final long randomSeed;
+ @SuppressWarnings("this-escape")
protected MinimalFuzzedCompilationPlan(MinimalFuzzedTierPlan minimalHighTier,
MinimalFuzzedTierPlan minimalMidTier,
MinimalFuzzedTierPlan minimalLowTier,
diff --git a/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java b/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java
index 3f6f7e9c9384..60100da3c6fc 100644
--- a/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java
+++ b/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java
@@ -2301,7 +2301,22 @@ private void printMetricsCSV(PrintStream out, Object compilable, Integer identit
}
/**
- * Appends metrics in a human readable format to {@code out} for a single method compilation.
+ * Prints the metrics in a human-readable format to {@code out} for a single method compilation.
+ *
+ * @param clear specifies if the metrics should be cleared after printing
+ */
+ public void printMetrics(Description desc, PrintStream out, boolean clear) {
+ if (metricValues == null) {
+ return;
+ }
+ printMetrics(out, desc.compilable, 0, 0, desc.identifier);
+ if (clear) {
+ metricValues = null;
+ }
+ }
+
+ /**
+ * Appends metrics in a human-readable format to {@code out} for a single method compilation.
*
* @param identity the identity hash code of {@code compilable}
* @param compilationNr where this compilation lies in the ordered sequence of all compilations
diff --git a/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/LogStream.java b/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/LogStream.java
index 961e87596daf..1af1c0f9e09f 100644
--- a/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/LogStream.java
+++ b/compiler/src/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/LogStream.java
@@ -110,6 +110,7 @@ public LogStream(OutputStream os) {
*
* @param sink the {@link Consumer} to which prints are sent
*/
+ @SuppressWarnings("this-escape")
public LogStream(Consumer super String> sink) {
this.consumer = new ForwardingConsumer(this, sink);
lineBuffer = new StringBuilder(100);
@@ -501,6 +502,7 @@ private static final class ForwardingConsumer implements Consumer {
private final Consumer super String> delegate;
private final AtomicReference printStreamRef;
+ @SuppressWarnings("this-escape")
ForwardingConsumer(LogStream owner, Consumer super String> delegate) {
this.owner = Objects.requireNonNull(owner, "Owner must be non null.");
this.delegate = Objects.requireNonNull(delegate, "Delegate must be non null.");
diff --git a/compiler/src/org.graalvm.compiler.graph/src/org/graalvm/compiler/graph/Node.java b/compiler/src/org.graalvm.compiler.graph/src/org/graalvm/compiler/graph/Node.java
index c779d494835b..426824062718 100644
--- a/compiler/src/org.graalvm.compiler.graph/src/org/graalvm/compiler/graph/Node.java
+++ b/compiler/src/org.graalvm.compiler.graph/src/org/graalvm/compiler/graph/Node.java
@@ -306,6 +306,7 @@ static class NodeCreationStackTrace extends NodeStackTrace {
public static class NodeInsertionStackTrace extends NodeStackTrace {
}
+ @SuppressWarnings("this-escape")
public Node(NodeClass extends Node> c) {
init(c);
}
diff --git a/compiler/src/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotNodeLIRBuilder.java b/compiler/src/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotNodeLIRBuilder.java
index 7290481a7853..0771e01b3b07 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotNodeLIRBuilder.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotNodeLIRBuilder.java
@@ -73,6 +73,7 @@
*/
public class AArch64HotSpotNodeLIRBuilder extends AArch64NodeLIRBuilder implements HotSpotNodeLIRBuilder {
+ @SuppressWarnings("this-escape")
public AArch64HotSpotNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool gen, AArch64NodeMatchRules nodeMatchRules) {
super(graph, gen, nodeMatchRules);
assert gen instanceof AArch64HotSpotLIRGenerator;
diff --git a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotFrameMap.java b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotFrameMap.java
index c9ca18ddec04..9745053943df 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotFrameMap.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotFrameMap.java
@@ -92,6 +92,7 @@ public class AMD64HotSpotFrameMap extends AMD64FrameMap {
*/
private StackSlot deoptimizationRescueSlot;
+ @SuppressWarnings("this-escape")
public AMD64HotSpotFrameMap(CodeCacheProvider codeCache, RegisterConfig registerConfig, ReferenceMapBuilderFactory referenceMapFactory, GraalHotSpotVMConfig config) {
super(codeCache, registerConfig, referenceMapFactory, config.preserveFramePointer);
// HotSpot is picky about the frame layout in the presence of nmethod entry barriers, so
diff --git a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java
index 957e6331aef0..cb75892de35d 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java
@@ -71,6 +71,7 @@
*/
public class AMD64HotSpotNodeLIRBuilder extends AMD64NodeLIRBuilder implements HotSpotNodeLIRBuilder {
+ @SuppressWarnings("this-escape")
public AMD64HotSpotNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool gen, AMD64NodeMatchRules nodeMatchRules) {
super(graph, gen, nodeMatchRules);
assert gen instanceof AMD64HotSpotLIRGenerator;
diff --git a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64X87MathSnippets.java b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64X87MathSnippets.java
index 4cc31dd73c17..92857549bf3d 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64X87MathSnippets.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64X87MathSnippets.java
@@ -81,6 +81,7 @@ public static class Templates extends AbstractTemplates {
private final SnippetInfo cos;
private final SnippetInfo tan;
+ @SuppressWarnings("this-escape")
public Templates(OptionValues options, Providers providers) {
super(options, providers);
diff --git a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java
index 466c52a8e1b4..c833b0f6586d 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java
@@ -195,7 +195,7 @@ public void testTruffleCompilation3() throws IOException, InterruptedException {
"org.graalvm.compiler.truffle.test.SLTruffleGraalTestSuite", "test");
}
- private static final boolean VERBOSE = Boolean.getBoolean(CompilationWrapperTest.class.getSimpleName() + ".verbose");
+ private static final boolean VERBOSE = Boolean.getBoolean("CompilationWrapperTest.verbose");
private static void testHelper(List initialProbes, List extraVmArgs, String... mainClassAndArgs) throws IOException, InterruptedException {
final File dumpPath = new File(CompilationWrapperTest.class.getSimpleName() + "_" + System.currentTimeMillis()).getAbsoluteFile();
@@ -262,6 +262,12 @@ String test() {
entries.add(name);
if (name.endsWith(".bgv") || name.endsWith(".cfg")) {
bgvOrCfgFiles++;
+ } else if (name.endsWith("retry.log")) {
+ String log = new String(dd.getInputStream(ze).readAllBytes());
+ Pattern re = Pattern.compile(".*", Pattern.DOTALL);
+ if (!re.matcher(log).find()) {
+ Assert.fail(String.format("Could not find %s in %s:%n%s", re.pattern(), name, log));
+ }
}
}
if (bgvOrCfgFiles == 0) {
diff --git a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/DeferredBarrierAdditionTest.java b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/DeferredBarrierAdditionTest.java
index 2f232a080d42..7613f311663d 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/DeferredBarrierAdditionTest.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/DeferredBarrierAdditionTest.java
@@ -58,6 +58,7 @@
* mark. By creating references between objects only one write can skip the card mark and the other
* must emit a card mark.
*/
+@SuppressWarnings("this-escape")
public class DeferredBarrierAdditionTest extends HotSpotGraalCompilerTest {
private final GraalHotSpotVMConfig config = runtime().getVMConfig();
diff --git a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalHotSpotVMConfigAccessTest.java b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalHotSpotVMConfigAccessTest.java
index 63d6b8e01ff1..cf6f85c5d1e2 100644
--- a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalHotSpotVMConfigAccessTest.java
+++ b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalHotSpotVMConfigAccessTest.java
@@ -32,6 +32,7 @@
import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
import org.graalvm.compiler.runtime.RuntimeProvider;
import org.junit.Assert;
+import org.junit.Assume;
import org.junit.Test;
import jdk.vm.ci.common.JVMCIError;
@@ -39,6 +40,7 @@
public class GraalHotSpotVMConfigAccessTest {
@Test
public void test() {
+ Assume.assumeTrue("Only expect error in JDK with explicit JVMCI version (e.g. labsjdk)", GraalHotSpotVMConfig.JVMCI);
HotSpotGraalRuntimeProvider rt = (HotSpotGraalRuntimeProvider) Graal.getRequiredCapability(RuntimeProvider.class);
GraalHotSpotVMConfig config = rt.getVMConfig();
@@ -57,8 +59,8 @@ public void test() {
private static void testErrorInternal(Supplier