[metadata] Mark mono_signature_get_return_type external only (#32661)
authormonojenkins <jo.shields+jenkins@xamarin.com>
Fri, 21 Feb 2020 22:35:41 +0000 (17:35 -0500)
committerGitHub <noreply@github.com>
Fri, 21 Feb 2020 22:35:41 +0000 (17:35 -0500)
Also `mark mono_signature_get_params` external only.

Runtime should use `mono_signature_get_return_type_internal`
and `mono_signature_get_params_internal`

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
src/mono/mono/metadata/metadata-internals.h
src/mono/mono/metadata/metadata.c
src/mono/mono/metadata/metadata.h
src/mono/mono/mini/mini-amd64-gsharedvt.c

index dfa7064..38a1fc8 100644 (file)
@@ -1223,6 +1223,12 @@ mono_assembly_get_alc (MonoAssembly *assm)
        return mono_image_get_alc (assm->image);
 }
 
+static inline MonoType*
+mono_signature_get_return_type_internal (MonoMethodSignature *sig)
+{
+       return sig->ret;
+}
+
 /**
  * mono_type_get_type_internal:
  * \param type the \c MonoType operated on
index b6d6279..8768511 100644 (file)
@@ -2517,11 +2517,11 @@ signature_in_image (MonoMethodSignature *sig, MonoImage *image)
        gpointer iter = NULL;
        MonoType *p;
 
-       while ((p = mono_signature_get_params (sig, &iter)) != NULL)
+       while ((p = mono_signature_get_params_internal (sig, &iter)) != NULL)
                if (type_in_image (p, image))
                        return TRUE;
 
-       return type_in_image (mono_signature_get_return_type (sig), image);
+       return type_in_image (mono_signature_get_return_type_internal (sig), image);
 }
 
 static gboolean
@@ -2979,8 +2979,8 @@ collect_signature_images (MonoMethodSignature *sig, CollectData *data)
        gpointer iter = NULL;
        MonoType *p;
 
-       collect_type_images (mono_signature_get_return_type (sig), data);
-       while ((p = mono_signature_get_params (sig, &iter)) != NULL)
+       collect_type_images (mono_signature_get_return_type_internal (sig), data);
+       while ((p = mono_signature_get_params_internal (sig, &iter)) != NULL)
                collect_type_images (p, data);
 }
 
@@ -5657,8 +5657,8 @@ mono_metadata_fnptr_equal (MonoMethodSignature *s1, MonoMethodSignature *s2, gbo
                return FALSE;
 
        while (TRUE) {
-               MonoType *t1 = mono_signature_get_params (s1, &iter1);
-               MonoType *t2 = mono_signature_get_params (s2, &iter2);
+               MonoType *t1 = mono_signature_get_params_internal (s1, &iter1);
+               MonoType *t2 = mono_signature_get_params_internal (s2, &iter2);
 
                if (t1 == NULL || t2 == NULL)
                        return (t1 == t2);
index f6646d6..c69d042 100644 (file)
@@ -367,10 +367,10 @@ MONO_API mono_bool mono_type_is_pointer   (MonoType *type);
 MONO_API mono_bool mono_type_is_reference (MonoType *type);
 MONO_API mono_bool mono_type_is_generic_parameter (MonoType *type);
 
-MONO_API MonoType*
+MONO_API MONO_RT_EXTERNAL_ONLY MonoType*
 mono_signature_get_return_type (MonoMethodSignature *sig);
 
-MONO_API MonoType*
+MONO_API MONO_RT_EXTERNAL_ONLY MonoType*
 mono_signature_get_params      (MonoMethodSignature *sig, void **iter);
 
 MONO_API uint32_t
index 03c7914..6da2539 100644 (file)
@@ -300,8 +300,8 @@ mono_arch_get_gsharedvt_call_info (gpointer addr, MonoMethodSignature *normal_si
                gcinfo = caller_cinfo;
        }
 
-       DEBUG_AMD64_GSHAREDVT_PRINT ("source sig: (%s) return (%s)\n", mono_signature_get_desc (caller_sig, FALSE), mono_type_full_name (mono_signature_get_return_type (caller_sig))); // Leak
-       DEBUG_AMD64_GSHAREDVT_PRINT ("dest sig: (%s) return (%s)\n", mono_signature_get_desc (callee_sig, FALSE), mono_type_full_name (mono_signature_get_return_type (callee_sig)));
+       DEBUG_AMD64_GSHAREDVT_PRINT ("source sig: (%s) return (%s)\n", mono_signature_get_desc (caller_sig, FALSE), mono_type_full_name (mono_signature_get_return_type_internal (caller_sig))); // Leak
+       DEBUG_AMD64_GSHAREDVT_PRINT ("dest sig: (%s) return (%s)\n", mono_signature_get_desc (callee_sig, FALSE), mono_type_full_name (mono_signature_get_return_type_internal (callee_sig)));
 
        if (gcinfo->ret.storage == ArgGsharedvtVariableInReg) {
                /*