MonoArray *raw = MONO_HANDLE_RAW (handle);
return mono_array_addr_with_size (raw, size, idx);
}
+
+void
+mono_array_handle_memcpy_refs (MonoArrayHandle dest, uintptr_t dest_idx, MonoArrayHandle src, uintptr_t src_idx, uintptr_t len)
+{
+ mono_array_memcpy_refs (MONO_HANDLE_RAW (dest), dest_idx, MONO_HANDLE_RAW (src), src_idx, len);
+}
return (VAL); \
} while (0)
+#define HANDLE_FUNCTION_RETURN_OBJ(HANDLE) \
+ do { \
+ void* __result = (MONO_HANDLE_RAW (HANDLE)); \
+ CLEAR_ICALL_FRAME; \
+ return __result; \
+ } while (0); } while (0);
+
#ifdef MONO_NEEDS_STACK_WATERMARK
static void
(DEST) = __result; \
} while (0)
+#define MONO_HANDLE_ARRAY_GETREF(DEST, HANDLE, IDX) do { \
+ mono_handle_array_getref (MONO_HANDLE_CAST(MonoObject, (DEST)), (HANDLE), (IDX)); \
+ } while (0)
+
#define MONO_HANDLE_ASSIGN(DESTH, SRCH) \
mono_handle_assign (MONO_HANDLE_CAST (MonoObject, (DESTH)), MONO_HANDLE_CAST(MonoObject, (SRCH)))
extern const MonoObjectHandle mono_null_value_handle;
static inline void
-mono_handle_assign (MonoObjectHandle dest, MonoObjectHandle src)
+mono_handle_assign (MonoObjectHandleOut dest, MonoObjectHandle src)
{
mono_gc_wbarrier_generic_store (&dest->__obj, MONO_HANDLE_RAW(src));
}
uintptr_t mono_array_handle_length (MonoArrayHandle arr);
+static inline void
+mono_handle_array_getref (MonoObjectHandleOut dest, MonoArrayHandle array, uintptr_t index)
+{
+ mono_gc_wbarrier_generic_store (&dest->__obj, mono_array_get (MONO_HANDLE_RAW (array),gpointer, index));
+}
+
#define mono_handle_class(o) mono_object_class (MONO_HANDLE_RAW (o))
/* Local handles to global GC handles and back */
MonoObjectHandle
mono_gchandle_get_target_handle (uint32_t gchandle);
-
+void
+mono_array_handle_memcpy_refs (MonoArrayHandle dest, uintptr_t dest_idx, MonoArrayHandle src, uintptr_t src_idx, uintptr_t len);
/* Pins the MonoArray using a gchandle and returns a pointer to the
* element with the given index (where each element is of the given