Switch to compiler-tester
[mono.git] / mono / metadata / appdomain.h
index 8c1d073eb7999a349b63abdd49c3e0ccd1d2d377..f5d20d8b022f03e43f1d46f79b26158803a11c2c 100644 (file)
 #include <mono/metadata/object.h>
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/mempool.h>
-#include <mono/utils/mono-hash.h>
-#include <mono/io-layer/io-layer.h>
+
+G_BEGIN_DECLS
 
 typedef void (*MonoThreadStartCB) (guint32 tid, gpointer stack_start,
                                   gpointer func);
 typedef void (*MonoThreadAttachCB) (guint32 tid, gpointer stack_start);
 
-/* This is a copy of System.AppDomainSetup */
-typedef struct {
-       MonoObject object;
-       MonoString *application_base;
-       MonoString *application_name;
-       MonoString *cache_path;
-       MonoString *configuration_file;
-       MonoString *dynamic_base;
-       MonoString *license_file;
-       MonoString *private_bin_path;
-       MonoString *private_bin_path_probe;
-       MonoString *shadow_copy_directories;
-       MonoString *shadow_copy_files;
-       MonoBoolean publisher_policy;
-       MonoBoolean path_changed;
-       int loader_optimization;
-       MonoBoolean disallow_binding_redirects;
-       MonoBoolean disallow_code_downloads;
-} MonoAppDomainSetup;
-
-typedef GArray MonoJitInfoTable;
-
-typedef struct {
-       guint32  flags;
-       gpointer try_start;
-       gpointer try_end;
-       gpointer handler_start;
-       union {
-               guint32 token;
-               gpointer filter;
-       } data;
-} MonoJitExceptionInfo;
-
-typedef struct {
-       MonoMethod *method;
-       gpointer    code_start;
-       int         code_size;
-       guint32     used_regs;
-       unsigned    num_clauses;
-       signed      exvar_offset;
-       /* Whenever the code is domain neutral or 'shared' */
-       gboolean    domain_neutral:1;
-       MonoJitExceptionInfo *clauses;
-} MonoJitInfo;
-
-typedef struct {
-       MonoObject obj;
-       gint32 domain_id;
-       gint32 context_id;
-       gpointer *static_data;
-} MonoAppContext;
-
-typedef enum {
-       MONO_APPDOMAIN_CREATED,
-       MONO_APPDOMAIN_UNLOADING,
-       MONO_APPDOMAIN_UNLOADED
-} MonoAppDomainState;
-
 typedef struct _MonoAppDomain MonoAppDomain;
-
-struct _MonoDomain {
-       MonoAppDomain      *domain;
-       CRITICAL_SECTION    lock;
-       MonoMemPool        *mp;
-       MonoMemPool        *code_mp;
-       MonoGHashTable     *env;
-       GHashTable         *assemblies;
-       MonoAssembly       *entry_assembly;
-       MonoAppDomainSetup *setup;
-       char               *friendly_name;
-       guint32            state;
-       MonoGHashTable     *ldstr_table;
-       MonoGHashTable     *class_vtable_hash;
-       MonoGHashTable     *proxy_vtable_hash;
-       MonoGHashTable     *static_data_hash;
-       GHashTable         *jit_code_hash;
-       MonoJitInfoTable   *jit_info_table;
-       /* hashtables for Reflection handles */
-       MonoGHashTable     *type_hash;
-       MonoGHashTable     *refobject_hash;
-       /* Needed by Thread:GetDomainID() */
-       gint32             domain_id;
-       /* Used when loading assemblies */
-       gchar **search_path;
-       /* Used by remoting proxies */
-       MonoMethod         *create_proxy_for_type_method;
-       MonoMethod         *private_invoke_method;
-       MonoAppContext     *default_context;
-       MonoException      *out_of_memory_ex;
-       /* Used to store offsets of thread and context static fields */
-       GHashTable         *special_static_fields;
-       GHashTable         *jump_target_hash;
-       MonoGHashTable     *class_init_trampoline_hash;
-       /* 
-        * This must be a GHashTable, since these objects can't be finalized
-        * if the hashtable contains a GC visible reference to them.
-        */
-       GHashTable         *finalizable_objects_hash;
-};
-
-/* This is a copy of System.AppDomain */
-struct _MonoAppDomain {
-       MonoMarshalByRefObject mbr;
-       MonoDomain *data;
-};
-
-extern MonoDomain *mono_root_domain;
-
-extern HANDLE mono_delegate_semaphore;
-extern CRITICAL_SECTION mono_delegate_section;
-
-#define mono_domain_lock(domain)   EnterCriticalSection(&(domain)->lock)
-#define mono_domain_unlock(domain) LeaveCriticalSection(&(domain)->lock)
+typedef struct _MonoJitInfo MonoJitInfo;
 
 typedef void (*MonoDomainFunc) (MonoDomain *domain, gpointer user_data);
 
 MonoDomain*
 mono_init                  (const char *filename);
 
+MonoDomain *
+mono_init_from_assembly    (const char *domain_name, const char *filename);
+
+MonoDomain *
+mono_init_version          (const char *domain_name, const char *version);
+
+MonoDomain*
+mono_get_root_domain       (void);
+
 void
 mono_runtime_init          (MonoDomain *domain, MonoThreadStartCB start_cb,
                            MonoThreadAttachCB attach_cb);
@@ -149,11 +47,14 @@ void
 mono_runtime_cleanup       (MonoDomain *domain);
 
 void
-mono_runtime_install_cleanup (MonoDomainFunc func);
+mono_install_runtime_cleanup (MonoDomainFunc func);
 
 void
 mono_runtime_quit (void);
 
+void
+mono_runtime_set_shutting_down (void);
+
 gboolean
 mono_runtime_is_shutting_down (void);
 
@@ -163,16 +64,19 @@ mono_check_corlib_version (void);
 MonoDomain *
 mono_domain_create         (void);
 
-inline MonoDomain *
+MonoDomain *
 mono_domain_get            (void);
 
-inline MonoDomain *
+MonoDomain *
 mono_domain_get_by_id      (gint32 domainid);
 
-inline gboolean
+gint32
+mono_domain_get_id         (MonoDomain *domain);
+
+gboolean
 mono_domain_set            (MonoDomain *domain, gboolean force);
 
-inline void
+void
 mono_domain_set_internal   (MonoDomain *domain);
 
 gboolean
@@ -196,104 +100,87 @@ mono_domain_has_type_resolve (MonoDomain *domain);
 MonoReflectionAssembly *
 mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb);
 
-void
-mono_jit_info_table_add    (MonoDomain *domain, MonoJitInfo *ji);
-
-MonoJitInfo *
-mono_jit_info_table_find   (MonoDomain *domain, char *addr);
+gboolean
+mono_domain_owns_vtable_slot (MonoDomain *domain, gpointer vtable_slot);
 
 void
-ves_icall_System_AppDomainSetup_InitAppDomainSetup (MonoAppDomainSetup *setup);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_getCurDomain            (void);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_createDomain            (MonoString         *friendly_name,
-                                                   MonoAppDomainSetup *setup);
+mono_context_init                                 (MonoDomain *domain);
 
-MonoObject *
-ves_icall_System_AppDomain_GetData                 (MonoAppDomain *ad, 
-                                                   MonoString    *name);
+void 
+mono_context_set                                  (MonoAppContext *new_context);
 
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssemblyRaw         (MonoAppDomain *ad,
-                                                   MonoArray *raw_assembly, 
-                                                   MonoArray *raw_symbol_store,
-                                                   MonoObject *evidence);
+MonoAppContext * 
+mono_context_get                                  (void);
 
-void
-ves_icall_System_AppDomain_SetData                 (MonoAppDomain *ad, 
-                                                   MonoString    *name, 
-                                                   MonoObject    *data);
+MonoJitInfo *
+mono_jit_info_table_find   (MonoDomain *domain, char *addr);
 
-MonoAppDomainSetup *
-ves_icall_System_AppDomain_getSetup                (MonoAppDomain *ad);
+MonoImage*
+mono_get_corlib            (void);
 
-MonoString *
-ves_icall_System_AppDomain_getFriendlyName         (MonoAppDomain *ad);
+MonoClass*
+mono_get_object_class      (void);
 
-MonoArray *
-ves_icall_System_AppDomain_GetAssemblies           (MonoAppDomain *ad);
+MonoClass*
+mono_get_byte_class        (void);
 
-MonoReflectionAssembly *
-ves_icall_System_Reflection_Assembly_LoadFrom      (MonoString *fname);
+MonoClass*
+mono_get_void_class        (void);
 
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssembly            (MonoAppDomain *ad, 
-                                                   MonoReflectionAssemblyName *assRef,
-                                                   MonoObject    *evidence);
+MonoClass*
+mono_get_boolean_class     (void);
 
-gboolean
-ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id);
+MonoClass*
+mono_get_sbyte_class       (void);
 
-void
-ves_icall_System_AppDomain_InternalUnload          (gint32 domain_id);
+MonoClass*
+mono_get_int16_class       (void);
 
-gint32
-ves_icall_System_AppDomain_ExecuteAssembly         (MonoAppDomain *ad, 
-                                                   MonoString    *file, 
-                                                   MonoObject    *evidence,
-                                                   MonoArray     *args);
+MonoClass*
+mono_get_uint16_class      (void);
 
-void
-mono_context_init                                 (MonoDomain *domain);
+MonoClass*
+mono_get_int32_class       (void);
 
-inline void 
-mono_context_set                                  (MonoAppContext *new_context);
+MonoClass*
+mono_get_uint32_class      (void);
 
-inline MonoAppContext * 
-mono_context_get                                  (void);
+MonoClass*
+mono_get_intptr_class         (void);
 
-MonoAppDomain * 
-ves_icall_System_AppDomain_InternalSetDomain      (MonoAppDomain *ad);
+MonoClass*
+mono_get_uintptr_class        (void);
 
-MonoAppDomain * 
-ves_icall_System_AppDomain_InternalSetDomainByID   (gint32 domainid);
+MonoClass*
+mono_get_int64_class       (void);
 
-void
-ves_icall_System_AppDomain_InternalPushDomainRef (MonoAppDomain *ad);
+MonoClass*
+mono_get_uint64_class      (void);
 
-void
-ves_icall_System_AppDomain_InternalPushDomainRefByID (gint32 domain_id);
+MonoClass*
+mono_get_single_class      (void);
 
-void
-ves_icall_System_AppDomain_InternalPopDomainRef (void);
+MonoClass*
+mono_get_double_class      (void);
 
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalGetContext      (void);
+MonoClass*
+mono_get_char_class        (void);
 
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalGetDefaultContext      (void);
+MonoClass*
+mono_get_string_class      (void);
 
-MonoAppContext * 
-ves_icall_System_AppDomain_InternalSetContext     (MonoAppContext *mc);
+MonoClass*
+mono_get_enum_class        (void);
 
-gint32 
-ves_icall_System_AppDomain_GetIDFromDomain (MonoAppDomain * ad);
+MonoClass*
+mono_get_array_class       (void);
 
-MonoString *
-ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid);
+MonoClass*
+mono_get_thread_class       (void);
 
+MonoClass*
+mono_get_exception_class    (void);
 
+G_END_DECLS
 #endif /* _MONO_METADATA_APPDOMAIN_H_ */
+