From 3f50acfbc54de4493174279f35884458ac295236 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Fri, 31 Mar 2023 14:17:55 +0200 Subject: [PATCH 01/16] added utility for adding a JVM library to a target JDK from a source JDK --- .../src/org/graalvm/compiler/test/AddJVM.java | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/AddJVM.java diff --git a/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/AddJVM.java b/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/AddJVM.java new file mode 100644 index 000000000000..bf536f302111 --- /dev/null +++ b/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/AddJVM.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2023, 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. + */ +package org.graalvm.compiler.test; + +import java.io.IOException; +import java.io.PrintStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.LinkedHashMap; +import java.util.stream.Collectors; + +/** + * Copies a JVM library from one JDK into another. For example, copy {@code lib/server/libjvm.so} + * from a fastdebug JDK into {@code lib/fastdebug} of a product JDK which can then be used with + * {@code java -fastdebug}. + */ +public class AddJVM { + + final PrintStream out = System.out; + + private void help() { + String prog = AddJVM.class.getSimpleName(); + out.printf("Usage: %s src-java-home src-vm-name dst-java-home dst-vm-name%n", prog); + out.printf("%n"); + out.printf("Example:%n"); + out.printf(" %s $HOME/.mx/jdks/labsjdk-ce-20-debug-jvmci-23.0-b08 server $HOME/.mx/jdks/labsjdk-ce-20-jvmci-23.0-b08 fastdebug%n", prog); + } + + private static void error(String format, Object... args) { + throw new Error(String.format(format, args)); + } + + private static Path exists(Path path) { + if (!Files.exists(path)) { + error("%s does not exist", path); + } + return path; + } + + private static Path dir(Path path) { + if (!Files.isDirectory(exists(path))) { + error("%s is not a directory", path); + } + return path; + } + + private void run(String[] args) throws Exception { + if (args.length != 4) { + help(); + System.exit(1); + } + Path srcJavaHome = dir(Path.of(args[0])); + String srcVmName = args[1]; + Path dstJavaHome = dir(Path.of(args[2])); + String dstVmName = args[3]; + + boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); + String vmLibParent = isWindows ? "bin" : "lib"; + Path srcVm = dir(srcJavaHome.resolve(Path.of(vmLibParent, srcVmName))); + Path dstVm = dstJavaHome.resolve(Path.of(vmLibParent, dstVmName)); + Path dstJvmCfg = exists(dstJavaHome.resolve(Path.of("lib", "jvm.cfg"))); + + copyJvm(srcVm, dstVm); + updateJvmCfg(dstVmName, dstJvmCfg); + } + + /** + * Copies a JVM library directory. + * + * @param srcVm source JVM library directory + * @param dstVm destination JVM library directory (must not exist) + */ + private static void copyJvm(Path srcVm, Path dstVm) throws IOException { + if (Files.exists(dstVm)) { + error("Cannot overwrite existing VM in %s. Delete %s and retry.", dstVm, dstVm); + } + Files.createDirectories(dstVm); + + Files.list(srcVm).forEach(e -> { + // Do not copy class shared archives as they are coupled to + // lib/modules in the src JDK. + String name = e.getFileName().toString(); + if (!name.endsWith(".jsa")) { + Path dst = dstVm.resolve(name); + try { + Files.copy(e, dst); + } catch (IOException ex) { + error("Error copying %s to %s: %s", e, dst, ex); + } + } + }); + } + + /** + * Update {@code lib/jvm.cfg} to ensure it has an entry for {@code vmName}. + * + * @param vmName name of directory containing a JVM library (e.g. "server") + * @param jvmCfg path to the {@code jvm.cfg} file to update + */ + private static void updateJvmCfg(String vmName, Path jvmCfg) throws IOException { + // LinkedHashMap preserves ordering which is meaningful in jvm.cfg + LinkedHashMap cfg = new LinkedHashMap<>(); + for (String line : Files.readString(jvmCfg).split("\n")) { + if (line.startsWith("#")) { + cfg.put(line, ""); + } else { + String[] parts = line.split("\s", 2); + if (parts.length != 2) { + error("malformed line in %s:%n%s", jvmCfg, line); + } + cfg.put(parts[0], parts[1]); + } + } + cfg.put("-" + vmName, "KNOWN"); + + String newCfg = cfg.entrySet().stream().// + map(e -> e.getKey() + " " + e.getValue()).// + collect(Collectors.joining("\n", "", "\n")); + Files.writeString(jvmCfg, newCfg); + } + + public static void main(String[] args) throws Exception { + new AddJVM().run(args); + } +} From 339388498cb283c77742c77d24626796c92e0165 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Fri, 17 Mar 2023 12:35:33 +0100 Subject: [PATCH 02/16] add libgraal jobs to mach5 testing --- ci/ci_common/common.jsonnet | 2 +- vm/ci/ci_common/libgraal.jsonnet | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/vm/ci/ci_common/libgraal.jsonnet b/vm/ci/ci_common/libgraal.jsonnet index 89789c15f5fb..9f940719c06b 100644 --- a/vm/ci/ci_common/libgraal.jsonnet +++ b/vm/ci/ci_common/libgraal.jsonnet @@ -67,7 +67,7 @@ local utils = import '../../../ci/ci_common/common-utils.libsonnet'; # See definition of `gates` local variable in ../../compiler/ci_common/gate.jsonnet local gates = { - "gate-vm-libgraal_compiler-labsjdk-20-linux-amd64": {}, + "gate-vm-libgraal_compiler-labsjdk-20-linux-amd64": {} + graal_common.mach5_target, "gate-vm-libgraal_truffle-labsjdk-20-linux-amd64": {}, "gate-vm-libgraal_compiler_zgc-labsjdk-20-linux-amd64": {}, "gate-vm-libgraal_compiler_quickbuild-labsjdk-20-linux-amd64": {}, From cc8f42e84fb39d98c61d431ab0db1cb81c506f73 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 16 Mar 2023 14:35:45 +0100 Subject: [PATCH 03/16] adapt to JDK 21 changes --- .../hotspot/GraalHotSpotVMConfig.java | 2 +- .../meta/UnimplementedGraalIntrinsics.java | 5 ++ .../graalvm/compiler/java/LambdaUtils.java | 35 ++++++---- .../truffle/test/LazyClassLoadingTest.java | 2 +- substratevm/mx.substratevm/mx_substratevm.py | 2 + .../core/jdk/FileSystemProviderSupport.java | 65 +++++++++++++------ 6 files changed, 78 insertions(+), 33 deletions(-) diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java index 5192ec928b7e..78a2aafaea54 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java @@ -239,7 +239,7 @@ public final int logMinObjAlignment() { public final int layoutHelperHeaderSizeMask = getConstant("Klass::_lh_header_size_mask", Integer.class); public final int instanceKlassInitStateOffset = getFieldOffset("InstanceKlass::_init_state", Integer.class, JDK >= 20 ? "InstanceKlass::ClassState" : "u1"); - public final int instanceKlassInitThreadOffset = getFieldOffset("InstanceKlass::_init_thread", Integer.class, "Thread*"); + public final int instanceKlassInitThreadOffset = getFieldOffset("InstanceKlass::_init_thread", Integer.class, JDK >= 21 ? "JavaThread*" : "Thread*"); public final int instanceKlassStateBeingInitialized = getConstant("InstanceKlass::being_initialized", Integer.class); public final int instanceKlassStateFullyInitialized = getConstant("InstanceKlass::fully_initialized", Integer.class); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java index 979cbbddb5e7..18553c44dd1e 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java @@ -420,6 +420,7 @@ public UnimplementedGraalIntrinsics(GraalHotSpotVMConfig config, Architecture ar "jdk/internal/vm/vector/VectorSupport.convert(ILjava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$VectorConvertOp;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;", "jdk/internal/vm/vector/VectorSupport.extract(Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VecExtractOp;)J", "jdk/internal/vm/vector/VectorSupport.fromBitsCoerced(Ljava/lang/Class;Ljava/lang/Class;IJILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;", + "jdk/internal/vm/vector/VectorSupport.indexPartiallyInUpperRange(Ljava/lang/Class;Ljava/lang/Class;IJJLjdk/internal/vm/vector/VectorSupport$IndexPartiallyInUpperRangeOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorMask;", "jdk/internal/vm/vector/VectorSupport.indexVector(Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$IndexOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector;", "jdk/internal/vm/vector/VectorSupport.insert(Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;IJLjdk/internal/vm/vector/VectorSupport$VecInsertOp;)Ljdk/internal/vm/vector/VectorSupport$Vector;", "jdk/internal/vm/vector/VectorSupport.load(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JLjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;", @@ -439,6 +440,10 @@ public UnimplementedGraalIntrinsics(GraalHotSpotVMConfig config, Architecture ar "jdk/internal/vm/vector/VectorSupport.unaryOp(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector;" // @formatter:on ); + if (JAVA_SPEC >= 21) { + // JDK-8282664 + add(toBeInvestigated, "jdk/internal/util/ArraysSupport.vectorizedHashCode(Ljava/lang/Object;IIII)I"); + } // not implemented yet, watch https://bugs.openjdk.org/browse/JDK-8294198 add(toBeInvestigated, diff --git a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/LambdaUtils.java b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/LambdaUtils.java index 7c5c85a63a5a..d0a83166b4cf 100644 --- a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/LambdaUtils.java +++ b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/LambdaUtils.java @@ -24,7 +24,7 @@ */ package org.graalvm.compiler.java; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -35,6 +35,7 @@ import java.util.stream.StreamSupport; import org.graalvm.compiler.debug.DebugContext; +import org.graalvm.compiler.nodes.Invoke; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.graphbuilderconf.ClassInitializationPlugin; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration; @@ -49,10 +50,24 @@ import jdk.vm.ci.meta.ResolvedJavaType; public final class LambdaUtils { - private static final Pattern LAMBDA_PATTERN = Pattern.compile("\\$\\$Lambda\\$\\d+[/\\.][^/]+;"); + + private static final Pattern LAMBDA_PATTERN; private static final char[] HEX = "0123456789abcdef".toCharArray(); - public static final String LAMBDA_SPLIT_PATTERN = "\\$\\$Lambda\\$"; - public static final String LAMBDA_CLASS_NAME_SUBSTRING = "$$Lambda$"; + public static final String LAMBDA_SPLIT_PATTERN; + public static final String LAMBDA_CLASS_NAME_SUBSTRING; + + static { + if (Runtime.version().feature() < 21) { + LAMBDA_PATTERN = Pattern.compile("\\$\\$Lambda\\$\\d+[/.][^/]+;"); + LAMBDA_SPLIT_PATTERN = "\\$\\$Lambda\\$"; + LAMBDA_CLASS_NAME_SUBSTRING = "$$Lambda$"; + } else { + // JDK-8292914 + LAMBDA_PATTERN = Pattern.compile("\\$\\$Lambda[/.][^/]+;"); + LAMBDA_SPLIT_PATTERN = "\\$\\$Lambda"; + LAMBDA_CLASS_NAME_SUBSTRING = "$$Lambda"; + } + } private static GraphBuilderConfiguration buildLambdaParserConfig(ClassInitializationPlugin cip) { GraphBuilderConfiguration.Plugins plugins = new GraphBuilderConfiguration.Plugins(new InvocationPlugins()); @@ -106,7 +121,7 @@ public static String findStableLambdaName(ClassInitializationPlugin cip, Provide } catch (Throwable e) { throw debug.handle(e); } - List invokedMethods = StreamSupport.stream(graph.getInvokes().spliterator(), false).map((inv) -> inv.getTargetMethod()).collect(Collectors.toList()); + List invokedMethods = StreamSupport.stream(graph.getInvokes().spliterator(), false).map(Invoke::getTargetMethod).collect(Collectors.toList()); if (invokedMethods.isEmpty()) { StringBuilder sb = new StringBuilder(); sb.append("Lambda without a target invoke: ").append(lambdaType.toClassName()); @@ -129,13 +144,11 @@ public static boolean isLambdaName(String name) { private static String createStableLambdaName(ResolvedJavaType lambdaType, List targetMethods) { final String lambdaName = lambdaType.getName(); - assert lambdaMatcher(lambdaName).find() : "Stable name should be created only for lambda types: " + lambdaName; + assert lambdaMatcher(lambdaName).find() : "Stable name should be created for lambda types: " + lambdaName; Matcher m = lambdaMatcher(lambdaName); StringBuilder sb = new StringBuilder(); - targetMethods.forEach((targetMethod) -> { - sb.append(targetMethod.format("%H.%n(%P)%R")); - }); + targetMethods.forEach((targetMethod) -> sb.append(targetMethod.format("%H.%n(%P)%R"))); return m.replaceFirst(Matcher.quoteReplacement("$$Lambda$" + digest(sb.toString()) + ";")); } @@ -155,9 +168,9 @@ public static String toHex(byte[] data) { public static String digest(String value) { try { MessageDigest md = MessageDigest.getInstance("SHA-1"); - md.update(value.getBytes("UTF-8")); + md.update(value.getBytes(StandardCharsets.UTF_8)); return toHex(md.digest()); - } catch (NoSuchAlgorithmException | UnsupportedEncodingException ex) { + } catch (NoSuchAlgorithmException ex) { throw new JVMCIError(ex); } } diff --git a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LazyClassLoadingTest.java b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LazyClassLoadingTest.java index 9ee8cbd39881..0cf8ae6bbd0d 100644 --- a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LazyClassLoadingTest.java +++ b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LazyClassLoadingTest.java @@ -181,7 +181,7 @@ private List filterGraalCompilerClasses(List loadedGraalClassNam try { loadedGraalClasses.add(Class.forName(name)); } catch (ClassNotFoundException e) { - if (e.getMessage().contains("$$Lambda$")) { + if (e.getMessage().contains("$$Lambda")) { // lambdas may not be found. continue; } diff --git a/substratevm/mx.substratevm/mx_substratevm.py b/substratevm/mx.substratevm/mx_substratevm.py index d8d78a894dae..5f757da61d82 100644 --- a/substratevm/mx.substratevm/mx_substratevm.py +++ b/substratevm/mx.substratevm/mx_substratevm.py @@ -1706,6 +1706,8 @@ def compute_graal_compiler_flags_map(self): graal_compiler_flags_map['19-ea'] = graal_compiler_flags_map['19'] # Currently JDK 20 and JDK 19 have the same flags graal_compiler_flags_map['20'] = graal_compiler_flags_map['19'] + # Currently JDK 21 and JDK 20 have the same flags + graal_compiler_flags_map['21'] = graal_compiler_flags_map['20'] # DO NOT ADD ANY NEW ADD-OPENS OR ADD-EXPORTS HERE! # # Instead provide the correct requiresConcealed entries in the moduleInfo diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/FileSystemProviderSupport.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/FileSystemProviderSupport.java index c17f7901f0a6..cd3cbdd37eca 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/FileSystemProviderSupport.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/FileSystemProviderSupport.java @@ -182,11 +182,14 @@ final class Target_sun_nio_fs_UnixFileSystem { * at run time. */ - @Alias @InjectAccessors(UnixFileSystemAccessors.class) // + @Alias // + @InjectAccessors(UnixFileSystemAccessors.class) // private byte[] defaultDirectory; - @Alias @InjectAccessors(UnixFileSystemAccessors.class) // + @Alias // + @InjectAccessors(UnixFileSystemAccessors.class) // private boolean needToResolveAgainstDefaultDirectory; - @Alias @InjectAccessors(UnixFileSystemAccessors.class) // + @Alias // + @InjectAccessors(UnixFileSystemAccessors.class) // private Target_sun_nio_fs_UnixPath rootDirectory; /** @@ -197,16 +200,20 @@ final class Target_sun_nio_fs_UnixFileSystem { * not be allocated at run time, since only the singleton from the image heap should exist. * However, there were JDK bugs in various JDK versions where unwanted allocations happened. */ - @Inject @RecomputeFieldValue(kind = Kind.Custom, declClass = NeedsReinitializationProvider.class)// + @Inject // + @RecomputeFieldValue(kind = Kind.Custom, declClass = NeedsReinitializationProvider.class)// volatile int needsReinitialization; /* Replacement injected fields that store the state at run time. */ - @Inject @RecomputeFieldValue(kind = Kind.Reset)// + @Inject // + @RecomputeFieldValue(kind = Kind.Reset)// byte[] injectedDefaultDirectory; - @Inject @RecomputeFieldValue(kind = Kind.Reset)// + @Inject // + @RecomputeFieldValue(kind = Kind.Reset)// boolean injectedNeedToResolveAgainstDefaultDirectory; - @Inject @RecomputeFieldValue(kind = Kind.Reset)// + @Inject // + @RecomputeFieldValue(kind = Kind.Reset)// Target_sun_nio_fs_UnixPath injectedRootDirectory; @Alias @@ -327,17 +334,22 @@ final class Target_sun_nio_fs_WindowsFileSystem { @Alias // Target_sun_nio_fs_WindowsFileSystemProvider provider; - @Alias @InjectAccessors(WindowsFileSystemAccessors.class) // + @Alias // + @InjectAccessors(WindowsFileSystemAccessors.class) // private String defaultDirectory; - @Alias @InjectAccessors(WindowsFileSystemAccessors.class) // + @Alias // + @InjectAccessors(WindowsFileSystemAccessors.class) // private String defaultRoot; - @Inject @RecomputeFieldValue(kind = Kind.Custom, declClass = NeedsReinitializationProvider.class)// + @Inject // + @RecomputeFieldValue(kind = Kind.Custom, declClass = NeedsReinitializationProvider.class)// volatile int needsReinitialization; - @Inject @RecomputeFieldValue(kind = Kind.Reset)// + @Inject // + @RecomputeFieldValue(kind = Kind.Reset)// String injectedDefaultDirectory; - @Inject @RecomputeFieldValue(kind = Kind.Reset)// + @Inject // + @RecomputeFieldValue(kind = Kind.Reset)// String injectedDefaultRoot; @Alias @@ -388,10 +400,13 @@ private static synchronized void reinitialize(Target_sun_nio_fs_WindowsFileSyste @Platforms({Platform.LINUX.class, Platform.DARWIN.class}) final class Target_java_io_UnixFileSystem { - @Alias @InjectAccessors(UserDirAccessors.class) // + @Alias // + @InjectAccessors(UserDirAccessors.class) // private String userDir; - @Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @Alias // + @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @TargetElement(onlyWith = JDK20OrEarlier.class)// private Target_java_io_ExpiringCache cache; /* @@ -400,12 +415,15 @@ final class Target_java_io_UnixFileSystem { * substituting the value of FileSystem.useCanonPrefixCache to false in the substitution below. */ @Delete // + @TargetElement(onlyWith = JDK20OrEarlier.class)// private String javaHome; /* * Ideally, we would mark this field as @Delete too. However, the javaHomePrefixCache is cleared * from various methods, and we do not want to change those methods. */ - @Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @Alias // + @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @TargetElement(onlyWith = JDK20OrEarlier.class)// private Target_java_io_ExpiringCache javaHomePrefixCache; } @@ -417,7 +435,9 @@ final class Target_java_io_FileSystem { * is not specific to the Java home directory and therefore can remain enabled. */ @Platforms({Platform.LINUX.class, Platform.DARWIN.class}) // - @Alias @RecomputeFieldValue(kind = Kind.FromAlias, isFinal = true) // + @Alias // + @RecomputeFieldValue(kind = Kind.FromAlias, isFinal = true) // + @TargetElement(onlyWith = JDK20OrEarlier.class)// static boolean useCanonPrefixCache = false; @Alias @@ -441,16 +461,21 @@ static String getUserDir(Target_java_io_FileSystem that) { @Platforms(Platform.WINDOWS.class) final class Target_java_io_WinNTFileSystem { - @Alias @InjectAccessors(UserDirAccessors.class) // + @Alias // + @InjectAccessors(UserDirAccessors.class) // private String userDir; - @Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @Alias // + @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @TargetElement(onlyWith = JDK20OrEarlier.class)// private Target_java_io_ExpiringCache cache; - @Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @Alias // + @RecomputeFieldValue(kind = Kind.NewInstance, declClassName = "java.io.ExpiringCache") // + @TargetElement(onlyWith = JDK20OrEarlier.class)// private Target_java_io_ExpiringCache prefixCache; } -@TargetClass(className = "java.io.ExpiringCache") +@TargetClass(className = "java.io.ExpiringCache", onlyWith = JDK20OrEarlier.class) final class Target_java_io_ExpiringCache { } From 9382632ee94a4b55ee2757ef9ef00ca395cb502d Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Fri, 17 Mar 2023 15:33:37 +0100 Subject: [PATCH 04/16] added jdk-21 CI jobs --- ci/common.jsonnet | 4 ++++ common.json | 4 +++- compiler/ci/ci_common/gate.jsonnet | 30 +++++++++++++++++++++--------- vm/ci/ci_common/libgraal.jsonnet | 23 +++++++++++++++-------- vm/ci/ci_includes/vm.jsonnet | 1 + 5 files changed, 44 insertions(+), 18 deletions(-) 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..2d5083880f9e 100644 --- a/compiler/ci/ci_common/gate.jsonnet +++ b/compiler/ci/ci_common/gate.jsonnet @@ -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/vm/ci/ci_common/libgraal.jsonnet b/vm/ci/ci_common/libgraal.jsonnet index 9f940719c06b..812658e12840 100644 --- a/vm/ci/ci_common/libgraal.jsonnet +++ b/vm/ci/ci_common/libgraal.jsonnet @@ -97,6 +97,14 @@ local utils = import '../../../ci/ci_common/common-utils.libsonnet'; local obj = c["svm_common_" + underscore(os_arch)]; if std.type(obj) == "function" then obj(jdk) else obj, + 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 = [ c["gate_vm_" + underscore(os_arch)] + @@ -104,6 +112,7 @@ local utils = import '../../../ci/ci_common/common-utils.libsonnet'; vm["custom_vm_" + os(os_arch)] + g.make_build(jdk, os_arch, task, extra_tasks=self, suite="vm", include_common_os_arch=false, + jdk_name = if jdk == "21" then "oraclejdk" else "labsjdk", gates_manifest=gates, dailies_manifest=dailies, weeklies_manifest=weeklies, @@ -111,15 +120,13 @@ local utils = import '../../../ci/ci_common/common-utils.libsonnet'; vm["vm_java_" + jdk] for jdk in [ "17", - "20" - ] - for os_arch in [ - "linux-amd64", - "linux-aarch64", - "darwin-amd64", - "darwin-aarch64" + "20", + "21" ] - for task in [ + for os_arch in all_os_arches + for task in if jdk == "21" then [ + "libgraal_compiler", + ] else [ "libgraal_compiler", "libgraal_truffle", "libgraal_compiler_zgc", diff --git a/vm/ci/ci_includes/vm.jsonnet b/vm/ci/ci_includes/vm.jsonnet index 6099cdafc83c..1ba349c6c879 100644 --- a/vm/ci/ci_includes/vm.jsonnet +++ b/vm/ci/ci_includes/vm.jsonnet @@ -9,6 +9,7 @@ local graal_common = import '../../../ci/ci_common/common.jsonnet'; { vm_java_17:: graal_common.labsjdk17 + vm_common.vm_env_mixin('17'), vm_java_20:: graal_common.labsjdk20 + vm_common.vm_env_mixin('20'), + vm_java_21:: graal_common.oraclejdk21 + vm_common.vm_env_mixin('21'), vm_java_17_llvm:: self.vm_java_17 + graal_common['labsjdk-ce-17-llvm'], vm_java_20_llvm:: self.vm_java_20 + graal_common['labsjdk-ce-20-llvm'], From 8569fa67cca9df184dd6cf399b0b13d807298eab Mon Sep 17 00:00:00 2001 From: Josef Eisl Date: Tue, 21 Mar 2023 14:54:29 +0100 Subject: [PATCH 05/16] svm: StaticProperty#jnuCharset removed in JDK 21 (GR-45007) --- .../src/com/oracle/svm/core/jdk/JDK20OrEarlier.java | 4 ++-- .../svm/core/jdk/Target_jdk_internal_util_StaticProperty.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDK20OrEarlier.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDK20OrEarlier.java index 1b043ecaffd3..03887f9244ac 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDK20OrEarlier.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDK20OrEarlier.java @@ -24,10 +24,10 @@ */ package com.oracle.svm.core.jdk; -import java.util.function.BooleanSupplier; - import org.graalvm.compiler.serviceprovider.JavaVersionUtil; +import java.util.function.BooleanSupplier; + public class JDK20OrEarlier implements BooleanSupplier { @Override public boolean getAsBoolean() { diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java index 55d3f14edf79..094b77295d13 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java @@ -147,7 +147,7 @@ public static String jnuEncoding() { } @Substitute - @TargetElement(onlyWith = JDK19OrLater.class) + @TargetElement(onlyWith = {JDK19OrLater.class, JDK20OrEarlier.class}) public static Charset jnuCharset() { String jnuEncoding = SystemPropertiesSupport.singleton().savedProperties.get("sun.jnu.encoding"); return Target_java_nio_charset_Charset.forName(jnuEncoding, Charset.defaultCharset()); From 53262bc44f2b843124bc83d3c440001c108cc931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C3=B6=20Barany?= Date: Tue, 21 Mar 2023 18:58:16 +0100 Subject: [PATCH 06/16] Don't reuse replacement graphs built with different options (GR-45086) --- .../compiler/replacements/ReplacementsImpl.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java index f06745ba5d5d..918609934368 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java @@ -40,6 +40,7 @@ import org.graalvm.collections.EconomicMap; import org.graalvm.collections.Equivalence; +import org.graalvm.collections.Pair; import org.graalvm.compiler.api.replacements.Fold; import org.graalvm.compiler.api.replacements.Snippet; import org.graalvm.compiler.api.replacements.SnippetReflectionProvider; @@ -118,9 +119,12 @@ public void setProviders(Providers providers) { private final DebugHandlersFactory debugHandlersFactory; /** - * The preprocessed replacement graphs. + * The preprocessed replacement graphs. This is keyed by a pair of a method and options because + * options influence both parsing and later lowering of the replacement graph. We must not + * inline a snippet graph built with some set of options into a graph that is being compiled + * with a different set of options. */ - protected final ConcurrentMap graphs; + protected final ConcurrentMap, StructuredGraph> graphs; /** * The default {@link BytecodeProvider} to use for accessing the bytecode of a replacement if @@ -286,7 +290,8 @@ public StructuredGraph getSnippet(ResolvedJavaMethod method, ResolvedJavaMethod assert method.getAnnotation(Snippet.class) != null : "Snippet must be annotated with @" + Snippet.class.getSimpleName(); assert method.hasBytecodes() : "Snippet must not be abstract or native"; - StructuredGraph graph = UseSnippetGraphCache.getValue(options) ? graphs.get(method) : null; + Pair cacheKey = Pair.create(method, options); + StructuredGraph graph = UseSnippetGraphCache.getValue(options) ? graphs.get(cacheKey) : null; if (graph == null || (trackNodeSourcePosition && !graph.trackNodeSourcePosition())) { try (DebugContext debug = openSnippetDebugContext("Snippet_", method, options); DebugCloseable a = SnippetPreparationTime.start(debug)) { @@ -297,11 +302,11 @@ public StructuredGraph getSnippet(ResolvedJavaMethod method, ResolvedJavaMethod } newGraph.freeze(); if (graph != null) { - graphs.replace(method, graph, newGraph); + graphs.replace(cacheKey, graph, newGraph); } else { - graphs.putIfAbsent(method, newGraph); + graphs.putIfAbsent(cacheKey, newGraph); } - graph = graphs.get(method); + graph = graphs.get(cacheKey); } } assert !trackNodeSourcePosition || graph.trackNodeSourcePosition(); From a3c9e2375bc56dc46b42cc831db9d2fe545015e6 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 23 Mar 2023 13:43:26 +0100 Subject: [PATCH 07/16] make some substitutions conditional on JDK < 21 (JDK-8299978) --- .../Target_java_lang_invoke_MethodHandleNatives.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/methodhandles/Target_java_lang_invoke_MethodHandleNatives.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/methodhandles/Target_java_lang_invoke_MethodHandleNatives.java index bfb8f40cf013..5b8a8c9f92e5 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/methodhandles/Target_java_lang_invoke_MethodHandleNatives.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/methodhandles/Target_java_lang_invoke_MethodHandleNatives.java @@ -38,6 +38,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import com.oracle.svm.core.jdk.JDK20OrEarlier; import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.serviceprovider.JavaVersionUtil; @@ -122,6 +123,7 @@ private static void expand(Target_java_lang_invoke_MemberName self) { } @Delete + @TargetElement(onlyWith = {JDK20OrEarlier.class}) private static native int getMembers(Class defc, String matchName, String matchSig, int matchFlags, Class caller, int skip, Target_java_lang_invoke_MemberName[] results); @Substitute @@ -381,9 +383,12 @@ final class Target_java_lang_invoke_MethodHandleNatives_Constants { @Alias static int MN_IS_TYPE; @Alias static int MN_CALLER_SENSITIVE; @Alias static int MN_REFERENCE_KIND_SHIFT; + @TargetElement(onlyWith = {JDK20OrEarlier.class})// @Alias static int MN_REFERENCE_KIND_MASK; // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers: + @TargetElement(onlyWith = {JDK20OrEarlier.class})// @Alias static int MN_SEARCH_SUPERCLASSES; + @TargetElement(onlyWith = {JDK20OrEarlier.class})// @Alias static int MN_SEARCH_INTERFACES; /** From 33e0e45c6b6aa4b6c962b79cfbec60c540350eba Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 23 Mar 2023 19:58:45 +0100 Subject: [PATCH 08/16] Loom is still a preview feature in JDK 21 currently --- .../src/com/oracle/svm/core/thread/ContinuationsFeature.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/ContinuationsFeature.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/ContinuationsFeature.java index 690a57c2646a..eb81923f372a 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/ContinuationsFeature.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/thread/ContinuationsFeature.java @@ -48,7 +48,7 @@ public class ContinuationsFeature implements InternalFeature { @Override public void afterRegistration(AfterRegistrationAccess access) { final int firstLoomPreviewVersion = 19; - final int lastLoomPreviewVersion = 20; + final int lastLoomPreviewVersion = 21; // JDK-8303683 boolean supportLoom = false; if (JavaVersionUtil.JAVA_SPEC >= firstLoomPreviewVersion) { From 11f8bce8c8bd8212f17b2311b82b9ed9a1897ab8 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 30 Mar 2023 22:42:01 +0200 Subject: [PATCH 09/16] org.graalvm.compiler.java is required by the native-image-agent library --- compiler/mx.compiler/suite.py | 1 + 1 file changed, 1 insertion(+) 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", From a6c64d43d15ae1a871a6a2aaaad74c0c6a90de68 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 30 Mar 2023 23:54:25 +0200 Subject: [PATCH 10/16] ignore GraalHotSpotVMConfigAccessTest on non-labsjdk --- .../hotspot/test/GraalHotSpotVMConfigAccessTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 fn, String expectedName) { try { - fn.get(); - Assert.fail("JVMCIError expected"); + Object obj = fn.get(); + Assert.fail("JVMCIError expected, got " + obj); } catch (JVMCIError err) { Assert.assertTrue(err.getMessage().contains("VM config values missing")); Assert.assertTrue(err.getMessage().contains(expectedName)); From 60b69be7c1003276d23d7c2978021205a571acdd Mon Sep 17 00:00:00 2001 From: Christian Humer Date: Fri, 31 Mar 2023 12:42:07 +0200 Subject: [PATCH 11/16] Fix no need to insert nodes for merged libraries. --- .../truffle/dsl/processor/library/ExportsGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/library/ExportsGenerator.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/library/ExportsGenerator.java index cc36683f5da9..6f8407c41a0e 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/library/ExportsGenerator.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/library/ExportsGenerator.java @@ -612,9 +612,9 @@ CodeTypeElement createCached(ExportsLibrary libraryExports, Map Date: Fri, 31 Mar 2023 11:01:04 +0200 Subject: [PATCH 12/16] add "this-escape" suppressions (JDK-8015831) --- .../api/test/ExportingClassLoader.java | 2 + .../asm/aarch64/AArch64MacroAssembler.java | 1 + .../aarch64/test/AArch64MembarOpTest.java | 1 + .../ConditionalEliminationRegressionTest.java | 1 + .../core/test/CountedLoopOverflowTest.java | 1 + .../compiler/core/test/GraalCompilerTest.java | 1 + .../core/test/InfopointReasonTest.java | 1 + .../graalvm/compiler/core/CompilerThread.java | 1 + .../compiler/core/gen/NodeLIRBuilder.java | 1 + .../compiler/core/phases/EconomyHighTier.java | 1 + .../compiler/core/phases/EconomyLowTier.java | 1 + .../compiler/core/phases/EconomyMidTier.java | 1 + .../compiler/core/phases/HighTier.java | 1 + .../graalvm/compiler/core/phases/LowTier.java | 1 + .../graalvm/compiler/core/phases/MidTier.java | 1 + .../fuzzing/MinimalFuzzedCompilationPlan.java | 1 + .../org/graalvm/compiler/debug/LogStream.java | 2 + .../src/org/graalvm/compiler/graph/Node.java | 1 + .../aarch64/AArch64HotSpotNodeLIRBuilder.java | 1 + .../hotspot/amd64/AMD64HotSpotFrameMap.java | 1 + .../amd64/AMD64HotSpotNodeLIRBuilder.java | 1 + .../hotspot/amd64/AMD64X87MathSnippets.java | 1 + .../test/DeferredBarrierAdditionTest.java | 1 + .../test/RangeCheckPredicatesTest.java | 1 + .../test/WriteBarrierAdditionTest.java | 1 + .../hotspot/meta/HotSpotSuitesProvider.java | 1 + .../replacements/AssertionSnippets.java | 1 + .../replacements/DigestBaseSnippets.java | 1 + .../HotSpotAllocationSnippets.java | 1 + .../HotSpotG1WriteBarrierSnippets.java | 1 + .../HotSpotSerialWriteBarrierSnippets.java | 1 + .../replacements/InstanceOfSnippets.java | 1 + .../LoadExceptionObjectSnippets.java | 1 + .../hotspot/replacements/LogSnippets.java | 1 + .../hotspot/replacements/MonitorSnippets.java | 1 + .../replacements/ObjectCloneSnippets.java | 1 + .../hotspot/replacements/ObjectSnippets.java | 1 + .../RegisterFinalizerSnippets.java | 1 + .../replacements/StringToBytesSnippets.java | 1 + .../hotspot/replacements/UnsafeSnippets.java | 1 + .../VirtualThreadUpdateJFRSnippets.java | 1 + .../stubs/AbstractForeignCallStub.java | 1 + .../hotspot/stubs/ForeignCallSnippets.java | 1 + .../compiler/hotspot/stubs/SnippetStub.java | 1 + .../graalvm/compiler/java/BytecodeParser.java | 4 +- .../compiler/java/DefaultSuitesCreator.java | 1 + .../src/org/graalvm/compiler/jtt/JTTTest.java | 1 + .../compiler/lir/aarch64/AArch64FrameMap.java | 1 + .../compiler/lir/amd64/AMD64FrameMap.java | 1 + .../compiler/lir/alloc/lsra/LinearScan.java | 1 + .../compiler/lir/phases/AllocationStage.java | 1 + .../lir/phases/EconomyAllocationStage.java | 1 + .../phases/EconomyFinalCodeAnalysisStage.java | 1 + ...conomyPostAllocationOptimizationStage.java | 1 + ...EconomyPreAllocationOptimizationStage.java | 1 + .../lir/phases/FinalCodeAnalysisStage.java | 1 + .../PostAllocationOptimizationStage.java | 1 + .../PreAllocationOptimizationStage.java | 1 + .../graal/util/GraphState.java | 2 +- .../nodeinfo/processor/GraphNodeVerifier.java | 1 + .../compiler/nodes/AbstractMergeNode.java | 1 + .../compiler/nodes/CallTargetNode.java | 1 + .../compiler/nodes/OptimizationLogImpl.java | 1 + .../org/graalvm/compiler/nodes/PiNode.java | 1 + .../graalvm/compiler/nodes/ValuePhiNode.java | 2 + .../nodes/calc/IntegerDivRemNode.java | 1 + .../nodes/debug/DynamicCounterNode.java | 1 + .../nodes/extended/ForeignCallNode.java | 2 + .../compiler/nodes/extended/SwitchNode.java | 1 + .../graphbuilderconf/InvocationPlugins.java | 1 + .../compiler/nodes/java/InstanceOfNode.java | 1 + .../nodes/java/NewMultiArrayNode.java | 1 + .../compiler/nodes/loop/LoopsData.java | 2 +- .../compiler/printer/BinaryGraphPrinter.java | 1 + .../AArch64IntegerArithmeticSnippets.java | 1 + .../amd64/AMD64ConvertSnippets.java | 1 + .../test/DeoptimizeOnExceptionTest.java | 1 + .../test/DeoptimizeOnIntegerExactTest.java | 1 + .../compiler/replacements/test/EdgesTest.java | 1 + .../replacements/test/InstanceOfTest.java | 1 + .../replacements/test/InvokeTest.java | 1 + .../test/MathMultiplyHighTest.java | 1 + .../replacements/test/PointerTest.java | 1 + .../replacements/test/SnippetsTest.java | 1 + .../test/StringCompareToTest.java | 1 + .../replacements/test/StringEqualsTest.java | 1 + .../replacements/BigIntegerSnippets.java | 1 + .../compiler/replacements/BoxingSnippets.java | 2 +- .../IdentityHashCodeSnippets.java | 1 + .../replacements/IntrinsicGraphBuilder.java | 1 + .../replacements/IsArraySnippets.java | 1 + .../replacements/ReplacementsImpl.java | 1 + .../replacements/SnippetTemplate.java | 2 +- .../replacements/StringLatin1Snippets.java | 1 + .../replacements/StringUTF16Snippets.java | 1 + .../arraycopy/ArrayCopySnippets.java | 1 + .../replacements/nodes/ArrayIndexOfNode.java | 1 + .../nodes/BasicObjectCloneNode.java | 1 + .../nodes/CounterModeAESNode.java | 3 ++ .../replacements/nodes/MacroNode.java | 1 + .../nodes/MacroWithExceptionNode.java | 1 + .../truffle/compiler/PartialEvaluator.java | 1 + .../compiler/PostPartialEvaluationSuite.java | 1 + .../truffle/compiler/TruffleCompilerImpl.java | 1 + .../compiler/phases/InstrumentationSuite.java | 1 + .../truffle/compiler/phases/TruffleTier.java | 1 + .../substitutions/KnownTruffleTypes.java | 1 + .../truffle/runtime/OptimizedCallTarget.java | 1 + .../test/ContextLookupCompilationTest.java | 4 ++ .../truffle/test/DeoptInvalidateListener.java | 1 + .../test/LanguageContextFreedTest.java | 1 + .../phases/ea/PartialEscapeBlockState.java | 1 + .../phases/ea/PartialEscapeClosure.java | 1 + .../org/graalvm/jniutils/JNIMethodScope.java | 2 +- .../org/graalvm/libgraal/LibGraalObject.java | 1 + .../graalvm/profdiff/args/FlagArgument.java | 1 + .../profdiff/core/CompilationFragment.java | 1 + .../core/optimization/Optimization.java | 1 + .../core/pair/CompilationUnitPair.java | 1 + substratevm/mx.substratevm/suite.py | 3 -- .../pointsto/AbstractAnalysisEngine.java | 1 + .../graal/pointsto/PointsToAnalysis.java | 1 + .../flow/FrozenFieldFilterTypeFlow.java | 1 + .../graal/pointsto/flow/InvokeTypeFlow.java | 1 + .../pointsto/flow/MonitorEnterTypeFlow.java | 1 + .../oracle/graal/pointsto/flow/TypeFlow.java | 1 + .../ContextSensitiveSingleTypeState.java | 1 + .../flow/context/object/AnalysisObject.java | 1 + .../graal/pointsto/meta/AnalysisField.java | 1 + .../pointsto/meta/AnalysisMetaAccess.java | 1 + .../graal/pointsto/meta/AnalysisMethod.java | 2 + .../graal/pointsto/meta/AnalysisType.java | 1 + .../SubstrateIntrinsicGraphBuilder.java | 1 + .../pointsto/typestate/MultiTypeState.java | 2 + .../pointsto/typestate/SingleTypeState.java | 2 + .../ReachabilityAnalysisEngine.java | 1 + .../src/com/oracle/objectfile/ObjectFile.java | 1 + .../com/oracle/objectfile/StringTable.java | 1 + .../objectfile/debugentry/MethodEntry.java | 1 + .../objectfile/debugentry/range/SubRange.java | 1 + .../objectfile/elf/ELFProgbitsSection.java | 2 + .../objectfile/elf/dwarf/DwarfDebugInfo.java | 1 + .../objectfile/macho/MachOObjectFile.java | 2 + .../objectfile/pecoff/PECoffObjectFile.java | 2 + .../pecoff/PECoffProgbitsSection.java | 2 + .../svm/agent/tracing/TraceFileWriter.java | 1 + .../AbstractImageHeapLayouter.java | 1 + .../graal/GenScavengeAllocationSnippets.java | 1 + .../SubstrateAArch64RegisterConfig.java | 1 + .../amd64/SubstrateAMD64RegisterConfig.java | 1 + .../SubstrateRISCV64RegisterConfig.java | 1 + .../oracle/svm/core/WeakIdentityHashMap.java | 1 + .../oracle/svm/core/code/CodeInfoDecoder.java | 1 + .../svm/core/code/FrameInfoQueryResult.java | 1 + .../AbstractUninterruptibleHashtable.java | 1 + .../nodes/ForeignCallWithExceptionNode.java | 1 + .../graal/replacements/SubstrateGraphKit.java | 1 + .../graal/snippets/ArithmeticSnippets.java | 1 + .../snippets/SubstrateAllocationSnippets.java | 1 + .../src/com/oracle/svm/core/heap/GCCause.java | 1 + .../svm/core/jdk/SystemPropertiesSupport.java | 1 + .../NativeImageResourceFileSystem.java | 1 + .../svm/core/jfr/JfrRecorderThread.java | 1 + .../svm/core/monitor/MonitorSnippets.java | 1 + ...tiveImageDiagnosticsAgentJNIHandleSet.java | 1 + .../com/oracle/svm/driver/NativeImage.java | 1 + .../svm/graal/meta/SubstrateMetaAccess.java | 1 + .../svm/graal/meta/SubstrateSignature.java | 1 + .../hosted/NativeImageClassLoaderSupport.java | 1 + .../src/com/oracle/svm/hosted/SVMHost.java | 1 + .../analysis/NativeImagePointsToAnalysis.java | 1 + ...NativeImageReachabilityAnalysisEngine.java | 1 + .../hosted/annotation/AnnotationSupport.java | 1 + .../hosted/c/codegen/CCompilerInvoker.java | 1 + .../svm/hosted/c/info/ConstantInfo.java | 1 + .../svm/hosted/c/info/EnumConstantInfo.java | 1 + .../oracle/svm/hosted/c/info/SizableInfo.java | 1 + .../svm/hosted/c/info/StructBitfieldInfo.java | 1 + .../svm/hosted/c/info/StructFieldInfo.java | 1 + .../oracle/svm/hosted/code/CompileQueue.java | 1 + .../svm/hosted/config/HybridLayout.java | 1 + .../svm/hosted/heap/SVMImageHeapScanner.java | 1 + .../hosted/image/LIRNativeImageCodeCache.java | 1 + .../hosted/image/NativeImageCodeCache.java | 1 + .../svm/hosted/meta/HostedArrayClass.java | 1 + .../hosted/substitute/ComputedValueField.java | 1 + .../svm/jvmtiagentbase/JNIHandleSet.java | 1 + .../api/SubstrateOptimizedCallTarget.java | 1 + .../SubstratePostPartialEvaluationSuite.java | 1 + .../llvm/asm/amd64/InlineAssemblyLexer.java | 2 +- .../llvm/asm/amd64/InlineAssemblyParser.java | 2 +- .../parser/antlr/DebugExpressionLexer.java | 2 +- .../parser/antlr/DebugExpressionParser.java | 2 +- .../agentscript/impl/InsightInstrument.java | 1 + .../client/InspectWSClient.java | 1 + .../profiler/test/AbstractProfilerTest.java | 1 + .../tools/profiler/test/CPUSamplerTest.java | 1 + .../tools/profiler/test/HeapMonitorTest.java | 1 + truffle/mx.truffle/mx_truffle.py | 44 +++++++------------ .../benchmark/EncapsulatingNodeBenchmark.java | 1 + .../api/debug/test/DebuggingStressTest.java | 1 + .../exception/AbstractTruffleException.java | 1 + .../api/test/polyglot/ContextAPITest.java | 1 + .../api/test/polyglot/ContextLocalTest.java | 3 ++ .../api/test/polyglot/ContextPolicyTest.java | 1 + .../ContextPreInitializationTest.java | 1 + .../api/test/polyglot/TruffleFileTest.java | 1 + .../processor/expression/ExpressionLexer.java | 2 +- .../expression/ExpressionParser.java | 2 +- .../generator/FlatNodeGenFactory.java | 1 + .../java/model/CodeExecutableElement.java | 1 + .../processor/java/model/CodeTypeElement.java | 1 + .../processor/model/ExecutableTypeData.java | 1 + .../truffle/dsl/processor/model/NodeData.java | 1 + .../dsl/processor/model/TemplateMethod.java | 2 + .../com/oracle/truffle/object/ShapeImpl.java | 2 + .../sl/parser/SimpleLanguageLexer.java | 2 +- .../sl/parser/SimpleLanguageParser.java | 2 +- .../component/installer/CommandTestBase.java | 1 + .../gds/rest/ArtifactParserTest.java | 2 +- .../gds/rest/GDSCatalogStorageTest.java | 1 + .../gds/rest/GDSRESTConnectorTest.java | 1 + .../component/installer/Environment.java | 1 + 223 files changed, 258 insertions(+), 47 deletions(-) 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.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/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/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 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 delegate; private final AtomicReference printStreamRef; + @SuppressWarnings("this-escape") ForwardingConsumer(LogStream owner, Consumer 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 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/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/RangeCheckPredicatesTest.java b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/RangeCheckPredicatesTest.java index 646686526338..778f4c718934 100644 --- a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/RangeCheckPredicatesTest.java +++ b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/RangeCheckPredicatesTest.java @@ -91,6 +91,7 @@ private static OptionValues getOptionsAllPaths() { return new OptionValues(getInitialOptions(), overrides); } + @SuppressWarnings("this-escape") public RangeCheckPredicatesTest() { speculationLog = getCodeCache().createSpeculationLog(); } diff --git a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierAdditionTest.java b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierAdditionTest.java index 1a64f6bf23c5..6af1ab5b6546 100644 --- a/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierAdditionTest.java +++ b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierAdditionTest.java @@ -76,6 +76,7 @@ * parameters can be checked against printed output from the G1 write barrier snippets. The runtime * checks have been validated offline. */ +@SuppressWarnings("this-escape") public class WriteBarrierAdditionTest extends HotSpotGraalCompilerTest { /** diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotSuitesProvider.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotSuitesProvider.java index ffd73db74022..9ec609fd2857 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotSuitesProvider.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotSuitesProvider.java @@ -68,6 +68,7 @@ public class HotSpotSuitesProvider extends SuitesProviderBase { protected final SuitesCreator defaultSuitesCreator; + @SuppressWarnings("this-escape") public HotSpotSuitesProvider(SuitesCreator defaultSuitesCreator, GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime) { this.defaultSuitesCreator = defaultSuitesCreator; this.config = config; diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/AssertionSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/AssertionSnippets.java index 3d36d7791073..8341b2f48e8e 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/AssertionSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/AssertionSnippets.java @@ -88,6 +88,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo assertion; private final SnippetInfo stubAssertion; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/DigestBaseSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/DigestBaseSnippets.java index dff15e0bb506..5ebc087ed1d7 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/DigestBaseSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/DigestBaseSnippets.java @@ -55,6 +55,7 @@ public static class Templates extends SnippetTemplate.AbstractTemplates { public final SnippetTemplate.SnippetInfo implCompressMultiBlock0; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotAllocationSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotAllocationSnippets.java index a353a20ccfcd..ce7d5fca0021 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotAllocationSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotAllocationSnippets.java @@ -561,6 +561,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo verifyHeap; private final SnippetInfo threadBeingInitializedCheck; + @SuppressWarnings("this-escape") public Templates(HotSpotAllocationSnippets receiver, OptionValues options, SnippetCounter.Group.Factory groupFactory, HotSpotProviders providers, GraalHotSpotVMConfig config) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotG1WriteBarrierSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotG1WriteBarrierSnippets.java index d678de470a8d..b140f67c2d48 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotG1WriteBarrierSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotG1WriteBarrierSnippets.java @@ -195,6 +195,7 @@ public static class Templates extends AbstractTemplates { private final G1WriteBarrierLowerer lowerer; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Group.Factory factory, HotSpotProviders providers, GraalHotSpotVMConfig config) { super(options, providers); this.lowerer = new HotspotG1WriteBarrierLowerer(config, factory); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotSerialWriteBarrierSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotSerialWriteBarrierSnippets.java index cbe3bcab8f16..5790b512e7ef 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotSerialWriteBarrierSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotSerialWriteBarrierSnippets.java @@ -71,6 +71,7 @@ public static class Templates extends AbstractTemplates { private final SerialWriteBarrierLowerer lowerer; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Group.Factory factory, HotSpotProviders providers) { super(options, providers); this.lowerer = new SerialWriteBarrierLowerer(factory); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/InstanceOfSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/InstanceOfSnippets.java index 9bd1f01a8a21..11ba2733ca11 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/InstanceOfSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/InstanceOfSnippets.java @@ -259,6 +259,7 @@ public static class Templates extends InstanceOfSnippetsTemplates { private final Counters counters; + @SuppressWarnings("this-escape") public Templates(OptionValues options, SnippetCounter.Group.Factory factory, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LoadExceptionObjectSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LoadExceptionObjectSnippets.java index 87c860a1726c..f38ae92942f5 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LoadExceptionObjectSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LoadExceptionObjectSnippets.java @@ -83,6 +83,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo loadException; private final HotSpotWordTypes wordTypes; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LogSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LogSnippets.java index ef9bb25968be..667e2597b5f3 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LogSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/LogSnippets.java @@ -74,6 +74,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo printf2; private final SnippetInfo printf3; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/MonitorSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/MonitorSnippets.java index fb24adeb6f90..6b95f8a2c55c 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/MonitorSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/MonitorSnippets.java @@ -841,6 +841,7 @@ public static class Templates extends AbstractTemplates { private final boolean useFastLocking; public final Counters counters; + @SuppressWarnings("this-escape") public Templates(OptionValues options, SnippetCounter.Group.Factory factory, HotSpotProviders providers, boolean useFastLocking) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectCloneSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectCloneSnippets.java index 86e69c724805..02cee860a191 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectCloneSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectCloneSnippets.java @@ -47,6 +47,7 @@ public static class Templates extends AbstractTemplates { final EnumMap arrayCloneMethods = new EnumMap<>(JavaKind.class); + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); arrayCloneMethods.put(JavaKind.Boolean, snippet(providers, ObjectCloneSnippets.class, "booleanArrayClone")); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSnippets.java index d0acd0dfa454..05088d3e68cc 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSnippets.java @@ -79,6 +79,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo notifySnippet; private final SnippetInfo notifyAllSnippet; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/RegisterFinalizerSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/RegisterFinalizerSnippets.java index 1195ee00d3dc..6e2cee5360d2 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/RegisterFinalizerSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/RegisterFinalizerSnippets.java @@ -66,6 +66,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo registerFinalizerSnippet; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/StringToBytesSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/StringToBytesSnippets.java index e8440c188a4e..fa0ac12d079e 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/StringToBytesSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/StringToBytesSnippets.java @@ -72,6 +72,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo create; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); create = snippet(providers, StringToBytesSnippets.class, "transform"); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeSnippets.java index c30a07f45b4d..c8423930a6b9 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeSnippets.java @@ -81,6 +81,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo copyMemory; private final SnippetInfo copyMemoryGuarded; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/VirtualThreadUpdateJFRSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/VirtualThreadUpdateJFRSnippets.java index c34e55e908e1..ff810b3a6930 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/VirtualThreadUpdateJFRSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/VirtualThreadUpdateJFRSnippets.java @@ -137,6 +137,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo virtualThreadUpdateJFR; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/AbstractForeignCallStub.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/AbstractForeignCallStub.java index 07f87c1ac58c..ef9a51535ccc 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/AbstractForeignCallStub.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/AbstractForeignCallStub.java @@ -100,6 +100,7 @@ public abstract class AbstractForeignCallStub extends Stub { * @param prependThread true if the JavaThread value for the current thread is to be prepended * to the arguments for the call to {@code address} */ + @SuppressWarnings("this-escape") public AbstractForeignCallStub(OptionValues options, HotSpotJVMCIRuntime runtime, HotSpotProviders providers, diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallSnippets.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallSnippets.java index 50419914dc18..f0dedda366ff 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallSnippets.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallSnippets.java @@ -62,6 +62,7 @@ public static class Templates extends AbstractTemplates { final SnippetInfo getAndClearObjectResult; final SnippetInfo verifyObject; + @SuppressWarnings("this-escape") public Templates(OptionValues options, HotSpotProviders providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/SnippetStub.java b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/SnippetStub.java index c40d2332acf0..b671e3084e90 100644 --- a/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/SnippetStub.java +++ b/compiler/src/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/SnippetStub.java @@ -73,6 +73,7 @@ public SnippetStub(String snippetMethodName, OptionValues options, HotSpotProvid * {@code snippetDeclaringClass} * @param linkage linkage details for a call to the stub */ + @SuppressWarnings("this-escape") public SnippetStub(Class snippetDeclaringClass, String snippetMethodName, OptionValues options, HotSpotProviders providers, HotSpotForeignCallLinkage linkage) { super(options, providers, linkage); this.method = SnippetTemplate.AbstractTemplates.findMethod(providers.getMetaAccess(), snippetDeclaringClass == null ? getClass() : snippetDeclaringClass, snippetMethodName); diff --git a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java index 6c7b972246eb..4cfc866b8a50 100644 --- a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java +++ b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java @@ -920,7 +920,7 @@ static boolean containsReturnValue(List list, ValueNode valu protected FixedWithNextNode lastInstr; // the last instruction added private boolean controlFlowSplit; - private final InvocationPluginReceiver invocationPluginReceiver = new InvocationPluginReceiver(this); + private final InvocationPluginReceiver invocationPluginReceiver; private FixedWithNextNode[] firstInstructionArray; private FrameStateBuilder[] entryStateArray; @@ -931,9 +931,11 @@ static boolean containsReturnValue(List list, ValueNode valu private final boolean uninitializedIsError; private final int traceLevel; + @SuppressWarnings("this-escape") protected BytecodeParser(GraphBuilderPhase.Instance graphBuilderInstance, StructuredGraph graph, BytecodeParser parent, ResolvedJavaMethod method, int entryBCI, IntrinsicContext intrinsicContext) { super(graphBuilderInstance.providers); + invocationPluginReceiver = new InvocationPluginReceiver(this); this.bytecodeProvider = intrinsicContext == null ? new ResolvedJavaMethodBytecodeProvider() : intrinsicContext.getBytecodeProvider(); this.code = bytecodeProvider.getBytecode(method); this.method = code.getMethod(); diff --git a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/DefaultSuitesCreator.java b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/DefaultSuitesCreator.java index 9bb4633512d4..357888338aea 100644 --- a/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/DefaultSuitesCreator.java +++ b/compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/DefaultSuitesCreator.java @@ -39,6 +39,7 @@ public class DefaultSuitesCreator extends SuitesProviderBase { private final CompilerConfiguration compilerConfiguration; + @SuppressWarnings("this-escape") public DefaultSuitesCreator(CompilerConfiguration compilerConfiguration, Plugins plugins) { this(compilerConfiguration); this.defaultGraphBuilderSuite = createGraphBuilderSuite(plugins); diff --git a/compiler/src/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/JTTTest.java b/compiler/src/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/JTTTest.java index 5eb8b9b9761b..35802754a043 100644 --- a/compiler/src/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/JTTTest.java +++ b/compiler/src/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/JTTTest.java @@ -86,6 +86,7 @@ public static final class DummyTestClass { */ Object[] argsToBind; + @SuppressWarnings("this-escape") public JTTTest() { Assert.assertNotNull(getCodeCache()); } diff --git a/compiler/src/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64FrameMap.java b/compiler/src/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64FrameMap.java index 5d1a73daa391..cd537816c161 100644 --- a/compiler/src/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64FrameMap.java +++ b/compiler/src/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64FrameMap.java @@ -78,6 +78,7 @@ public class AArch64FrameMap extends FrameMap { /** * Creates a new frame map for the specified method. */ + @SuppressWarnings("this-escape") public AArch64FrameMap(CodeCacheProvider codeCache, RegisterConfig registerConfig, ReferenceMapBuilderFactory referenceMapFactory) { super(codeCache, registerConfig, referenceMapFactory); initialSpillSize = frameSetupSize(); diff --git a/compiler/src/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64FrameMap.java b/compiler/src/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64FrameMap.java index 6f1422564a72..1d2a06474e6a 100644 --- a/compiler/src/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64FrameMap.java +++ b/compiler/src/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64FrameMap.java @@ -82,6 +82,7 @@ public class AMD64FrameMap extends FrameMap { */ protected final boolean preserveFramePointer; + @SuppressWarnings("this-escape") public AMD64FrameMap(CodeCacheProvider codeCache, RegisterConfig registerConfig, ReferenceMapBuilderFactory referenceMapFactory, boolean preserveFramePointer) { super(codeCache, registerConfig, referenceMapFactory); // (negative) offset relative to sp + total frame size diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScan.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScan.java index 15a2e05f71e4..d44a1999c771 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScan.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScan.java @@ -193,6 +193,7 @@ public static class BlockData { public final boolean detailedAsserts; private final LIRGenerationResult res; + @SuppressWarnings("this-escape") protected LinearScan(TargetDescription target, LIRGenerationResult res, MoveFactory spillMoveFactory, RegisterAllocationConfig regAllocConfig, char[] sortedBlocks, boolean neverSpillConstants) { this.ir = res.getLIR(); diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/AllocationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/AllocationStage.java index 49cfdb74bb79..7a573980e794 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/AllocationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/AllocationStage.java @@ -35,6 +35,7 @@ public class AllocationStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public AllocationStage(OptionValues options) { appendPhase(new MarkBasePointersPhase()); appendPhase(new LinearScanPhase()); diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java index fcc1ef2e8f55..f2f9ff6d0201 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyAllocationStage.java @@ -31,6 +31,7 @@ import org.graalvm.compiler.options.OptionValues; public class EconomyAllocationStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public EconomyAllocationStage(@SuppressWarnings("unused") OptionValues options) { appendPhase(new MarkBasePointersPhase()); diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyFinalCodeAnalysisStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyFinalCodeAnalysisStage.java index 9fd2ffcc4529..c2029dc44591 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyFinalCodeAnalysisStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyFinalCodeAnalysisStage.java @@ -29,6 +29,7 @@ public class EconomyFinalCodeAnalysisStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public EconomyFinalCodeAnalysisStage() { appendPhase(new LocationMarkerPhase()); } diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPostAllocationOptimizationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPostAllocationOptimizationStage.java index 9652af3b3cd7..8387caf0f2bd 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPostAllocationOptimizationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPostAllocationOptimizationStage.java @@ -28,6 +28,7 @@ import org.graalvm.compiler.lir.phases.PostAllocationOptimizationPhase.PostAllocationOptimizationContext; public class EconomyPostAllocationOptimizationStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public EconomyPostAllocationOptimizationStage() { appendPhase(new ComputeCodeEmissionOrder()); } diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPreAllocationOptimizationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPreAllocationOptimizationStage.java index 9925898d3de5..9fde8ec8116d 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPreAllocationOptimizationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/EconomyPreAllocationOptimizationStage.java @@ -28,6 +28,7 @@ import org.graalvm.compiler.lir.phases.PreAllocationOptimizationPhase.PreAllocationOptimizationContext; public class EconomyPreAllocationOptimizationStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public EconomyPreAllocationOptimizationStage() { /* * Although HotSpot does not use callee saved registers on any configuration, this phase is diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/FinalCodeAnalysisStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/FinalCodeAnalysisStage.java index e9f234bfef54..a66e73928428 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/FinalCodeAnalysisStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/FinalCodeAnalysisStage.java @@ -30,6 +30,7 @@ public class FinalCodeAnalysisStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public FinalCodeAnalysisStage(@SuppressWarnings("unused") OptionValues options) { appendPhase(new LocationMarkerPhase()); } diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java index c66f490471e8..7507110b9e03 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java @@ -60,6 +60,7 @@ public static class Options { // @formatter:on } + @SuppressWarnings("this-escape") public PostAllocationOptimizationStage(OptionValues options) { if (Options.LIROptEdgeMoveOptimizer.getValue(options)) { appendPhase(new EdgeMoveOptimizer()); diff --git a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PreAllocationOptimizationStage.java b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PreAllocationOptimizationStage.java index 6fd12d0d3b09..de31dba0d709 100644 --- a/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PreAllocationOptimizationStage.java +++ b/compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PreAllocationOptimizationStage.java @@ -30,6 +30,7 @@ import org.graalvm.compiler.options.OptionValues; public class PreAllocationOptimizationStage extends LIRPhaseSuite { + @SuppressWarnings("this-escape") public PreAllocationOptimizationStage(OptionValues options) { if (ConstantLoadOptimization.Options.LIROptConstantLoadOptimization.getValue(options)) { appendPhase(new ConstantLoadOptimization()); diff --git a/compiler/src/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/util/GraphState.java b/compiler/src/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/util/GraphState.java index c874c4f981cd..608c53463aeb 100644 --- a/compiler/src/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/util/GraphState.java +++ b/compiler/src/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/util/GraphState.java @@ -46,7 +46,7 @@ public abstract class GraphState { final GraalState graal; - @SuppressWarnings("try") + @SuppressWarnings({"try", "this-escape"}) public GraphState() { graal = new GraalState(); DebugContext debug = graal.debug; diff --git a/compiler/src/org.graalvm.compiler.nodeinfo.processor/src/org/graalvm/compiler/nodeinfo/processor/GraphNodeVerifier.java b/compiler/src/org.graalvm.compiler.nodeinfo.processor/src/org/graalvm/compiler/nodeinfo/processor/GraphNodeVerifier.java index 4dea5df93719..7456b9e882a9 100644 --- a/compiler/src/org.graalvm.compiler.nodeinfo.processor/src/org/graalvm/compiler/nodeinfo/processor/GraphNodeVerifier.java +++ b/compiler/src/org.graalvm.compiler.nodeinfo.processor/src/org/graalvm/compiler/nodeinfo/processor/GraphNodeVerifier.java @@ -67,6 +67,7 @@ public class GraphNodeVerifier { // Checkstyle: resume + @SuppressWarnings("this-escape") public GraphNodeVerifier(AbstractProcessor processor) { this.processor = processor; this.Input = getTypeElement("org.graalvm.compiler.graph.Node.Input"); diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractMergeNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractMergeNode.java index 5fe5a581203c..c2614012d4b3 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractMergeNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/AbstractMergeNode.java @@ -48,6 +48,7 @@ * Denotes the merging of multiple control-flow paths. */ @NodeInfo(allowedUsageTypes = Association, cycles = CYCLES_0, size = SIZE_0) +@SuppressWarnings("this-escape") public abstract class AbstractMergeNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable, LIRLowerable { public static final NodeClass TYPE = NodeClass.create(AbstractMergeNode.class); diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/CallTargetNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/CallTargetNode.java index 954cab030c74..ade283c31553 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/CallTargetNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/CallTargetNode.java @@ -117,6 +117,7 @@ public boolean isInterface() { protected InvokeKind invokeKind; protected final StampPair returnStamp; + @SuppressWarnings("this-escape") protected CallTargetNode(NodeClass c, ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind, StampPair returnStamp) { super(c, StampFactory.forVoid()); this.targetMethod = targetMethod; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/OptimizationLogImpl.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/OptimizationLogImpl.java index 9abda39fb333..6d1119722231 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/OptimizationLogImpl.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/OptimizationLogImpl.java @@ -218,6 +218,7 @@ public static class OptimizationPhaseNode extends OptimizationTreeNode { @Successor private NodeSuccessorList children; + @SuppressWarnings("this-escape") protected OptimizationPhaseNode(CharSequence phaseName) { super(TYPE); this.phaseName = phaseName; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/PiNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/PiNode.java index 061b9d34baea..6ab43c00f5ef 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/PiNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/PiNode.java @@ -76,6 +76,7 @@ public ValueNode object() { return object; } + @SuppressWarnings("this-escape") protected PiNode(NodeClass c, ValueNode object, Stamp stamp, GuardingNode guard) { super(c, stamp, guard); this.object = object; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValuePhiNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValuePhiNode.java index 89bf10bbeb9f..b10d81f02f53 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValuePhiNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValuePhiNode.java @@ -54,6 +54,7 @@ public ValuePhiNode(Stamp stamp, AbstractMergeNode merge) { this(TYPE, stamp, merge); } + @SuppressWarnings("this-escape") protected ValuePhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge) { super(c, stamp, merge); assert stamp != StampFactory.forVoid(); @@ -64,6 +65,7 @@ public ValuePhiNode(Stamp stamp, AbstractMergeNode merge, ValueNode... values) { this(TYPE, stamp, merge, values); } + @SuppressWarnings("this-escape") public ValuePhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge, ValueNode... values) { super(c, stamp, merge); assert stamp != StampFactory.forVoid(); diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerDivRemNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerDivRemNode.java index 552485b50dc6..6800cecd9198 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerDivRemNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerDivRemNode.java @@ -64,6 +64,7 @@ public enum Type { protected JavaConstant deoptReasonAndAction; protected JavaConstant deoptSpeculation; + @SuppressWarnings("this-escape") protected IntegerDivRemNode(NodeClass c, Stamp stamp, Op op, Type type, ValueNode dividend, ValueNode divisor, GuardingNode zeroGuard) { super(c, stamp, dividend, divisor); this.zeroGuard = zeroGuard; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/DynamicCounterNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/DynamicCounterNode.java index 69bc33867452..d0d62bfa3911 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/DynamicCounterNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/DynamicCounterNode.java @@ -90,6 +90,7 @@ private boolean checkIncrement() { return true; } + @SuppressWarnings("this-escape") protected DynamicCounterNode(NodeClass c, String group, String name, ValueNode increment, boolean withContext) { super(c, StampFactory.forVoid()); this.group = group; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java index 19add6660aa9..c78be0e0578a 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java @@ -113,6 +113,7 @@ public ForeignCallNode(ForeignCallDescriptor descriptor, ValueNode... arguments) this(TYPE, descriptor, arguments); } + @SuppressWarnings("this-escape") public ForeignCallNode(ForeignCallDescriptor descriptor, Stamp stamp, List arguments) { super(TYPE, stamp); this.arguments = new NodeInputList<>(this, arguments); @@ -120,6 +121,7 @@ public ForeignCallNode(ForeignCallDescriptor descriptor, Stamp stamp, List c, ForeignCallDescriptor descriptor, ValueNode... arguments) { super(c, StampFactory.forKind(JavaKind.fromJavaClass(descriptor.getResultType()))); this.arguments = new NodeInputList<>(this, arguments); diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/SwitchNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/SwitchNode.java index 679d198735d4..5f4d2b0dd5c3 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/SwitchNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/SwitchNode.java @@ -82,6 +82,7 @@ public abstract class SwitchNode extends ControlSplitNode { * @param value the instruction that provides the value to be switched over * @param successors the list of successors of this switch */ + @SuppressWarnings("this-escape") protected SwitchNode(NodeClass c, ValueNode value, AbstractBeginNode[] successors, int[] keySuccessors, SwitchProbabilityData profileData) { super(c, StampFactory.forVoid()); assert value.stamp(NodeView.DEFAULT).getStackKind().isNumericInteger() || value.stamp(NodeView.DEFAULT) instanceof AbstractPointerStamp : value.stamp(NodeView.DEFAULT) + diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins.java index 61c7fdfef75c..50a44ec414c8 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/InvocationPlugins.java @@ -157,6 +157,7 @@ public static class OptionalLazySymbol implements Type { private final String name; private Class resolved; + @SuppressWarnings("this-escape") public OptionalLazySymbol(String name) { this.name = name; if (IS_BUILDING_NATIVE_IMAGE) { diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/InstanceOfNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/InstanceOfNode.java index 99f5c939c95f..8466019b137c 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/InstanceOfNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/InstanceOfNode.java @@ -77,6 +77,7 @@ private InstanceOfNode(ObjectStamp checkedStamp, ValueNode object, JavaTypeProfi this(TYPE, checkedStamp, object, profile, anchor); } + @SuppressWarnings("this-escape") protected InstanceOfNode(NodeClass c, ObjectStamp checkedStamp, ValueNode object, JavaTypeProfile profile, AnchoringNode anchor) { super(c, object); this.checkedStamp = checkedStamp; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/NewMultiArrayNode.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/NewMultiArrayNode.java index ba29e2131309..c22a9a1f32ff 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/NewMultiArrayNode.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/NewMultiArrayNode.java @@ -68,6 +68,7 @@ public NewMultiArrayNode(ResolvedJavaType type, ValueNode[] dimensions) { this(TYPE, type, dimensions); } + @SuppressWarnings("this-escape") protected NewMultiArrayNode(NodeClass c, ResolvedJavaType type, ValueNode[] dimensions) { super(c, StampFactory.objectNonNull(TypeReference.createExactTrusted(type))); this.type = type; diff --git a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/loop/LoopsData.java b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/loop/LoopsData.java index 21aacefa85be..af696d77dded 100644 --- a/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/loop/LoopsData.java +++ b/compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/loop/LoopsData.java @@ -58,7 +58,7 @@ protected LoopsData(ControlFlowGraph cfg, List loops, EconomicMap output; + @SuppressWarnings("this-escape") public BinaryGraphPrinter(DebugContext ctx, SnippetReflectionProvider snippetReflection) throws IOException { // @formatter:off this.output = ctx.buildOutput(GraphOutput.newBuilder(this). diff --git a/compiler/src/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java b/compiler/src/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java index 275e28d4ee74..6bc50a58f7fe 100644 --- a/compiler/src/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java @@ -76,6 +76,7 @@ public class AArch64IntegerArithmeticSnippets extends AbstractTemplates implemen private final SnippetTemplate.SnippetInfo uirem; private final SnippetTemplate.SnippetInfo ulrem; + @SuppressWarnings("this-escape") public AArch64IntegerArithmeticSnippets(OptionValues options, Providers providers) { super(options, providers); idiv = snippet(providers, AArch64IntegerArithmeticSnippets.class, "idivSnippet"); diff --git a/compiler/src/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64ConvertSnippets.java b/compiler/src/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64ConvertSnippets.java index 3b8b503e773a..015654e60fc1 100644 --- a/compiler/src/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64ConvertSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements.amd64/src/org/graalvm/compiler/replacements/amd64/AMD64ConvertSnippets.java @@ -155,6 +155,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo d2i; private final SnippetInfo d2l; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnExceptionTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnExceptionTest.java index b16177114318..01d5bdf01419 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnExceptionTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnExceptionTest.java @@ -51,6 +51,7 @@ */ public class DeoptimizeOnExceptionTest extends GraalCompilerTest { + @SuppressWarnings("this-escape") public DeoptimizeOnExceptionTest() { createSuites(getInitialOptions()).getHighTier().findPhase(AbstractInliningPhase.class).remove(); } diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnIntegerExactTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnIntegerExactTest.java index e308bf55793c..a49e759c6c19 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnIntegerExactTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/DeoptimizeOnIntegerExactTest.java @@ -41,6 +41,7 @@ public class DeoptimizeOnIntegerExactTest extends GraalCompilerTest { static boolean highlyLikely = true; static boolean highlyUnlikely = false; + @SuppressWarnings("this-escape") public DeoptimizeOnIntegerExactTest() { speculationLog = getCodeCache().createSpeculationLog(); } diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/EdgesTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/EdgesTest.java index 6b74309fd2cb..25d96471c5b1 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/EdgesTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/EdgesTest.java @@ -51,6 +51,7 @@ import jdk.vm.ci.meta.ResolvedJavaMethod; +@SuppressWarnings("this-escape") public class EdgesTest extends GraalCompilerTest { @NodeInfo(cycles = CYCLES_0, size = SIZE_0) diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InstanceOfTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InstanceOfTest.java index 479018de40cc..3923336c4776 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InstanceOfTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InstanceOfTest.java @@ -49,6 +49,7 @@ */ public class InstanceOfTest extends TypeCheckTest { + @SuppressWarnings("this-escape") public InstanceOfTest() { createSuites(getInitialOptions()).getHighTier().findPhase(AbstractInliningPhase.class).remove(); } diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InvokeTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InvokeTest.java index 10eb3d99ab80..52fdea302909 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InvokeTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InvokeTest.java @@ -34,6 +34,7 @@ */ public class InvokeTest extends GraalCompilerTest { + @SuppressWarnings("this-escape") public InvokeTest() { createSuites(getInitialOptions()).getHighTier().findPhase(AbstractInliningPhase.class).remove(); } diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MathMultiplyHighTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MathMultiplyHighTest.java index 9a55ff928be5..94e7e180460d 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MathMultiplyHighTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/MathMultiplyHighTest.java @@ -35,6 +35,7 @@ import org.junit.Assert; import org.junit.Test; +@SuppressWarnings("this-escape") public class MathMultiplyHighTest extends MethodSubstitutionTest { private static final long[] INPUT = {Long.MIN_VALUE, Long.MIN_VALUE + 1, 0XF64543679090840EL, -1L, diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java index 35095484c947..bad7019ed7d0 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/PointerTest.java @@ -59,6 +59,7 @@ public class PointerTest extends SnippetsTest { private static final JavaKind[] KINDS = new JavaKind[]{JavaKind.Byte, JavaKind.Char, JavaKind.Short, JavaKind.Int, JavaKind.Long, JavaKind.Float, JavaKind.Double, JavaKind.Object}; private final TargetDescription target; + @SuppressWarnings("this-escape") public PointerTest() { target = getCodeCache().getTarget(); } diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/SnippetsTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/SnippetsTest.java index ce7343a74971..d737477d3725 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/SnippetsTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/SnippetsTest.java @@ -36,6 +36,7 @@ public abstract class SnippetsTest extends ReplacementsTest { protected final ReplacementsImpl installer; protected final ClassfileBytecodeProvider bytecodeProvider; + @SuppressWarnings("this-escape") protected SnippetsTest() { ReplacementsImpl d = (ReplacementsImpl) getReplacements(); bytecodeProvider = getSystemClassLoaderBytecodeProvider(); diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringCompareToTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringCompareToTest.java index 3a01dac9f4e4..8e2664ed9d94 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringCompareToTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringCompareToTest.java @@ -51,6 +51,7 @@ public class StringCompareToTest extends StringSubstitutionTestBase { private static final int EXPECT_NODE_COUNT = 4; private static final String DISABLE_COMPACTSTRINGS_FLAG = "-XX:-CompactStrings"; + @SuppressWarnings("this-escape") public StringCompareToTest() { initSubstitution( getResolvedJavaMethod(String.class, "compareTo", String.class), diff --git a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringEqualsTest.java b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringEqualsTest.java index 7f8b34717284..78b061540412 100644 --- a/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringEqualsTest.java +++ b/compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/StringEqualsTest.java @@ -32,6 +32,7 @@ */ public class StringEqualsTest extends StringSubstitutionTestBase { + @SuppressWarnings("this-escape") public StringEqualsTest() { initSubstitution( getResolvedJavaMethod(String.class, "equals"), diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BigIntegerSnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BigIntegerSnippets.java index 1d387b672949..deaab913d7e9 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BigIntegerSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BigIntegerSnippets.java @@ -43,6 +43,7 @@ public static class Templates extends SnippetTemplate.AbstractTemplates { public final SnippetTemplate.SnippetInfo implMultiplyToLen; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java index b955d8b0fead..93cacbe508bb 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java @@ -148,7 +148,7 @@ public static short shortValue(Short value, @ConstantParameter SnippetCounter va return value.shortValue(); } - public static class Templates extends AbstractTemplates { + public static final class Templates extends AbstractTemplates { private final EnumMap boxSnippets = new EnumMap<>(JavaKind.class); private final EnumMap unboxSnippets = new EnumMap<>(JavaKind.class); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IdentityHashCodeSnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IdentityHashCodeSnippets.java index c4b58d87a04f..a3b3145c238c 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IdentityHashCodeSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IdentityHashCodeSnippets.java @@ -54,6 +54,7 @@ public static class Templates extends AbstractTemplates { private final SnippetInfo identityHashCodeSnippet; + @SuppressWarnings("this-escape") public Templates(IdentityHashCodeSnippets receiver, OptionValues options, Providers providers, LocationIdentity locationIdentity) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IntrinsicGraphBuilder.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IntrinsicGraphBuilder.java index 90dc987f8aa0..73a040a97233 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IntrinsicGraphBuilder.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IntrinsicGraphBuilder.java @@ -111,6 +111,7 @@ public IntrinsicGraphBuilder(OptionValues options, this(options, debug, providers, code, invokeBci, allowAssumptions, null); } + @SuppressWarnings("this-escape") protected IntrinsicGraphBuilder(OptionValues options, DebugContext debug, CoreProviders providers, diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IsArraySnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IsArraySnippets.java index d9c02a9598c1..4098d77d2cf9 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IsArraySnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IsArraySnippets.java @@ -55,6 +55,7 @@ public static class Templates extends InstanceOfSnippetsTemplates { private final SnippetInfo objectIsArraySnippet; private final SnippetInfo classIsArraySnippet; + @SuppressWarnings("this-escape") public Templates(IsArraySnippets receiver, OptionValues options, Providers providers) { super(options, providers); objectIsArraySnippet = snippet(providers, IsArraySnippets.class, "objectIsArraySnippet", null, receiver); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java index 918609934368..63d8f92a5b95 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ReplacementsImpl.java @@ -240,6 +240,7 @@ public void notifyNotInlined(GraphBuilderContext b, ResolvedJavaMethod method, I // it is stable across VM executions (in support of replay compilation). private final EconomicMap snippetTemplateCache; + @SuppressWarnings("this-escape") public ReplacementsImpl(DebugHandlersFactory debugHandlersFactory, Providers providers, SnippetReflectionProvider snippetReflection, BytecodeProvider bytecodeProvider, TargetDescription target) { this.providers = providers.copyWith(this); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java index b063195e2777..1fcb0a0dcb11 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/SnippetTemplate.java @@ -600,7 +600,7 @@ public EagerSnippetInfo copyWith(ResolvedJavaMethod newMethod) { * {@link SnippetTemplate#instantiate instantiated} * */ - public static class Arguments implements Formattable { + public static final class Arguments implements Formattable { protected final SnippetInfo info; protected final CacheKey cacheKey; diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringLatin1Snippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringLatin1Snippets.java index 19a94bb36fac..59fb2c10c79a 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringLatin1Snippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringLatin1Snippets.java @@ -53,6 +53,7 @@ public static class Templates extends SnippetTemplate.AbstractTemplates { public final SnippetTemplate.SnippetInfo indexOf; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringUTF16Snippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringUTF16Snippets.java index 7f80962a344b..50dda4f6ec38 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringUTF16Snippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StringUTF16Snippets.java @@ -56,6 +56,7 @@ public static class Templates extends SnippetTemplate.AbstractTemplates { public final SnippetTemplate.SnippetInfo indexOfLatin1Unsafe; public final SnippetTemplate.SnippetInfo indexOfUnsafe; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers) { super(options, providers); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets.java index 2f777f2b2b4f..f0f5627685e1 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets.java @@ -530,6 +530,7 @@ public static class Templates extends SnippetTemplate.AbstractTemplates { private ResolvedJavaMethod originalArraycopy; private final Counters counters; + @SuppressWarnings("this-escape") public Templates(ArrayCopySnippets receiver, Group.Factory factory, OptionValues options, Providers providers) { super(options, providers); this.counters = new Counters(factory); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayIndexOfNode.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayIndexOfNode.java index e35f498a1c1f..871fa255b3b8 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayIndexOfNode.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayIndexOfNode.java @@ -139,6 +139,7 @@ public ArrayIndexOfNode( this(TYPE, stride, variant, runtimeCheckedCPUFeatures, locationIdentity, arrayPointer, arrayOffset, arrayLength, fromIndex, searchValues); } + @SuppressWarnings("this-escape") public ArrayIndexOfNode( NodeClass c, Stride stride, diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicObjectCloneNode.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicObjectCloneNode.java index 5ae24c5eac86..1fed47f6dda2 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicObjectCloneNode.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/BasicObjectCloneNode.java @@ -37,6 +37,7 @@ public abstract class BasicObjectCloneNode extends MacroNode implements ObjectCl public static final NodeClass TYPE = NodeClass.create(BasicObjectCloneNode.class); + @SuppressWarnings("this-escape") public BasicObjectCloneNode(NodeClass c, MacroParams p) { super(c, p); updateStamp(computeStamp(getObject())); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/CounterModeAESNode.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/CounterModeAESNode.java index 35b50bec9e23..195b79ea4efe 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/CounterModeAESNode.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/CounterModeAESNode.java @@ -67,6 +67,7 @@ public class CounterModeAESNode extends MemoryKillStubIntrinsicNode { @Input protected NodeInputList inputs; + @SuppressWarnings("this-escape") public CounterModeAESNode(ValueNode inAddr, ValueNode outAddr, ValueNode kAddr, @@ -85,6 +86,7 @@ public CounterModeAESNode(ValueNode inAddr, usedPtr); } + @SuppressWarnings("this-escape") public CounterModeAESNode(ValueNode inAddr, ValueNode outAddr, ValueNode kAddr, @@ -104,6 +106,7 @@ public CounterModeAESNode(ValueNode inAddr, usedPtr); } + @SuppressWarnings("this-escape") private CounterModeAESNode(EnumSet runtimeCheckedCPUFeatures, Stamp stamp, ValueNode... args) { super(TYPE, stamp, runtimeCheckedCPUFeatures, LocationIdentity.any()); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java index 99687e6694ca..f0ff3ef66622 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java @@ -117,6 +117,7 @@ public static MacroParams of(InvokeKind invokeKind, } } + @SuppressWarnings("this-escape") protected MacroNode(NodeClass c, MacroParams p) { super(c, p.returnStamp != null ? p.returnStamp.getTrustedStamp() : null); this.arguments = new NodeInputList<>(this, p.arguments); diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroWithExceptionNode.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroWithExceptionNode.java index 77b5f7c4f488..65a7f39bd9cc 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroWithExceptionNode.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroWithExceptionNode.java @@ -77,6 +77,7 @@ public abstract class MacroWithExceptionNode extends WithExceptionNode implement protected final InvokeKind invokeKind; protected final StampPair returnStamp; + @SuppressWarnings("this-escape") protected MacroWithExceptionNode(NodeClass c, MacroParams p) { super(c, p.returnStamp != null ? p.returnStamp.getTrustedStamp() : null); this.arguments = new NodeInputList<>(this, p.arguments); diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PartialEvaluator.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PartialEvaluator.java index 2ada52a4731e..9dd0c861bacf 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PartialEvaluator.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PartialEvaluator.java @@ -131,6 +131,7 @@ public abstract class PartialEvaluator { protected boolean allowAssumptionsDuringParsing; protected boolean persistentEncodedGraphCache; + @SuppressWarnings("this-escape") public PartialEvaluator(TruffleCompilerConfiguration config, GraphBuilderConfiguration configForRoot, KnownTruffleTypes knownFields) { this.config = config; this.knownTruffleTypes = knownFields; diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PostPartialEvaluationSuite.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PostPartialEvaluationSuite.java index b38f0a03dade..acba9eb635aa 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PostPartialEvaluationSuite.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PostPartialEvaluationSuite.java @@ -38,6 +38,7 @@ import org.graalvm.compiler.virtual.phases.ea.PartialEscapePhase; public class PostPartialEvaluationSuite extends PhaseSuite { + @SuppressWarnings("this-escape") public PostPartialEvaluationSuite(boolean iterativePartialEscape) { CanonicalizerPhase canonicalizerPhase = CanonicalizerPhase.create(); appendPhase(new ConvertDeoptimizeToGuardPhase(canonicalizerPhase)); diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/TruffleCompilerImpl.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/TruffleCompilerImpl.java index 1536d0fec122..fdb43f4132df 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/TruffleCompilerImpl.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/TruffleCompilerImpl.java @@ -144,6 +144,7 @@ public abstract class TruffleCompilerImpl implements TruffleCompilerBase, Compil UseTypeCheckedInlining, UseTypeCheckHints); + @SuppressWarnings("this-escape") public TruffleCompilerImpl(TruffleCompilerConfiguration config) { this.config = config; this.codeInstallationTaskFactory = new TrufflePostCodeInstallationTaskFactory(); diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/InstrumentationSuite.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/InstrumentationSuite.java index 7cac6eea53cd..524629493788 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/InstrumentationSuite.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/InstrumentationSuite.java @@ -29,6 +29,7 @@ import org.graalvm.compiler.truffle.compiler.TruffleTierContext; public class InstrumentationSuite extends PhaseSuite { + @SuppressWarnings("this-escape") public InstrumentationSuite(InstrumentPhase.InstrumentationConfiguration instrumentationCfg, SnippetReflectionProvider snippetReflection, InstrumentPhase.Instrumentation instrumentation) { if (instrumentationCfg.instrumentBranches) { appendPhase(new InstrumentBranchesPhase(snippetReflection, instrumentation, instrumentationCfg.instrumentBranchesPerInlineSite)); diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/TruffleTier.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/TruffleTier.java index c0a8f89d8f44..e0670ed9466e 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/TruffleTier.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/phases/TruffleTier.java @@ -35,6 +35,7 @@ public class TruffleTier extends BaseTier { + @SuppressWarnings("this-escape") public TruffleTier(OptionValues options, PartialEvaluator partialEvaluator, InstrumentationSuite instrumentationSuite, PostPartialEvaluationSuite postPartialEvaluationSuite) { appendPhase(new AgnosticInliningPhase(partialEvaluator, postPartialEvaluationSuite)); appendPhase(instrumentationSuite); diff --git a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/substitutions/KnownTruffleTypes.java b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/substitutions/KnownTruffleTypes.java index 10b5dd6feeff..663c38a9a088 100644 --- a/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/substitutions/KnownTruffleTypes.java +++ b/compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/substitutions/KnownTruffleTypes.java @@ -31,6 +31,7 @@ import jdk.vm.ci.meta.ResolvedJavaField; import jdk.vm.ci.meta.ResolvedJavaType; +@SuppressWarnings("this-escape") public class KnownTruffleTypes extends AbstractKnownTruffleTypes { public final ResolvedJavaType classFrameClass = lookupType("com.oracle.truffle.api.impl.FrameWithoutBoxing"); diff --git a/compiler/src/org.graalvm.compiler.truffle.runtime/src/org/graalvm/compiler/truffle/runtime/OptimizedCallTarget.java b/compiler/src/org.graalvm.compiler.truffle.runtime/src/org/graalvm/compiler/truffle/runtime/OptimizedCallTarget.java index 8abb8f717004..12cc753cd6f7 100644 --- a/compiler/src/org.graalvm.compiler.truffle.runtime/src/org/graalvm/compiler/truffle/runtime/OptimizedCallTarget.java +++ b/compiler/src/org.graalvm.compiler.truffle.runtime/src/org/graalvm/compiler/truffle/runtime/OptimizedCallTarget.java @@ -339,6 +339,7 @@ public Class getType() { public final int id; private static final AtomicInteger idCounter = new AtomicInteger(0); + @SuppressWarnings("this-escape") protected OptimizedCallTarget(OptimizedCallTarget sourceCallTarget, RootNode rootNode) { assert sourceCallTarget == null || sourceCallTarget.sourceCallTarget == null : "Cannot create a clone of a cloned CallTarget"; this.sourceCallTarget = sourceCallTarget; diff --git a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/ContextLookupCompilationTest.java b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/ContextLookupCompilationTest.java index b9e279a39cc3..54257b29b3aa 100644 --- a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/ContextLookupCompilationTest.java +++ b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/ContextLookupCompilationTest.java @@ -663,7 +663,9 @@ static final class ContextLocalValue { @Registration(id = SHARED1, name = SHARED1, contextPolicy = ContextPolicy.SHARED) public static class Shared1 extends TruffleLanguage { + @SuppressWarnings("this-escape")// final ContextLocal local = createContextLocal((e) -> new ContextLocalValue()); + @SuppressWarnings("this-escape")// final ContextThreadLocal threadLocal = createContextThreadLocal((e, t) -> new ContextLocalValue()); @Override @@ -689,7 +691,9 @@ public static Shared1 get() { @Registration(id = SHARED2, name = SHARED2, contextPolicy = ContextPolicy.SHARED) public static class Shared2 extends TruffleLanguage { + @SuppressWarnings("this-escape")// final ContextLocal local = createContextLocal((e) -> new ContextLocalValue()); + @SuppressWarnings("this-escape")// final ContextThreadLocal threadLocal = createContextThreadLocal((e, t) -> new ContextLocalValue()); @Override diff --git a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/DeoptInvalidateListener.java b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/DeoptInvalidateListener.java index a30f67dcfe41..91d1550dc140 100644 --- a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/DeoptInvalidateListener.java +++ b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/DeoptInvalidateListener.java @@ -36,6 +36,7 @@ public class DeoptInvalidateListener extends AbstractGraalTruffleRuntimeListener boolean deoptimized = false; boolean invalidated = false; + @SuppressWarnings("this-escape") protected DeoptInvalidateListener(GraalTruffleRuntime runtime, OptimizedCallTarget focus) { super(runtime); this.focus = focus; diff --git a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LanguageContextFreedTest.java b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LanguageContextFreedTest.java index 0ddd8814f7aa..9b185b0fa27b 100644 --- a/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LanguageContextFreedTest.java +++ b/compiler/src/org.graalvm.compiler.truffle.test/src/org/graalvm/compiler/truffle/test/LanguageContextFreedTest.java @@ -138,6 +138,7 @@ static final class LanguageContext { } + @SuppressWarnings("this-escape") public abstract static class Base extends TruffleLanguage { final ContextLocal contextLocal = createContextLocal((e) -> new ContextLocalValue()); diff --git a/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeBlockState.java b/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeBlockState.java index 89f7c5bb308e..7b4c54bdeb1a 100644 --- a/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeBlockState.java +++ b/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeBlockState.java @@ -103,6 +103,7 @@ protected PartialEscapeBlockState(OptionValues options, DebugContext debug) { this.debug = debug; } + @SuppressWarnings("this-escape") protected PartialEscapeBlockState(PartialEscapeBlockState other) { super(other); adoptAddObjectStates(other); diff --git a/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeClosure.java b/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeClosure.java index a862377c063d..5fcc5f4106e2 100644 --- a/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeClosure.java +++ b/compiler/src/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PartialEscapeClosure.java @@ -185,6 +185,7 @@ protected PartialEscapeBlockState.Final cloneState(PartialEscapeBlockState.Final } } + @SuppressWarnings("this-escape") public PartialEscapeClosure(ScheduleResult schedule, CoreProviders providers) { super(schedule, schedule.getCFG()); StructuredGraph graph = schedule.getCFG().graph; diff --git a/compiler/src/org.graalvm.jniutils/src/org/graalvm/jniutils/JNIMethodScope.java b/compiler/src/org.graalvm.jniutils/src/org/graalvm/jniutils/JNIMethodScope.java index ae760c490394..ce2fd4481c37 100644 --- a/compiler/src/org.graalvm.jniutils/src/org/graalvm/jniutils/JNIMethodScope.java +++ b/compiler/src/org.graalvm.jniutils/src/org/graalvm/jniutils/JNIMethodScope.java @@ -95,7 +95,7 @@ public static JNIMethodScope scope() { /** * Enters the scope of an native method call. */ - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "this-escape"}) public JNIMethodScope(String scopeName, JNIEnv env) { Objects.requireNonNull(scopeName, "ScopeName must be non null."); this.scopeName = scopeName; diff --git a/compiler/src/org.graalvm.libgraal/src/org/graalvm/libgraal/LibGraalObject.java b/compiler/src/org.graalvm.libgraal/src/org/graalvm/libgraal/LibGraalObject.java index e50b19d3a90d..556d09e22b9e 100644 --- a/compiler/src/org.graalvm.libgraal/src/org/graalvm/libgraal/LibGraalObject.java +++ b/compiler/src/org.graalvm.libgraal/src/org/graalvm/libgraal/LibGraalObject.java @@ -61,6 +61,7 @@ public void run() { * * @param handle handle to an object in a libgraal isolate */ + @SuppressWarnings("this-escape") protected LibGraalObject(long handle) { this.handle = handle; isolate = LibGraalScope.current().getIsolate(); diff --git a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/args/FlagArgument.java b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/args/FlagArgument.java index f50ad8aeb309..ccd76b351d96 100644 --- a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/args/FlagArgument.java +++ b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/args/FlagArgument.java @@ -31,6 +31,7 @@ public class FlagArgument extends Argument { private boolean value; + @SuppressWarnings("this-escape") public FlagArgument(String name, String help) { super(name, false, help); assert isOptionArgument(); diff --git a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/CompilationFragment.java b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/CompilationFragment.java index 1f63a761ad20..ef0cb7c246be 100644 --- a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/CompilationFragment.java +++ b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/CompilationFragment.java @@ -81,6 +81,7 @@ public class CompilationFragment extends CompilationUnit { * @param parentCompilationUnit the compilation unit from which this fragment was created * @param rootNode the root inlining node of this compilation fragment */ + @SuppressWarnings("this-escape") public CompilationFragment(Method rootFragmentMethod, CompilationUnit parentCompilationUnit, InliningTreeNode rootNode) { super(rootFragmentMethod, parentCompilationUnit.getCompilationId(), parentCompilationUnit.getPeriod(), null); this.parentCompilationUnit = parentCompilationUnit; diff --git a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/optimization/Optimization.java b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/optimization/Optimization.java index 0c4b95db237d..e0ae37930d52 100644 --- a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/optimization/Optimization.java +++ b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/optimization/Optimization.java @@ -83,6 +83,7 @@ public class Optimization extends OptimizationTreeNode { * @param properties a map of additional properties of this optimization, mapped by property * name */ + @SuppressWarnings("this-escape") public Optimization(String optimizationName, String eventName, UnmodifiableEconomicMap position, diff --git a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/pair/CompilationUnitPair.java b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/pair/CompilationUnitPair.java index c03070b43181..e2e36d6aa952 100644 --- a/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/pair/CompilationUnitPair.java +++ b/compiler/src/org.graalvm.profdiff/src/org/graalvm/profdiff/core/pair/CompilationUnitPair.java @@ -51,6 +51,7 @@ public class CompilationUnitPair { * @param compilationUnit1 a compilation unit from the first experiment * @param compilationUnit2 a compilation unit from the second experiment */ + @SuppressWarnings("this-escape") public CompilationUnitPair(CompilationUnit compilationUnit1, CompilationUnit compilationUnit2) { assert compilationUnit1 != null || compilationUnit2 != null; assert !bothNotNull() || compilationUnit1.getMethod().getMethodName().equals(compilationUnit2.getMethod().getMethodName()); diff --git a/substratevm/mx.substratevm/suite.py b/substratevm/mx.substratevm/suite.py index 5a400a0ff3c1..28b222996f02 100644 --- a/substratevm/mx.substratevm/suite.py +++ b/substratevm/mx.substratevm/suite.py @@ -650,9 +650,6 @@ "jdk.jfr.internal", "jdk.jfr.internal.jfc", ], - "jdk.unsupported": [ - "sun.reflect", - ] }, "javaCompliance" : "17+", "checkstyleVersion": "10.7.0", diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/AbstractAnalysisEngine.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/AbstractAnalysisEngine.java index b4e460ad07da..c58d997f9d80 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/AbstractAnalysisEngine.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/AbstractAnalysisEngine.java @@ -100,6 +100,7 @@ public abstract class AbstractAnalysisEngine implements BigBang { protected final Timer analysisTimer; protected final Timer verifyHeapTimer; + @SuppressWarnings("this-escape") public AbstractAnalysisEngine(OptionValues options, AnalysisUniverse universe, HostVM hostVM, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflectionProvider, WordTypes wordTypes, ForkJoinPool executorService, Runnable heartbeatCallback, UnsupportedFeatures unsupportedFeatures, TimerCollection timerCollection) { diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/PointsToAnalysis.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/PointsToAnalysis.java index 785d9810d76e..0bd6bb38ca3f 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/PointsToAnalysis.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/PointsToAnalysis.java @@ -106,6 +106,7 @@ public abstract class PointsToAnalysis extends AbstractAnalysisEngine { private final boolean strengthenGraalGraphs; + @SuppressWarnings("this-escape") public PointsToAnalysis(OptionValues options, AnalysisUniverse universe, HostVM hostVM, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflectionProvider, WordTypes wordTypes, ForkJoinPool executorService, Runnable heartbeatCallback, UnsupportedFeatures unsupportedFeatures, TimerCollection timerCollection, boolean strengthenGraalGraphs) { diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/FrozenFieldFilterTypeFlow.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/FrozenFieldFilterTypeFlow.java index c03f1d8c760f..959a3cb19988 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/FrozenFieldFilterTypeFlow.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/FrozenFieldFilterTypeFlow.java @@ -44,6 +44,7 @@ public class FrozenFieldFilterTypeFlow extends TypeFlow { private final UnsafeWriteSinkTypeFlow unsafeSink; + @SuppressWarnings("this-escape") public FrozenFieldFilterTypeFlow(PointsToAnalysis bb, AnalysisField field, UnsafeWriteSinkTypeFlow unsafeSink) { super(field, field.getType()); this.unsafeSink = unsafeSink; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/InvokeTypeFlow.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/InvokeTypeFlow.java index 7865fd066680..e997463cf23c 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/InvokeTypeFlow.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/InvokeTypeFlow.java @@ -68,6 +68,7 @@ public abstract class InvokeTypeFlow extends TypeFlow implemen */ protected volatile boolean allOriginalCallees = true; + @SuppressWarnings("this-escape") protected InvokeTypeFlow(BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow[] actualParameters, ActualReturnTypeFlow actualReturn, MultiMethodKey callerMultiMethodKey) { super(invokeLocation, null); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/MonitorEnterTypeFlow.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/MonitorEnterTypeFlow.java index 50985742dd0c..411fbb99d047 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/MonitorEnterTypeFlow.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/MonitorEnterTypeFlow.java @@ -30,6 +30,7 @@ public class MonitorEnterTypeFlow extends TypeFlow { + @SuppressWarnings("this-escape") public MonitorEnterTypeFlow(BytecodePosition position, PointsToAnalysis bb) { super(position, null); this.addUse(bb, bb.getAllSynchronizedTypeFlow()); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/TypeFlow.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/TypeFlow.java index 90594680710e..bddb76cf6647 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/TypeFlow.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/TypeFlow.java @@ -153,6 +153,7 @@ public TypeFlow(TypeFlow original, MethodFlowsGraph graphRef) { this(original, graphRef, TypeState.forEmpty()); } + @SuppressWarnings("this-escape") public TypeFlow(TypeFlow original, MethodFlowsGraph graphRef, TypeState cloneState) { this(original.getSource(), original.getDeclaredType(), cloneState, original.getSlot(), true, graphRef); PointsToStats.registerTypeFlowRetainReason(this, original); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveSingleTypeState.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveSingleTypeState.java index f4319f2887d4..e2d53578101e 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveSingleTypeState.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveSingleTypeState.java @@ -41,6 +41,7 @@ public class ContextSensitiveSingleTypeState extends SingleTypeState { protected final AnalysisObject[] objects; /** Creates a new type state from incoming objects. */ + @SuppressWarnings("this-escape") public ContextSensitiveSingleTypeState(PointsToAnalysis bb, boolean canBeNull, AnalysisType type, AnalysisObject... objects) { super(bb, canBeNull, type); this.objects = objects; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/object/AnalysisObject.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/object/AnalysisObject.java index 8767e0d9715b..888ffe77f1cb 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/object/AnalysisObject.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/object/AnalysisObject.java @@ -120,6 +120,7 @@ public AnalysisObject(AnalysisUniverse universe, AnalysisType type) { * Constructor allowing the subclasses to specify the type of context sensitivity they * implement. */ + @SuppressWarnings("this-escape") protected AnalysisObject(AnalysisUniverse universe, AnalysisType type, AnalysisObjectKind kind) { this.id = createId(type.getId()); this.type = type; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisField.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisField.java index d6d86ba8d52d..c6b976abf03a 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisField.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisField.java @@ -120,6 +120,7 @@ public abstract class AnalysisField extends AnalysisElement implements WrappedJa protected final AnalysisType declaringClass; protected final AnalysisType fieldType; + @SuppressWarnings("this-escape") public AnalysisField(AnalysisUniverse universe, ResolvedJavaField wrappedField) { assert !wrappedField.isInternal(); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMetaAccess.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMetaAccess.java index 4ddcd19579d0..e6d178a3a950 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMetaAccess.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMetaAccess.java @@ -38,6 +38,7 @@ public class AnalysisMetaAccess extends UniverseMetaAccess { + @SuppressWarnings("this-escape") public AnalysisMetaAccess(AnalysisUniverse analysisUniverse, MetaAccessProvider originalMetaAccess) { super(analysisUniverse, originalMetaAccess); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java index 7bc365659126..eb542be85f7e 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java @@ -150,6 +150,7 @@ public record Signature(String name, AnalysisType[] parameterTypes) { */ protected AnalysisMethod[] implementations; + @SuppressWarnings("this-escape") protected AnalysisMethod(AnalysisUniverse universe, ResolvedJavaMethod wrapped, MultiMethodKey multiMethodKey, Map multiMethodMap) { this.wrapped = wrapped; id = universe.nextMethodId.getAndIncrement(); @@ -197,6 +198,7 @@ protected AnalysisMethod(AnalysisUniverse universe, ResolvedJavaMethod wrapped, parsingContextMaxDepth = PointstoOptions.ParsingContextMaxDepth.getValue(declaringClass.universe.hostVM.options()); } + @SuppressWarnings("this-escape") protected AnalysisMethod(AnalysisMethod original, MultiMethodKey multiMethodKey) { wrapped = original.wrapped; id = original.id; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java index c6d00d6f4e2d..9b9656918209 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisType.java @@ -210,6 +210,7 @@ public enum UsageKind { @SuppressWarnings("unused") private volatile Object typeInstantiatedNotifications; + @SuppressWarnings("this-escape") public AnalysisType(AnalysisUniverse universe, ResolvedJavaType javaType, JavaKind storageKind, AnalysisType objectType, AnalysisType cloneableType) { this.universe = universe; this.wrapped = javaType; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/phases/SubstrateIntrinsicGraphBuilder.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/phases/SubstrateIntrinsicGraphBuilder.java index 71628fcf9653..d253acc14dd9 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/phases/SubstrateIntrinsicGraphBuilder.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/phases/SubstrateIntrinsicGraphBuilder.java @@ -49,6 +49,7 @@ public class SubstrateIntrinsicGraphBuilder extends IntrinsicGraphBuilder { private int bci; + @SuppressWarnings("this-escape") public SubstrateIntrinsicGraphBuilder(OptionValues options, DebugContext debug, CoreProviders providers, Bytecode code) { super(options, debug, providers, code, -1, AllowAssumptions.NO); setStateAfter(getGraph().start()); diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/MultiTypeState.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/MultiTypeState.java index ea7f3a1f921c..d69c2eb43de6 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/MultiTypeState.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/MultiTypeState.java @@ -48,6 +48,7 @@ public class MultiTypeState extends TypeState { protected boolean merged; /** Creates a new type state using the provided types bit set and objects. */ + @SuppressWarnings("this-escape") public MultiTypeState(PointsToAnalysis bb, boolean canBeNull, BitSet typesBitSet, int typesCount) { assert !TypeStateUtils.needsTrim(typesBitSet); this.typesBitSet = typesBitSet; @@ -59,6 +60,7 @@ public MultiTypeState(PointsToAnalysis bb, boolean canBeNull, BitSet typesBitSet } /** Create a type state with the same content and a reversed canBeNull value. */ + @SuppressWarnings("this-escape") protected MultiTypeState(PointsToAnalysis bb, boolean canBeNull, MultiTypeState other) { this.typesBitSet = other.typesBitSet; this.typesCount = other.typesCount; diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/SingleTypeState.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/SingleTypeState.java index 899643a72679..7fa98c345792 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/SingleTypeState.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/typestate/SingleTypeState.java @@ -40,6 +40,7 @@ public class SingleTypeState extends TypeState { protected boolean merged; /** Creates a new type state from incoming objects. */ + @SuppressWarnings("this-escape") public SingleTypeState(PointsToAnalysis bb, boolean canBeNull, AnalysisType type) { this.type = type; this.canBeNull = canBeNull; @@ -49,6 +50,7 @@ public SingleTypeState(PointsToAnalysis bb, boolean canBeNull, AnalysisType type } /** Create a type state with the same content and a reversed canBeNull value. */ + @SuppressWarnings("this-escape") protected SingleTypeState(PointsToAnalysis bb, boolean canBeNull, SingleTypeState other) { this.type = other.type; this.canBeNull = canBeNull; diff --git a/substratevm/src/com.oracle.graal.reachability/src/com/oracle/graal/reachability/ReachabilityAnalysisEngine.java b/substratevm/src/com.oracle.graal.reachability/src/com/oracle/graal/reachability/ReachabilityAnalysisEngine.java index 963315b1086b..afec2336794c 100644 --- a/substratevm/src/com.oracle.graal.reachability/src/com/oracle/graal/reachability/ReachabilityAnalysisEngine.java +++ b/substratevm/src/com.oracle.graal.reachability/src/com/oracle/graal/reachability/ReachabilityAnalysisEngine.java @@ -76,6 +76,7 @@ public abstract class ReachabilityAnalysisEngine extends AbstractAnalysisEngine private final ReachabilityMethodProcessingHandler reachabilityMethodProcessingHandler; + @SuppressWarnings("this-escape") public ReachabilityAnalysisEngine(OptionValues options, AnalysisUniverse universe, HostVM hostVM, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflectionProvider, WordTypes wordTypes, ForkJoinPool executorService, Runnable heartbeatCallback, UnsupportedFeatures unsupportedFeatures, TimerCollection timerCollection, diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/ObjectFile.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/ObjectFile.java index b1446bfd5fa5..d58583f03399 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/ObjectFile.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/ObjectFile.java @@ -61,6 +61,7 @@ * contents; layout decisions (offsets, ordering) are modelled separately (see * {@link LayoutDecision}), being computed on write-out (see {@link WriteLayout}). */ +@SuppressWarnings("this-escape") public abstract class ObjectFile { /* diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/StringTable.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/StringTable.java index e9689fbd4404..861c61ed4964 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/StringTable.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/StringTable.java @@ -54,6 +54,7 @@ public StringTable(byte[] bytes) { this(ByteBuffer.wrap(bytes)); } + @SuppressWarnings("this-escape") public StringTable(ByteBuffer buffer) { read(buffer); } diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/MethodEntry.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/MethodEntry.java index e5a61b0abf67..8cb273077488 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/MethodEntry.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/MethodEntry.java @@ -55,6 +55,7 @@ public class MethodEntry extends MemberEntry { int vtableOffset = -1; final String symbolName; + @SuppressWarnings("this-escape") public MethodEntry(DebugInfoBase debugInfoBase, DebugMethodInfo debugMethodInfo, FileEntry fileEntry, int line, String methodName, ClassEntry ownerType, TypeEntry valueType, TypeEntry[] paramTypes, DebugLocalInfo[] paramInfos, DebugLocalInfo thisParam) { diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/range/SubRange.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/range/SubRange.java index 6e0fecbd6a39..958edac5eff8 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/range/SubRange.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/debugentry/range/SubRange.java @@ -60,6 +60,7 @@ public abstract class SubRange extends Range { */ private DebugInfoProvider.DebugLocalInfo[] localInfos; + @SuppressWarnings("this-escape") protected SubRange(MethodEntry methodEntry, int lo, int hi, int line, PrimaryRange primary, Range caller) { super(methodEntry, lo, hi, line, (caller == null ? 0 : caller.depth + 1)); this.caller = caller; diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/ELFProgbitsSection.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/ELFProgbitsSection.java index d06775fb809a..35e4e79655a2 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/ELFProgbitsSection.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/ELFProgbitsSection.java @@ -40,6 +40,7 @@ public class ELFProgbitsSection extends ELFUserDefinedSection implements Progbit * See the comment in ObjectFile.Element about the divide between Elements and their -Impls. */ + @SuppressWarnings("this-escape") public ELFProgbitsSection(ELFObjectFile owner, String name, int alignment, ProgbitsSectionImpl impl, EnumSet flags) { super(owner, name, alignment, ELFObjectFile.SectionType.PROGBITS, impl != null ? impl : new BasicProgbitsSectionImpl(new byte[0]), flags); // this *is* necessary because the newProgbitsSection helper doesn't see the impl @@ -48,6 +49,7 @@ public ELFProgbitsSection(ELFObjectFile owner, String name, int alignment, Progb } } + @SuppressWarnings("this-escape") public ELFProgbitsSection(ELFObjectFile owner, String name, int alignment, EnumSet flags, int shtIndex, InputDisassembler in, int size) { super(owner, name, alignment, ELFObjectFile.SectionType.PROGBITS, new BasicProgbitsSectionImpl(in.readBlob(size)), flags, shtIndex); // this *is* necessary because the newProgbitsSection helper doesn't see the impl diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/dwarf/DwarfDebugInfo.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/dwarf/DwarfDebugInfo.java index 35cadbdaedb7..cf9478296b0e 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/dwarf/DwarfDebugInfo.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/elf/dwarf/DwarfDebugInfo.java @@ -356,6 +356,7 @@ public class DwarfDebugInfo extends DebugInfoBase { */ private final EconomicMap rangeLocalPropertiesIndex = EconomicMap.create(); + @SuppressWarnings("this-escape") public DwarfDebugInfo(ELFMachine elfMachine, ByteOrder byteOrder) { super(byteOrder); this.elfMachine = elfMachine; diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/macho/MachOObjectFile.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/macho/MachOObjectFile.java index d85e53794538..4a3b4e200bca 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/macho/MachOObjectFile.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/macho/MachOObjectFile.java @@ -919,6 +919,7 @@ public abstract class LoadCommand extends Header { LoadCommandKind cmdKind; // 'cmd' in the struct definition + @SuppressWarnings("this-escape") public LoadCommand(String name, LoadCommandKind k) { super(name); this.cmdKind = k; @@ -1545,6 +1546,7 @@ public boolean isReferenceable() { return getImpl().isReferenceable(); } + @SuppressWarnings("this-escape") public MachOSection(String name, int alignment, Segment64Command segment, SectionType t, EnumSet flags) { super(name, alignment); if (name.length() > 16) { diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffObjectFile.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffObjectFile.java index 4f48b7762c9e..40dda7e7814b 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffObjectFile.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffObjectFile.java @@ -72,6 +72,7 @@ public class PECoffObjectFile extends ObjectFile { private PECoffDirectiveSection directives; private boolean runtimeDebugInfoGeneration; + @SuppressWarnings("this-escape") private PECoffObjectFile(int pageSize, boolean runtimeDebugInfoGeneration) { super(pageSize); this.runtimeDebugInfoGeneration = runtimeDebugInfoGeneration; @@ -86,6 +87,7 @@ private PECoffObjectFile(int pageSize, boolean runtimeDebugInfoGeneration) { directives = new PECoffDirectiveSection(".drectve", 1); } + @SuppressWarnings("this-escape") public PECoffObjectFile(int pageSize) { this(pageSize, false); } diff --git a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffProgbitsSection.java b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffProgbitsSection.java index e3f7dccae6f6..9b00d939ca3e 100644 --- a/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffProgbitsSection.java +++ b/substratevm/src/com.oracle.objectfile/src/com/oracle/objectfile/pecoff/PECoffProgbitsSection.java @@ -40,6 +40,7 @@ public class PECoffProgbitsSection extends PECoffUserDefinedSection implements P * See the comment in ObjectFile.Element about the divide between Elements and their -Impls. */ + @SuppressWarnings("this-escape") public PECoffProgbitsSection(PECoffObjectFile owner, String name, int alignment, ProgbitsSectionImpl impl, EnumSet flags) { super(owner, name, alignment, impl != null ? impl : new BasicProgbitsSectionImpl(new byte[0]), flags); // this *is* necessary because the newProgbitsSection helper doesn't see the impl @@ -48,6 +49,7 @@ public PECoffProgbitsSection(PECoffObjectFile owner, String name, int alignment, } } + @SuppressWarnings("this-escape") public PECoffProgbitsSection(PECoffObjectFile owner, String name, int alignment, EnumSet flags, int shtIndex, InputDisassembler in, int size) { super(owner, name, alignment, new BasicProgbitsSectionImpl(in.readBlob(size)), flags, shtIndex); // this *is* necessary because the newProgbitsSection helper doesn't see the impl diff --git a/substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/tracing/TraceFileWriter.java b/substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/tracing/TraceFileWriter.java index 8dc3bdf164fd..206d05a7b024 100644 --- a/substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/tracing/TraceFileWriter.java +++ b/substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/tracing/TraceFileWriter.java @@ -45,6 +45,7 @@ public class TraceFileWriter extends Tracer implements TracingResultWriter { private boolean open = true; private int written = 0; + @SuppressWarnings("this-escape") public TraceFileWriter(Path path) throws IOException { writer = Files.newBufferedWriter(path); JsonWriter json = new JsonWriter(writer); diff --git a/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/AbstractImageHeapLayouter.java b/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/AbstractImageHeapLayouter.java index 08c92e726628..46f0e93ed69e 100644 --- a/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/AbstractImageHeapLayouter.java +++ b/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/AbstractImageHeapLayouter.java @@ -81,6 +81,7 @@ private T getLastPartition() { return getPartitions()[PARTITION_COUNT - 1]; } + @SuppressWarnings("this-escape") public AbstractImageHeapLayouter() { this.partitions = createPartitionsArray(PARTITION_COUNT); this.partitions[READ_ONLY_PRIMITIVE] = createPartition("readOnlyPrimitive", false, false, false); diff --git a/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/graal/GenScavengeAllocationSnippets.java b/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/graal/GenScavengeAllocationSnippets.java index 73d4402b923a..a20b00d3339e 100644 --- a/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/graal/GenScavengeAllocationSnippets.java +++ b/substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/graal/GenScavengeAllocationSnippets.java @@ -124,6 +124,7 @@ public static class Templates extends SubstrateTemplates { private final SnippetInfo formatStoredContinuation; private final SnippetInfo formatPod; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers, SubstrateAllocationSnippets.Templates baseTemplates) { super(options, providers); this.baseTemplates = baseTemplates; diff --git a/substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64RegisterConfig.java b/substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64RegisterConfig.java index 25f72a6730e8..ecf710d1d5f9 100755 --- a/substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64RegisterConfig.java +++ b/substratevm/src/com.oracle.svm.core.graal.aarch64/src/com/oracle/svm/core/graal/aarch64/SubstrateAArch64RegisterConfig.java @@ -111,6 +111,7 @@ public class SubstrateAArch64RegisterConfig implements SubstrateRegisterConfig { private final boolean preserveFramePointer; public static final Register fp = r29; + @SuppressWarnings("this-escape") public SubstrateAArch64RegisterConfig(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, boolean preserveFramePointer) { this.target = target; this.metaAccess = metaAccess; diff --git a/substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig.java b/substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig.java index 1e311f4ba7ed..9cc774e3aafa 100644 --- a/substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig.java +++ b/substratevm/src/com.oracle.svm.core.graal.amd64/src/com/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig.java @@ -109,6 +109,7 @@ public class SubstrateAMD64RegisterConfig implements SubstrateRegisterConfig { private static final RegisterArray MASK_REGISTERS = new RegisterArray(k1, k2, k3, k4, k5, k6, k7); + @SuppressWarnings("this-escape") public SubstrateAMD64RegisterConfig(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, boolean useBasePointer) { this.target = target; this.metaAccess = metaAccess; diff --git a/substratevm/src/com.oracle.svm.core.graal.riscv64/src/com/oracle/svm/core/graal/riscv64/SubstrateRISCV64RegisterConfig.java b/substratevm/src/com.oracle.svm.core.graal.riscv64/src/com/oracle/svm/core/graal/riscv64/SubstrateRISCV64RegisterConfig.java index 7a443a32ca01..58ff9d0bbcb1 100644 --- a/substratevm/src/com.oracle.svm.core.graal.riscv64/src/com/oracle/svm/core/graal/riscv64/SubstrateRISCV64RegisterConfig.java +++ b/substratevm/src/com.oracle.svm.core.graal.riscv64/src/com/oracle/svm/core/graal/riscv64/SubstrateRISCV64RegisterConfig.java @@ -112,6 +112,7 @@ public class SubstrateRISCV64RegisterConfig implements SubstrateRegisterConfig { private final RegisterAttributes[] attributesMap; private final MetaAccessProvider metaAccess; + @SuppressWarnings("this-escape") public SubstrateRISCV64RegisterConfig(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, boolean preserveFramePointer) { this.target = target; this.metaAccess = metaAccess; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/WeakIdentityHashMap.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/WeakIdentityHashMap.java index a69715e1f751..35d007a3f257 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/WeakIdentityHashMap.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/WeakIdentityHashMap.java @@ -298,6 +298,7 @@ public WeakIdentityHashMap() { * @throws NullPointerException if the specified map is null * @since 1.3 */ + @SuppressWarnings("this-escape") public WeakIdentityHashMap(Map m) { this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1, DEFAULT_INITIAL_CAPACITY), diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/CodeInfoDecoder.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/CodeInfoDecoder.java index a2b7ebab5822..bee8e6ba232c 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/CodeInfoDecoder.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/CodeInfoDecoder.java @@ -610,6 +610,7 @@ public static class FrameInfoState { int firstValue; int successorIndex; + @SuppressWarnings("this-escape") public FrameInfoState() { reset(); } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/FrameInfoQueryResult.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/FrameInfoQueryResult.java index 9894c6945885..bb375834d5a2 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/FrameInfoQueryResult.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/FrameInfoQueryResult.java @@ -174,6 +174,7 @@ public JavaConstant getValue() { // Index of sourceMethodName in CodeInfoDecoder.frameInfoSourceMethodNames protected int sourceMethodNameIndex; + @SuppressWarnings("this-escape") public FrameInfoQueryResult() { init(); } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/collections/AbstractUninterruptibleHashtable.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/collections/AbstractUninterruptibleHashtable.java index cc193fac091e..8eb7cd7b84ac 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/collections/AbstractUninterruptibleHashtable.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/collections/AbstractUninterruptibleHashtable.java @@ -50,6 +50,7 @@ public AbstractUninterruptibleHashtable() { } @Platforms(Platform.HOSTED_ONLY.class) + @SuppressWarnings("this-escape") public AbstractUninterruptibleHashtable(int primeLength) { this.table = createTable(primeLength); this.size = 0; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/nodes/ForeignCallWithExceptionNode.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/nodes/ForeignCallWithExceptionNode.java index 856a3e0995ec..51af51913e1f 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/nodes/ForeignCallWithExceptionNode.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/nodes/ForeignCallWithExceptionNode.java @@ -84,6 +84,7 @@ public ForeignCallWithExceptionNode(ForeignCallDescriptor descriptor, ValueNode. this(TYPE, descriptor, arguments); } + @SuppressWarnings("this-escape") protected ForeignCallWithExceptionNode(NodeClass c, ForeignCallDescriptor descriptor, ValueNode... arguments) { super(c, StampFactory.forKind(JavaKind.fromJavaClass(descriptor.getResultType()))); this.arguments = new NodeInputList<>(this, arguments); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/replacements/SubstrateGraphKit.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/replacements/SubstrateGraphKit.java index ffd2c504d8b4..50dc47775dc2 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/replacements/SubstrateGraphKit.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/replacements/SubstrateGraphKit.java @@ -96,6 +96,7 @@ public class SubstrateGraphKit extends GraphKit { private final FrameStateBuilder frameState; private int nextBCI; + @SuppressWarnings("this-escape") public SubstrateGraphKit(DebugContext debug, ResolvedJavaMethod stubMethod, Providers providers, WordTypes wordTypes, GraphBuilderConfiguration.Plugins graphBuilderPlugins, CompilationIdentifier compilationId, boolean forceTrackNodeSourcePosition) { super(debug, stubMethod, providers, wordTypes, graphBuilderPlugins, compilationId, null, forceTrackNodeSourcePosition || SubstrateOptions.parseOnce(), false); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/ArithmeticSnippets.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/ArithmeticSnippets.java index 2339ed664757..6ece4f1cbb20 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/ArithmeticSnippets.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/ArithmeticSnippets.java @@ -209,6 +209,7 @@ private static void zeroCheck(long val) { private final SnippetInfo uirem; private final SnippetInfo ulrem; + @SuppressWarnings("this-escape") protected ArithmeticSnippets(OptionValues options, Providers providers, Map, NodeLoweringProvider> lowerings, boolean divRemNeedsSignedBoundsCheck) { super(options, providers); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/SubstrateAllocationSnippets.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/SubstrateAllocationSnippets.java index b54cc67c097c..667726526b6b 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/SubstrateAllocationSnippets.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/snippets/SubstrateAllocationSnippets.java @@ -551,6 +551,7 @@ public static class Templates extends SubstrateTemplates { private final SnippetInfo allocateStoredContinuation; private final SnippetInfo allocatePod; + @SuppressWarnings("this-escape") public Templates(OptionValues options, Providers providers, SubstrateAllocationSnippets receiver) { super(options, providers); snippetCounters = new AllocationSnippetCounters(SnippetCounter.Group.NullFactory); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/GCCause.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/GCCause.java index a38de7d807ca..29fd1c24568f 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/GCCause.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/GCCause.java @@ -54,6 +54,7 @@ public class GCCause { private final String name; @Platforms(Platform.HOSTED_ONLY.class) + @SuppressWarnings("this-escape") protected GCCause(String name, int id) { this.id = id; this.name = name; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java index 84981ca5f668..d6992702b05b 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java @@ -98,6 +98,7 @@ public static SystemPropertiesSupport singleton() { } @Platforms(Platform.HOSTED_ONLY.class) + @SuppressWarnings("this-escape") protected SystemPropertiesSupport() { properties = new Properties(); savedProperties = new HashMap<>(); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/resources/NativeImageResourceFileSystem.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/resources/NativeImageResourceFileSystem.java index 27f4bcdfb8fa..7396e998c832 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/resources/NativeImageResourceFileSystem.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/resources/NativeImageResourceFileSystem.java @@ -122,6 +122,7 @@ public class NativeImageResourceFileSystem extends FileSystem { private final IndexNode lookupKey = new IndexNode(null, true); private final LinkedHashMap inodes = new LinkedHashMap<>(10); + @SuppressWarnings("this-escape") public NativeImageResourceFileSystem(NativeImageResourceFileSystemProvider provider, Path resourcePath, Map env) { this.provider = provider; this.resourcePath = resourcePath; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrRecorderThread.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrRecorderThread.java index a62737442227..cf26ef4c4ce9 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrRecorderThread.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrRecorderThread.java @@ -62,6 +62,7 @@ public class JfrRecorderThread extends Thread { private volatile boolean stopped; @Platforms(Platform.HOSTED_ONLY.class) + @SuppressWarnings("this-escape") public JfrRecorderThread(JfrGlobalMemory globalMemory, JfrUnlockedChunkWriter unlockedChunkWriter) { super("JFR recorder"); this.globalMemory = globalMemory; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/monitor/MonitorSnippets.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/monitor/MonitorSnippets.java index d020978ea35a..6be493cc0c84 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/monitor/MonitorSnippets.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/monitor/MonitorSnippets.java @@ -109,6 +109,7 @@ protected static void monitorExitSnippet(Object obj) { private final SnippetInfo monitorEnter; private final SnippetInfo monitorExit; + @SuppressWarnings("this-escape") protected MonitorSnippets(OptionValues options, Providers providers) { super(options, providers); diff --git a/substratevm/src/com.oracle.svm.diagnosticsagent/src/com/oracle/svm/diagnosticsagent/NativeImageDiagnosticsAgentJNIHandleSet.java b/substratevm/src/com.oracle.svm.diagnosticsagent/src/com/oracle/svm/diagnosticsagent/NativeImageDiagnosticsAgentJNIHandleSet.java index 392b7d027af1..4906652d8d63 100644 --- a/substratevm/src/com.oracle.svm.diagnosticsagent/src/com/oracle/svm/diagnosticsagent/NativeImageDiagnosticsAgentJNIHandleSet.java +++ b/substratevm/src/com.oracle.svm.diagnosticsagent/src/com/oracle/svm/diagnosticsagent/NativeImageDiagnosticsAgentJNIHandleSet.java @@ -42,6 +42,7 @@ public class NativeImageDiagnosticsAgentJNIHandleSet extends JNIHandleSet { final JNIObjectHandle javaLangStackTraceElement; final JNIMethodId javaLangStackTraceElementCtor4; + @SuppressWarnings("this-escape") public NativeImageDiagnosticsAgentJNIHandleSet(JNIEnvironment env) { super(env); javaLangStackTraceElement = newClassGlobalRef(env, "java/lang/StackTraceElement"); diff --git a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java index 627c2707c459..b59ea4f9da28 100644 --- a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java +++ b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java @@ -734,6 +734,7 @@ public boolean buildFallbackImage() { static final String CONFIG_FILE_ENV_VAR_KEY = "NATIVE_IMAGE_CONFIG_FILE"; + @SuppressWarnings("this-escape") protected NativeImage(BuildConfiguration config) { this.config = config; this.metaInfProcessor = new DriverMetaInfProcessor(); diff --git a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateMetaAccess.java b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateMetaAccess.java index 24fa809122e3..5ad17b828396 100644 --- a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateMetaAccess.java +++ b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateMetaAccess.java @@ -59,6 +59,7 @@ public static SubstrateMetaAccess singleton() { } @Platforms(Platform.HOSTED_ONLY.class) + @SuppressWarnings("this-escape") public SubstrateMetaAccess() { ImageSingletons.add(SubstrateMetaAccess.class, this); } diff --git a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateSignature.java b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateSignature.java index 0e0a87d8e7c3..7c4c3867da9f 100644 --- a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateSignature.java +++ b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/meta/SubstrateSignature.java @@ -40,6 +40,7 @@ public SubstrateSignature() { /* Types are initialized later with an explicit call to setTypes. */ } + @SuppressWarnings("this-escape") public SubstrateSignature(SubstrateType[] parameterTypes, SubstrateType returnType) { setTypes(parameterTypes, returnType); } diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java index 443c7d7e213b..70fd6d223ac8 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java @@ -116,6 +116,7 @@ public class NativeImageClassLoaderSupport { public final AnnotationExtractor annotationExtractor; + @SuppressWarnings("this-escape") protected NativeImageClassLoaderSupport(ClassLoader defaultSystemClassLoader, String[] classpath, String[] modulePath) { classes = EconomicMap.create(); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/SVMHost.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/SVMHost.java index d93b5dccfada..db6bcc1090d5 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/SVMHost.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/SVMHost.java @@ -730,6 +730,7 @@ public boolean hasNeverInlineDirective(ResolvedJavaMethod method) { return SubstrateOptions.NeverInline.getValue().values().stream().anyMatch(re -> MethodFilter.parse(re).matches(method)); } + @SuppressWarnings("this-escape")// private final InlineBeforeAnalysisPolicy inlineBeforeAnalysisPolicy = new InlineBeforeAnalysisPolicyImpl(this); @Override diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImagePointsToAnalysis.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImagePointsToAnalysis.java index 1cdce6346021..c8022403df21 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImagePointsToAnalysis.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImagePointsToAnalysis.java @@ -62,6 +62,7 @@ public class NativeImagePointsToAnalysis extends PointsToAnalysis implements Inf private final CustomTypeFieldHandler customTypeFieldHandler; private final CallChecker callChecker; + @SuppressWarnings("this-escape") public NativeImagePointsToAnalysis(OptionValues options, AnalysisUniverse universe, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflectionProvider, WordTypes wordTypes, diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImageReachabilityAnalysisEngine.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImageReachabilityAnalysisEngine.java index 91c2d793cd06..a9b851e21b47 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImageReachabilityAnalysisEngine.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/analysis/NativeImageReachabilityAnalysisEngine.java @@ -50,6 +50,7 @@ public class NativeImageReachabilityAnalysisEngine extends ReachabilityAnalysisE private final boolean strengthenGraalGraphs; private final CustomTypeFieldHandler unknownFieldHandler; + @SuppressWarnings("this-escape") public NativeImageReachabilityAnalysisEngine(OptionValues options, AnalysisUniverse universe, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflectionProvider, WordTypes wordTypes, diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/annotation/AnnotationSupport.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/annotation/AnnotationSupport.java index 56dde3b98842..28bcd4c97c80 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/annotation/AnnotationSupport.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/annotation/AnnotationSupport.java @@ -138,6 +138,7 @@ public class AnnotationSupport extends CustomSubstitution valueInfo; + @SuppressWarnings("this-escape") public ConstantInfo(String name, ElementKind kind, ResolvedJavaMethod annotatedMethod) { super(name, kind); this.annotatedMethod = annotatedMethod; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/EnumConstantInfo.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/EnumConstantInfo.java index 178da03b9897..d49cabedb34a 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/EnumConstantInfo.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/EnumConstantInfo.java @@ -33,6 +33,7 @@ public class EnumConstantInfo extends SizableInfo { private final boolean includeInLookup; private final Enum enumValue; + @SuppressWarnings("this-escape") public EnumConstantInfo(String name, ResolvedJavaField annotatedField, boolean includeInLookup, Enum enumValue) { super(name, ElementKind.INTEGER); this.annotatedField = annotatedField; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/SizableInfo.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/SizableInfo.java index 8cbf8ba49452..50bb5086069f 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/SizableInfo.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/SizableInfo.java @@ -77,6 +77,7 @@ public enum SignednessValue { private final PropertyInfo sizeInfo; private final PropertyInfo signednessInfo; + @SuppressWarnings("this-escape") public SizableInfo(String name, ElementKind kind) { super(name); this.kind = kind; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructBitfieldInfo.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructBitfieldInfo.java index 802e1ffe6ba8..e67904c791b4 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructBitfieldInfo.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructBitfieldInfo.java @@ -38,6 +38,7 @@ public class StructBitfieldInfo extends ElementInfo { private final PropertyInfo endBit; private final PropertyInfo signednessInfo; + @SuppressWarnings("this-escape") public StructBitfieldInfo(String name) { super(name); this.byteOffset = adoptChild(new PropertyInfo("byteOffset")); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructFieldInfo.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructFieldInfo.java index cb44b1478b25..ab8e0edd979f 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructFieldInfo.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/info/StructFieldInfo.java @@ -36,6 +36,7 @@ public class StructFieldInfo extends SizableInfo { private final PropertyInfo offset; private LocationIdentity locationIdentity; + @SuppressWarnings("this-escape") public StructFieldInfo(String name, ElementKind kind) { super(name, kind); this.offset = adoptChild(new PropertyInfo("offset")); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/CompileQueue.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/CompileQueue.java index 3ea445ec5e7b..e50c3ae2cbce 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/CompileQueue.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/code/CompileQueue.java @@ -354,6 +354,7 @@ public Description getDescription() { } } + @SuppressWarnings("this-escape") public CompileQueue(DebugContext debug, FeatureHandler featureHandler, HostedUniverse universe, RuntimeConfiguration runtimeConfiguration, Boolean deoptimizeAll, SnippetReflectionProvider snippetReflection, ForkJoinPool executorService) { this.universe = universe; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/config/HybridLayout.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/config/HybridLayout.java index 39625a95c1ba..b55d6c1e33d4 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/config/HybridLayout.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/config/HybridLayout.java @@ -70,6 +70,7 @@ public HybridLayout(Class hybridClass, ObjectLayout layout, HostedMetaAccess this((HostedInstanceClass) metaAccess.lookupJavaType(hybridClass), layout, metaAccess); } + @SuppressWarnings("this-escape") public HybridLayout(HostedInstanceClass hybridClass, ObjectLayout layout, MetaAccessProvider metaAccess) { this.layout = layout; HybridLayoutSupport.HybridInfo hybridInfo = HybridLayoutSupport.singleton().inspectHybrid(hybridClass, metaAccess); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/heap/SVMImageHeapScanner.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/heap/SVMImageHeapScanner.java index f623770bf266..f6fa4cb59847 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/heap/SVMImageHeapScanner.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/heap/SVMImageHeapScanner.java @@ -64,6 +64,7 @@ public class SVMImageHeapScanner extends ImageHeapScanner { private final Field economicMapImplHashArrayField; private final ReflectionHostedSupport reflectionSupport; + @SuppressWarnings("this-escape") public SVMImageHeapScanner(BigBang bb, ImageHeap imageHeap, ImageClassLoader loader, AnalysisMetaAccess metaAccess, SnippetReflectionProvider snippetReflection, ConstantReflectionProvider aConstantReflection, ObjectScanningObserver aScanningObserver) { super(bb, imageHeap, metaAccess, snippetReflection, aConstantReflection, aScanningObserver); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/LIRNativeImageCodeCache.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/LIRNativeImageCodeCache.java index 2941f6854cf9..c848e011d797 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/LIRNativeImageCodeCache.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/LIRNativeImageCodeCache.java @@ -72,6 +72,7 @@ public class LIRNativeImageCodeCache extends NativeImageCodeCache { private final TargetDescription target; + @SuppressWarnings("this-escape") public LIRNativeImageCodeCache(Map compilations, NativeImageHeap imageHeap) { super(compilations, imageHeap); target = ConfigurationValues.getTarget(); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java index 556d9644c3a9..96bab8d343dc 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageCodeCache.java @@ -142,6 +142,7 @@ public void purge() { orderedCompilations.clear(); } + @SuppressWarnings("this-escape")// public NativeImageCodeCache(Map compilations, NativeImageHeap imageHeap, Platform targetPlatform) { this.compilations = compilations; this.imageHeap = imageHeap; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/meta/HostedArrayClass.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/meta/HostedArrayClass.java index 1273d2eef846..161491015ac0 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/meta/HostedArrayClass.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/meta/HostedArrayClass.java @@ -34,6 +34,7 @@ public class HostedArrayClass extends HostedClass { private final HostedType baseType; private final int arrayDepth; + @SuppressWarnings("this-escape") public HostedArrayClass(HostedUniverse universe, AnalysisType wrapped, JavaKind kind, JavaKind storageKind, HostedClass superClass, HostedInterface[] interfaces, HostedType componentType) { super(universe, wrapped, kind, storageKind, superClass, interfaces); this.componentType = componentType; diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/substitute/ComputedValueField.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/substitute/ComputedValueField.java index d33b57c4af9b..df0a762a0210 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/substitute/ComputedValueField.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/substitute/ComputedValueField.java @@ -113,6 +113,7 @@ public ComputedValueField(ResolvedJavaField original, ResolvedJavaField annotate this(original, annotated, kind, null, null, targetClass, targetName, isFinal, false); } + @SuppressWarnings("this-escape") public ComputedValueField(ResolvedJavaField original, ResolvedJavaField annotated, RecomputeFieldValue.Kind kind, Class transformedValueAllowedType, FieldValueTransformer initialTransformer, Class targetClass, String targetName, boolean isFinal, boolean disableCaching) { assert original != null; diff --git a/substratevm/src/com.oracle.svm.jvmtiagentbase/src/com/oracle/svm/jvmtiagentbase/JNIHandleSet.java b/substratevm/src/com.oracle.svm.jvmtiagentbase/src/com/oracle/svm/jvmtiagentbase/JNIHandleSet.java index bba81146b5cf..be129b0b8137 100644 --- a/substratevm/src/com.oracle.svm.jvmtiagentbase/src/com/oracle/svm/jvmtiagentbase/JNIHandleSet.java +++ b/substratevm/src/com.oracle.svm.jvmtiagentbase/src/com/oracle/svm/jvmtiagentbase/JNIHandleSet.java @@ -61,6 +61,7 @@ public abstract class JNIHandleSet { final JNIMethodId javaLangClassGetName; final JNIObjectHandle javaIoSerializable; + @SuppressWarnings("this-escape") public JNIHandleSet(JNIEnvironment env) { javaIoSerializable = newClassGlobalRef(env, "java/io/Serializable"); JNIObjectHandle javaLangClass = findClass(env, "java/lang/Class"); diff --git a/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstrateOptimizedCallTarget.java b/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstrateOptimizedCallTarget.java index 8472317d7105..1adb27bd3bc0 100644 --- a/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstrateOptimizedCallTarget.java +++ b/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstrateOptimizedCallTarget.java @@ -59,6 +59,7 @@ public class SubstrateOptimizedCallTarget extends OptimizedCallTarget implements */ protected SubstrateOptimizedCallTargetInstalledCode installedCode; + @SuppressWarnings("this-escape") public SubstrateOptimizedCallTarget(OptimizedCallTarget sourceCallTarget, RootNode rootNode) { super(sourceCallTarget, rootNode); this.installedCode = createInitializationInstalledCode(); diff --git a/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstratePostPartialEvaluationSuite.java b/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstratePostPartialEvaluationSuite.java index 959181053826..5ac2f0ef6e77 100644 --- a/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstratePostPartialEvaluationSuite.java +++ b/substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/api/SubstratePostPartialEvaluationSuite.java @@ -30,6 +30,7 @@ public class SubstratePostPartialEvaluationSuite extends PostPartialEvaluationSuite { + @SuppressWarnings("this-escape") public SubstratePostPartialEvaluationSuite(boolean iterativePartialEscape) { super(iterativePartialEscape); appendPhase(new DeadStoreRemovalPhase()); diff --git a/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyLexer.java b/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyLexer.java index 19d590a803a8..5cad334591e8 100644 --- a/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyLexer.java +++ b/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyLexer.java @@ -42,7 +42,7 @@ import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.misc.*; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class InlineAssemblyLexer extends Lexer { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyParser.java b/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyParser.java index 402d96f460c8..4be8fcd830cf 100644 --- a/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyParser.java +++ b/sulong/projects/com.oracle.truffle.llvm.asm.amd64/src/com/oracle/truffle/llvm/asm/amd64/InlineAssemblyParser.java @@ -44,7 +44,7 @@ import java.util.Iterator; import java.util.ArrayList; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class InlineAssemblyParser extends Parser { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionLexer.java b/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionLexer.java index 36b7f7037be2..6c5faa927ba9 100644 --- a/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionLexer.java +++ b/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionLexer.java @@ -42,7 +42,7 @@ import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.misc.*; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class DebugExpressionLexer extends Lexer { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionParser.java b/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionParser.java index 0a85b161ad2d..496cbda1af27 100644 --- a/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionParser.java +++ b/sulong/projects/com.oracle.truffle.llvm.runtime/src/com/oracle/truffle/llvm/runtime/debug/debugexpr/parser/antlr/DebugExpressionParser.java @@ -58,7 +58,7 @@ import java.util.Iterator; import java.util.ArrayList; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class DebugExpressionParser extends Parser { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/tools/src/com.oracle.truffle.tools.agentscript/src/com/oracle/truffle/tools/agentscript/impl/InsightInstrument.java b/tools/src/com.oracle.truffle.tools.agentscript/src/com/oracle/truffle/tools/agentscript/impl/InsightInstrument.java index 198f6065a30e..5d4a507dbbd8 100644 --- a/tools/src/com.oracle.truffle.tools.agentscript/src/com/oracle/truffle/tools/agentscript/impl/InsightInstrument.java +++ b/tools/src/com.oracle.truffle.tools.agentscript/src/com/oracle/truffle/tools/agentscript/impl/InsightInstrument.java @@ -80,6 +80,7 @@ public class InsightInstrument extends TruffleInstrument { /** @GuardedBy("keys" */ @CompilerDirectives.CompilationFinal private Assumption keysUnchanged; + @SuppressWarnings("this-escape") public InsightInstrument() { this.perContextData = createContextLocal((context) -> { return new InsightPerContext(this); diff --git a/tools/src/com.oracle.truffle.tools.chromeinspector/src/com/oracle/truffle/tools/chromeinspector/client/InspectWSClient.java b/tools/src/com.oracle.truffle.tools.chromeinspector/src/com/oracle/truffle/tools/chromeinspector/client/InspectWSClient.java index 804407634cd9..e9f52a4ac68c 100644 --- a/tools/src/com.oracle.truffle.tools.chromeinspector/src/com/oracle/truffle/tools/chromeinspector/client/InspectWSClient.java +++ b/tools/src/com.oracle.truffle.tools.chromeinspector/src/com/oracle/truffle/tools/chromeinspector/client/InspectWSClient.java @@ -76,6 +76,7 @@ private static URI getURI(InetSocketAddress isa, String wsspath) { } } + @SuppressWarnings("this-escape") public InspectWSClient(InetSocketAddress isa, String wsspath, InspectorExecutionContext executionContext, boolean debugBreak, boolean secure, KeyStoreOptions keyStoreOptions, ConnectionWatcher connectionWatcher, PrintWriter info) throws IOException { super(getURI(isa, wsspath)); diff --git a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/AbstractProfilerTest.java b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/AbstractProfilerTest.java index 5686a6d1e6eb..63810418425c 100644 --- a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/AbstractProfilerTest.java +++ b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/AbstractProfilerTest.java @@ -36,6 +36,7 @@ import com.oracle.truffle.api.instrumentation.StandardTags; import com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage; +@SuppressWarnings("this-escape") public abstract class AbstractProfilerTest { protected Context context; diff --git a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/CPUSamplerTest.java b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/CPUSamplerTest.java index 14803ae55322..91f843d1977b 100644 --- a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/CPUSamplerTest.java +++ b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/CPUSamplerTest.java @@ -52,6 +52,7 @@ import com.oracle.truffle.tools.profiler.CPUSamplerData; import com.oracle.truffle.tools.profiler.ProfilerNode; +@SuppressWarnings("this-escape") public class CPUSamplerTest extends AbstractProfilerTest { private CPUSampler sampler; diff --git a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/HeapMonitorTest.java b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/HeapMonitorTest.java index e63acf3774df..51c2f4dcaa16 100644 --- a/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/HeapMonitorTest.java +++ b/tools/src/com.oracle.truffle.tools.profiler.test/src/com/oracle/truffle/tools/profiler/test/HeapMonitorTest.java @@ -46,6 +46,7 @@ import com.oracle.truffle.tools.profiler.HeapMonitor; import com.oracle.truffle.tools.profiler.HeapSummary; +@SuppressWarnings("this-escape") public class HeapMonitorTest extends AbstractProfilerTest { private HeapMonitor monitor; diff --git a/truffle/mx.truffle/mx_truffle.py b/truffle/mx.truffle/mx_truffle.py index 87069a5b8370..83020aef4e33 100644 --- a/truffle/mx.truffle/mx_truffle.py +++ b/truffle/mx.truffle/mx_truffle.py @@ -41,11 +41,12 @@ import os import re import tempfile -import sys +import difflib import zipfile from argparse import ArgumentParser, RawDescriptionHelpFormatter from collections import OrderedDict -from os.path import exists, isdir, join +from os.path import exists, isdir, join, abspath +from urllib.parse import urljoin # pylint: disable=unused-import,no-name-in-module import mx import mx_benchmark @@ -60,21 +61,6 @@ from mx_sigtest import sigtest from mx_unittest import unittest -# Temporary imports and (re)definitions while porting mx from Python 2 to Python 3 -if sys.version_info[0] < 3: - from urlparse import urljoin as _urllib_urljoin - def _decode(x): - return x - def _encode(x): - return x -else: - from urllib.parse import urljoin as _urllib_urljoin # pylint: disable=unused-import,no-name-in-module - def _decode(x): - return x.decode() - def _encode(x): - return x.encode() - - _suite = mx.suite('truffle') class JMHRunnerTruffleBenchmarkSuite(mx_benchmark.JMHRunnerBenchmarkSuite): @@ -115,7 +101,7 @@ def checkLinks(javadocDir): html = os.path.join(root, f) content = open(html, 'r').read() for url in href.findall(content): - full = _urllib_urljoin(html, url) + full = urljoin(html, url) sectionIndex = full.find('#') questionIndex = full.find('?') minIndex = sectionIndex @@ -446,7 +432,7 @@ def __process__(self, arcname, contents_supplier, is_source): m = TruffleArchiveParticipant.providersRE.match(arcname) if m: provider = m.group(2) - for service in _decode(contents_supplier()).strip().split(os.linesep): + for service in contents_supplier().decode().strip().split(os.linesep): assert service version = m.group(1) if version is None: @@ -668,7 +654,7 @@ def create_parser(grammar_project, grammar_package, grammar_name, copyright_temp # remove first line content = "\n".join(content.split("\n")[1:]) # modify SuppressWarnings to remove useless entries - content = PTRN_SUPPRESS_WARNINGS.sub('@SuppressWarnings("all")', content) + content = PTRN_SUPPRESS_WARNINGS.sub('@SuppressWarnings({"all", "this-escape"})', content) # remove useless casts content = PTRN_LOCALCTXT_CAST.sub('_localctx', content) content = PTRN_TOKEN_CAST.sub('_errHandler.recoverInline(this)', content) @@ -690,20 +676,20 @@ def read_file(path): return f.readlines() parser_path = grammar_path.replace(".g4", "Parser.java") lexer_path = grammar_path.replace(".g4", "Lexer.java") - parser = mx.project(grammar_project).source_dirs()[0] + "/" + parser_path - lexer = mx.project(grammar_project).source_dirs()[0] + "/" + lexer_path + parser = abspath(mx.project(grammar_project).source_dirs()[0] + "/" + parser_path) + lexer = abspath(mx.project(grammar_project).source_dirs()[0] + "/" + lexer_path) parser_before = read_file(parser) lexer_before = read_file(lexer) create_command([], out) parser_after = read_file(parser) lexer_after = read_file(lexer) - if (parser_before != parser_after or lexer_before != lexer_after): - with open(parser, "w") as f: - f.writelines(parser_before) - with open(lexer, "w") as f: - f.writelines(lexer_before) - mx.abort("Parser generated from " + grammar_path + " does not match content of " + parser_path + " or " + lexer_path + "." + - " Make sure the grammar files are up to date with the generated code. You can regenerate the generated code using mx.") + for before, after, path in ((parser_before, parser_after, parser), (lexer_before, lexer_after, lexer)): + if before != after: + diff = ''.join(difflib.unified_diff(before, after)) + nl = os.linesep + mx.abort(f"Content generated from {grammar_path} does not match content of {path}:{nl}" + + f"{diff}{nl}" + + "Make sure the grammar files are up to date with the generated code. You can regenerate the generated code using mx.") class LibffiBuilderProject(mx.AbstractNativeProject, mx_native.NativeDependency): # pylint: disable=too-many-ancestors """Project for building libffi from source. diff --git a/truffle/src/com.oracle.truffle.api.benchmark/src/com/oracle/truffle/api/benchmark/EncapsulatingNodeBenchmark.java b/truffle/src/com.oracle.truffle.api.benchmark/src/com/oracle/truffle/api/benchmark/EncapsulatingNodeBenchmark.java index 503b2db05d70..196c94b07116 100644 --- a/truffle/src/com.oracle.truffle.api.benchmark/src/com/oracle/truffle/api/benchmark/EncapsulatingNodeBenchmark.java +++ b/truffle/src/com.oracle.truffle.api.benchmark/src/com/oracle/truffle/api/benchmark/EncapsulatingNodeBenchmark.java @@ -64,6 +64,7 @@ public class EncapsulatingNodeBenchmark extends TruffleBenchmark { static volatile long sideEffect = 0; @State(Scope.Thread) + @SuppressWarnings("this-escape") public static class PushPopNewCompiled { final Source source = Source.create(TEST_LANGUAGE, ""); final Context context = Context.newBuilder(TEST_LANGUAGE).allowExperimentalOptions(true).build(); diff --git a/truffle/src/com.oracle.truffle.api.debug.test/src/com/oracle/truffle/api/debug/test/DebuggingStressTest.java b/truffle/src/com.oracle.truffle.api.debug.test/src/com/oracle/truffle/api/debug/test/DebuggingStressTest.java index 620c9e6ae1b7..9ca23a85ce5e 100644 --- a/truffle/src/com.oracle.truffle.api.debug.test/src/com/oracle/truffle/api/debug/test/DebuggingStressTest.java +++ b/truffle/src/com.oracle.truffle.api.debug.test/src/com/oracle/truffle/api/debug/test/DebuggingStressTest.java @@ -57,6 +57,7 @@ import com.oracle.truffle.api.debug.Debugger; import com.oracle.truffle.api.debug.DebuggerSession; +@SuppressWarnings("this-escape") public class DebuggingStressTest extends AbstractDebugTest { private final Source source = testSource("ROOT(\n" + diff --git a/truffle/src/com.oracle.truffle.api.exception/src/com/oracle/truffle/api/exception/AbstractTruffleException.java b/truffle/src/com.oracle.truffle.api.exception/src/com/oracle/truffle/api/exception/AbstractTruffleException.java index 64deb5fe81cb..144bde115939 100644 --- a/truffle/src/com.oracle.truffle.api.exception/src/com/oracle/truffle/api/exception/AbstractTruffleException.java +++ b/truffle/src/com.oracle.truffle.api.exception/src/com/oracle/truffle/api/exception/AbstractTruffleException.java @@ -210,6 +210,7 @@ protected AbstractTruffleException(String message, Node location) { * * @since 20.3 */ + @SuppressWarnings("this-escape") @TruffleBoundary protected AbstractTruffleException(AbstractTruffleException prototype) { this(prototype.getMessage(), prototype.getCause(), prototype.getStackTraceElementLimit(), prototype.getLocation()); diff --git a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextAPITest.java b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextAPITest.java index 6eed3792c087..8949e6b970a3 100644 --- a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextAPITest.java +++ b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextAPITest.java @@ -1236,6 +1236,7 @@ public void testGetCurrentContextEnteredRaceCondition() throws ExecutionExceptio } } + @SuppressWarnings("this-escape") @TruffleLanguage.Registration public static class ValidExclusiveLanguage extends TruffleLanguage { static final String ID = getDefaultLanguageId(ValidExclusiveLanguage.class); diff --git a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextLocalTest.java b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextLocalTest.java index 830e1b13ce28..d32aac429f42 100644 --- a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextLocalTest.java +++ b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextLocalTest.java @@ -88,6 +88,7 @@ import com.oracle.truffle.api.source.Source; import com.oracle.truffle.tck.tests.TruffleTestAssumptions; +@SuppressWarnings("this-escape") public class ContextLocalTest extends AbstractPolyglotTest { private static final int PARALLELISM = 32; @@ -961,6 +962,7 @@ protected TruffleLanguage.Env createContext(TruffleLanguage.Env env) { } @TruffleLanguage.Registration(id = INVALID_CONTEXT_THREAD_LOCAL, name = INVALID_CONTEXT_THREAD_LOCAL) + @SuppressWarnings("this-escape") public static class InvalidLanguageContextThreadLocal extends TruffleLanguage { static int effect = 0; @@ -976,6 +978,7 @@ protected TruffleLanguage.Env createContext(TruffleLanguage.Env env) { } @TruffleInstrument.Registration(id = "example", name = "Example Instrument") + @SuppressWarnings("this-escape") public static class ExampleInstrument extends TruffleInstrument { final ContextThreadLocal local = createContextThreadLocal(ExampleLocal::new); diff --git a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPolicyTest.java b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPolicyTest.java index 36ee2e0093fe..13324061b234 100644 --- a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPolicyTest.java +++ b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPolicyTest.java @@ -93,6 +93,7 @@ import com.oracle.truffle.api.test.common.TestUtils; import com.oracle.truffle.tck.tests.TruffleTestAssumptions; +@SuppressWarnings("this-escape") public class ContextPolicyTest { private static final String EXCLUSIVE0 = "ExclusiveLanguage0"; diff --git a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPreInitializationTest.java b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPreInitializationTest.java index 52e82a2e5bd0..de40a51f4c58 100644 --- a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPreInitializationTest.java +++ b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/ContextPreInitializationTest.java @@ -3146,6 +3146,7 @@ protected ContextReference getContextReference0() { private static final ContextReference CONTEXT_REF = ContextReference.create(ContextPreInitializationTestSharedLanguage.class); } + @SuppressWarnings("this-escape") public abstract static class BaseInstrument extends TruffleInstrument implements ContextsListener { private Env environment; diff --git a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/TruffleFileTest.java b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/TruffleFileTest.java index 4bdd6e9b795c..008f41c606cf 100644 --- a/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/TruffleFileTest.java +++ b/truffle/src/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/polyglot/TruffleFileTest.java @@ -1220,6 +1220,7 @@ public static class BaseDetector implements TruffleFile.FileTypeDetector { private Charset encoding; private Predicate recognizer; + @SuppressWarnings("this-escape") protected BaseDetector() { INSTANCES.put(getClass(), this); } diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionLexer.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionLexer.java index e750a3852a8a..7492b9d66139 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionLexer.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionLexer.java @@ -53,7 +53,7 @@ import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.misc.*; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class ExpressionLexer extends Lexer { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionParser.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionParser.java index cffe0f2e2041..aa0af7fe5d73 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionParser.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/ExpressionParser.java @@ -55,7 +55,7 @@ import java.util.Iterator; import java.util.ArrayList; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class ExpressionParser extends Parser { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/FlatNodeGenFactory.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/FlatNodeGenFactory.java index deccb61750f2..7c4746d6bda3 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/FlatNodeGenFactory.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/FlatNodeGenFactory.java @@ -218,6 +218,7 @@ public FlatNodeGenFactory(ProcessorContext context, GeneratorMode mode, NodeData this(context, mode, node, Arrays.asList(node), node.getSharedCaches(), constants, nodeConstants); } + @SuppressWarnings("this-escape") public FlatNodeGenFactory(ProcessorContext context, GeneratorMode mode, NodeData node, Collection stateSharingNodes, Map sharedCaches, diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeExecutableElement.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeExecutableElement.java index a8c1fea0c9fb..aa7e4798d27f 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeExecutableElement.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeExecutableElement.java @@ -58,6 +58,7 @@ import com.oracle.truffle.dsl.processor.java.ElementUtils; +@SuppressWarnings("this-escape") public class CodeExecutableElement extends CodeElement implements ExecutableElement { private final List throwables = new ArrayList<>(); diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTypeElement.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTypeElement.java index bb6accf8ec10..5327f024fb46 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTypeElement.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTypeElement.java @@ -63,6 +63,7 @@ import com.oracle.truffle.dsl.processor.java.compiler.CompilerFactory; import com.oracle.truffle.dsl.processor.java.model.CodeTypeMirror.DeclaredCodeTypeMirror; +@SuppressWarnings("this-escape") public class CodeTypeElement extends CodeElement implements TypeElement { private final List imports = parentableList(this, new ArrayList()); diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java index 439df0a09f2d..6740aca3d482 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java @@ -81,6 +81,7 @@ public ExecutableTypeData(NodeData node, TypeMirror returnType, String uniqueNam this.ignoreUnexpected = false; } + @SuppressWarnings("this-escape") public ExecutableTypeData(NodeData node, ExecutableElement method, int signatureSize, List frameTypes, boolean ignoreUnexpected) { this.node = node; this.method = method; diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java index 3258381e8238..d64c727995c2 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java @@ -105,6 +105,7 @@ public class NodeData extends Template implements Comparable { private final NodeData parsingParent; private List reachableSpecializations; + @SuppressWarnings("this-escape") public NodeData(ProcessorContext context, NodeData inliningParent, TypeElement type, TypeSystemData typeSystem, boolean generateFactory, boolean generateUncached, boolean generatePackagePrivate) { super(context, type, null); this.parsingParent = inliningParent; diff --git a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java index 0698f0cd8f83..3680142dcfa8 100644 --- a/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java +++ b/truffle/src/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java @@ -122,6 +122,7 @@ public int getNaturalOrder() { return naturalOrder; } + @SuppressWarnings("this-escape") public TemplateMethod(TemplateMethod method) { this(method.id, method.naturalOrder, method.template, method.specification, method.method, method.markerAnnotation, method.returnType, method.parameters); if (!method.getMessages().isEmpty()) { @@ -129,6 +130,7 @@ public TemplateMethod(TemplateMethod method) { } } + @SuppressWarnings("this-escape") public TemplateMethod(TemplateMethod method, ExecutableElement executable) { this(method.id, method.naturalOrder, method.template, method.specification, executable, method.markerAnnotation, method.returnType, method.parameters); if (!method.getMessages().isEmpty()) { diff --git a/truffle/src/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java b/truffle/src/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java index 2d1c9ed6d16e..97368c1d974e 100644 --- a/truffle/src/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java +++ b/truffle/src/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java @@ -211,6 +211,7 @@ private ShapeImpl(com.oracle.truffle.api.object.Layout layout, ShapeImpl parent, } /** @since 0.17 or earlier */ + @SuppressWarnings("this-escape") protected ShapeImpl(com.oracle.truffle.api.object.Layout layout, ShapeImpl parent, Object objectType, Object sharedData, PropertyMap propertyMap, Transition transition, Allocator allocator, int flags) { this(layout, parent, objectType, sharedData, propertyMap, transition, ((BaseAllocator) allocator).objectArraySize, ((BaseAllocator) allocator).objectFieldSize, @@ -223,6 +224,7 @@ protected abstract ShapeImpl createShape(com.oracle.truffle.api.object.Layout la Transition transition, Allocator allocator, int id); /** @since 0.17 or earlier */ + @SuppressWarnings("this-escape") protected ShapeImpl(com.oracle.truffle.api.object.Layout layout, Object dynamicType, Object sharedData, int flags, Assumption constantObjectAssumption) { this(layout, null, dynamicType, sharedData, PropertyMap.empty(), null, 0, 0, 0, 0, flags, constantObjectAssumption); } diff --git a/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageLexer.java b/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageLexer.java index 7ec19683dd6e..0a0bea681bbc 100644 --- a/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageLexer.java +++ b/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageLexer.java @@ -53,7 +53,7 @@ import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.misc.*; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class SimpleLanguageLexer extends Lexer { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageParser.java b/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageParser.java index 56c31b89871f..2bb8febb72a5 100644 --- a/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageParser.java +++ b/truffle/src/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguageParser.java @@ -64,7 +64,7 @@ import java.util.Iterator; import java.util.ArrayList; -@SuppressWarnings("all") +@SuppressWarnings({"all", "this-escape"}) public class SimpleLanguageParser extends Parser { static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } diff --git a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/CommandTestBase.java b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/CommandTestBase.java index 8f4b9ec07fa8..88248b18e5f5 100644 --- a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/CommandTestBase.java +++ b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/CommandTestBase.java @@ -82,6 +82,7 @@ public class CommandTestBase extends TestBase implements CommandInput, SoftwareC URL clu; ComponentInfo info; + @SuppressWarnings("this-escape") public CommandTestBase() { fileOps = SystemUtils.isWindows() ? new WindowsFileOperations() : new DefaultFileOperations(); fileOps.init(this); diff --git a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/ArtifactParserTest.java b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/ArtifactParserTest.java index e2d0953e566d..c3b442d222b7 100644 --- a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/ArtifactParserTest.java +++ b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/ArtifactParserTest.java @@ -94,7 +94,7 @@ public class ArtifactParserTest extends TestBase { static final String JSON_META_KEY_WORK_DIR = "workingDirectories"; static final String JSON_META_VAL_WORK_DIR = "languages/python"; - GDSRESTConnector conn = new GDSRESTConnector(MOCK_URL, this, JSON_VAL_ID, Version.fromString(JSON_META_VAL_VERSION)); + @SuppressWarnings("this-escape") GDSRESTConnector conn = new GDSRESTConnector(MOCK_URL, this, JSON_VAL_ID, Version.fromString(JSON_META_VAL_VERSION)); @Test public void testConstruct() { diff --git a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSCatalogStorageTest.java b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSCatalogStorageTest.java index 80fe1a1a0fda..b9fc8fe07625 100644 --- a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSCatalogStorageTest.java +++ b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSCatalogStorageTest.java @@ -42,6 +42,7 @@ * * @author odouda */ +@SuppressWarnings("this-escape") public class GDSCatalogStorageTest extends CommandTestBase { static final String MOCK_URL = "https://mock.url/"; static final String ID1 = "id1"; diff --git a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSRESTConnectorTest.java b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSRESTConnectorTest.java index a035016ad181..87948b3d5bb2 100644 --- a/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSRESTConnectorTest.java +++ b/vm/src/org.graalvm.component.installer.test/src/org/graalvm/component/installer/gds/rest/GDSRESTConnectorTest.java @@ -83,6 +83,7 @@ public class GDSRESTConnectorTest extends TestBase { final GDSTestConnector testConnector; final MemoryFeedback mf; + @SuppressWarnings("this-escape") public GDSRESTConnectorTest() throws IOException { testURL = dataFile("data/gdsreleases.json").toUri().toURL().toString(); testConnector = new GDSTestConnector(testURL, this, TEST_ID, TEST_VERSION); diff --git a/vm/src/org.graalvm.component.installer/src/org/graalvm/component/installer/Environment.java b/vm/src/org.graalvm.component.installer/src/org/graalvm/component/installer/Environment.java index cbe938f524cc..249d0f6828f9 100644 --- a/vm/src/org.graalvm.component.installer/src/org/graalvm/component/installer/Environment.java +++ b/vm/src/org.graalvm.component.installer/src/org/graalvm/component/installer/Environment.java @@ -44,6 +44,7 @@ /** * Implementation of feedback and input for commands. */ +@SuppressWarnings("this-escape") public class Environment implements Feedback, CommandInput, Config { private static final ResourceBundle BUNDLE = ResourceBundle.getBundle( "org.graalvm.component.installer.Bundle"); From ffaf88bb99d6df7c1a4a929a6150c066c0b83543 Mon Sep 17 00:00:00 2001 From: Christian Haeubl Date: Fri, 31 Mar 2023 13:40:02 +0200 Subject: [PATCH 13/16] JFR-related fixes for JDK21 (GR-45303) --- .../core/jdk/JDKContainerSubstitutions.java | 12 +++++- .../svm/core/jfr/JfrMetadataTypeLibrary.java | 7 ++++ .../core/jfr/logging/JfrLogConfiguration.java | 39 ++++++------------- .../svm/core/jfr/logging/JfrLogTag.java | 1 + .../svm/core/jfr/logging/JfrLogging.java | 8 ++-- 5 files changed, 33 insertions(+), 34 deletions(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDKContainerSubstitutions.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDKContainerSubstitutions.java index 0f202de5d8de..68006e7562ce 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDKContainerSubstitutions.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JDKContainerSubstitutions.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import org.graalvm.nativeimage.Platform.LINUX; @@ -66,7 +67,7 @@ final class Target_jdk_jfr_internal_instrument_JDKEvents { private static boolean initializationTriggered; } -@TargetClass(className = "jdk.jfr.internal.RequestEngine", onlyWith = JDK17OrLater.class) +@TargetClass(className = "jdk.jfr.internal.RequestEngine", onlyWith = {JDK17OrLater.class, JDK20OrEarlier.class}) @Platforms(LINUX.class) final class Target_jdk_jfr_internal_RequestEngine { @Alias // @@ -79,6 +80,15 @@ final class Target_jdk_jfr_internal_RequestEngine { private static List entries; } +@TargetClass(className = "jdk.jfr.internal.periodic.JVMEventTask", onlyWith = JDK21OrLater.class) +@Platforms(LINUX.class) +final class Target_jdk_jfr_internal_JVMEventTask { + @Alias // + @RecomputeFieldValue(kind = Kind.NewInstance, declClass = ReentrantLock.class) // + private static Lock lock; + +} + // Only present in JDKs without JDK-8268398 @TargetClass(className = "jdk.jfr.internal.Utils", onlyWith = {JDK17OrEarlier.class, JDK17OrLater.class}) @Platforms(LINUX.class) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrMetadataTypeLibrary.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrMetadataTypeLibrary.java index 3eb6d7446e0e..fed19329c2a7 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrMetadataTypeLibrary.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrMetadataTypeLibrary.java @@ -37,6 +37,7 @@ import com.oracle.svm.core.util.VMError; import com.oracle.svm.util.ReflectionUtil; +import jdk.jfr.internal.MetadataRepository; import jdk.jfr.internal.PlatformEventType; import jdk.jfr.internal.Type; import jdk.jfr.internal.TypeLibrary; @@ -62,6 +63,12 @@ private static synchronized HashMap getTypes() { @SuppressWarnings("unchecked") private static Collection getTypes0() { try { + /* + * Initialize the MetadataRepository class, to ensure that large parts of the JFR + * infrastructure are initialized (e.g., the TypeLibrary that we access below). + */ + MetadataRepository.getInstance(); + Method getTypes = ReflectionUtil.lookupMethod(TypeLibrary.class, "getTypes"); if (JavaVersionUtil.JAVA_SPEC >= 21) { return (Collection) getTypes.invoke(null); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogConfiguration.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogConfiguration.java index fed17c5b3c94..54d6d822a8fc 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogConfiguration.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogConfiguration.java @@ -30,7 +30,6 @@ import java.util.Map; import java.util.Set; -import org.graalvm.compiler.serviceprovider.JavaVersionUtil; import org.graalvm.nativeimage.Platform; import org.graalvm.nativeimage.Platforms; @@ -44,15 +43,15 @@ * Parses the flight recorder logging configuration and enables the logging according to that * configuration. */ -class JfrLogConfiguration { +final class JfrLogConfiguration { private static final String EMPTY_STRING_DEFAULT_CONFIG = "all=info"; static final Map> LOG_TAG_SETS = createLogTagSets(); @Platforms(Platform.HOSTED_ONLY.class) - JfrLogConfiguration() { + private JfrLogConfiguration() { } - void parse(String str) { + static void parse(String str) { if (str.equalsIgnoreCase("disable")) { return; } @@ -98,34 +97,18 @@ private static void verifySelections(JfrLogSelection[] selections) { } } + @Platforms(Platform.HOSTED_ONLY.class) private static Map> createLogTagSets() { Map> result = new EnumMap<>(LogTag.class); - result.put(LogTag.JFR, EnumSet.of(JfrLogTag.JFR)); - result.put(LogTag.JFR_SYSTEM, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM)); - result.put(LogTag.JFR_SYSTEM_EVENT, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.EVENT)); - result.put(LogTag.JFR_SYSTEM_SETTING, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.SETTING)); - result.put(LogTag.JFR_SYSTEM_BYTECODE, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.BYTECODE)); - result.put(LogTag.JFR_SYSTEM_PARSER, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.PARSER)); - result.put(LogTag.JFR_SYSTEM_METADATA, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.METADATA)); - result.put(LogTag.JFR_METADATA, EnumSet.of(JfrLogTag.JFR, JfrLogTag.METADATA)); - result.put(LogTag.JFR_EVENT, EnumSet.of(JfrLogTag.JFR, JfrLogTag.EVENT)); - result.put(LogTag.JFR_SETTING, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SETTING)); - result.put(LogTag.JFR_DCMD, EnumSet.of(JfrLogTag.JFR, JfrLogTag.DCMD)); - - // JDK17 support - if (JavaVersionUtil.JAVA_SPEC >= 17) { - try { - LogTag jfrSystemStreaming = Enum.valueOf(LogTag.class, "JFR_SYSTEM_STREAMING"); - LogTag jfrSystemThrottle = Enum.valueOf(LogTag.class, "JFR_SYSTEM_THROTTLE"); - result.put(jfrSystemStreaming, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.STREAMING)); - result.put(jfrSystemThrottle, EnumSet.of(JfrLogTag.JFR, JfrLogTag.SYSTEM, JfrLogTag.THROTTLE)); - LogTag jfrStart = Enum.valueOf(LogTag.class, "JFR_START"); - result.put(jfrStart, EnumSet.of(JfrLogTag.JFR, JfrLogTag.START)); - } catch (IllegalArgumentException | NullPointerException e) { - throw VMError.shouldNotReachHere("Should be defined", e); + for (LogTag logTag : LogTag.values()) { + EnumSet logTagSet = EnumSet.noneOf(JfrLogTag.class); + for (String t : logTag.name().split("_")) { + /* This fails if a new JDK version adds entries to jdk.jfr.internal. */ + logTagSet.add(JfrLogTag.valueOf(t)); } + VMError.guarantee(!logTagSet.isEmpty()); + result.put(logTag, logTagSet); } - return result; } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogTag.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogTag.java index 9a4ccf05259c..60cad08fdc2a 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogTag.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogTag.java @@ -40,6 +40,7 @@ enum JfrLogTag { METADATA, STREAMING, THROTTLE, + PERIODIC, DCMD, START } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogging.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogging.java index b5fab28f4b7d..0af94b2b520b 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogging.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/logging/JfrLogging.java @@ -38,7 +38,6 @@ import jdk.jfr.internal.LogTag; public class JfrLogging { - private final JfrLogConfiguration configuration; private final String[] logLevels; private final String[] logTagSets; private int levelDecorationFill = 0; @@ -46,13 +45,12 @@ public class JfrLogging { @Platforms(Platform.HOSTED_ONLY.class) public JfrLogging() { - configuration = new JfrLogConfiguration(); logLevels = createLogLevels(); logTagSets = createLogTagSets(); } public void parseConfiguration(String config) { - configuration.parse(config); + JfrLogConfiguration.parse(config); } public void warnInternal(String message) { @@ -94,8 +92,8 @@ public void logEvent(int level, String[] lines, boolean system) { LogTag logTag = system ? LogTag.JFR_SYSTEM_EVENT : LogTag.JFR_EVENT; int tagSetId = SubstrateUtil.cast(logTag, Target_jdk_jfr_internal_LogTag.class).id; - for (int i = 0; i < lines.length; i++) { - log(tagSetId, level, lines[i]); + for (String line : lines) { + log(tagSetId, level, line); } } From fa95d8d2468759fce20f4e221c0ddc0466f471a3 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Sun, 12 Mar 2023 17:06:59 +0100 Subject: [PATCH 14/16] bump timeout for weekly-compiler-test-labsjdk-20Debug-linux-amd64 to 5 hours --- compiler/ci/ci_common/gate.jsonnet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ci/ci_common/gate.jsonnet b/compiler/ci/ci_common/gate.jsonnet index 2d5083880f9e..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"), From 2224f3f8240d60451157bca053b5ffff95be9102 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Thu, 30 Mar 2023 13:05:10 +0200 Subject: [PATCH 15/16] do not intrinsify boxing if box type is uninitialized (GR-44739) --- .../common/spi/JavaConstantFieldProvider.java | 7 ++-- .../compiler/replacements/BoxingSnippets.java | 27 +++++++++------ .../StandardGraphBuilderPlugins.java | 34 +++++++++++++++++-- 3 files changed, 53 insertions(+), 15 deletions(-) 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.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java index 93cacbe508bb..2f78eb03a827 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/BoxingSnippets.java @@ -230,19 +230,24 @@ public Templates(OptionValues options, Group.Factory factory, Providers provider valueCounter = new SnippetCounter(group, "Value", "unbox intrinsification"); } - private static LocationIdentity getCacheLocation(CoreProviders providers, JavaKind kind) { + static Class getCacheClass(JavaKind kind) { Class[] innerClasses = null; - try { - innerClasses = kind.toBoxedJavaClass().getDeclaredClasses(); - if (innerClasses == null || innerClasses.length == 0) { - throw GraalError.shouldNotReachHere("Inner classes must exist"); // ExcludeFromJacocoGeneratedReport + innerClasses = kind.toBoxedJavaClass().getDeclaredClasses(); + for (Class innerClass : innerClasses) { + if (innerClass.getSimpleName().equals(kind.toBoxedJavaClass().getSimpleName() + "Cache")) { + return innerClass; } - for (Class innerClass : innerClasses) { - if (innerClass.getName().endsWith("Cache")) { - return new FieldLocationIdentity(providers.getMetaAccess().lookupJavaField(innerClass.getDeclaredField("cache"))); - } - } - throw GraalError.shouldNotReachHere("No cache inner class found"); // ExcludeFromJacocoGeneratedReport + } + return null; + } + + private static LocationIdentity getCacheLocation(CoreProviders providers, JavaKind kind) { + Class cacheClass = getCacheClass(kind); + if (cacheClass == null) { + throw GraalError.shouldNotReachHere(String.format("Cache class for %s not found", kind)); // ExcludeFromJacocoGeneratedReport + } + try { + return new FieldLocationIdentity(providers.getMetaAccess().lookupJavaField(cacheClass.getDeclaredField("cache"))); } catch (Throwable e) { throw GraalError.shouldNotReachHere(e); // ExcludeFromJacocoGeneratedReport } diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java index e6cc81e3ca37..5439cafd59e1 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java @@ -33,6 +33,7 @@ import static org.graalvm.compiler.core.common.memory.MemoryOrderMode.RELEASE; import static org.graalvm.compiler.core.common.memory.MemoryOrderMode.VOLATILE; import static org.graalvm.compiler.nodes.NamedLocationIdentity.OFF_HEAP_LOCATION; +import static org.graalvm.compiler.replacements.BoxingSnippets.Templates.getCacheClass; import static org.graalvm.compiler.replacements.nodes.AESNode.CryptMode.DECRYPT; import static org.graalvm.compiler.replacements.nodes.AESNode.CryptMode.ENCRYPT; @@ -41,6 +42,8 @@ import java.lang.reflect.Type; import java.math.BigInteger; import java.util.Arrays; +import java.util.EnumMap; +import java.util.Map; import java.util.Objects; import java.util.function.BiFunction; @@ -1310,17 +1313,44 @@ public static class BoxPlugin extends InvocationPlugin { this.kind = kind; } + static final Map> boxClassToCacheClass = new EnumMap<>(Map.of( + JavaKind.Boolean, Boolean.class, + JavaKind.Char, getCacheClass(JavaKind.Char), + JavaKind.Byte, getCacheClass(JavaKind.Byte), + JavaKind.Short, getCacheClass(JavaKind.Short), + JavaKind.Int, getCacheClass(JavaKind.Int), + JavaKind.Long, getCacheClass(JavaKind.Long))); + + private boolean isCacheTypeInitialized(MetaAccessProvider metaAccess) { + Class cacheClass = boxClassToCacheClass.get(kind); + if (cacheClass != null) { + ResolvedJavaType cacheType = metaAccess.lookupJavaType(cacheClass); + if (!cacheType.isInitialized()) { + return false; + } + } + return true; + } + @Override public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) { + MetaAccessProvider metaAccess = b.getMetaAccess(); if (b.parsingIntrinsic()) { ResolvedJavaMethod rootMethod = b.getGraph().method(); - if (b.getMetaAccess().lookupJavaType(BoxingSnippets.class).isAssignableFrom(rootMethod.getDeclaringClass())) { + if (metaAccess.lookupJavaType(BoxingSnippets.class).isAssignableFrom(rootMethod.getDeclaringClass())) { // Disable invocation plugins for boxing snippets so that the // original JDK methods are inlined return false; } } - ResolvedJavaType resultType = b.getMetaAccess().lookupJavaType(kind.toBoxedJavaClass()); + ResolvedJavaType resultType = metaAccess.lookupJavaType(kind.toBoxedJavaClass()); + + // Cannot perform boxing if the box type or its cache (if any) is not initialized + // or failed during initialization (e.g. StackOverflowError in LongCache.). + if (!resultType.isInitialized() || !isCacheTypeInitialized(metaAccess)) { + return false; + } + b.addPush(JavaKind.Object, BoxNode.create(value, resultType, kind)); return true; } From 734f62138a26a6ef3cbc587d5ec952a22357e1ff Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Wed, 29 Mar 2023 22:01:55 +0200 Subject: [PATCH 16/16] enable counters and timers during compilation retry (GR-45257) --- .../compiler/core/CompilationWrapper.java | 28 +++++++++++++++---- .../graalvm/compiler/debug/DebugContext.java | 17 ++++++++++- .../hotspot/test/CompilationWrapperTest.java | 8 +++++- .../graalvm/compiler/test/SubprocessUtil.java | 4 +-- 4 files changed, 46 insertions(+), 11 deletions(-) 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.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.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.test/src/org/graalvm/compiler/test/SubprocessUtil.java b/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/SubprocessUtil.java index 470220790561..b403b3ce03dd 100644 --- a/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/SubprocessUtil.java +++ b/compiler/src/org.graalvm.compiler.test/src/org/graalvm/compiler/test/SubprocessUtil.java @@ -53,10 +53,8 @@ public final class SubprocessUtil { /** * The name of the boolean system property that can be set to preserve temporary files created * as arguments files passed to the java launcher. - * - * @see "https://docs.oracle.com/javase/9/tools/java.htm#JSWOR-GUID-4856361B-8BFD-4964-AE84-121F5F6CF111" */ - public static final String KEEP_TEMPORARY_ARGUMENT_FILES_PROPERTY_NAME = "test." + SubprocessUtil.class.getSimpleName() + ".keepTempArgumentFiles"; + public static final String KEEP_TEMPORARY_ARGUMENT_FILES_PROPERTY_NAME = "test.SubprocessUtil.keepTempArgumentFiles"; private SubprocessUtil() { }