From 3cdd6fde83ce6387e26341f4a3c0d2e80e60eb8c Mon Sep 17 00:00:00 2001 From: Josef Eisl Date: Tue, 28 Oct 2025 11:37:41 +0100 Subject: [PATCH 1/3] svm: introduce LambdaUtils#isLambdaClass(ResolvedJavaType) --- .../src/jdk/graal/compiler/java/LambdaUtils.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java index e65f0a13e43c..653b645599c1 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java @@ -180,6 +180,16 @@ public static String capturingClass(String className) { return className.split(LambdaUtils.SERIALIZATION_TEST_LAMBDA_CLASS_SPLIT_PATTERN)[0]; } + /** + * Checks if the passed class is lambda class. + * + * @param type the type to be checked + * @return true if the clazz is lambda class, false instead + */ + public static boolean isLambdaClass(ResolvedJavaType type) { + return isLambdaClassName(type.toClassName()); + } + /** * Checks if the passed class is lambda class. * From c999c949dbe8abfc7b61f4bd667950dc40b2aa68 Mon Sep 17 00:00:00 2001 From: Josef Eisl Date: Wed, 29 Oct 2025 13:59:13 +0100 Subject: [PATCH 2/3] svm: add JVMCIReflectionUtil#getPackageName() --- .../com/oracle/svm/util/JVMCIReflectionUtil.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java b/substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java index d8986e4703f1..7a3954e870da 100644 --- a/substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java +++ b/substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java @@ -210,4 +210,20 @@ public static List getAllFields(ResolvedJavaType declaringCla System.arraycopy(instanceFields, 0, allFields, staticFields.length, instanceFields.length); return Collections.unmodifiableList(Arrays.asList(allFields)); } + + /** + * Gets the package name for a {@link ResolvedJavaType}. This is the same as calling + * {@link Class#getPackageName()} on the underlying class. + *

+ * Implementation derived from {@link Class#getPackageName()}. + */ + public static String getPackageName(ResolvedJavaType type) { + ResolvedJavaType c = type.isArray() ? type.getElementalType() : type; + if (c.isPrimitive()) { + return "java.lang"; + } + String cn = c.toClassName(); + int dot = cn.lastIndexOf('.'); + return (dot != -1) ? cn.substring(0, dot).intern() : ""; + } } From 5f293a7c4da376d080e912c91b40171b640a01e8 Mon Sep 17 00:00:00 2001 From: Josef Eisl Date: Mon, 27 Oct 2025 14:14:00 +0100 Subject: [PATCH 3/3] svm: improve javadoc --- .../src/jdk/graal/compiler/java/LambdaUtils.java | 4 ++-- .../com/oracle/svm/graal/RuntimeCPUFeatureRegion.java | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java index 653b645599c1..113e649959c4 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/java/LambdaUtils.java @@ -181,10 +181,10 @@ public static String capturingClass(String className) { } /** - * Checks if the passed class is lambda class. + * Checks if the passed class is a lambda class. * * @param type the type to be checked - * @return true if the clazz is lambda class, false instead + * @return true if type is a lambda class, false instead */ public static boolean isLambdaClass(ResolvedJavaType type) { return isLambdaClassName(type.toClassName()); diff --git a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/RuntimeCPUFeatureRegion.java b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/RuntimeCPUFeatureRegion.java index f72b7ba6d21b..7bf45a585b74 100644 --- a/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/RuntimeCPUFeatureRegion.java +++ b/substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/RuntimeCPUFeatureRegion.java @@ -233,17 +233,20 @@ private RuntimeCPUFeatureRegion() { *

* All arguments must be compile-time constant. */ - public static native RuntimeCPUFeatureRegion enter(@ConstantNodeParameter Enum arg0); + public static native RuntimeCPUFeatureRegion enterSet(@ConstantNodeParameter EnumSet features); - public static native RuntimeCPUFeatureRegion enterSet(@ConstantNodeParameter EnumSet arg0); + /** + * @see #enterSet(EnumSet) + */ + public static native RuntimeCPUFeatureRegion enter(@ConstantNodeParameter Enum arg0); /** - * @see #enter(Enum) + * @see #enterSet(EnumSet) */ public static native > RuntimeCPUFeatureRegion enter(@ConstantNodeParameter Enum arg0, @ConstantNodeParameter Enum arg1); /** - * @see #enter(Enum) + * @see #enterSet(EnumSet) */ public static native > RuntimeCPUFeatureRegion enter(@ConstantNodeParameter Enum arg0, @ConstantNodeParameter Enum arg1, @ConstantNodeParameter Enum arg2);