MonoMethodBuilder *mb;
MonoMethod *res;
static MonoMethod *cached = NULL;
+ static MonoMethod *tp_store = NULL;
+
+ if (!tp_store) {
+ tp_store = mono_class_get_method_from_name (mono_defaults.transparent_proxy_class, "StoreRemoteField", -1);
+ g_assert (tp_store != NULL);
+ }
mono_marshal_lock_internal ();
if (cached) {
mb->method->save_lmf = 1;
sig = mono_metadata_signature_alloc (mono_defaults.corlib, 4);
- sig->params [0] = &mono_defaults.object_class->byval_arg;
+ sig->params [0] = &mono_defaults.transparent_proxy_class->byval_arg;
sig->params [1] = &mono_defaults.int_class->byval_arg;
sig->params [2] = &mono_defaults.int_class->byval_arg;
sig->params [3] = &mono_defaults.object_class->byval_arg;
mono_mb_emit_ldarg (mb, 2);
mono_mb_emit_ldarg (mb, 3);
- mono_mb_emit_icall (mb, mono_store_remote_field_new_icall);
+ mono_mb_emit_managed_call (mb, tp_store, NULL);
mono_mb_emit_byte (mb, CEE_RET);
#endif