Merge pull request #463 from strawd/concurrent-requests
[mono.git] / mono / metadata / object-internals.h
index 5862f9e180f13330314fafd349bb51558697bfe1..d141e0d1e250571e8a31fd9bee5ad17bcc1fc69e 100644 (file)
@@ -87,7 +87,7 @@
                return retval;                                                                            \
        };                              }G_STMT_END
 
-#define mono_string_builder_length(sb) sb->chunkOffset + sb->chunkChars->max_length
+#define mono_string_builder_capacity(sb) sb->chunkOffset + sb->chunkChars->max_length
 #define mono_string_builder_string_length(sb) sb->chunkOffset + sb->chunkLength
 
 /* 
@@ -255,6 +255,8 @@ struct _MonoException {
        MonoObject *_data;
        MonoObject *captured_traces;
        MonoArray  *native_trace_ips;
+       /* Dynamic methods referenced by the stack trace */
+       MonoObject *dynamic_methods;
 };
 
 typedef struct {
@@ -266,12 +268,6 @@ typedef struct {
        MonoString *param_name;
 } MonoArgumentException;
 
-typedef struct {
-       MonoSystemException base;
-       MonoString *msg;
-       MonoString *type_name;
-} MonoTypeLoadException;
-
 typedef struct {
        MonoObject   object;
        MonoObject  *async_state;
@@ -358,6 +354,17 @@ typedef struct {
        guint32     call_type;
 } MonoMethodMessage;
 
+/* Keep in sync with the System.MonoAsyncCall */
+typedef struct {
+       MonoObject object;
+       MonoMethodMessage *msg;
+       MonoMethod *cb_method;
+       MonoDelegate *cb_target;
+       MonoObject *state;
+       MonoObject *res;
+       MonoArray *out_args;
+} MonoAsyncCall;
+
 typedef struct {
        MonoObject obj;
        gint32 il_offset;
@@ -390,7 +397,6 @@ struct _MonoInternalThread {
        HANDLE      start_notify;
        gpointer stack_ptr;
        gpointer *static_data;
-       gpointer dead_field_remove_me; /* This used to be jit_data, but that was moved to MonoThreadInfo. */
        void *thread_info; /*This is MonoThreadInfo*, but to simplify dependencies, let's make it a void* here. */
        MonoAppContext *current_appcontext;
        MonoException *pending_exception;
@@ -400,14 +406,9 @@ struct _MonoInternalThread {
        gpointer appdomain_refs;
        /* This is modified using atomic ops, so keep it a gint32 */
        gint32 interruption_requested;
-       gpointer suspend_event;
-       gpointer suspended_event;
-       gpointer resume_event;
        mono_mutex_t *synch_cs;
        MonoBoolean threadpool_thread;
-       MonoBoolean thread_dump_requested;
        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;
@@ -416,10 +417,7 @@ struct _MonoInternalThread {
        MonoThreadManageCallback manage_callback;
        gpointer interrupt_on_stop;
        gsize    flags;
-       gpointer android_tid;
        gpointer thread_pinning_ref;
-       gint32 ignore_next_signal;
-       MonoMethod *async_invoke_method;
        /* 
         * These fields are used to avoid having to increment corlib versions
         * when a new field is added to this structure.
@@ -434,7 +432,6 @@ struct _MonoThread {
        MonoObject obj;
        struct _MonoInternalThread *internal_thread;
        MonoObject *start_obj;
-       MonoObject *ec_to_set;
 };
 
 typedef struct {
@@ -475,37 +472,34 @@ typedef struct {
 typedef struct 
 {
        MonoObject obj;
-       MonoBoolean readOnly;
-       MonoString *decimalFormats;
-       MonoString *currencyFormats;
-       MonoString *percentFormats;
-       MonoString *digitPattern;
-       MonoString *zeroPattern;
-       gint32 currencyDecimalDigits;
-       MonoString *currencyDecimalSeparator;
-       MonoString *currencyGroupSeparator;
+       MonoArray *numberGroupSizes;
        MonoArray *currencyGroupSizes;
-       gint32 currencyNegativePattern;
-       gint32 currencyPositivePattern;
-       MonoString *currencySymbol;
-       MonoString *naNSymbol;
-       MonoString *negativeInfinitySymbol;
+       MonoArray *percentGroupSizes;
+       MonoString *positiveSign;
        MonoString *negativeSign;
-       guint32 numberDecimalDigits;
        MonoString *numberDecimalSeparator;
        MonoString *numberGroupSeparator;
-       MonoArray *numberGroupSizes;
-       gint32 numberNegativePattern;
-       gint32 percentDecimalDigits;
+       MonoString *currencyGroupSeparator;
+       MonoString *currencyDecimalSeparator;
+       MonoString *currencySymbol;
+       MonoString *ansiCurrencySymbol; /* unused */
+       MonoString *naNSymbol;
+       MonoString *positiveInfinitySymbol;
+       MonoString *negativeInfinitySymbol;
        MonoString *percentDecimalSeparator;
        MonoString *percentGroupSeparator;
-       MonoArray *percentGroupSizes;
-       gint32 percentNegativePattern;
-       gint32 percentPositivePattern;
        MonoString *percentSymbol;
        MonoString *perMilleSymbol;
-       MonoString *positiveInfinitySymbol;
-       MonoString *positiveSign;
+       MonoString *nativeDigits; /* unused */
+       gint32 dataItem; /* unused */
+       guint32 numberDecimalDigits;
+       gint32 currencyDecimalDigits;
+       gint32 currencyPositivePattern;
+       gint32 currencyNegativePattern;
+       gint32 numberNegativePattern;
+       gint32 percentPositivePattern;
+       gint32 percentNegativePattern;
+       gint32 percentDecimalDigits;
 } MonoNumberFormatInfo;
 
 typedef struct {
@@ -641,6 +635,9 @@ MonoAsyncResult *
 mono_async_result_new      (MonoDomain *domain, HANDLE handle, 
                             MonoObject *state, gpointer data, MonoObject *object_data);
 
+MonoObject *
+ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke (MonoAsyncResult *ares);
+
 MonoWaitHandle *
 mono_wait_handle_new       (MonoDomain *domain, HANDLE handle);
 
@@ -783,6 +780,7 @@ struct _MonoDelegate {
        MonoObject *target;
        MonoMethod *method;
        gpointer delegate_trampoline;
+       gpointer rgctx;
        /* 
         * If non-NULL, this points to a memory location which stores the address of 
         * the compiled code of the method, or NULL if it is not yet compiled.
@@ -791,12 +789,13 @@ struct _MonoDelegate {
        MonoReflectionMethod *method_info;
        MonoReflectionMethod *original_method_info;
        MonoObject *data;
+       MonoBoolean method_is_virtual;
 };
 
 typedef struct _MonoMulticastDelegate MonoMulticastDelegate;
 struct _MonoMulticastDelegate {
        MonoDelegate delegate;
-       MonoMulticastDelegate *prev;
+       MonoArray *delegates;
 };
 
 struct _MonoReflectionField {
@@ -1275,27 +1274,13 @@ typedef struct {
        gint16 size_param_index;
 } MonoReflectionMarshalAsAttribute;
 
-
 typedef struct {
        MonoObject object;
        gint32 call_conv;
        gint32 charset;
-       MonoString *dll;
-       MonoString *entry_point;
-       MonoBoolean exact_spelling;
-       MonoBoolean preserve_sig;
-       MonoBoolean set_last_error;
        MonoBoolean best_fit_mapping;
        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 {
@@ -1649,6 +1634,12 @@ mono_exception_get_managed_backtrace (MonoException *exc);
 void
 mono_copy_value (MonoType *type, void *dest, void *value, int deref_pointer);
 
+void
+mono_error_raise_exception (MonoError *target_error);
+
+void
+mono_error_set_pending_exception (MonoError *error);
+
 #endif /* __MONO_OBJECT_INTERNALS_H__ */