X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Floader.h;h=517f8e06cf5c40c6372f3c852b4b418b35d61e42;hb=a476d44787d5a8d2740ffe3b819ac1fce4491fb8;hp=924ae3ff283543c35bfebde4784318df2e783c4e;hpb=f58fc38d66b7cd6705e706f76731e0f65fe80c5f;p=mono.git diff --git a/mono/metadata/loader.h b/mono/metadata/loader.h index 924ae3ff283..517f8e06cf5 100644 --- a/mono/metadata/loader.h +++ b/mono/metadata/loader.h @@ -4,97 +4,52 @@ #include #include -typedef struct { - guint16 flags; /* method flags */ - guint16 iflags; /* method implementation flags */ - MonoClass *klass; - MonoMethodSignature *signature; - gpointer addr; - gpointer info; /* runtime info */ - gpointer remoting_tramp; - gint slot; - /* name is useful mostly for debugging */ - const char *name; - /* this is used by the inlining algorithm */ - unsigned int inline_info:1; - unsigned int uses_this:1; - unsigned int is_wrapper:1; - unsigned int string_ctor:1; - unsigned int save_lmf:1; - gint16 inline_count; -} MonoMethod; - -typedef struct { - MonoMethod method; - MonoMethodHeader *header; -} MonoMethodNormal; - -typedef struct { - MonoMethodNormal method; - GList *data; -} MonoMethodWrapper; - -typedef struct { - MonoMethod method; - void (*code) (void); - /* add marshal info */ - guint16 piflags; /* pinvoke flags */ - guint16 implmap_idx; /* index into IMPLMAP */ -} MonoMethodPInvoke; - -typedef struct { - MonoImage *corlib; - MonoClass *object_class; - MonoClass *byte_class; - MonoClass *void_class; - MonoClass *boolean_class; - MonoClass *sbyte_class; - MonoClass *int16_class; - MonoClass *uint16_class; - MonoClass *int32_class; - MonoClass *uint32_class; - MonoClass *int_class; - MonoClass *uint_class; - MonoClass *int64_class; - MonoClass *uint64_class; - MonoClass *single_class; - MonoClass *double_class; - MonoClass *char_class; - MonoClass *string_class; - MonoClass *enum_class; - MonoClass *array_class; - MonoClass *multicastdelegate_class; - MonoClass *asyncresult_class; - MonoClass *waithandle_class; - MonoClass *typehandle_class; - MonoClass *fieldhandle_class; - MonoClass *methodhandle_class; - MonoClass *monotype_class; - MonoClass *exception_class; - MonoClass *thread_class; - MonoClass *transparent_proxy_class; - MonoClass *real_proxy_class; - MonoClass *mono_method_message_class; - MonoClass *appdomain_class; - MonoClass *field_info_class; - MonoClass *stringbuilder_class; - MonoClass *math_class; - MonoClass *stack_frame_class; - MonoClass *stack_trace_class; - MonoClass *marshal_class; -} MonoDefaults; - -extern MonoDefaults mono_defaults; - -void -mono_init_icall (void); +G_BEGIN_DECLS + +typedef gboolean (*MonoStackWalk) (MonoMethod *method, gint32 native_offset, gint32 il_offset, gboolean managed, gpointer data); + +MonoMethod * +mono_get_method (MonoImage *image, guint32 token, MonoClass *klass); MonoMethod * -mono_get_method (MonoImage *image, guint32 token, MonoClass *klass); +mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass, + MonoGenericContext *context); + +MonoMethod * +mono_get_method_constrained (MonoImage *image, guint32 token, MonoClass *constrained_class, + MonoGenericContext *context, MonoMethod **cil_method); void mono_free_method (MonoMethod *method); +MonoMethodSignature* +mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 token, + MonoGenericContext *context); + +MonoMethodSignature* +mono_method_get_signature (MonoMethod *method, MonoImage *image, guint32 token); + +MonoMethodSignature* +mono_method_signature (MonoMethod *method); + +MonoMethodHeader* +mono_method_get_header (MonoMethod *method); + +const char* +mono_method_get_name (MonoMethod *method); + +MonoClass* +mono_method_get_class (MonoMethod *method); + +guint32 +mono_method_get_token (MonoMethod *method); + +guint32 +mono_method_get_flags (MonoMethod *method, guint32 *iflags); + +guint32 +mono_method_get_index (MonoMethod *method); + MonoImage * mono_load_image (const char *fname, MonoImageOpenStatus *status); @@ -104,19 +59,35 @@ mono_add_internal_call (const char *name, gconstpointer method); gpointer mono_lookup_internal_call (MonoMethod *method); -int -mono_dllmap_lookup (const char *dll, const char* func, const char **rdll, const char **rfunc); - void -mono_dllmap_insert (const char *dll, const char *func, const char *tdll, const char *tfunc); +mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc); gpointer -mono_lookup_pinvoke_call (MonoMethod *method); +mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char **exc_arg); void mono_method_get_param_names (MonoMethod *method, const char **names); -gpointer -mono_method_get_wrapper_data (MonoMethod *method, guint32 id); +guint32 +mono_method_get_param_token (MonoMethod *method, int idx); + +void +mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs); + +gboolean +mono_method_has_marshal_info (MonoMethod *method); + +MonoMethod* +mono_method_get_last_managed (void); + +void +mono_stack_walk (MonoStackWalk func, gpointer user_data); + +/* Use this if the IL offset is not needed: it's faster */ +void +mono_stack_walk_no_il (MonoStackWalk func, gpointer user_data); + +G_END_DECLS #endif +