[threadpool-io] Move Mono(Socket)RuntimeWorkItem ExecuteWorkItem code to (Socket...
[mono.git] / mono / metadata / object-internals.h
index 9b4899c127a85c15c710fce9c3627b9e97d2472a..9e1c81ed4d39face1315c362b63ca4093e97a4ca 100644 (file)
@@ -87,8 +87,8 @@
                return retval;                                                                            \
        };                              }G_STMT_END
 
-/* 16 == default capacity */
-#define mono_stringbuilder_capacity(sb) ((sb)->str ? ((sb)->str->length) : 16)
+#define mono_string_builder_capacity(sb) sb->chunkOffset + sb->chunkChars->max_length
+#define mono_string_builder_string_length(sb) sb->chunkOffset + sb->chunkLength
 
 /* 
  * Macros which cache the results of lookups locally.
@@ -210,13 +210,16 @@ struct _MonoAppDomain {
        MonoDomain *data;
 };
 
-typedef struct {
+typedef struct _MonoStringBuilder MonoStringBuilder;
+
+struct _MonoStringBuilder {
        MonoObject object;
-       gint32 length;
-       MonoString *str;
-       MonoString *cached_str;
-       gint32 max_capacity;
-} MonoStringBuilder;
+       MonoArray  *chunkChars;
+       MonoStringBuilder* chunkPrevious;      // Link to the block logically before this block
+       int chunkLength;                  // The index in ChunkChars that represent the end of the block
+       int chunkOffset;                  // The logial offset (sum of all characters in previous blocks)
+       int maxCapacity;
+};
 
 typedef struct {
        MonoType *type;
@@ -263,12 +266,6 @@ typedef struct {
        MonoString *param_name;
 } MonoArgumentException;
 
-typedef struct {
-       MonoSystemException base;
-       MonoString *msg;
-       MonoString *type_name;
-} MonoTypeLoadException;
-
 typedef struct {
        MonoObject   object;
        MonoObject  *async_state;
@@ -355,11 +352,23 @@ 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;
        gint32 native_offset;
        gint64 method_address;
+       gint32 method_index;
        MonoReflectionMethod *method;
        MonoString *filename;
        gint32 line;
@@ -386,7 +395,7 @@ struct _MonoInternalThread {
        HANDLE      start_notify;
        gpointer stack_ptr;
        gpointer *static_data;
-       gpointer jit_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;
@@ -471,37 +480,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 {
@@ -637,6 +643,12 @@ MonoAsyncResult *
 mono_async_result_new      (MonoDomain *domain, HANDLE handle, 
                             MonoObject *state, gpointer data, MonoObject *object_data);
 
+MonoObject *
+mono_async_result_invoke    (MonoAsyncResult *ares, MonoObject **exc);
+
+MonoObject *
+ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke (MonoAsyncResult *this);
+
 MonoWaitHandle *
 mono_wait_handle_new       (MonoDomain *domain, HANDLE handle);
 
@@ -1271,27 +1283,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 {
@@ -1642,6 +1640,15 @@ ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc);
 char *
 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__ */