* list :
[mono.git] / mono / metadata / loader.h
index 9820274141f047c9a6999c52324a932b5f10076b..6135661f300a9b6ce54e49187f9f5f367f75cc05 100644 (file)
@@ -4,6 +4,18 @@
 #include <mono/metadata/metadata.h>
 #include <mono/metadata/image.h>
 
+typedef enum {
+       MONO_WRAPPER_NONE,
+       MONO_WRAPPER_DELEGATE_INVOKE,
+       MONO_WRAPPER_DELEGATE_BEGIN_INVOKE,
+       MONO_WRAPPER_DELEGATE_END_INVOKE,
+       MONO_WRAPPER_RUNTIME_INVOKE,
+       MONO_WRAPPER_NATIVE_TO_MANAGED,
+       MONO_WRAPPER_MANAGED_TO_NATIVE,
+       MONO_WRAPPER_REMOTING_INVOKE,
+       MONO_WRAPPER_UNKNOWN
+} MonoWrapperType;
+
 typedef struct {
        guint16 flags;  /* method flags */
        guint16 iflags; /* method implementation flags */
@@ -18,6 +30,9 @@ typedef struct {
        /* this is used by the inlining algorithm */
        unsigned int inline_info:1;
        unsigned int uses_this:1;
+       MonoWrapperType wrapper_type:4;
+       unsigned int string_ctor:1;
+       unsigned int save_lmf:1;
        gint16 inline_count;
 } MonoMethod;
 
@@ -26,6 +41,11 @@ typedef struct {
        MonoMethodHeader *header;
 } MonoMethodNormal;
 
+typedef struct {
+       MonoMethodNormal method;
+       GList *data;
+} MonoMethodWrapper;
+
 typedef struct {
        MonoMethod method;
        void  (*code) (void);
@@ -63,6 +83,7 @@ typedef struct {
        MonoClass *methodhandle_class;
        MonoClass *monotype_class;
        MonoClass *exception_class;
+       MonoClass *threadabortexception_class;
        MonoClass *thread_class;
        MonoClass *transparent_proxy_class;
        MonoClass *real_proxy_class;
@@ -73,10 +94,17 @@ typedef struct {
        MonoClass *math_class;
        MonoClass *stack_frame_class;
        MonoClass *stack_trace_class;
+       MonoClass *marshal_class;
+       MonoClass *iserializeable_class;
+       MonoClass *serializationinfo_class;
+       MonoClass *streamingcontext_class;
 } MonoDefaults;
 
 extern MonoDefaults mono_defaults;
 
+typedef gboolean (*MonoStackWalk)     (MonoMethod *method, gint32 native_offset, gint32 il_offset, gpointer data);
+typedef void     (*MonoStackWalkImpl) (MonoStackWalk func, gpointer user_data);
+
 void 
 mono_init_icall            (void);
 
@@ -107,4 +135,16 @@ mono_lookup_pinvoke_call (MonoMethod *method);
 void
 mono_method_get_param_names (MonoMethod *method, const char **names);
 
+gpointer
+mono_method_get_wrapper_data (MonoMethod *method, guint32 id);
+
+MonoMethod*
+mono_method_get_last_managed  (void);
+
+void
+mono_stack_walk         (MonoStackWalk func, gpointer user_data);
+
+void
+mono_install_stack_walk (MonoStackWalkImpl func);
+
 #endif