mono_mb_emit_byte (mb, CEE_LDIND_REF);
mono_mb_emit_stloc (mb, local_delegates);
-
/* if (delegates == null) */
mono_mb_emit_ldloc (mb, local_delegates);
pos2 = mono_mb_emit_branch (mb, CEE_BRTRUE);
#endif /* DISABLE_JIT */
info = mono_wrapper_info_create (mb, subtype);
+ info->d.delegate_invoke.method = method;
if (ctx) {
MonoMethod *def;
MonoMethodSignature *sig;
} GsharedvtWrapperInfo;
+typedef struct {
+ MonoMethod *method;
+} DelegateInvokeWrapperInfo;
+
/*
* This structure contains additional information to uniquely identify a given wrapper
* method. It can be retrieved by mono_marshal_get_wrapper_info () for certain types
RemotingWrapperInfo remoting;
/* GSHAREDVT_IN_SIG/GSHAREDVT_OUT_SIG */
GsharedvtWrapperInfo gsharedvt;
+ /* DELEGATE_INVOKE */
+ DelegateInvokeWrapperInfo delegate_invoke;
} d;
} WrapperInfo;
WrapperInfo *info1 = mono_marshal_get_wrapper_info (method);
WrapperInfo *info2 = mono_marshal_get_wrapper_info (m);
- if (info1 && info2 && info1->subtype == info2->subtype && method->klass == m->klass) {
+ if (info1 && info2 && info1->subtype == info2->subtype && info1->d.delegate_invoke.method == info2->d.delegate_invoke.method) {
index = value;
break;
}