Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-09-03 21:14:57 +0300
committerGitHub <noreply@github.com>2021-09-03 21:14:57 +0300
commit22074346900050843ace1d658cdb242f728a22fb (patch)
treecbab060d998a7227a568061bb79405d9a7c250c0
parenta1ada04a58a69c792e0bb37021e98b9c0b0dc686 (diff)
[mini] Don't add unbox tramopline on generic DIM calls (#21209)
Don't unbox a valuetype `this` if the generic method is a DIM Fixes https://github.com/dotnet/runtime/issues/58394 Fixes https://github.com/mono/mono/issues/21206 Co-authored-by: lambdageek <lambdageek@users.noreply.github.com>
-rw-r--r--mono/mini/mini-trampolines.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c
index e5bb1cea2a2..3d507bfcc3d 100644
--- a/mono/mini/mini-trampolines.c
+++ b/mono/mini/mini-trampolines.c
@@ -637,11 +637,13 @@ common_call_trampoline (host_mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVTa
return NULL;
if (generic_virtual || variant_iface) {
- if (m_class_is_valuetype (vt->klass)) /*FIXME is this required variant iface?*/
+ if (m_class_is_valuetype (vt->klass) && !mini_method_is_default_method (m)) /*FIXME is this required variant iface?*/
need_unbox_tramp = TRUE;
} else if (orig_vtable_slot) {
- if (m_class_is_valuetype (m->klass))
+ if (m_class_is_valuetype (m->klass)) {
+ g_assert (!mini_method_is_default_method (m));
need_unbox_tramp = TRUE;
+ }
}
addr = mini_add_method_trampoline (m, compiled_method, need_rgctx_tramp, need_unbox_tramp);