@@ -181,7 +181,8 @@ private string CEntryPoint(PInvoke pinvoke)
181181 if ( pinvoke . WasmLinkage )
182182 {
183183 // We mangle the name to avoid collisions with symbols in other modules
184- return _fixupSymbolName ( $ "{ pinvoke . Module } #{ pinvoke . EntryPoint } ") ;
184+ string namespaceName = pinvoke . Method . DeclaringType ? . Namespace ?? string . Empty ;
185+ return _fixupSymbolName ( $ "{ namespaceName } #{ pinvoke . Module } #{ pinvoke . EntryPoint } ") ;
185186 }
186187 return _fixupSymbolName ( pinvoke . EntryPoint ) ;
187188 }
@@ -295,8 +296,13 @@ private string CEntryPoint(PInvokeCallback export)
295296 }
296297
297298 var method = export . Method ;
298- // EntryPoint wasn't specified generate a name for the entry point
299- return _fixupSymbolName ( $ "wasm_native_to_interp_{ method . DeclaringType ! . Module ! . Assembly ! . GetName ( ) ! . Name ! } _{ method . DeclaringType . Name } _{ method . Name } ") ;
299+ string namespaceName = method . DeclaringType ? . Namespace ?? string . Empty ;
300+ string assemblyName = method . DeclaringType ? . Module ? . Assembly ? . GetName ( ) ? . Name ?? string . Empty ;
301+ string declaringTypeName = method . DeclaringType ? . Name ?? string . Empty ;
302+
303+ string entryPoint = $ "wasm_native_to_interp_{ namespaceName } _{ assemblyName } _{ declaringTypeName } _{ method . Name } ";
304+
305+ return _fixupSymbolName ( entryPoint ) ;
300306 }
301307
302308 private string DelegateKey ( PInvokeCallback export )
@@ -390,10 +396,11 @@ private void EmitNativeToInterp(StreamWriter w, List<PInvokeCallback> callbacks)
390396 sb . Append ( $ " if (!(WasmInterpEntrySig_{ cb_index } )wasm_native_to_interp_ftndescs [{ cb_index } ].func) {{\n ") ;
391397 var assemblyFullName = cb . Method . DeclaringType == null ? "" : cb . Method . DeclaringType . Assembly . FullName ;
392398 var assemblyName = assemblyFullName != null && assemblyFullName . Split ( ',' ) . Length > 0 ? assemblyFullName . Split ( ',' ) [ 0 ] . Trim ( ) : "" ;
393- var typeName = cb . Method . DeclaringType == null || cb . Method . DeclaringType . FullName == null ? "" : cb . Method . DeclaringType . FullName ;
399+ var namespaceName = cb . Method . DeclaringType == null ? "" : cb . Method . DeclaringType . Namespace ;
400+ var typeName = cb . Method . DeclaringType == null || cb . Method . DeclaringType . Name == null ? "" : cb . Method . DeclaringType . Name ;
394401 var methodName = cb . Method . Name ;
395402 int numParams = method . GetParameters ( ) . Length ;
396- sb . Append ( $ " mono_wasm_marshal_get_managed_wrapper (\" { assemblyName } \" , \" { typeName } \" , \" { methodName } \" , { numParams } );\n ") ;
403+ sb . Append ( $ " mono_wasm_marshal_get_managed_wrapper (\" { assemblyName } \" ,\" { namespaceName } \" , \" { typeName } \" , \" { methodName } \" , { numParams } );\n ") ;
397404 sb . Append ( $ " }}\n ") ;
398405
399406 sb . Append ( $ " ((WasmInterpEntrySig_{ cb_index } )wasm_native_to_interp_ftndescs [{ cb_index } ].func) (") ;
0 commit comments