/*
* Appdomain-related internal data structures and functions.
* Copyright 2012 Xamarin Inc (http://www.xamarin.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#ifndef __MONO_METADATA_DOMAIN_INTERNALS_H__
#define __MONO_METADATA_DOMAIN_INTERNALS_H__
int refcount;
volatile int num_elements;
volatile gint8 *last_code_end;
+ MonoJitInfo *next_tombstone;
MonoJitInfo * volatile data [MONO_JIT_INFO_TABLE_CHUNK_SIZE];
};
gpointer aot_info;
gpointer tramp_info;
} d;
- struct _MonoJitInfo *next_jit_code_hash;
+ union {
+ struct _MonoJitInfo *next_jit_code_hash;
+ struct _MonoJitInfo *next_tombstone;
+ } n;
gpointer code_start;
guint32 unwind_info;
int code_size;
#define MONO_SIZEOF_JIT_INFO (offsetof (struct _MonoJitInfo, clauses))
+typedef struct {
+ gpointer *static_data; /* Used to free the static data without going through the MonoAppContext object itself. */
+ uint32_t gc_handle;
+} ContextStaticData;
+
struct _MonoAppContext {
MonoObject obj;
gint32 domain_id;
gint32 context_id;
gpointer *static_data;
+ ContextStaticData *data;
};
/* Lock-free allocator */
* i.e. if both are taken by the same thread, the loader lock
* must taken first.
*/
- mono_mutex_t lock;
+ MonoCoopMutex lock;
MonoMemPool *mp;
MonoCodeManager *code_mp;
/*
/* Maps MonoMethod* to weak links to DynamicMethod objects */
GHashTable *method_to_dyn_method;
+ /* <ThrowUnobservedTaskExceptions /> support */
+ gboolean throw_unobserved_task_exceptions;
+
guint32 execution_context_field_offset;
};
mono_jit_info_set_generic_sharing_context (MonoJitInfo *ji, MonoGenericSharingContext *gsctx);
char *
-mono_make_shadow_copy (const char *filename);
+mono_make_shadow_copy (const char *filename, MonoError *error);
gboolean
mono_is_shadow_copy_enabled (MonoDomain *domain, const gchar *dir_name);
MonoString *
ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid);
+MonoBoolean
+ves_icall_System_CLRConfig_CheckThrowUnobservedTaskExceptions (void);
+
MonoAssembly *
mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *status);
mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointer data, guint32 *bitmap);
MonoReflectionAssembly *
-mono_try_assembly_resolve (MonoDomain *domain, MonoString *fname, MonoAssembly *requesting, gboolean refonly);
+mono_try_assembly_resolve (MonoDomain *domain, MonoString *fname, MonoAssembly *requesting, gboolean refonly, MonoError *error);
MonoAssembly *
mono_domain_assembly_postload_search (MonoAssemblyName *aname, MonoAssembly *requesting, gboolean refonly);
MonoImageOpenStatus *status,
gboolean refonly);
-void mono_set_private_bin_path_from_config (MonoDomain *domain);
+void mono_domain_set_options_from_config (MonoDomain *domain);
int mono_framework_version (void);
void mono_enable_debug_domain_unload (gboolean enable);
+MonoReflectionAssembly *
+mono_domain_try_type_resolve_checked (MonoDomain *domain, char *name, MonoObject *tb, MonoError *error);
+
+void
+mono_runtime_init_checked (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadAttachCB attach_cb, MonoError *error);
+
+void
+mono_context_init_checked (MonoDomain *domain, MonoError *error);
+
#endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */