X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fobject-internals.h;h=06d558d60db8eaf4658ff279733a406abd67b117;hb=3fd54893bc792eee42164bfb605b418105a92f92;hp=fb76fb8a72f53055f229ff31089b5021f0e33cfd;hpb=c6f75c367aba6c14fb86861853ca6009978c0f9b;p=mono.git diff --git a/mono/metadata/object-internals.h b/mono/metadata/object-internals.h index fb76fb8a72f..06d558d60db 100644 --- a/mono/metadata/object-internals.h +++ b/mono/metadata/object-internals.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "mono/utils/mono-compiler.h" #include "mono/utils/mono-error.h" @@ -262,6 +263,9 @@ struct _MonoReflectionType { MonoType *type; }; +/* Safely access System.Type from native code */ +TYPED_HANDLE_DECL (MonoReflectionType); + /* This corresponds to System.RuntimeType */ typedef struct { MonoReflectionType type; @@ -353,7 +357,6 @@ struct _MonoInternalThread { MonoException *abort_exc; int abort_state_handle; guint64 tid; /* This is accessed as a gsize in the code (so it can hold a 64bit pointer on systems that need it), but needs to reserve 64 bits of space on all machines as it corresponds to a field in managed code */ - HANDLE start_notify; gpointer stack_ptr; gpointer *static_data; void *thread_info; /*This is MonoThreadInfo*, but to simplify dependencies, let's make it a void* here. */ @@ -376,14 +379,15 @@ struct _MonoInternalThread { gpointer interrupt_on_stop; gsize flags; gpointer thread_pinning_ref; + gsize abort_protected_block_count; /* * These fields are used to avoid having to increment corlib versions * when a new field is added to this structure. * Please synchronize any changes with InternalThread in Thread.cs, i.e. add the * same field there. */ - gpointer unused1; - gpointer unused2; + gsize unused1; + gsize unused2; }; struct _MonoThread { @@ -391,6 +395,7 @@ struct _MonoThread { struct _MonoInternalThread *internal_thread; MonoObject *start_obj; MonoException *pending_exception; + gint32 priority; }; typedef struct { @@ -583,6 +588,7 @@ typedef struct { void (*mono_raise_exception_with_ctx) (MonoException *ex, MonoContext *ctx); gboolean (*mono_exception_walk_trace) (MonoException *ex, MonoInternalExceptionFrameWalk func, gpointer user_data); gboolean (*mono_install_handler_block_guard) (MonoThreadUnwindState *unwind_state); + gboolean (*mono_current_thread_has_handle_block_guard) (void); } MonoRuntimeExceptionHandlingCallbacks; /* used to free a dynamic method */ @@ -807,6 +813,9 @@ struct _MonoReflectionAssembly { MonoString *name; }; +/* Safely access System.Reflection.Assembly from native code */ +TYPED_HANDLE_DECL (MonoReflectionAssembly); + typedef struct { MonoReflectionType *utype; MonoArray *values; @@ -1096,6 +1105,9 @@ struct _MonoReflectionModule { guint32 token; }; +/* Safely access System.Reflection.Module from native code */ +TYPED_HANDLE_DECL (MonoReflectionModule); + typedef struct { MonoReflectionModule module; MonoDynamicImage *dynamic_image; @@ -1328,35 +1340,29 @@ typedef struct { } CattrNamedArg; gboolean mono_image_create_pefile (MonoReflectionModuleBuilder *module, HANDLE file, MonoError *error); -void mono_image_basic_init (MonoReflectionAssemblyBuilder *assembly); -MonoReflectionModule * mono_image_load_module_dynamic (MonoReflectionAssemblyBuilder *assembly, MonoString *file_name, MonoError *error); guint32 mono_image_insert_string (MonoReflectionModuleBuilder *module, MonoString *str); guint32 mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj, gboolean create_methodspec, gboolean register_token, MonoError *error); guint32 mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, MonoArray *opt_param_types, MonoError *error); -void mono_image_module_basic_init (MonoReflectionModuleBuilder *module); void mono_image_register_token (MonoDynamicImage *assembly, guint32 token, MonoObject *obj); void mono_dynamic_image_free (MonoDynamicImage *image); void mono_dynamic_image_free_image (MonoDynamicImage *image); -void mono_image_set_wrappers_type (MonoReflectionModuleBuilder *mb, MonoReflectionType *type); void mono_dynamic_image_release_gc_roots (MonoDynamicImage *image); void mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb); -void mono_reflection_create_internal_class (MonoReflectionTypeBuilder *tb); - -void mono_reflection_setup_generic_class (MonoReflectionTypeBuilder *tb); +MonoReflectionType* +ves_icall_TypeBuilder_create_runtime_class (MonoReflectionTypeBuilder *tb); -gboolean mono_reflection_create_generic_class (MonoReflectionTypeBuilder *tb, MonoError *error); - -MonoReflectionType* mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb); +void +ves_icall_TypeBuilder_setup_internal_class (MonoReflectionTypeBuilder *tb); void mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides, int *num_overrides, MonoError *error); -void mono_reflection_create_dynamic_method (MonoReflectionDynamicMethod *m); void mono_reflection_destroy_dynamic_method (MonoReflectionDynamicMethod *mb); -void mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam); -void mono_reflection_create_unmanaged_type (MonoReflectionType *type); +void +ves_icall_SymbolType_create_unmanaged_type (MonoReflectionType *type); + void mono_reflection_register_with_runtime (MonoReflectionType *type); void mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info, MonoError *error); @@ -1368,16 +1374,17 @@ MonoClass* mono_class_bind_generic_parameters (MonoClass *klass, int type_argc, MonoType **types, gboolean is_dynamic); MonoType* mono_reflection_bind_generic_parameters (MonoReflectionType *type, int type_argc, MonoType **types, MonoError *error); -MonoReflectionMethod* -mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *method, MonoArray *types); void mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, MonoArray *fields); + MonoReflectionEvent * -mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb); +ves_icall_TypeBuilder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb); -MonoArray *mono_reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig); +MonoArray * +ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelper *sig); -MonoArray *mono_reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig); +MonoArray * +ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelper *sig); MonoReflectionMarshalAsAttribute* mono_reflection_marshal_as_attribute_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec, MonoError *error); @@ -1387,18 +1394,12 @@ mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, gboolean gboolean mono_reflection_call_is_assignable_to (MonoClass *klass, MonoClass *oklass, MonoError *error); -gboolean -mono_reflection_is_valid_dynamic_token (MonoDynamicImage *image, guint32 token); - void ves_icall_System_Reflection_CustomAttributeData_ResolveArgumentsInternal (MonoReflectionMethod *method, MonoReflectionAssembly *assembly, gpointer data, guint32 data_length, MonoArray **ctor_args, MonoArray ** named_args); MonoType* mono_reflection_type_get_handle (MonoReflectionType *ref, MonoError *error); -void -mono_reflection_free_dynamic_generic_class (MonoGenericClass *gclass); - gboolean mono_image_build_metadata (MonoReflectionModuleBuilder *module, MonoError *error); @@ -1455,18 +1456,12 @@ mono_upgrade_remote_class (MonoDomain *domain, MonoObject *tproxy, MonoClass *kl void* mono_load_remote_field_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, void **res, MonoError *error); -MonoObject * -mono_load_remote_field_new_icall (MonoObject *this_obj, MonoClass *klass, MonoClassField *field); - MonoObject * mono_load_remote_field_new_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoError *error); gboolean mono_store_remote_field_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, void* val, MonoError *error); -void -mono_store_remote_field_new_icall (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoObject *arg); - gboolean mono_store_remote_field_new_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoObject *arg, MonoError *error); @@ -1754,7 +1749,67 @@ mono_runtime_exec_main_checked (MonoMethod *method, MonoArray *args, MonoError * int mono_runtime_try_exec_main (MonoMethod *method, MonoArray *args, MonoObject **exc); +MonoReflectionMethod* +ves_icall_MonoMethod_MakeGenericMethod_impl (MonoReflectionMethod *rmethod, MonoArray *types); + +gint32 +ves_icall_ModuleBuilder_getToken (MonoReflectionModuleBuilder *mb, MonoObject *obj, gboolean create_open_instance); -#endif /* __MONO_OBJECT_INTERNALS_H__ */ +gint32 +ves_icall_ModuleBuilder_getMethodToken (MonoReflectionModuleBuilder *mb, + MonoReflectionMethod *method, + MonoArray *opt_param_types); + +void +ves_icall_ModuleBuilder_WriteToFile (MonoReflectionModuleBuilder *mb, HANDLE file); + +void +ves_icall_ModuleBuilder_build_metadata (MonoReflectionModuleBuilder *mb); + +void +ves_icall_ModuleBuilder_RegisterToken (MonoReflectionModuleBuilder *mb, MonoObject *obj, guint32 token); + +MonoObject* +ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, guint32 token); + +void +ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb); + +MonoReflectionModule* +ves_icall_AssemblyBuilder_InternalAddModule (MonoReflectionAssemblyBuilder *ab, MonoString *fileName); + +void +ves_icall_TypeBuilder_create_generic_class (MonoReflectionTypeBuilder *tb); + +MonoArray* +ves_icall_CustomAttributeBuilder_GetBlob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *propValues, MonoArray *fields, MonoArray* fieldValues); + +void +ves_icall_DynamicMethod_create_dynamic_method (MonoReflectionDynamicMethod *mb); +MonoBoolean +ves_icall_TypeBuilder_get_IsGenericParameter (MonoReflectionTypeBuilder *tb); +void +ves_icall_EnumBuilder_setup_enum_type (MonoReflectionType *enumtype, + MonoReflectionType *t); + +MonoReflectionType* +ves_icall_ModuleBuilder_create_modified_type (MonoReflectionTypeBuilder *tb, MonoString *smodifiers); + +void +ves_icall_ModuleBuilder_basic_init (MonoReflectionModuleBuilder *moduleb); + +guint32 +ves_icall_ModuleBuilder_getUSIndex (MonoReflectionModuleBuilder *module, MonoString *str); + +void +ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilder *moduleb, MonoReflectionType *type); + +void +ves_icall_GenericTypeParameterBuilder_initialize_generic_parameter (MonoReflectionGenericParam *gparam); + +MonoReflectionMethod* +ves_icall_MethodBuilder_MakeGenericMethod (MonoReflectionMethod *rmethod, MonoArray *types); + +#endif /* __MONO_OBJECT_INTERNALS_H__ */