Fixes crash when SRE code calls a vararg method.
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 29 Jul 2010 18:01:37 +0000 (15:01 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 29 Jul 2010 19:06:21 +0000 (16:06 -0300)
commit4e1e020d45a55a8fa1147ee1c5edc1b4ab6cb685
treeec3207c00140fde1534fa4521a6fbab585f85353
parente5638be38c948d6f61e08d34adbc32c6891cb4cb
Fixes crash when SRE code calls a vararg method.

2010-07-29 Rodrigo Kumpera  <rkumpera@novell.com>

Add support for calling vararg methods from SRE code.
This requires storing per-memberref signatures so
the JIT can know how many varargs parameters are
been passed.

* loader.c (mono_method_get_signature_full): If the
image is dynamic call mono_reflection_lookup_signature
to lookup the signature.

* reflection.c (mono_image_create_method_token): Save
the method object into the MonoDynamicImage::tokens.
Create a signature struct for MethodBuilders.
Save the signature into vararg_aux_hash so it can be
retrieved later.

* reflection.c (mono_reflection_lookup_signature): New
function. Check vararg_aux_hash for a signature before
returning method's own signature.

* metadata-internals.h (MonoDynamicImage): Add new
vararg_aux_hash hashtable.

* object-internals.h: Add mono_reflection_lookup_signature.

Fixes #626441
mono/metadata/ChangeLog
mono/metadata/loader.c
mono/metadata/metadata-internals.h
mono/metadata/object-internals.h
mono/metadata/reflection.c