gpointer o; /* MonoObject ptr or interior ptr */
#ifdef MONO_HANDLE_TRACK_OWNER
const char *owner;
+ gpointer backtrace_ips[7]; /* result of backtrace () at time of allocation */
#endif
#ifdef MONO_HANDLE_TRACK_SP
gpointer alloc_sp; /* sp from HandleStack:stackmark_sp at time of allocation */
*(TYPE*)(mono_handle_unsafe_field_addr (__obj, __field)) = __value; \
} while (0)
+#define MONO_HANDLE_SET_FIELD_REF(HANDLE,FIELD,VALH) do { \
+ MonoObjectHandle __obj = MONO_HANDLE_CAST (MonoObject, (HANDLE)); \
+ MonoClassField *__field = (FIELD); \
+ MonoObjectHandle __value = MONO_HANDLE_CAST (MonoObject, (VALH)); \
+ mono_gc_wbarrier_generic_store (mono_handle_unsafe_field_addr (__obj, __field), MONO_HANDLE_RAW (__value)); \
+ } while (0)
+
/* Baked typed handles we all want */
TYPED_HANDLE_DECL (MonoString);
TYPED_HANDLE_DECL (MonoArray);
gunichar2 *
mono_string_handle_pin_chars (MonoStringHandle s, uint32_t *gchandle_out);
+gpointer
+mono_object_handle_pin_unbox (MonoObjectHandle boxed_valuetype_obj, uint32_t *gchandle_out);
+
void
mono_error_set_exception_handle (MonoError *error, MonoExceptionHandle exc);