+#define MONO_HANDLE_ARENA_POP_RETURN_UNSAFE(handle,ret) \
+ (ret) = (handle)->__private_obj; \
+ mono_handle_arena_stack_pop (__arena_stack, __arena); \
+ } while (0)
+
+#define MONO_HANDLE_ARENA_POP_RETURN(handle,ret_handle) \
+ *((MonoHandle**)(&(ret_handle))) = mono_handle_elevate ((MonoHandle*)(handle)); \
+ mono_handle_arena_stack_pop(__arena_stack, __arena); \
+ } while (0)
+
+static inline MonoHandle
+mono_handle_new (MonoObject *obj)
+{
+ return mono_handle_arena_new (mono_handle_arena_current (), obj);
+}
+
+static inline MonoHandle
+mono_handle_elevate (MonoHandle handle)
+{
+ return mono_handle_arena_elevate (mono_handle_arena_current (), handle);
+}
+
+#ifndef ENABLE_CHECKED_BUILD
+
+#define mono_handle_obj(handle) ((handle)->__private_obj)
+
+#define mono_handle_assign(handle,rawptr) do { (handle)->__private_obj = (rawptr); } while(0)