Merge pull request #2670 from lambdageek/dev/monoerror-mono_runtime_object_init
[mono.git] / mono / metadata / object.h
index 8a62a1e10e7abae87a1e72dd7e59919ff157230f..ff54ff0bc7625a6eaad57a5d12cee9d126e9fe16 100644 (file)
@@ -31,11 +31,12 @@ typedef struct _MonoObject {
        MonoThreadsSync *synchronisation;
 } MonoObject;
 
-typedef MonoObject* (*MonoInvokeFunc)       (MonoMethod *method, void *obj, void **params, MonoObject **exc);
+typedef MonoObject* (*MonoInvokeFunc)       (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error);
 typedef void*    (*MonoCompileFunc)         (MonoMethod *method);
 typedef void       (*MonoMainThreadFunc)    (void* user_data);
 
 #define MONO_OBJECT_SETREF(obj,fieldname,value) do {   \
+               g_assert (sizeof((obj)->fieldname) == sizeof (gpointer*));      \
                mono_gc_wbarrier_set_field ((MonoObject*)(obj), &((obj)->fieldname), (MonoObject*)value);       \
                /*(obj)->fieldname = (value);*/ \
        } while (0)
@@ -68,7 +69,7 @@ typedef void      (*MonoMainThreadFunc)    (void* user_data);
 MONO_API mono_unichar2 *mono_string_chars  (MonoString *s);
 MONO_API int            mono_string_length (MonoString *s);
 
-MONO_API MonoObject *
+MONO_RT_EXTERNAL_ONLY MONO_API MonoObject *
 mono_object_new                    (MonoDomain *domain, MonoClass *klass);
 
 MONO_API MonoObject *
@@ -115,6 +116,7 @@ mono_ldstr              (MonoDomain *domain, MonoImage *image, uint32_t str_index);
 MONO_API MonoString*
 mono_string_is_interned            (MonoString *str);
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API MonoString*
 mono_string_intern         (MonoString *str);
 
@@ -127,6 +129,9 @@ mono_string_new_wrapper         (const char *text);
 MONO_API MonoString*
 mono_string_new_len        (MonoDomain *domain, const char *text, unsigned int length);
 
+MONO_API MonoString*
+mono_string_new_utf32      (MonoDomain *domain, const mono_unichar4 *text, int32_t len);
+
 MONO_API char *
 mono_string_to_utf8        (MonoString *string_obj);
 
@@ -136,9 +141,15 @@ mono_string_to_utf8_checked (MonoString *string_obj, MonoError *error);
 MONO_API mono_unichar2 *
 mono_string_to_utf16       (MonoString *string_obj);
 
+MONO_API mono_unichar4 *
+mono_string_to_utf32       (MonoString *string_obj);
+
 MONO_API MonoString *
 mono_string_from_utf16     (mono_unichar2 *data);
 
+MONO_API MonoString *
+mono_string_from_utf32     (mono_unichar4 *data);
+
 MONO_API mono_bool
 mono_string_equal           (MonoString *s1, MonoString *s2);
 
@@ -187,6 +198,9 @@ mono_monitor_try_enter       (MonoObject *obj, uint32_t ms);
 MONO_API mono_bool
 mono_monitor_enter           (MonoObject *obj);
 
+MONO_API void
+mono_monitor_enter_v4        (MonoObject *obj, char *lock_taken);
+
 MONO_API unsigned int
 mono_object_get_size         (MonoObject *o);
 
@@ -196,15 +210,18 @@ mono_monitor_exit            (MonoObject *obj);
 MONO_API void
 mono_raise_exception       (MonoException *ex);
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API void
 mono_runtime_object_init    (MonoObject *this_obj);
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API void
 mono_runtime_class_init            (MonoVTable *vtable);
 
 MONO_API MonoMethod*
 mono_object_get_virtual_method (MonoObject *obj, MonoMethod *method);
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API MonoObject*
 mono_runtime_invoke        (MonoMethod *method, void *obj, void **params,
                             MonoObject **exc);