1 #ifndef __MONO_OBJECT_INTERNALS_H__
2 #define __MONO_OBJECT_INTERNALS_H__
4 #include <mono/metadata/object.h>
5 #include <mono/metadata/reflection.h>
6 #include <mono/io-layer/io-layer.h>
10 #define mono_assert(expr) G_STMT_START{ \
14 char *msg = g_strdup_printf ("file %s: line %d (%s): " \
15 "assertion failed: (%s)", __FILE__, __LINE__, \
16 __PRETTY_FUNCTION__, #expr); \
17 ex = mono_get_exception_execution_engine (msg); \
19 mono_raise_exception (ex); \
22 #define mono_assert_not_reached() G_STMT_START{ \
24 char *msg = g_strdup_printf ("file %s: line %d (%s): " \
25 "should not be reached", __FILE__, __LINE__, __PRETTY_FUNCTION__); \
26 ex = mono_get_exception_execution_engine (msg); \
28 mono_raise_exception (ex); \
31 #define mono_assert(expr) G_STMT_START{ \
35 char *msg = g_strdup_printf ("file %s: line %d: " \
36 "assertion failed: (%s)", __FILE__, __LINE__, \
38 ex = mono_get_exception_execution_engine (msg); \
40 mono_raise_exception (ex); \
43 #define mono_assert_not_reached() G_STMT_START{ \
45 char *msg = g_strdup_printf ("file %s: line %d): " \
46 "should not be reached", __FILE__, __LINE__); \
47 ex = mono_get_exception_execution_engine (msg); \
49 mono_raise_exception (ex); \
53 #define mono_assert(expr) g_assert(expr)
54 #define mono_assert_not_reached() g_assert_not_reached()
57 #define MONO_CHECK_ARG(arg, expr) G_STMT_START{ \
61 char *msg = g_strdup_printf ("assertion `%s' failed", \
63 if (arg) {} /* check if the name exists */ \
64 ex = mono_get_exception_argument (#arg, msg); \
66 mono_raise_exception (ex); \
69 #define MONO_CHECK_ARG_NULL(arg) G_STMT_START{ \
73 if (arg) {} /* check if the name exists */ \
74 ex = mono_get_exception_argument_null (#arg); \
75 mono_raise_exception (ex); \
79 /* 16 == default capacity */
80 #define mono_stringbuilder_capacity(sb) ((sb)->str ? ((sb)->str->length) : 16)
85 } MonoMarshalByRefObject;
87 /* This is a copy of System.AppDomain */
88 struct _MonoAppDomain {
89 MonoMarshalByRefObject mbr;
97 MonoString *cached_str;
109 } MonoArgumentHandle;
112 MonoMethodSignature *sig;
118 struct _MonoException {
120 MonoArray *trace_ips;
121 MonoObject *inner_ex;
123 MonoString *help_link;
124 MonoString *class_name;
125 MonoString *stack_trace;
126 MonoString *remote_stack_trace;
127 gint32 remote_stack_index;
134 } MonoSystemException;
137 MonoSystemException base;
138 MonoString *param_name;
139 } MonoArgumentException;
142 MonoSystemException base;
144 MonoString *type_name;
145 } MonoTypeLoadException;
149 MonoObject *async_state;
151 MonoObject *async_delegate;
153 MonoBoolean sync_completed;
154 MonoBoolean completed;
155 MonoBoolean endinvoke_called;
156 MonoObject *async_callback;
157 MonoObject *execution_context;
158 MonoObject *original_context;
162 MonoMarshalByRefObject object;
164 MonoBoolean disposed;
167 /* This is a copy of System.Runtime.Remoting.Messaging.CallType */
170 CallType_BeginInvoke = 1,
171 CallType_EndInvoke = 2,
175 struct _MonoReflectionType {
182 MonoReflectionType *class_to_proxy;
184 MonoObject *unwrapped_server;
185 gint32 target_domain_id;
186 MonoString *target_uri;
192 MonoRemoteClass *remote_class;
193 MonoBoolean custom_type_info;
194 } MonoTransparentProxy;
198 MonoReflectionMethod *method;
201 MonoArray *arg_types;
205 MonoAsyncResult *async_result;
212 gint32 native_offset;
213 MonoReflectionMethod *method;
214 MonoString *filename;
217 MonoString *internal_method_name;
222 int lock_thread_id; /* to be used as the pre-shifted thread id in thin locks */
224 MonoArray *cached_culture_info;
226 MonoBoolean threadpool_thread;
230 MonoException *abort_exc;
231 MonoObject *abort_state;
232 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 */
235 gpointer *static_data;
238 MonoAppContext *current_appcontext;
240 MonoObject *start_obj;
241 GSList *appdomain_refs;
242 MonoBoolean interruption_requested;
243 gpointer suspend_event;
244 gpointer suspended_event;
245 gpointer resume_event;
246 MonoObject *synch_lock;
247 guint8* serialized_culture_info;
248 guint32 serialized_culture_info_len;
249 guint8* serialized_ui_culture_info;
250 guint32 serialized_ui_culture_info_len;
251 MonoObject *execution_context;
253 * These fields are used to avoid having to increment corlib versions
254 * when a new field is added to the unmanaged MonoThread structure.
256 MonoBoolean thread_dump_requested;
257 gpointer end_stack; /* This is only used when running in the debugger. */
267 MonoReflectionType *type;
269 } MonoSerializationEntry;
273 MonoObject *additional;
274 } MonoStreamingContext;
278 MonoBoolean readOnly;
279 MonoString *AMDesignator;
280 MonoString *PMDesignator;
281 MonoString *DateSeparator;
282 MonoString *TimeSeparator;
283 MonoString *ShortDatePattern;
284 MonoString *LongDatePattern;
285 MonoString *ShortTimePattern;
286 MonoString *LongTimePattern;
287 MonoString *MonthDayPattern;
288 MonoString *YearMonthPattern;
289 MonoString *FullDateTimePattern;
290 MonoString *RFC1123Pattern;
291 MonoString *SortableDateTimePattern;
292 MonoString *UniversalSortableDateTimePattern;
293 guint32 FirstDayOfWeek;
294 MonoObject *Calendar;
295 guint32 CalendarWeekRule;
296 MonoArray *AbbreviatedDayNames;
298 MonoArray *MonthNames;
299 MonoArray *AbbreviatedMonthNames;
300 MonoArray *ShortDatePatterns;
301 MonoArray *LongDatePatterns;
302 MonoArray *ShortTimePatterns;
303 MonoArray *LongTimePatterns;
304 } MonoDateTimeFormatInfo;
309 MonoBoolean readOnly;
310 MonoString *decimalFormats;
311 MonoString *currencyFormats;
312 MonoString *percentFormats;
313 MonoString *digitPattern;
314 MonoString *zeroPattern;
315 gint32 currencyDecimalDigits;
316 MonoString *currencyDecimalSeparator;
317 MonoString *currencyGroupSeparator;
318 MonoArray *currencyGroupSizes;
319 gint32 currencyNegativePattern;
320 gint32 currencyPositivePattern;
321 MonoString *currencySymbol;
322 MonoString *naNSymbol;
323 MonoString *negativeInfinitySymbol;
324 MonoString *negativeSign;
325 guint32 numberDecimalDigits;
326 MonoString *numberDecimalSeparator;
327 MonoString *numberGroupSeparator;
328 MonoArray *numberGroupSizes;
329 gint32 numberNegativePattern;
330 gint32 percentDecimalDigits;
331 MonoString *percentDecimalSeparator;
332 MonoString *percentGroupSeparator;
333 MonoArray *percentGroupSizes;
334 gint32 percentNegativePattern;
335 gint32 percentPositivePattern;
336 MonoString *percentSymbol;
337 MonoString *perMilleSymbol;
338 MonoString *positiveInfinitySymbol;
339 MonoString *positiveSign;
340 } MonoNumberFormatInfo;
345 MonoString *icu_name;
346 gpointer ICU_collator;
351 MonoBoolean is_read_only;
354 gint32 specific_lcid;
355 gint32 datetime_index;
357 MonoBoolean use_user_override;
358 MonoNumberFormatInfo *number_format;
359 MonoDateTimeFormatInfo *datetime_format;
360 MonoObject *textinfo;
362 MonoString *displayname;
363 MonoString *englishname;
364 MonoString *nativename;
365 MonoString *iso3lang;
366 MonoString *iso2lang;
367 MonoString *icu_name;
368 MonoString *win3lang;
369 MonoCompareInfo *compareinfo;
370 const gint32 *calendar_data;
371 const void* text_info_data;
377 MonoString *iso2name;
378 MonoString *iso3name;
379 MonoString *win3name;
380 MonoString *english_name;
381 MonoString *currency_symbol;
382 MonoString *iso_currency_symbol;
383 MonoString *currency_english_name;
394 /* used to free a dynamic method */
395 typedef void (*MonoFreeMethodFunc) (MonoDomain *domain, MonoMethod *method);
397 /* Used to initialize the method pointers inside vtables */
398 typedef gboolean (*MonoInitVTableFunc) (MonoVTable *vtable);
400 /* remoting and async support */
403 mono_async_result_new (MonoDomain *domain, HANDLE handle,
404 MonoObject *state, gpointer data);
407 mono_wait_handle_new (MonoDomain *domain, HANDLE handle);
410 mono_message_init (MonoDomain *domain, MonoMethodMessage *this_obj,
411 MonoReflectionMethod *method, MonoArray *out_args);
414 mono_remoting_invoke (MonoObject *real_proxy, MonoMethodMessage *msg,
415 MonoObject **exc, MonoArray **out_args);
418 mono_message_invoke (MonoObject *target, MonoMethodMessage *msg,
419 MonoObject **exc, MonoArray **out_args);
422 mono_method_call_message_new (MonoMethod *method, gpointer *params, MonoMethod *invoke,
423 MonoDelegate **cb, MonoObject **state);
426 mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoArray *out_args);
429 mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr);
432 mono_class_get_allocation_ftn (MonoVTable *vtable, gboolean for_box, gboolean *pass_size_in_words);
435 mono_runtime_free_method (MonoDomain *domain, MonoMethod *method);
437 /* runtime initialization functions */
438 typedef void (*MonoExceptionFunc) (MonoException *ex);
441 mono_install_handler (MonoExceptionFunc func);
444 mono_install_runtime_invoke (MonoInvokeFunc func);
447 mono_install_compile_method (MonoCompileFunc func);
450 mono_install_free_method (MonoFreeMethodFunc func);
453 mono_install_init_vtable (MonoInitVTableFunc func);
456 mono_type_initialization_init (void);
459 mono_thread_get_tls_key (void);
462 mono_thread_get_tls_offset (void);
465 mono_domain_get_tls_key (void);
468 mono_domain_get_tls_offset (void);
470 /* Reflection and Reflection.Emit support */
473 * The following structure must match the C# implementation in our corlib.
476 struct _MonoReflectionMethod {
480 MonoReflectionType *reftype;
483 typedef struct _MonoReflectionGenericMethod MonoReflectionGenericMethod;
484 struct _MonoReflectionGenericMethod {
485 MonoReflectionMethod method;
488 struct _MonoDelegate {
490 MonoObject *target_type;
492 MonoString *method_name;
494 gpointer delegate_trampoline;
495 MonoReflectionMethod *method_info;
498 typedef struct _MonoMulticastDelegate MonoMulticastDelegate;
499 struct _MonoMulticastDelegate {
500 MonoDelegate delegate;
501 MonoMulticastDelegate *prev;
504 struct _MonoReflectionField {
507 MonoClassField *field;
509 MonoReflectionType *type;
513 struct _MonoReflectionProperty {
516 MonoProperty *property;
519 struct _MonoReflectionEvent {
527 MonoReflectionType *ClassImpl;
528 MonoObject *DefaultValueImpl;
529 MonoObject *MemberImpl;
530 MonoString *NameImpl;
533 MonoObject *MarshalAsImpl;
534 } MonoReflectionParameter;
536 struct _MonoReflectionMethodBody {
541 MonoBoolean init_locals;
542 guint32 local_var_sig_token;
546 struct _MonoReflectionAssembly {
548 MonoAssembly *assembly;
549 MonoObject *resolve_event_holder;
551 MonoObject *evidence; /* Evidence */
552 MonoObject *minimum; /* PermissionSet - for SecurityAction.RequestMinimum */
553 MonoObject *optional; /* PermissionSet - for SecurityAction.RequestOptional */
554 MonoObject *refuse; /* PermissionSet - for SecurityAction.RequestRefuse */
555 MonoObject *granted; /* PermissionSet - for the resolved assembly granted permissions */
556 MonoObject *denied; /* PermissionSet - for the resolved assembly denied permissions */
558 MonoBoolean from_byte_array;
563 MonoReflectionType *utype;
569 MonoReflectionType *parent;
570 MonoReflectionType *ret;
577 MonoReflectionType *parent;
579 MonoReflectionMethod *get;
580 MonoReflectionMethod *set;
585 MonoReflectionType *declaring_type;
586 MonoReflectionType *reflected_type;
588 MonoReflectionMethod *add_method;
589 MonoReflectionMethod *remove_method;
590 MonoReflectionMethod *raise_method;
592 MonoArray *other_methods;
597 MonoString *name_space;
598 MonoReflectionType *etype;
599 MonoReflectionType *nested_in;
600 MonoReflectionAssembly *assembly;
602 MonoBoolean isprimitive;
608 } MonoReflectionILTokenInfo;
617 MonoArray *ex_handlers;
618 gint32 num_token_fixups;
619 MonoArray *token_fixups;
620 } MonoReflectionILGen;
627 } MonoILExceptionInfo;
630 MonoReflectionType *extype;
634 gint32 filter_offset;
635 } MonoILExceptionBlock;
639 MonoReflectionType *catch_type;
640 gint32 filter_offset;
644 gint32 handler_offset;
645 gint32 handler_length;
646 } MonoReflectionExceptionHandlingClause;
650 MonoReflectionType *local_type;
651 MonoBoolean is_pinned;
653 } MonoReflectionLocalVariableInfo;
657 * Must have the same layout as MonoReflectionLocalVariableInfo, since
658 * LocalBuilder inherits from it under net 2.0.
661 MonoReflectionType *type;
662 MonoBoolean is_pinned;
665 } MonoReflectionLocalBuilder;
674 MonoString *marshaltype;
675 MonoReflectionType *marshaltyperef;
677 MonoBoolean has_size;
678 } MonoReflectionMarshal;
685 MonoReflectionMarshal *marshal_info;
689 MonoObject *def_value;
690 } MonoReflectionParamBuilder;
695 MonoReflectionILGen *ilgen;
696 MonoArray *parameters;
704 MonoBoolean init_locals;
705 MonoArray *param_modreq;
706 MonoArray *param_modopt;
707 MonoArray *permissions;
708 } MonoReflectionCtorBuilder;
713 MonoReflectionType *rtype;
714 MonoArray *parameters;
720 MonoReflectionILGen *ilgen;
724 MonoReflectionMethod *override_method;
726 MonoString *dllentry;
731 MonoBoolean init_locals;
732 MonoGenericContainer *generic_container;
733 MonoArray *generic_params;
734 MonoArray *return_modreq;
735 MonoArray *return_modopt;
736 MonoArray *param_modreq;
737 MonoArray *param_modopt;
738 MonoArray *permissions;
739 } MonoReflectionMethodBuilder;
744 MonoReflectionType *parent;
745 MonoReflectionType *ret;
746 MonoArray *parameters;
750 } MonoReflectionArrayMethod;
755 MonoString *filename;
758 } MonoReflectionResource;
765 } MonoReflectionWin32Resource;
770 } MonoReflectionPermissionSet;
773 MonoReflectionAssembly assembly;
774 MonoDynamicAssembly *dynamic_assembly;
775 MonoReflectionMethod *entry_point;
780 MonoArray *resources;
781 MonoArray *public_key;
787 MonoBoolean delay_sign;
789 MonoArray *loaded_modules;
790 MonoArray *win32_resources;
792 MonoArray *permissions_minimum;
793 MonoArray *permissions_optional;
794 MonoArray *permissions_refused;
797 MonoBoolean corlib_internal;
798 MonoArray *type_forwarders;
799 } MonoReflectionAssemblyBuilder;
804 MonoReflectionType *type;
806 MonoObject *def_value;
809 MonoReflectionType *typeb;
812 MonoReflectionMarshal *marshal_info;
813 MonoClassField *handle;
816 } MonoReflectionFieldBuilder;
822 MonoReflectionType *type;
823 MonoArray *parameters;
825 MonoObject *def_value;
826 MonoReflectionMethodBuilder *set_method;
827 MonoReflectionMethodBuilder *get_method;
829 } MonoReflectionPropertyBuilder;
831 struct _MonoReflectionModule {
834 MonoReflectionAssembly *assembly;
837 MonoString *scopename;
838 MonoBoolean is_resource;
843 MonoReflectionModule module;
844 MonoDynamicImage *dynamic_image;
850 MonoReflectionAssemblyBuilder *assemblyb;
851 MonoArray *global_methods;
852 MonoArray *global_fields;
854 MonoArray *resources;
855 } MonoReflectionModuleBuilder;
858 MonoReflectionType type;
861 MonoReflectionType *parent;
862 MonoReflectionType *nesting_type;
863 MonoArray *interfaces;
867 MonoArray *properties;
875 MonoReflectionModuleBuilder *module;
878 MonoGenericContainer *generic_container;
879 MonoArray *generic_params;
880 MonoArray *permissions;
881 MonoReflectionType *created;
882 } MonoReflectionTypeBuilder;
885 MonoReflectionType type;
886 MonoReflectionTypeBuilder *tbuilder;
887 MonoReflectionMethodBuilder *mbuilder;
890 MonoReflectionType *base_type;
891 MonoArray *iface_constraints;
894 } MonoReflectionGenericParam;
896 typedef struct _MonoReflectionGenericClass MonoReflectionGenericClass;
897 struct _MonoReflectionGenericClass {
898 MonoReflectionType type;
899 MonoReflectionType *generic_type;
906 MonoString *codebase;
907 gint32 major, minor, build, revision;
908 MonoObject *cultureInfo;
912 MonoArray *publicKey;
914 guint32 versioncompat;
916 } MonoReflectionAssemblyName;
921 MonoReflectionType *type;
922 MonoReflectionTypeBuilder *typeb;
924 MonoReflectionMethodBuilder *add_method;
925 MonoReflectionMethodBuilder *remove_method;
926 MonoReflectionMethodBuilder *raise_method;
927 MonoArray *other_methods;
930 } MonoReflectionEventBuilder;
934 MonoReflectionMethod *ctor;
936 } MonoReflectionCustomAttr;
943 MonoString *entry_point;
944 MonoBoolean exact_spelling;
945 MonoBoolean preserve_sig;
946 MonoBoolean set_last_error;
947 MonoBoolean best_fit_mapping;
948 MonoBoolean throw_on_unmappable;
949 } MonoReflectionDllImportAttribute;
955 MonoBoolean set_last_error;
956 MonoBoolean best_fit_mapping;
957 MonoBoolean throw_on_unmappable;
958 } MonoReflectionUnmanagedFunctionPointerAttribute;
964 MonoReflectionType *rtype;
965 MonoArray *parameters;
968 MonoReflectionModule *module;
969 MonoBoolean skip_visibility;
970 MonoBoolean init_locals;
971 MonoReflectionILGen *ilgen;
974 } MonoReflectionDynamicMethod;
978 MonoReflectionModuleBuilder *module;
979 MonoArray *arguments;
981 MonoReflectionType *return_type;
983 guint32 unmanaged_call_conv;
984 } MonoReflectionSigHelper;
987 RESOURCE_LOCATION_EMBEDDED = 1,
988 RESOURCE_LOCATION_ANOTHER_ASSEMBLY = 2,
989 RESOURCE_LOCATION_IN_MANIFEST = 4
994 MonoReflectionAssembly *assembly;
995 MonoString *filename;
997 } MonoManifestResourceInfo;
999 /* Keep in sync with System.GenericParameterAttributes */
1001 GENERIC_PARAMETER_ATTRIBUTE_NON_VARIANT = 0,
1002 GENERIC_PARAMETER_ATTRIBUTE_COVARIANT = 1,
1003 GENERIC_PARAMETER_ATTRIBUTE_CONTRAVARIANT = 2,
1004 GENERIC_PARAMETER_ATTRIBUTE_VARIANCE_MASK = 3,
1006 GENERIC_PARAMETER_ATTRIBUTE_NO_SPECIAL_CONSTRAINT = 0,
1007 GENERIC_PARAMETER_ATTRIBUTE_REFERENCE_TYPE_CONSTRAINT = 4,
1008 GENERIC_PARAMETER_ATTRIBUTE_VALUE_TYPE_CONSTRAINT = 8,
1009 GENERIC_PARAMETER_ATTRIBUTE_CONSTRUCTOR_CONSTRAINT = 16,
1010 GENERIC_PARAMETER_ATTRIBUTE_SPECIAL_CONSTRAINTS_MASK = 28
1011 } GenericParameterAttributes;
1013 void mono_image_create_pefile (MonoReflectionModuleBuilder *module, HANDLE file);
1014 void mono_image_basic_init (MonoReflectionAssemblyBuilder *assembly);
1015 MonoReflectionModule * mono_image_load_module (MonoReflectionAssemblyBuilder *assembly, MonoString *file_name);
1016 guint32 mono_image_insert_string (MonoReflectionModuleBuilder *module, MonoString *str);
1017 guint32 mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj, gboolean create_methodspec);
1018 guint32 mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, MonoArray *opt_param_types);
1019 void mono_image_module_basic_init (MonoReflectionModuleBuilder *module);
1021 void mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb);
1023 void mono_reflection_create_internal_class (MonoReflectionTypeBuilder *tb);
1025 void mono_reflection_setup_generic_class (MonoReflectionTypeBuilder *tb);
1027 void mono_reflection_create_generic_class (MonoReflectionTypeBuilder *tb);
1029 MonoReflectionType* mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb);
1031 void mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides, int *num_overrides);
1033 void mono_reflection_create_dynamic_method (MonoReflectionDynamicMethod *m);
1035 void mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam);
1038 mono_class_bind_generic_parameters (MonoType *type, int type_argc, MonoType **types);
1040 mono_reflection_bind_generic_parameters (MonoReflectionType *type, int type_argc, MonoType **types);
1041 MonoReflectionMethod*
1042 mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *method, MonoArray *types);
1044 mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, MonoArray *methods, MonoArray *ctors, MonoArray *fields, MonoArray *properties, MonoArray *events);
1045 MonoReflectionEvent *
1046 mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb);
1048 MonoArray *mono_reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig);
1050 MonoArray *mono_reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig);
1052 MonoReflectionMarshal* mono_reflection_marshal_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec);
1055 mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, MonoClass **handle_class);
1058 mono_reflection_call_is_assignable_to (MonoClass *klass, MonoClass *oklass);
1061 mono_image_build_metadata (MonoReflectionModuleBuilder *module);
1064 mono_get_constant_value_from_blob (MonoDomain* domain, MonoTypeEnum type, const char *blob, void *value);
1067 mono_release_type_locks (MonoThread *thread);
1070 mono_array_clone_in_domain (MonoDomain *domain, MonoArray *array);
1073 mono_array_full_copy (MonoArray *src, MonoArray *dest);
1076 mono_remote_class_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, MonoRealProxy *real_proxy);
1078 MonoMethodSignature*
1079 mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 token, MonoGenericContext *context);
1082 mono_upgrade_remote_class (MonoDomain *domain, MonoObject *tproxy, MonoClass *klass);
1085 mono_get_addr_from_ftnptr (gpointer descr);
1088 mono_nullable_init (guint8 *buf, MonoObject *value, MonoClass *klass);
1091 mono_nullable_box (guint8 *buf, MonoClass *klass);
1093 #endif /* __MONO_OBJECT_INTERNALS_H__ */