summaryrefslogtreecommitdiff
path: root/mono/metadata/domain-internals.h
diff options
context:
space:
mode:
Diffstat (limited to 'mono/metadata/domain-internals.h')
-rw-r--r--mono/metadata/domain-internals.h31
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;