}; }G_STMT_END
-#define mono_stringbuilder_capacity(sb) ((sb)->str->length)
+/* 16 == default capacity */
+#define mono_stringbuilder_capacity(sb) ((sb)->str ? ((sb)->str->length) : 16)
typedef struct {
MonoObject obj;
MonoObject object;
gint32 length;
MonoString *str;
+ MonoString *cached_str;
+ gint32 max_capacity;
} MonoStringBuilder;
typedef struct {
MonoString *filename;
gint32 line;
gint32 column;
+ MonoString *internal_method_name;
} MonoStackFrame;
struct _MonoThread {
MonoObject obj;
+ int lock_thread_id; /* to be used as the pre-shifted thread id in thin locks */
HANDLE handle;
MonoObject **culture_info;
MonoObject **ui_culture_info;
gpointer *static_data;
gpointer jit_data;
gpointer lock_data;
+ gpointer unused1;
+ MonoAppContext *current_appcontext;
+ int stack_size;
+ MonoObject *start_obj;
GSList *appdomain_refs;
MonoBoolean interruption_requested;
gpointer suspend_event;
/* used to free a dynamic method */
typedef void (*MonoFreeMethodFunc) (MonoDomain *domain, MonoMethod *method);
+/* Used to initialize the method pointers inside vtables */
+typedef gboolean (*MonoInitVTableFunc) (MonoVTable *vtable);
+
/* remoting and async support */
MonoAsyncResult *
void
mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr);
+void*
+mono_class_get_allocation_ftn (MonoVTable *vtable, gboolean for_box, gboolean *pass_size_in_words);
+
void
mono_runtime_free_method (MonoDomain *domain, MonoMethod *method);
void
mono_install_free_method (MonoFreeMethodFunc func);
+void
+mono_install_init_vtable (MonoInitVTableFunc func);
+
void
mono_type_initialization_init (void);
guint32
mono_thread_get_tls_key (void);
+gint32
+mono_thread_get_tls_offset (void);
+
guint32
mono_domain_get_tls_key (void);
+gint32
+mono_domain_get_tls_offset (void);
+
/* Reflection and Reflection.Emit support */
/*
MonoArray *locals;
MonoArray *il;
MonoBoolean init_locals;
- guint32 sig_token;
+ guint32 local_var_sig_token;
guint32 max_stack;
};
gint32 filter_offset;
} MonoILExceptionBlock;
+typedef struct {
+ MonoObject object;
+ MonoReflectionType *catch_type;
+ gint32 filter_offset;
+ gint32 flags;
+ gint32 try_offset;
+ gint32 try_length;
+ gint32 handler_offset;
+ gint32 handler_length;
+} MonoReflectionExceptionHandlingClause;
+
typedef struct {
MonoObject object;
MonoReflectionType *local_type;
MonoBoolean is_pinned;
- int local_index;
+ guint16 local_index;
} MonoReflectionLocalVariableInfo;
typedef struct {
MonoString *mcookie;
MonoString *marshaltype;
MonoReflectionType *marshaltyperef;
+ gint32 param_num;
+ MonoBoolean has_size;
} MonoReflectionMarshal;
typedef struct {
MonoBoolean throw_on_unmappable;
} MonoReflectionDllImportAttribute;
+typedef struct {
+ MonoObject object;
+ gint32 call_conv;
+ gint32 charset;
+ MonoBoolean set_last_error;
+ MonoBoolean best_fit_mapping;
+ MonoBoolean throw_on_unmappable;
+} MonoReflectionUnmanagedFunctionPointerAttribute;
+
typedef struct {
MonoObject object;
MonoMethod *mhandle;