[marshal] Rethrow in native-to-managed wrapper to keep exception stacktrace (#5384)
[mono.git] / mono / metadata / object-internals.h
index 0ff70982305f5ce6e10bac804d38af94b47a8189..07aaee6830005ba3f2df4103838289d2820a772a 100644 (file)
@@ -160,6 +160,19 @@ struct _MonoString {
                mono_gc_wbarrier_arrayref_copy (__p, __s, (count));     \
        } while (0)
 
+static inline gboolean
+mono_handle_array_has_bounds (MonoArrayHandle arr)
+{
+       return MONO_HANDLE_GETVAL (arr, bounds) != NULL;
+}
+
+static inline void
+mono_handle_array_get_bounds_dim (MonoArrayHandle arr, gint32 dim, MonoArrayBounds *bounds)
+{
+       MonoArrayBounds *src = MONO_HANDLE_GETVAL (arr, bounds);
+       memcpy (bounds, &src[dim], sizeof (MonoArrayBounds));
+}
+
 
 typedef struct {
        MonoObject obj;
@@ -630,6 +643,7 @@ typedef struct {
        gboolean (*mono_current_thread_has_handle_block_guard) (void);
        gboolean (*mono_above_abort_threshold) (void);
        void (*mono_clear_abort_threshold) (void);
+       void (*mono_reraise_exception) (MonoException *ex);
 } MonoRuntimeExceptionHandlingCallbacks;
 
 MONO_COLD void mono_set_pending_exception (MonoException *exc);
@@ -670,9 +684,6 @@ mono_delegate_ctor_with_method (MonoObjectHandle this_obj, MonoObjectHandle targ
 gboolean
 mono_delegate_ctor         (MonoObjectHandle this_obj, MonoObjectHandle target, gpointer addr, MonoError *error);
 
-void*
-mono_class_get_allocation_ftn (MonoVTable *vtable, gboolean for_box, gboolean *pass_size_in_words);
-
 void
 mono_runtime_free_method    (MonoDomain *domain, MonoMethod *method);
 
@@ -1561,6 +1572,9 @@ ves_icall_array_new_specific (MonoVTable *vtable, uintptr_t n);
 MonoRemoteClass*
 mono_remote_class (MonoDomain *domain, MonoStringHandle class_name, MonoClass *proxy_class, MonoError *error);
 
+gboolean
+mono_remote_class_is_interface_proxy (MonoRemoteClass *remote_class);
+
 MonoObject *
 mono_remoting_invoke (MonoObject *real_proxy, MonoMethodMessage *msg, MonoObject **exc, MonoArray **out_args, MonoError *error);
 
@@ -1594,6 +1608,9 @@ mono_get_addr_from_ftnptr (gpointer descr);
 void
 mono_nullable_init (guint8 *buf, MonoObject *value, MonoClass *klass);
 
+void
+mono_nullable_init_from_handle (guint8 *buf, MonoObjectHandle value, MonoClass *klass);
+
 MonoObject *
 mono_value_box_checked (MonoDomain *domain, MonoClass *klass, void* val, MonoError *error);
 
@@ -1797,9 +1814,6 @@ mono_object_new_mature (MonoVTable *vtable, MonoError *error);
 MonoObject*
 mono_object_new_fast_checked (MonoVTable *vtable, MonoError *error);
 
-MonoObject *
-ves_icall_object_new_fast (MonoVTable *vtable);
-
 MonoObject *
 mono_object_clone_checked (MonoObject *obj, MonoError *error);