@@ -83,14 +83,15 @@ static InterpreterResolvedJavaMethod toJVMCI(Executable executable) {
8383 } else {
8484 name = SymbolsSupport .getNames ().lookup (executable .getName ());
8585 }
86+ // hidden classes and SVM stable proxy name contain a `.`, replace with a `+`
8687 StringBuilder sb = new StringBuilder ();
8788 sb .append ('(' );
8889 for (Class <?> type : executable .getParameterTypes ()) {
89- sb .append (type .descriptorString ());
90+ sb .append (type .descriptorString (). replace ( '.' , '+' ) );
9091 }
9192 sb .append (')' );
9293 if (executable instanceof Method method ) {
93- sb .append (method .getReturnType ().descriptorString ());
94+ sb .append (method .getReturnType ().descriptorString (). replace ( '.' , '+' ) );
9495 } else {
9596 assert executable instanceof Constructor ;
9697 sb .append ('V' );
@@ -100,14 +101,17 @@ static InterpreterResolvedJavaMethod toJVMCI(Executable executable) {
100101 }
101102
102103 static Symbol <Signature > toSymbol (InterpreterUnresolvedSignature jvmciSignature , SignatureSymbols signatures ) {
104+ // hidden classes and SVM stable proxy name contain a `.`, replace with a `+`
103105 StringBuilder sb = new StringBuilder ();
104106 sb .append ('(' );
105107 for (int i = 0 ; i < jvmciSignature .getParameterCount (false ); i ++) {
106- sb .append (jvmciSignature .getParameterType (i , null ).getName ());
108+ sb .append (jvmciSignature .getParameterType (i , null ).getName (). replace ( '.' , '+' ) );
107109 }
108110 sb .append (')' );
109- sb .append (jvmciSignature .getReturnType (null ).getName ());
110- return signatures .getOrCreateValidSignature (ByteSequence .create (sb .toString ()));
111+ sb .append (jvmciSignature .getReturnType (null ).getName ().replace ('.' , '+' ));
112+ Symbol <Signature > symbol = signatures .getOrCreateValidSignature (ByteSequence .create (sb .toString ()));
113+ assert symbol != null : jvmciSignature ;
114+ return symbol ;
111115 }
112116
113117 static JavaType toJavaType (Symbol <Type > typeSymbol ) {
0 commit comments