X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fdomain-internals.h;h=c9fb4add3dd46edb349dc33e980c637972a8d059;hb=f2dc087948dbcd319f276b6800c5496073d9d0a0;hp=b845fc2708e7186d19458c90c47ce86045dcdb94;hpb=b40bfda0e224a5c923cbd9fde1b09a36998880d9;p=mono.git diff --git a/mono/metadata/domain-internals.h b/mono/metadata/domain-internals.h index b845fc2708e..c9fb4add3dd 100644 --- a/mono/metadata/domain-internals.h +++ b/mono/metadata/domain-internals.h @@ -1,4 +1,5 @@ -/* +/** + * \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. @@ -13,7 +14,6 @@ #include #include #include -#include #include /* @@ -184,12 +184,22 @@ typedef struct { 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 { @@ -217,6 +227,7 @@ 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; @@ -315,6 +326,7 @@ struct _MonoDomain { 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. @@ -325,11 +337,6 @@ struct _MonoDomain { /* 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 */ @@ -385,10 +392,6 @@ struct _MonoDomain { /* 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; @@ -431,7 +434,7 @@ typedef struct { 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) @@ -530,6 +533,9 @@ mono_domain_unset (void); 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); @@ -539,6 +545,9 @@ mono_jit_info_get_arch_eh_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. @@ -549,99 +558,6 @@ void mono_install_jit_info_find_in_aot (MonoJitInfoFindInAot func); 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); @@ -654,6 +570,9 @@ mono_runtime_set_no_exec (gboolean val); 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); @@ -661,11 +580,8 @@ MonoImage *mono_assembly_open_from_bundle (const char *filename, 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); @@ -697,7 +613,9 @@ void 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__ */