#endif
#define MONO_CHECK_ARG(arg, expr) G_STMT_START{ \
- if (!(expr)) \
+ if (G_UNLIKELY (!(expr))) \
{ \
MonoException *ex; \
char *msg = g_strdup_printf ("assertion `%s' failed", \
}; }G_STMT_END
#define MONO_CHECK_ARG_NULL(arg) G_STMT_START{ \
- if (arg == NULL) \
+ if (G_UNLIKELY (arg == NULL)) \
{ \
MonoException *ex; \
if (arg) {} /* check if the name exists */ \
gint32 hresult;
MonoString *source;
MonoObject *_data;
+ MonoObject *captured_traces;
+ MonoArray *native_trace_ips;
};
typedef struct {
MonoMarshalByRefObject object;
gpointer iunknown;
GHashTable* itf_hash;
+ MonoObject *synchronization_context;
} MonoComObject;
typedef struct {
typedef enum {
MONO_THREAD_FLAG_DONT_MANAGE = 1, // Don't wait for or abort this thread
+ MONO_THREAD_FLAG_NAME_SET = 2, // Thread name set from managed code
} MonoThreadFlags;
struct _MonoInternalThread {
volatile int lock_thread_id; /* to be used as the pre-shifted thread id in thin locks. Used for appdomain_ref push/pop */
HANDLE handle;
MonoArray *cached_culture_info;
- gpointer unused1;
- MonoBoolean threadpool_thread;
gunichar2 *name;
guint32 name_len;
guint32 state;
gpointer jit_data;
void *thread_info; /*This is MonoThreadInfo*, but to simplify dependencies, let's make it a void* here. */
MonoAppContext *current_appcontext;
- int stack_size;
+ MonoException *pending_exception;
+ MonoThread *root_domain_thread;
+ MonoObject *_serialized_principal;
+ int _serialized_principal_version;
gpointer appdomain_refs;
/* This is modified using atomic ops, so keep it a gint32 */
gint32 interruption_requested;
gpointer suspended_event;
gpointer resume_event;
CRITICAL_SECTION *synch_cs;
+ MonoBoolean threadpool_thread;
MonoBoolean thread_dump_requested;
- gpointer end_stack; /* This is only used when running in the debugger. */
MonoBoolean thread_interrupt_requested;
+ gpointer end_stack; /* This is only used when running in the debugger. */
+ int stack_size;
guint8 apartment_state;
gint32 critical_region_level;
- guint32 unused0;
+ gint32 managed_id;
+ guint32 small_id;
MonoThreadManageCallback manage_callback;
- MonoException *pending_exception;
- MonoThread *root_domain_thread;
gpointer interrupt_on_stop;
gsize flags;
gpointer android_tid;
gpointer thread_pinning_ref;
- gint32 managed_id;
+ gint32 ignore_next_signal;
/*
* These fields are used to avoid having to increment corlib versions
- * when a new field is added to the unmanaged MonoThread structure.
+ * 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 unused0;
+ gpointer unused1;
+ gpointer unused2;
};
struct _MonoThread {
MonoObject *ec_to_set;
};
-typedef struct {
- MonoString *name;
- MonoReflectionType *type;
- MonoObject *value;
-} MonoSerializationEntry;
-
typedef struct {
guint32 state;
MonoObject *additional;
MonoString *LongTimePattern;
MonoString *MonthDayPattern;
MonoString *YearMonthPattern;
- MonoString *FullDateTimePattern;
- MonoString *RFC1123Pattern;
- MonoString *SortableDateTimePattern;
- MonoString *UniversalSortableDateTimePattern;
guint32 FirstDayOfWeek;
- MonoObject *Calendar;
guint32 CalendarWeekRule;
MonoArray *AbbreviatedDayNames;
MonoArray *DayNames;
MonoArray *MonthNames;
+ MonoArray *GenitiveMonthNames;
MonoArray *AbbreviatedMonthNames;
+ MonoArray *GenitiveAbbreviatedMonthNames;
MonoArray *ShortDatePatterns;
MonoArray *LongDatePatterns;
MonoArray *ShortTimePatterns;
MonoArray *LongTimePatterns;
MonoArray *MonthDayPatterns;
MonoArray *YearMonthPatterns;
- MonoArray *shortDayNames;
+ MonoArray *ShortestDayNames;
} MonoDateTimeFormatInfo;
typedef struct
MonoBoolean is_read_only;
gint32 lcid;
gint32 parent_lcid;
- gint32 specific_lcid;
gint32 datetime_index;
gint32 number_index;
+ gint32 calendar_type;
MonoBoolean use_user_override;
MonoNumberFormatInfo *number_format;
MonoDateTimeFormatInfo *datetime_format;
MonoObject *textinfo;
MonoString *name;
- MonoString *displayname;
MonoString *englishname;
MonoString *nativename;
MonoString *iso3lang;
MonoString *iso2lang;
- MonoString *icu_name;
MonoString *win3lang;
MonoString *territory;
+ MonoArray *native_calendar_names;
MonoCompareInfo *compareinfo;
- const gint32 *calendar_data;
const void* text_info_data;
} MonoCultureInfo;
typedef struct {
MonoObject obj;
- gint32 region_id;
+ gint32 geo_id;
MonoString *iso2name;
MonoString *iso3name;
MonoString *win3name;
MonoString *english_name;
+ MonoString *native_name;
MonoString *currency_symbol;
MonoString *iso_currency_symbol;
MonoString *currency_english_name;
+ MonoString *currency_native_name;
} MonoRegionInfo;
typedef struct {
MonoObject *type;
MonoArray *pinfo;
MonoArray *cattrs;
- MonoReflectionMethod *override_method;
+ MonoArray *override_methods;
MonoString *dll;
MonoString *dllentry;
guint32 charset;
MonoArray *data;
} MonoReflectionCustomAttr;
+typedef struct {
+ MonoObject object;
+ MonoString *marshal_cookie;
+ MonoString *marshal_type;
+ MonoReflectionType *marshal_type_ref;
+ MonoReflectionType *marshal_safe_array_user_defined_subtype;
+ guint32 utype;
+ guint32 array_subtype;
+ gint32 safe_array_subtype;
+ gint32 size_const;
+ gint32 IidParameterIndex;
+ gint16 size_param_index;
+} MonoReflectionMarshalAsAttribute;
+
+
typedef struct {
MonoObject object;
gint32 call_conv;
void mono_image_register_token (MonoDynamicImage *assembly, guint32 token, MonoObject *obj) MONO_INTERNAL;
void mono_dynamic_image_free (MonoDynamicImage *image) MONO_INTERNAL;
void mono_image_set_wrappers_type (MonoReflectionModuleBuilder *mb, MonoReflectionType *type) MONO_INTERNAL;
+void mono_dynamic_image_release_gc_roots (MonoDynamicImage *image) MONO_INTERNAL;
void mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb) MONO_INTERNAL;
MonoReflectionMethod*
mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *method, MonoArray *types) MONO_INTERNAL;
void
-mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, MonoArray *methods, MonoArray *ctors, MonoArray *fields, MonoArray *properties, MonoArray *events) MONO_INTERNAL;
+mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, MonoArray *fields) MONO_INTERNAL;
MonoReflectionEvent *
mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb) MONO_INTERNAL;
MonoArray *mono_reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig) MONO_INTERNAL;
-MonoReflectionMarshal* mono_reflection_marshal_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec) MONO_INTERNAL;
+MonoReflectionMarshalAsAttribute* mono_reflection_marshal_as_attribute_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec) MONO_INTERNAL;
gpointer
mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, gboolean valid_token, MonoClass **handle_class, MonoGenericContext *context) MONO_INTERNAL;
gboolean
mono_monitor_is_il_fastpath_wrapper (MonoMethod *method) MONO_INTERNAL;
+char *
+mono_exception_get_native_backtrace (MonoException *exc) MONO_INTERNAL;
+
+MonoString *
+ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc) MONO_INTERNAL;
+
#endif /* __MONO_OBJECT_INTERNALS_H__ */