Ensure exception out argument is initialized to NULL. (#5424)
[mono.git] / mono / mini / tramp-arm64-gsharedvt.c
index d93b6520da3e7c2a7e5a41304161c7810c28b328..1e35f6a8521b54dc7f78066cc8cf40dce6607c11 100644 (file)
@@ -1,5 +1,6 @@
-/*
- * tramp-arm64-gsharedvt.c: gsharedvt support code for arm64
+/**
+ * \file
+ * gsharedvt support code for arm64
  *
  * Authors:
  *   Zoltan Varga <vargaz@gmail.com>
@@ -16,7 +17,7 @@
 /*
  * GSHAREDVT
  */
-#ifdef MONO_ARCH_GSHARED_SUPPORTED
+#ifdef MONO_ARCH_GSHAREDVT_SUPPORTED
 
 /*
  * mono_arch_get_gsharedvt_arg_trampoline:
@@ -91,11 +92,19 @@ mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpoint
                        case GSHAREDVT_ARG_BYREF_TO_BYREF:
                                g_assert_not_reached ();
                                break;
+                       case GSHAREDVT_ARG_BYVAL_TO_BYREF:
+                               src_slot = src & 0x3f;
+                               src_ptr = (guint8*)(caller + src_slot) + src_offset;
+                               callee [dst] = src_ptr;
+                               break;
                        default:
                                NOT_IMPLEMENTED;
                                break;
                        }
 
+                       if (arg_marshal == GSHAREDVT_ARG_BYVAL_TO_BYREF)
+                               continue;
+
                        switch (arg_size) {
                        case GSHAREDVT_ARG_SIZE_I1:
                                *(gint8*)dst_ptr = *(gint8*)src_ptr;
@@ -554,21 +563,4 @@ mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
 
 #endif
 
-#else
-
-gpointer
-mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
-{
-       if (info)
-               *info = NULL;
-       return NULL;
-}
-
-gpointer
-mono_arch_get_gsharedvt_arg_trampoline (MonoDomain *domain, gpointer arg, gpointer addr)
-{
-       g_assert_not_reached ();
-       return NULL;
-}
-
-#endif /* MONO_ARCH_GSHARED_SUPPORTED */
\ No newline at end of file
+#endif /* MONO_ARCH_GSHAREDVT_SUPPORTED */