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..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 @@ -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 a lambda class. + * + * @param type the type to be checked + * @return true if type is a lambda class, false instead + */ + public static boolean isLambdaClass(ResolvedJavaType type) { + return isLambdaClassName(type.toClassName()); + } + /** * Checks if the passed class is lambda class. * 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); 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() : ""; + } }