diff options
Diffstat (limited to 'mono/metadata/domain-internals.h')
-rw-r--r-- | mono/metadata/domain-internals.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/mono/metadata/domain-internals.h b/mono/metadata/domain-internals.h index b73be9382a..8ffe885532 100644 --- a/mono/metadata/domain-internals.h +++ b/mono/metadata/domain-internals.h @@ -190,7 +190,11 @@ struct _MonoJitInfo { next_jit_code_hash) must be in the same order and at the same offset as in RuntimeMethod, because of the jit_code_hash internal hash table in MonoDomain. */ - MonoMethod *method; + union { + MonoMethod *method; + MonoImage *image; + gpointer aot_info; + } d; struct _MonoJitInfo *next_jit_code_hash; gpointer code_start; /* This might contain an id for the unwind info instead of a register mask */ @@ -207,6 +211,10 @@ struct _MonoJitInfo { gboolean from_llvm:1; gboolean dbg_hidden_inited:1; gboolean dbg_hidden:1; + /* Whenever this jit info was loaded in async context */ + gboolean async:1; + gboolean dbg_step_through_inited:1; + gboolean dbg_step_through:1; /* FIXME: Embed this after the structure later*/ gpointer gc_info; /* Currently only used by SGen */ @@ -226,6 +234,17 @@ struct _MonoAppContext { gpointer *static_data; }; +/* Lock-free allocator */ +typedef struct { + guint8 *mem; + gpointer prev; + int size, pos; +} LockFreeMempoolChunk; + +typedef struct { + LockFreeMempoolChunk *current, *chunks; +} LockFreeMempool; + /* * We have two unloading states because the domain * must remain fully functional while AppDomain::DomainUnload is @@ -315,10 +334,17 @@ struct _MonoDomain { int num_jit_info_tables; MonoJitInfoTable * volatile jit_info_table; + /* + * Contains information about AOT loaded code. + * Only used in the root domain. + */ + MonoJitInfoTable * + volatile aot_modules; GSList *jit_info_free_queue; /* Used when loading assemblies */ gchar **search_path; gchar *private_bin_path; + LockFreeMempool *lock_free_mp; /* Used by remoting proxies */ MonoMethod *create_proxy_for_type_method; @@ -459,6 +485,9 @@ mono_domain_alloc (MonoDomain *domain, guint size) MONO_INTERNAL; gpointer mono_domain_alloc0 (MonoDomain *domain, guint size) MONO_INTERNAL; +gpointer +mono_domain_alloc0_lock_free (MonoDomain *domain, guint size) MONO_INTERNAL; + void* mono_domain_code_reserve (MonoDomain *domain, int size) MONO_LLVM_INTERNAL; |