@@ -88,14 +88,15 @@ static InterpreterResolvedJavaMethod toJVMCI(Executable executable) {
8888 */
8989 name = SymbolsSupport .getNames ().lookup (executable .getName ());
9090 }
91+ // hidden classes and SVM stable proxy name contain a `.`, replace with a `+`
9192 StringBuilder sb = new StringBuilder ();
9293 sb .append ('(' );
9394 for (Class <?> type : executable .getParameterTypes ()) {
94- sb .append (type .descriptorString ());
95+ sb .append (type .descriptorString (). replace ( '.' , '+' ) );
9596 }
9697 sb .append (')' );
9798 if (executable instanceof Method method ) {
98- sb .append (method .getReturnType ().descriptorString ());
99+ sb .append (method .getReturnType ().descriptorString (). replace ( '.' , '+' ) );
99100 } else {
100101 assert executable instanceof Constructor ;
101102 sb .append ('V' );
@@ -105,14 +106,17 @@ static InterpreterResolvedJavaMethod toJVMCI(Executable executable) {
105106 }
106107
107108 static Symbol <Signature > toSymbol (InterpreterUnresolvedSignature jvmciSignature , SignatureSymbols signatures ) {
109+ // hidden classes and SVM stable proxy name contain a `.`, replace with a `+`
108110 StringBuilder sb = new StringBuilder ();
109111 sb .append ('(' );
110112 for (int i = 0 ; i < jvmciSignature .getParameterCount (false ); i ++) {
111- sb .append (jvmciSignature .getParameterType (i , null ).getName ());
113+ sb .append (jvmciSignature .getParameterType (i , null ).getName (). replace ( '.' , '+' ) );
112114 }
113115 sb .append (')' );
114- sb .append (jvmciSignature .getReturnType (null ).getName ());
115- return signatures .getOrCreateValidSignature (ByteSequence .create (sb .toString ()));
116+ sb .append (jvmciSignature .getReturnType (null ).getName ().replace ('.' , '+' ));
117+ Symbol <Signature > symbol = signatures .getOrCreateValidSignature (ByteSequence .create (sb .toString ()));
118+ assert symbol != null : jvmciSignature ;
119+ return symbol ;
116120 }
117121
118122 static JavaType toJavaType (Symbol <Type > typeSymbol ) {
0 commit comments