if (sharing_enabled && context_sharable)
pass_mrgctx = TRUE;
- if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, mono_method_signature (cmethod)))
+ if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig))
pass_mrgctx = TRUE;
}
}
gpointer info;
MonoMethod *wrapper;
MonoMethod *gm;
+ MonoMethodSignature *sig, *gsig;
g_assert (method->is_inflated);
gm = caller_method;
- info = mono_arch_get_gsharedvt_call_info (addr, method, gm, gji->generic_sharing_context, FALSE, vcall_offset);
+ sig = mono_method_signature (method);
+ gsig = mono_method_signature (gm);
+
+ info = mono_arch_get_gsharedvt_call_info (addr, sig, gsig, gji->generic_sharing_context, FALSE, vcall_offset);
if (!tramp_addr) {
wrapper = mono_marshal_get_gsharedvt_out_wrapper ();
static gpointer tramp_addr;
gpointer info;
MonoMethod *wrapper;
+ MonoMethodSignature *sig, *gsig;
//
// FIXME:
// FIXME: This is just a workaround
if (caller_method == method) {
} else {
- info = mono_arch_get_gsharedvt_call_info (ji->code_start, method, ji->method, gji->generic_sharing_context, TRUE, -1);
+ sig = mono_method_signature (method);
+ gsig = mono_method_signature (ji->method);
+
+ info = mono_arch_get_gsharedvt_call_info (ji->code_start, sig, gsig, gji->generic_sharing_context, TRUE, -1);
if (!tramp_addr) {
wrapper = mono_marshal_get_gsharedvt_in_wrapper ();
gpointer info;
MonoMethod *wrapper;
MonoGenericSharingContext *gsctx;
+ MonoMethodSignature *sig, *gsig;
/* Here m is a generic instance, while ji->method is the gsharedvt method implementing it */
/* Call from normal/gshared code to gsharedvt code with variable signature */
gsctx = mono_jit_info_get_generic_sharing_context (ji);
- info = mono_arch_get_gsharedvt_call_info (compiled_method, m, ji->method, gsctx, TRUE, -1);
+ sig = mono_method_signature (m);
+ gsig = mono_method_signature (ji->method);
+
+ info = mono_arch_get_gsharedvt_call_info (compiled_method, sig, gsig, gsctx, TRUE, -1);
if (!tramp_addr) {
wrapper = mono_marshal_get_gsharedvt_in_wrapper ();
void mono_arch_set_target (char *mtriple) MONO_INTERNAL;
gboolean mono_arch_gsharedvt_sig_supported (MonoMethodSignature *sig) MONO_INTERNAL;
gpointer mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
-gpointer mono_arch_get_gsharedvt_call_info (gpointer addr, MonoMethod *m, MonoMethod *gsharedvt_method, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset) MONO_INTERNAL;
+gpointer mono_arch_get_gsharedvt_call_info (gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset) MONO_INTERNAL;
/* Soft Debug support */
#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED