1 #ifndef _MONO_METADATA_LOADER_H_
2 #define _MONO_METADATA_LOADER_H_ 1
4 #include <mono/metadata/metadata.h>
5 #include <mono/metadata/image.h>
6 #include <mono/io-layer/io-layer.h>
10 MONO_WRAPPER_DELEGATE_INVOKE,
11 MONO_WRAPPER_DELEGATE_BEGIN_INVOKE,
12 MONO_WRAPPER_DELEGATE_END_INVOKE,
13 MONO_WRAPPER_RUNTIME_INVOKE,
14 MONO_WRAPPER_NATIVE_TO_MANAGED,
15 MONO_WRAPPER_MANAGED_TO_NATIVE,
16 MONO_WRAPPER_REMOTING_INVOKE,
17 MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK,
20 MONO_WRAPPER_SYNCHRONIZED,
21 MONO_WRAPPER_DYNAMIC_METHOD,
26 guint16 flags; /* method flags */
27 guint16 iflags; /* method implementation flags */
30 MonoMethodSignature *signature;
32 gpointer info; /* runtime info */
33 gpointer remoting_tramp;
35 /* name is useful mostly for debugging */
37 /* this is used by the inlining algorithm */
38 unsigned int inline_info:1;
39 unsigned int uses_this:1;
40 unsigned int wrapper_type:4;
41 unsigned int string_ctor:1;
42 unsigned int save_lmf:1;
48 MonoMethodHeader *header;
52 MonoMethodNormal method;
57 MonoMethodNormal nmethod;
58 MonoGenericContext *context;
59 MonoMethod *declaring;
65 /* add marshal info */
66 guint16 piflags; /* pinvoke flags */
67 guint16 implmap_idx; /* index into IMPLMAP */
72 MonoClass *object_class;
73 MonoClass *byte_class;
74 MonoClass *void_class;
75 MonoClass *boolean_class;
76 MonoClass *sbyte_class;
77 MonoClass *int16_class;
78 MonoClass *uint16_class;
79 MonoClass *int32_class;
80 MonoClass *uint32_class;
82 MonoClass *uint_class;
83 MonoClass *int64_class;
84 MonoClass *uint64_class;
85 MonoClass *single_class;
86 MonoClass *double_class;
87 MonoClass *char_class;
88 MonoClass *string_class;
89 MonoClass *enum_class;
90 MonoClass *array_class;
91 MonoClass *delegate_class;
92 MonoClass *multicastdelegate_class;
93 MonoClass *asyncresult_class;
94 MonoClass *waithandle_class;
95 MonoClass *typehandle_class;
96 MonoClass *fieldhandle_class;
97 MonoClass *methodhandle_class;
98 MonoClass *monotype_class;
99 MonoClass *exception_class;
100 MonoClass *threadabortexception_class;
101 MonoClass *thread_class;
102 MonoClass *transparent_proxy_class;
103 MonoClass *real_proxy_class;
104 MonoClass *mono_method_message_class;
105 MonoClass *appdomain_class;
106 MonoClass *field_info_class;
107 MonoClass *method_info_class;
108 MonoClass *stringbuilder_class;
109 MonoClass *math_class;
110 MonoClass *stack_frame_class;
111 MonoClass *stack_trace_class;
112 MonoClass *marshal_class;
113 MonoClass *iserializeable_class;
114 MonoClass *serializationinfo_class;
115 MonoClass *streamingcontext_class;
116 MonoClass *typed_reference_class;
117 MonoClass *argumenthandle_class;
118 MonoClass *marshalbyrefobject_class;
119 MonoClass *monitor_class;
120 MonoClass *iremotingtypeinfo_class;
123 extern MonoDefaults mono_defaults;
126 * This lock protects the hash tables inside MonoImage used by the metadata
127 * loading functions in class.c and loader.c.
129 extern CRITICAL_SECTION loader_mutex;
131 #define mono_loader_lock() EnterCriticalSection (&loader_mutex);
132 #define mono_loader_unlock() LeaveCriticalSection (&loader_mutex);
134 typedef gboolean (*MonoStackWalk) (MonoMethod *method, gint32 native_offset, gint32 il_offset, gboolean managed, gpointer data);
135 typedef void (*MonoStackWalkImpl) (MonoStackWalk func, gpointer user_data);
138 mono_loader_init (void);
141 mono_init_icall (void);
144 mono_get_method (MonoImage *image, guint32 token, MonoClass *klass);
147 mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass, MonoGenericContext *context);
150 mono_get_method_constrained (MonoImage *image, guint32 token, MonoClass *constrained_class, MonoGenericContext *context);
153 mono_free_method (MonoMethod *method);
156 mono_method_get_signature (MonoMethod *method, MonoImage *image, guint32 token);
159 mono_load_image (const char *fname, MonoImageOpenStatus *status);
162 mono_add_internal_call (const char *name, gconstpointer method);
165 mono_lookup_internal_call (MonoMethod *method);
168 mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc);
171 mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char **exc_arg);
174 mono_method_get_param_names (MonoMethod *method, const char **names);
177 mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs);
180 mono_method_has_marshal_info (MonoMethod *method);
183 mono_method_get_wrapper_data (MonoMethod *method, guint32 id);
186 mono_method_get_last_managed (void);
189 mono_stack_walk (MonoStackWalk func, gpointer user_data);
192 mono_install_stack_walk (MonoStackWalkImpl func);
195 mono_loader_wine_init (void);
197 MonoGenericParam *mono_metadata_load_generic_params (MonoImage *image, guint32 token, guint32 *num);