2003-10-15 Martin Baulig <martin@ximian.com>
[mono.git] / mono / metadata / appdomain.h
index ca4f021f6ceca5247feca34afce3452aa406b757..e9b86919c0e1b464dc0b0179045a745f1b9f1135 100644 (file)
@@ -36,6 +36,7 @@ typedef struct {
        MonoString *shadow_copy_directories;
        MonoString *shadow_copy_files;
        MonoBoolean publisher_policy;
+       MonoBoolean path_changed;
 } MonoAppDomainSetup;
 
 typedef GArray MonoJitInfoTable;
@@ -58,9 +59,17 @@ typedef struct {
        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;
+} MonoAppContext;
+
 typedef struct _MonoAppDomain MonoAppDomain;
 
 struct _MonoDomain {
@@ -86,6 +95,13 @@ struct _MonoDomain {
        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;
+       GHashTable         *thread_static_fields;
+       GHashTable         *jump_target_hash;
+       MonoGHashTable     *class_init_trampoline_hash;
 };
 
 /* This is a copy of System.AppDomain */
@@ -94,12 +110,6 @@ struct _MonoAppDomain {
        MonoDomain *data;
 };
 
-typedef struct {
-       MonoObject obj;
-       gint32 domain_id;
-       gint32 context_id;
-} MonoAppContext;
-
 extern MonoDomain *mono_root_domain;
 
 extern HANDLE mono_delegate_semaphore;
@@ -108,6 +118,8 @@ extern CRITICAL_SECTION mono_delegate_section;
 #define mono_domain_lock(domain)   EnterCriticalSection(&(domain)->lock)
 #define mono_domain_unlock(domain) LeaveCriticalSection(&(domain)->lock)
 
+typedef void (*MonoDomainFunc) (MonoDomain *domain, gpointer user_data);
+
 MonoDomain*
 mono_init                  (const char *filename);
 
@@ -118,6 +130,12 @@ mono_runtime_init          (MonoDomain *domain, MonoThreadStartCB start_cb,
 void
 mono_runtime_cleanup       (MonoDomain *domain);
 
+void
+mono_runtime_install_cleanup (MonoDomainFunc func);
+
+void
+mono_runtime_quit (void);
+
 MonoDomain *
 mono_domain_create         (void);
 
@@ -130,6 +148,9 @@ mono_domain_get_by_id      (gint32 domainid);
 inline void
 mono_domain_set            (MonoDomain *domain);
 
+void
+mono_domain_foreach        (MonoDomainFunc func, gpointer user_data);
+
 MonoAssembly *
 mono_domain_assembly_open  (MonoDomain *domain, const char *name);
 
@@ -139,8 +160,11 @@ mono_domain_finalize       (MonoDomain *domain);
 void
 mono_domain_unload         (MonoDomain *domain, gboolean force);
 
+gboolean
+mono_domain_has_type_resolve (MonoDomain *domain);
+
 MonoReflectionAssembly *
-mono_domain_try_type_resolve (MonoDomain *domain, MonoObject *name_or_tb);
+mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb);
 
 void
 mono_jit_info_table_add    (MonoDomain *domain, MonoJitInfo *ji);
@@ -193,6 +217,9 @@ ves_icall_System_AppDomain_ExecuteAssembly         (MonoAppDomain *ad,
                                                    MonoObject    *evidence,
                                                    MonoArray     *args);
 
+void
+mono_context_init                                 (MonoDomain *domain);
+
 inline void 
 mono_context_set                                  (MonoAppContext *new_context);
 
@@ -208,10 +235,17 @@ ves_icall_System_AppDomain_InternalSetDomainByID   (gint32 domainid);
 MonoAppContext * 
 ves_icall_System_AppDomain_InternalGetContext      (void);
 
+MonoAppContext * 
+ves_icall_System_AppDomain_InternalGetDefaultContext      (void);
+
 MonoAppContext * 
 ves_icall_System_AppDomain_InternalSetContext     (MonoAppContext *mc);
 
 gint32 
 ves_icall_System_AppDomain_GetIDFromDomain (MonoAppDomain * ad);
 
+MonoString *
+ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid);
+
+
 #endif /* _MONO_METADATA_APPDOMAIN_H_ */