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)
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 *
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);
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);