Skip to content

Commit

Permalink
mono_method_signature to mono_method_signature_internal to skip GC mo…
Browse files Browse the repository at this point in the history
…de machinery (#11080)
  • Loading branch information
jaykrell committed Oct 12, 2018
1 parent 656c820 commit 51ebea7
Show file tree
Hide file tree
Showing 58 changed files with 426 additions and 412 deletions.
2 changes: 1 addition & 1 deletion mono/dis/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -968,7 +968,7 @@ dump_table_customattr (MonoImage *m)
method = get_method (m, mtoken, NULL);
meth = mono_get_method_checked (m, mtoken, NULL, NULL, error);
if (meth) {
params = custom_attr_params (m, mono_method_signature (meth), mono_metadata_blob_heap (m, cols [MONO_CUSTOM_ATTR_VALUE]));
params = custom_attr_params (m, mono_method_signature_internal (meth), mono_metadata_blob_heap (m, cols [MONO_CUSTOM_ATTR_VALUE]));
fprintf (output, "%d: %s: %s [%s]\n", i, desc, method, params);
g_free (params);
} else {
Expand Down
2 changes: 1 addition & 1 deletion mono/dis/get.c
Original file line number Diff line number Diff line change
Expand Up @@ -1947,7 +1947,7 @@ get_method_core (MonoImage *m, guint32 token, gboolean fullsig, MonoGenericConta

mh = mono_get_method_checked (m, token, NULL, (MonoGenericContext *) container, error);
if (mh) {
if (mono_method_signature (mh)->is_inflated)
if (mono_method_signature_internal (mh)->is_inflated)
container = mono_method_get_generic_container (((MonoMethodInflated *) mh)->declaring);
esname = get_escaped_name (mh->name);
sig = dis_stringify_type (m, m_class_get_byval_arg (mh->klass), TRUE);
Expand Down
20 changes: 10 additions & 10 deletions mono/metadata/class-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1917,8 +1917,8 @@ mono_signature_get_full_desc (MonoMethodSignature *sig, gboolean include_namespa
}
static void
print_method_signatures (MonoMethod *im, MonoMethod *cm) {
char *im_sig = mono_signature_get_full_desc (mono_method_signature (im), TRUE);
char *cm_sig = mono_signature_get_full_desc (mono_method_signature (cm), TRUE);
char *im_sig = mono_signature_get_full_desc (mono_method_signature_internal (im), TRUE);
char *cm_sig = mono_signature_get_full_desc (mono_method_signature_internal (cm), TRUE);
printf ("(IM \"%s\", CM \"%s\")", im_sig, cm_sig);
g_free (im_sig);
g_free (cm_sig);
Expand Down Expand Up @@ -1962,8 +1962,8 @@ check_interface_method_override (MonoClass *klass, MonoMethod *im, MonoMethod *c
TRACE_INTERFACE_VTABLE (printf ("[FULL SLOT REFUSED]"));
}
}
cmsig = mono_method_signature (cm);
imsig = mono_method_signature (im);
cmsig = mono_method_signature_internal (cm);
imsig = mono_method_signature_internal (im);
if (!cmsig || !imsig) {
mono_class_set_type_load_failure (klass, "Could not resolve the signature of a virtual method");
return FALSE;
Expand Down Expand Up @@ -2004,8 +2004,8 @@ check_interface_method_override (MonoClass *klass, MonoMethod *im, MonoMethod *c
TRACE_INTERFACE_VTABLE (printf ("[RANK CHECK FAILED]"));
return FALSE;
}
cmsig = mono_method_signature (cm);
imsig = mono_method_signature (im);
cmsig = mono_method_signature_internal (cm);
imsig = mono_method_signature_internal (im);
if (!cmsig || !imsig) {
mono_class_set_type_load_failure (klass, "Could not resolve the signature of a virtual method");
return FALSE;
Expand Down Expand Up @@ -2560,7 +2560,7 @@ print_unimplemented_interface_method_info (MonoClass *klass, MonoClass *ic, Mono
mono_trace_warning (MONO_TRACE_TYPE, " at slot %d: %s (%d) overrides %s (%d)", im_slot, overrides [index*2+1]->name,
overrides [index*2+1]->slot, overrides [index*2]->name, overrides [index*2]->slot);
}
method_signature = mono_signature_get_desc (mono_method_signature (im), FALSE);
method_signature = mono_signature_get_desc (mono_method_signature_internal (im), FALSE);
type_name = mono_type_full_name (m_class_get_byval_arg (klass));
mono_trace_warning (MONO_TRACE_TYPE, "no implementation for interface method %s::%s(%s) in class %s",
mono_type_get_name (m_class_get_byval_arg (ic)), im->name, method_signature, type_name);
Expand All @@ -2576,7 +2576,7 @@ print_unimplemented_interface_method_info (MonoClass *klass, MonoClass *ic, Mono
mcount = mono_class_get_method_count (klass);
for (index = 0; index < mcount; ++index) {
MonoMethod *cm = klass->methods [index];
method_signature = mono_signature_get_desc (mono_method_signature (cm), TRUE);
method_signature = mono_signature_get_desc (mono_method_signature_internal (cm), TRUE);

mono_trace_warning (MONO_TRACE_TYPE, "METHOD %s(%s)", cm->name, method_signature);
g_free (method_signature);
Expand Down Expand Up @@ -3087,8 +3087,8 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
while ((m1 = mono_class_get_virtual_methods (k, &k_iter))) {
MonoMethodSignature *cmsig, *m1sig;

cmsig = mono_method_signature (cm);
m1sig = mono_method_signature (m1);
cmsig = mono_method_signature_internal (cm);
m1sig = mono_method_signature_internal (m1);

if (!cmsig || !m1sig) /* FIXME proper error message, use signature_checked? */
goto fail;
Expand Down
3 changes: 3 additions & 0 deletions mono/metadata/class-internals.h
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,9 @@ mono_class_get_context (MonoClass *klass);
MONO_PROFILER_API MonoMethodSignature*
mono_method_signature_checked (MonoMethod *m, MonoError *err);

MONO_PROFILER_API MonoMethodSignature*
mono_method_signature_internal (MonoMethod *m);

MonoGenericContext*
mono_method_get_context_general (MonoMethod *method, gboolean uninflated);

Expand Down
6 changes: 3 additions & 3 deletions mono/metadata/class.c
Original file line number Diff line number Diff line change
Expand Up @@ -944,7 +944,7 @@ mono_class_inflate_generic_method_checked (MonoMethod *method, MonoGenericContex
* On failure returns NULL and sets \p error.
*
* BEWARE: All non-trivial fields are invalid, including klass, signature, and header.
* Use mono_method_signature() and mono_method_get_header() to get the correct values.
* Use mono_method_signature_internal () and mono_method_get_header () to get the correct values.
*/
MonoMethod*
mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *klass_hint, MonoGenericContext *context, MonoError *error)
Expand Down Expand Up @@ -1016,7 +1016,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k

UnlockedAdd (&mono_inflated_methods_size, sizeof (MonoMethodInflated));

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);
if (!sig) {
char *name = mono_type_get_full_name (method->klass);
mono_error_set_bad_image (error, mono_method_get_image (method), "Could not resolve signature of method %s:%s", name, method->name);
Expand Down Expand Up @@ -5190,7 +5190,7 @@ mono_class_get_method_from_name_checked (MonoClass *klass, const char *name,

if (method->name[0] == name [0] &&
!strcmp (name, method->name) &&
(param_count == -1 || mono_method_signature (method)->param_count == param_count) &&
(param_count == -1 || mono_method_signature_internal (method)->param_count == param_count) &&
((method->flags & flags) == flags)) {
res = method;
break;
Expand Down
14 changes: 7 additions & 7 deletions mono/metadata/cominterop.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ cominterop_method_signature (MonoMethod* method)
{
MonoMethodSignature *res;
MonoImage *image = m_class_get_image (method->klass);
MonoMethodSignature *sig = mono_method_signature (method);
MonoMethodSignature *sig = mono_method_signature_internal (method);
gboolean preserve_sig = method->iflags & METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG;
int sigsize;
int i;
Expand Down Expand Up @@ -945,7 +945,7 @@ cominterop_get_native_wrapper_adjusted (MonoMethod *method)
MonoMethodPInvoke *piinfo = (MonoMethodPInvoke *) method;
int i;

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);

// create unmanaged wrapper
mb_native = mono_mb_new (method->klass, method->name, MONO_WRAPPER_MANAGED_TO_NATIVE);
Expand Down Expand Up @@ -1057,7 +1057,7 @@ mono_cominterop_get_native_wrapper (MonoMethod *method)
mono_class_setup_methods (method->klass);
g_assert (!mono_class_has_failure (method->klass)); /*FIXME do proper error handling*/

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);
mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_COMINTEROP);

#ifndef DISABLE_JIT
Expand Down Expand Up @@ -1950,7 +1950,7 @@ cominterop_setup_marshal_context (EmitMarshalContext *m, MonoMethod *method)
{
MonoMethodSignature *sig, *csig;
MonoImage *method_klass_image = m_class_get_image (method->klass);
sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);
/* we copy the signature, so that we can modify it */
/* FIXME: which to use? */
csig = mono_metadata_signature_dup_full (method_klass_image, sig);
Expand Down Expand Up @@ -2093,12 +2093,12 @@ cominterop_get_ccw_checked (MonoObjectHandle object, MonoClass* itf, MonoError *
MonoMethod *wrapper_method, *adjust_method;
MonoMethod *method = m_class_get_methods (iface) [i];
MonoMethodSignature* sig_adjusted;
MonoMethodSignature* sig = mono_method_signature (method);
MonoMethodSignature* sig = mono_method_signature_internal (method);
gboolean preserve_sig = method->iflags & METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG;

mb = mono_mb_new (iface, method->name, MONO_WRAPPER_NATIVE_TO_MANAGED);
adjust_method = cominterop_get_managed_wrapper_adjusted (method);
sig_adjusted = mono_method_signature (adjust_method);
sig_adjusted = mono_method_signature_internal (adjust_method);

mspecs = g_new (MonoMarshalSpec*, sig_adjusted->param_count + 1);
mono_method_get_marshal_info (method, mspecs);
Expand Down Expand Up @@ -2329,7 +2329,7 @@ cominterop_get_managed_wrapper_adjusted (MonoMethod *method)
mono_error_assert_ok (error);
}

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);

/* create unmanaged wrapper */
mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_COMINTEROP);
Expand Down
30 changes: 15 additions & 15 deletions mono/metadata/custom-attrs.c
Original file line number Diff line number Diff line change
Expand Up @@ -846,7 +846,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu

/*g_print ("got attr %s\n", method->klass->name);*/

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);
if (sig->param_count < 32) {
params = params_buf;
memset (params, 0, sizeof (void*) * sig->param_count);
Expand All @@ -857,9 +857,9 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu

/* skip prolog */
p += 2;
for (i = 0; i < mono_method_signature (method)->param_count; ++i) {
for (i = 0; i < mono_method_signature_internal (method)->param_count; ++i) {
MonoObject *param_obj;
params [i] = load_cattr_value (image, mono_method_signature (method)->params [i], &param_obj, p, data_end, &p, error);
params [i] = load_cattr_value (image, mono_method_signature_internal (method)->params [i], &param_obj, p, data_end, &p, error);
if (param_obj)
params [i] = param_obj;
goto_if_nok (error, fail);
Expand Down Expand Up @@ -947,8 +947,8 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
}

/* can we have more that 1 arg in a custom attr named property? */
prop_type = prop->get? mono_method_signature (prop->get)->ret :
mono_method_signature (prop->set)->params [mono_method_signature (prop->set)->param_count - 1];
prop_type = prop->get? mono_method_signature_internal (prop->get)->ret :
mono_method_signature_internal (prop->set)->params [mono_method_signature_internal (prop->set)->param_count - 1];

MonoObject *param_obj;
pparams [0] = load_cattr_value (image, prop_type, &param_obj, named, data_end, &named, error);
Expand Down Expand Up @@ -1030,13 +1030,13 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
/* Parse each argument corresponding to the signature's parameters from
* the blob and store in typedargs.
*/
typedargs = mono_array_new_checked (domain, mono_get_object_class (), mono_method_signature (method)->param_count, error);
typedargs = mono_array_new_checked (domain, mono_get_object_class (), mono_method_signature_internal (method)->param_count, error);
return_if_nok (error);

for (i = 0; i < mono_method_signature (method)->param_count; ++i) {
for (i = 0; i < mono_method_signature_internal (method)->param_count; ++i) {
MonoObject *obj;

obj = load_cattr_value_boxed (domain, image, mono_method_signature (method)->params [i], p, data_end, &p, error);
obj = load_cattr_value_boxed (domain, image, mono_method_signature_internal (method)->params [i], p, data_end, &p, error);
return_if_nok (error);
mono_array_setref (typedargs, i, obj);
}
Expand Down Expand Up @@ -1124,8 +1124,8 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
goto fail;
}

prop_type = prop->get? mono_method_signature (prop->get)->ret :
mono_method_signature (prop->set)->params [mono_method_signature (prop->set)->param_count - 1];
prop_type = prop->get? mono_method_signature_internal (prop->get)->ret :
mono_method_signature_internal (prop->set)->params [mono_method_signature_internal (prop->set)->param_count - 1];

arginfo [j].type = prop_type;
arginfo [j].prop = prop;
Expand Down Expand Up @@ -1168,7 +1168,7 @@ mono_reflection_create_custom_attr_data_args_noalloc (MonoImage *image, MonoMeth
const char *named;
guint32 i, j, num_named;
CattrNamedArg *arginfo = NULL;
MonoMethodSignature *sig = mono_method_signature (method);
MonoMethodSignature *sig = mono_method_signature_internal (method);

*typed_args = NULL;
*named_args = NULL;
Expand Down Expand Up @@ -1274,8 +1274,8 @@ mono_reflection_create_custom_attr_data_args_noalloc (MonoImage *image, MonoMeth
goto fail;
}

prop_type = prop->get? mono_method_signature (prop->get)->ret :
mono_method_signature (prop->set)->params [mono_method_signature (prop->set)->param_count - 1];
prop_type = prop->get? mono_method_signature_internal (prop->get)->ret :
mono_method_signature_internal (prop->set)->params [mono_method_signature_internal (prop->set)->param_count - 1];

arginfo [j].type = prop_type;
arginfo [j].prop = prop;
Expand Down Expand Up @@ -1331,12 +1331,12 @@ reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method, Mono
if (!typedargs || !namedargs)
goto leave;

for (i = 0; i < mono_method_signature (method)->param_count; ++i) {
for (i = 0; i < mono_method_signature_internal (method)->param_count; ++i) {
MonoObject *obj = mono_array_get (typedargs, MonoObject*, i);
MonoObject *typedarg;
MonoType *t;

t = mono_method_signature (method)->params [i];
t = mono_method_signature_internal (method)->params [i];
if (t->type == MONO_TYPE_OBJECT && obj)
t = m_class_get_byval_arg (obj->vtable->klass);
typedarg = create_cattr_typed_arg (t, obj, error);
Expand Down
4 changes: 2 additions & 2 deletions mono/metadata/debug-helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -454,9 +454,9 @@ mono_method_desc_match (MonoMethodDesc *desc, MonoMethod *method)
return FALSE;
if (!desc->args)
return TRUE;
if (desc->num_args != mono_method_signature (method)->param_count)
if (desc->num_args != mono_method_signature_internal (method)->param_count)
return FALSE;
sig = mono_signature_get_desc (mono_method_signature (method), desc->include_namespace);
sig = mono_signature_get_desc (mono_method_signature_internal (method), desc->include_namespace);
if (strcmp (sig, desc->args)) {
g_free (sig);
return FALSE;
Expand Down
2 changes: 1 addition & 1 deletion mono/metadata/debug-mono-ppdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,7 @@ mono_ppdb_lookup_locals (MonoDebugMethodInfo *minfo)
if (!method->token)
return NULL;

sig = mono_method_signature (method);
sig = mono_method_signature_internal (method);
if (!sig)
return NULL;

Expand Down
6 changes: 3 additions & 3 deletions mono/metadata/exception.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ create_exception_two_strings (MonoClass *klass, MonoStringHandle a1, MonoStringH

if (strcmp (".ctor", mono_method_get_name (m)))
continue;
sig = mono_method_signature (m);
sig = mono_method_signature_internal (m);
if (sig->param_count != count)
continue;

Expand Down Expand Up @@ -827,7 +827,7 @@ mono_get_exception_type_initialization_handle (const gchar *type_name, MonoExcep
iter = NULL;
while ((method = mono_class_get_methods (klass, &iter))) {
if (!strcmp (".ctor", mono_method_get_name (method))) {
MonoMethodSignature *sig = mono_method_signature (method);
MonoMethodSignature *sig = mono_method_signature_internal (method);

if (sig->param_count == 2 && sig->params [0]->type == MONO_TYPE_STRING && mono_class_from_mono_type (sig->params [1]) == mono_defaults.exception_class)
break;
Expand Down Expand Up @@ -1028,7 +1028,7 @@ mono_get_exception_reflection_type_load_checked (MonoArrayHandle types, MonoArra
iter = NULL;
while ((method = mono_class_get_methods (klass, &iter))) {
if (!strcmp (".ctor", mono_method_get_name (method))) {
MonoMethodSignature *sig = mono_method_signature (method);
MonoMethodSignature *sig = mono_method_signature_internal (method);

if (sig->param_count == 2 && sig->params [0]->type == MONO_TYPE_SZARRAY && sig->params [1]->type == MONO_TYPE_SZARRAY)
break;
Expand Down
Loading

0 comments on commit 51ebea7

Please sign in to comment.