Skip to content

Commit c8af3ab

Browse files
Make unique stub names stable.
1 parent dd23914 commit c8af3ab

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateUtil.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,22 @@ public static String uniqueShortName(Member m) {
322322
* @return a unique stub name for the method
323323
*/
324324
public static String uniqueStubName(ResolvedJavaMethod m) {
325-
String shortName = UniqueShortNameProvider.singleton().uniqueShortName(null, m.getDeclaringClass(), m.getName(), m.getSignature(), m.isConstructor());
326-
return stripPackage(m.getDeclaringClass().toJavaName()) + "_" +
327-
(m.isConstructor() ? "constructor" : m.getName()) + "_" +
328-
SubstrateUtil.digest(shortName);
325+
return uniqueShortName("", m.getDeclaringClass(), m.getName(), m.getSignature(), m.isConstructor());
326+
}
327+
328+
public static String uniqueShortName(String loaderNameAndId, ResolvedJavaType declaringClass, String methodName, Signature methodSignature, boolean isConstructor) {
329+
StringBuilder sb = new StringBuilder(loaderNameAndId);
330+
sb.append(declaringClass.toClassName()).append(".").append(methodName).append("(");
331+
for (int i = 0; i < methodSignature.getParameterCount(false); i++) {
332+
sb.append(methodSignature.getParameterType(i, null).toClassName()).append(",");
333+
}
334+
sb.append(')');
335+
if (!isConstructor) {
336+
sb.append(methodSignature.getReturnType(null).toClassName());
337+
}
329338

339+
return stripPackage(declaringClass.toJavaName()) + "_" +
340+
(isConstructor ? "constructor" : methodName) + "_" + digest(sb.toString());
330341
}
331342

332343
/**

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/UniqueShortNameProviderDefaultImpl.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,7 @@
4545
public class UniqueShortNameProviderDefaultImpl implements UniqueShortNameProvider {
4646
@Override
4747
public String uniqueShortName(ClassLoader loader, ResolvedJavaType declaringClass, String methodName, Signature methodSignature, boolean isConstructor) {
48-
String loaderName = SubstrateUtil.classLoaderNameAndId(loader);
49-
StringBuilder sb = new StringBuilder(loaderName);
50-
sb.append(declaringClass.toClassName()).append(".").append(methodName).append("(");
51-
for (int i = 0; i < methodSignature.getParameterCount(false); i++) {
52-
sb.append(methodSignature.getParameterType(i, null).toClassName()).append(",");
53-
}
54-
sb.append(')');
55-
if (!isConstructor) {
56-
sb.append(methodSignature.getReturnType(null).toClassName());
57-
}
58-
59-
return SubstrateUtil.stripPackage(declaringClass.toJavaName()) + "_" +
60-
(isConstructor ? "constructor" : methodName) + "_" +
61-
SubstrateUtil.digest(sb.toString());
48+
return SubstrateUtil.uniqueShortName(SubstrateUtil.classLoaderNameAndId(loader), declaringClass, methodName, methodSignature, isConstructor);
6249
}
6350

6451
@Override

0 commit comments

Comments
 (0)