Skip to content

Commit f4d6ba8

Browse files
committed
svm: add JVMCIReflectionUtil#getTypeName()
1 parent e755aa4 commit f4d6ba8

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,27 @@ public static ResolvedJavaType getResolvedReturnType(ResolvedJavaMethod m) {
251251
}
252252
throw new GraalError("Method does not have a resolved return type: %s", m.format("%H.%n(%p)"));
253253
}
254+
255+
/**
256+
* Gets the type name for a {@link ResolvedJavaType}. This is the same as calling
257+
* {@link Class#getTypeName()} on the underlying class.
258+
* <p>
259+
* Implementation derived from {@link Class#getTypeName()}.
260+
*/
261+
public static String getTypeName(ResolvedJavaType type) {
262+
if (type.isArray()) {
263+
try {
264+
ResolvedJavaType cl = type;
265+
int dimensions = 0;
266+
do {
267+
dimensions++;
268+
cl = cl.getComponentType();
269+
} while (cl.isArray());
270+
return cl.getName().concat("[]".repeat(dimensions));
271+
} catch (Throwable e) {
272+
/* FALLTHRU */
273+
}
274+
}
275+
return type.toClassName();
276+
}
254277
}

substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/dynamicaccess/JVMCIJNIAccess.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,22 @@
3030
import jdk.vm.ci.meta.ResolvedJavaMethod;
3131
import jdk.vm.ci.meta.ResolvedJavaType;
3232

33+
/**
34+
* Mirror of org.graalvm.nativeimage.dynamicaccess.JNIAccess using JVMCI types.
35+
*/
3336
public interface JVMCIJNIAccess {
37+
/**
38+
* See org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Class...).
39+
*/
3440
void register(AccessCondition condition, ResolvedJavaType... types);
3541

42+
/**
43+
* See org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Executable...).
44+
*/
3645
void register(AccessCondition condition, ResolvedJavaMethod... methods);
3746

47+
/**
48+
* See org.graalvm.nativeimage.dynamicaccess.JNIAccess#register(AccessCondition, Field...).
49+
*/
3850
void register(AccessCondition condition, ResolvedJavaField... fields);
3951
}

0 commit comments

Comments
 (0)