delete for good
[mono.git] / mono / metadata / domain-internals.h
index 143e18582c638f256fb0ca732f57356dcc54893e..bb267cdf85a17a5ddd93ac0ab9185c40bad295fe 100644 (file)
@@ -123,6 +123,11 @@ struct _MonoJitInfo {
        gboolean    cas_method_permitonly:1;
        gboolean    has_generic_jit_info:1;
        gboolean    from_aot:1;
+       gboolean    from_llvm:1;
+#ifdef HAVE_SGEN_GC
+       /* FIXME: Embed this after the structure later */
+       gpointer    gc_info;
+#endif
        MonoJitExceptionInfo clauses [MONO_ZERO_LEN_ARRAY];
        /* There is an optional MonoGenericJitInfo after the clauses */
 };
@@ -176,6 +181,12 @@ struct _MonoDomain {
        MonoException      *out_of_memory_ex;
        MonoException      *null_reference_ex;
        MonoException      *stack_overflow_ex;
+       /* typeof (void) */
+       MonoObject         *typeof_void;
+       /* 
+        * The fields between FIRST_GC_TRACKED and LAST_GC_TRACKED are roots, but
+        * not object references.
+        */
 #define MONO_DOMAIN_FIRST_GC_TRACKED env
        MonoGHashTable     *env;
        MonoGHashTable     *ldstr_table;
@@ -188,9 +199,7 @@ struct _MonoDomain {
        MonoGHashTable    *type_init_exception_hash;
        /* maps delegate trampoline addr -> delegate object */
        MonoGHashTable     *delegate_hash_table;
-       /* typeof (void) */
-       MonoObject         *typeof_void;
-#define MONO_DOMAIN_LAST_GC_TRACKED typeof_void
+#define MONO_DOMAIN_LAST_GC_TRACKED delegate_hash_table
        guint32            state;
        /* Needed by Thread:GetDomainID() */
        gint32             domain_id;
@@ -223,6 +232,13 @@ struct _MonoDomain {
         * if the hashtable contains a GC visible reference to them.
         */
        GHashTable         *finalizable_objects_hash;
+#ifndef HAVE_SGEN_GC
+       /* Maps MonoObjects to a GSList of WeakTrackResurrection GCHandles pointing to them */
+       GHashTable         *track_resurrection_objects_hash;
+       /* Maps WeakTrackResurrection GCHandles to the MonoObjects they point to */
+       GHashTable         *track_resurrection_handles_hash;
+#endif
+       /* Protects the three hashes above */
        CRITICAL_SECTION   finalizable_objects_hash_lock;
        /* Used when accessing 'domain_assemblies' */
        CRITICAL_SECTION    assemblies_lock;
@@ -241,6 +257,12 @@ struct _MonoDomain {
        
        /* Contains the compiled runtime invoke wrapper used by finalizers */
        gpointer            finalize_runtime_invoke;
+
+       /* Contains the compiled runtime invoke wrapper used by async resylt creation to capture thread context*/
+       gpointer            capture_context_runtime_invoke;
+
+       /* Contains the compiled method used by async resylt creation to capture thread context*/
+       gpointer            capture_context_method;
 };
 
 typedef struct  {
@@ -333,6 +355,9 @@ mono_domain_code_commit (MonoDomain *domain, void *data, int size, int newsize)
 void
 mono_domain_code_foreach (MonoDomain *domain, MonoCodeManagerFunc func, void *user_data) MONO_INTERNAL;
 
+void
+mono_domain_set_internal_with_options (MonoDomain *domain, gboolean migrate_exception) MONO_INTERNAL;
+
 /* 
  * Installs a new function which is used to return a MonoJitInfo for a method inside
  * an AOT module.
@@ -467,4 +492,6 @@ void mono_set_private_bin_path_from_config (MonoDomain *domain) MONO_INTERNAL;
 
 int mono_framework_version (void) MONO_INTERNAL;
 
+void mono_reflection_cleanup_domain (MonoDomain *domain) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */