From bc183b8208b7a2b3310715ad2181d6a4720a159c Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Thu, 8 Sep 2022 19:29:08 -0400 Subject: [PATCH] [mono][wasm] Fix boxing of gsharedvt nullables. (#75288) --- src/mono/mono/mini/method-to-ir.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index 41bece492d72d..aaf695a39b93c 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -3403,9 +3403,14 @@ mini_emit_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_us if (context_used) { if (cfg->llvm_only) { + MonoInst *addr; MonoMethodSignature *sig = mono_method_signature_internal (method); - MonoInst *addr = emit_get_rgctx_method (cfg, context_used, method, - MONO_RGCTX_INFO_METHOD_FTNDESC); + if (mini_is_gsharedvt_klass (klass)) + addr = mini_emit_get_gsharedvt_info_klass (cfg, klass, + MONO_RGCTX_INFO_NULLABLE_CLASS_BOX); + else + addr = emit_get_rgctx_method (cfg, context_used, method, + MONO_RGCTX_INFO_METHOD_FTNDESC); cfg->interp_in_signatures = g_slist_prepend_mempool (cfg->mempool, cfg->interp_in_signatures, sig); return mini_emit_llvmonly_calli (cfg, sig, &val, addr); } else {