-/*
+/**
+ * \file
* 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.
#include <mono/metadata/mono-hash.h>
#include <mono/utils/mono-compiler.h>
#include <mono/utils/mono-internal-hash.h>
-#include <mono/io-layer/io-layer.h>
#include <mono/metadata/mempool-internals.h>
/*
int thunks_size;
} MonoThunkJitInfo;
+typedef struct {
+ guint8 *unw_info;
+ int unw_info_len;
+} MonoUnwindJitInfo;
+
typedef enum {
JIT_INFO_NONE = 0,
JIT_INFO_HAS_GENERIC_JIT_INFO = (1 << 0),
JIT_INFO_HAS_TRY_BLOCK_HOLES = (1 << 1),
JIT_INFO_HAS_ARCH_EH_INFO = (1 << 2),
- JIT_INFO_HAS_THUNK_INFO = (1 << 3)
+ JIT_INFO_HAS_THUNK_INFO = (1 << 3),
+ /*
+ * If this is set, the unwind info is stored in the structure, instead of being pointed to by the
+ * 'unwind_info' field.
+ */
+ JIT_INFO_HAS_UNWIND_INFO = (1 << 4)
} MonoJitInfoFlags;
struct _MonoJitInfo {
gboolean has_try_block_holes:1;
gboolean has_arch_eh_info:1;
gboolean has_thunk_info:1;
+ gboolean has_unwind_info:1;
gboolean from_aot:1;
gboolean from_llvm:1;
gboolean dbg_attrs_inited:1;
MonoObject *ephemeron_tombstone;
/* new MonoType [0] */
MonoArray *empty_types;
+ MonoString *empty_string;
/*
* The fields between FIRST_GC_TRACKED and LAST_GC_TRACKED are roots, but
* not object references.
/* hashtables for Reflection handles */
MonoGHashTable *type_hash;
MonoGHashTable *refobject_hash;
- /*
- * A GC-tracked array to keep references to the static fields of types.
- * See note [Domain Static Data Array].
- */
- gpointer *static_data_array;
/* maps class -> type initialization exception object */
MonoGHashTable *type_init_exception_hash;
/* maps delegate trampoline addr -> delegate object */
/* Needed by Thread:GetDomainID() */
gint32 domain_id;
gint32 shadow_serial;
- unsigned char inet_family_hint; // used in socket-io.c as a cache
GSList *domain_assemblies;
MonoAssembly *entry_assembly;
char *friendly_name;
/* Information maintained by the JIT engine */
gpointer runtime_info;
-
- /*thread pool jobs, used to coordinate shutdown.*/
- volatile int threadpool_jobs;
- gpointer cleanup_semaphore;
/* Contains the compiled runtime invoke wrapper used by finalizers */
gpointer finalize_runtime_invoke;
typedef struct {
const char runtime_version [12];
const char framework_version [4];
- const AssemblyVersionSet version_sets [4];
+ const AssemblyVersionSet version_sets [5];
} MonoRuntimeInfo;
#define mono_domain_assemblies_lock(domain) mono_locks_os_acquire(&(domain)->assemblies_lock, DomainAssembliesLock)
void
mono_domain_set_internal_with_options (MonoDomain *domain, gboolean migrate_exception);
+gboolean
+mono_domain_set_config_checked (MonoDomain *domain, const char *base_dir, const char *config_file_name, MonoError *error);
+
MonoTryBlockHoleTableJitInfo*
mono_jit_info_get_try_block_hole_table_info (MonoJitInfo *ji);
MonoThunkJitInfo*
mono_jit_info_get_thunk_info (MonoJitInfo *ji);
+MonoUnwindJitInfo*
+mono_jit_info_get_unwind_info (MonoJitInfo *ji);
+
/*
* Installs a new function which is used to return a MonoJitInfo for a method inside
* an AOT module.
void
mono_jit_code_hash_init (MonoInternalHashTable *jit_code_hash);
-MonoAppDomain *
-ves_icall_System_AppDomain_getCurDomain (void);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_getRootDomain (void);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_createDomain (MonoString *friendly_name,
- MonoAppDomainSetup *setup);
-
-MonoObject *
-ves_icall_System_AppDomain_GetData (MonoAppDomain *ad,
- MonoString *name);
-
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssemblyRaw (MonoAppDomain *ad,
- MonoArray *raw_assembly,
- MonoArray *raw_symbol_store,
- MonoObject *evidence,
- MonoBoolean refonly);
-
-void
-ves_icall_System_AppDomain_SetData (MonoAppDomain *ad,
- MonoString *name,
- MonoObject *data);
-
-MonoAppDomainSetup *
-ves_icall_System_AppDomain_getSetup (MonoAppDomain *ad);
-
-MonoString *
-ves_icall_System_AppDomain_getFriendlyName (MonoAppDomain *ad);
-
-MonoArray *
-ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad,
- MonoBoolean refonly);
-
-MonoReflectionAssembly *
-ves_icall_System_Reflection_Assembly_LoadFrom (MonoString *fname,
- MonoBoolean refonly);
-
-MonoReflectionAssembly *
-ves_icall_System_AppDomain_LoadAssembly (MonoAppDomain *ad,
- MonoString *assRef,
- MonoObject *evidence,
- MonoBoolean refonly);
-
-gboolean
-ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id);
-
-void
-ves_icall_System_AppDomain_InternalUnload (gint32 domain_id);
-
-void
-ves_icall_System_AppDomain_DoUnhandledException (MonoException *exc);
-
-gint32
-ves_icall_System_AppDomain_ExecuteAssembly (MonoAppDomain *ad,
- MonoReflectionAssembly *refass,
- MonoArray *args);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_InternalSetDomain (MonoAppDomain *ad);
-
-MonoAppDomain *
-ves_icall_System_AppDomain_InternalSetDomainByID (gint32 domainid);
-
-void
-ves_icall_System_AppDomain_InternalPushDomainRef (MonoAppDomain *ad);
-
-void
-ves_icall_System_AppDomain_InternalPushDomainRefByID (gint32 domain_id);
-
-void
-ves_icall_System_AppDomain_InternalPopDomainRef (void);
-
-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);
-
-MonoBoolean
-ves_icall_System_CLRConfig_CheckThrowUnobservedTaskExceptions (void);
-
MonoAssembly *
mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *status);
gboolean
mono_runtime_get_no_exec (void);
+void
+mono_domain_parse_assembly_bindings (MonoDomain *domain, int amajor, int aminor, gchar *domain_config_file_name);
+
gboolean
mono_assembly_name_parse (const char *name, MonoAssemblyName *aname);
MonoImageOpenStatus *status,
gboolean refonly);
-MONO_API void
-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, MonoError *error);
+MonoAssembly *
+mono_try_assembly_resolve (MonoDomain *domain, const char *fname, MonoAssembly *requesting, gboolean refonly, MonoError *error);
MonoAssembly *
mono_domain_assembly_postload_search (MonoAssemblyName *aname, MonoAssembly *requesting, gboolean refonly);
mono_context_init_checked (MonoDomain *domain, MonoError *error);
gboolean
-mono_assembly_get_reference_assembly_attribute (MonoAssembly *assembly, MonoError *error);
+mono_assembly_has_reference_assembly_attribute (MonoAssembly *assembly, MonoError *error);
+GPtrArray*
+mono_domain_get_assemblies (MonoDomain *domain, gboolean refonly);
#endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */