2010-01-07 Rodrigo Kumpera <rkumpera@novell.com>
commit9bcc001263b697d9dee0afc011106f82d8d8bd1e
authorkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Thu, 7 Jan 2010 21:58:46 +0000 (7 21:58 +0000)
committerkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Thu, 7 Jan 2010 21:58:46 +0000 (7 21:58 +0000)
tree59544ba7423f20aed58831a266585dd687dd224b
parent5e8fef281c5a8fdb8ca70491869ef57973c0e1f1
2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>

* method-to-ir.c: All types with variant arguments must fallback to the
slow path. This makes cast of variant delegates work.

* mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
argument that is set to TRUE is the returned vtable slot is for a variant
interface. Changed a g_print + g_assert_not_reached to a g_error.

* mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
a similar fashion of generic virtual methods.

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

* object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.

* object.c (build_imt_slots): Interfaces with variant generic arguments use the
fallback trampoline as well.

* class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
out argument that is set to TRUE if the match was direct.

* class.c (mono_class_is_assignable_from): Delegates require variance testing as well.

* class-internal.h: Update prototype of mono_class_interface_offset_with_variance.

git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mono@149198 e3ebcda4-bce8-0310-ba0a-eca2169e7518
mono/metadata/ChangeLog
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/object.c
mono/mini/ChangeLog
mono/mini/method-to-ir.c
mono/mini/mini-trampolines.c