From 54ab0bf56c6c2bf59bcff74c32be7421f74c5489 Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Tue, 12 Mar 2013 18:21:28 -0400 Subject: [PATCH] Wrap MonoVTable::remote into a pair of accessors to make it easy to have code linked out. --- mono/metadata/class-internals.h | 4 ++++ mono/metadata/icall.c | 3 +-- mono/metadata/marshal.c | 2 +- mono/metadata/object.c | 11 ++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mono/metadata/class-internals.h b/mono/metadata/class-internals.h index 424af32243f..18d05e989f6 100644 --- a/mono/metadata/class-internals.h +++ b/mono/metadata/class-internals.h @@ -421,9 +421,13 @@ int mono_class_interface_match (const uint8_t *bitmap, int id) MONO_INTERNAL; #ifdef DISABLE_REMOTING #define mono_class_is_marshalbyref(klass) (FALSE) #define mono_class_is_contextbound(klass) (FALSE) +#define mono_vtable_is_remote(vtable) (FALSE) +#define mono_vtable_set_is_remote(vtable,enable) do {} while (0) #else #define mono_class_is_marshalbyref(klass) ((klass)->marshalbyref) #define mono_class_is_contextbound(klass) ((klass)->contextbound) +#define mono_vtable_is_remote(vtable) ((vtable)->remote) +#define mono_vtable_set_is_remote(vtable,enable) do { (vtable)->remote = enable ? 1 : 0; } while (0) #endif #ifdef DISABLE_COM diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c index daf3296bc1c..2388fbc4d93 100644 --- a/mono/metadata/icall.c +++ b/mono/metadata/icall.c @@ -6829,8 +6829,7 @@ ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (Mo klass = mono_class_from_mono_type (type->type); vtable = mono_class_vtable_full (mono_domain_get (), klass, TRUE); - if (enable) vtable->remote = 1; - else vtable->remote = 0; + mono_vtable_set_is_remote (vtable, enable); } #endif diff --git a/mono/metadata/marshal.c b/mono/metadata/marshal.c index 1bc37ba2a5c..dd658af92c4 100644 --- a/mono/metadata/marshal.c +++ b/mono/metadata/marshal.c @@ -3077,7 +3077,7 @@ mono_marshal_get_remoting_invoke (MonoMethod *method) MonoVTable *vtable = mono_class_vtable (mono_domain_get (), method->klass); g_assert (vtable); /*FIXME do proper error handling*/ - if (!vtable->remote) { + if (!mono_vtable_is_remote (vtable)) { return mono_cominterop_get_invoke (method); } } diff --git a/mono/metadata/object.c b/mono/metadata/object.c index 353dfc733e1..c5ffe7f0cbe 100644 --- a/mono/metadata/object.c +++ b/mono/metadata/object.c @@ -2113,10 +2113,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean MONO_GC_REGISTER_ROOT_IF_MOVING(vt->type); } - if (mono_class_is_contextbound (class)) - vt->remote = 1; - else - vt->remote = 0; + mono_vtable_set_is_remote (vt, mono_class_is_contextbound (class)); /* class_vtable_array keeps an array of created vtables */ @@ -2629,8 +2626,8 @@ mono_remote_class_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mon MonoClass *klass; type = ((MonoReflectionType *)rp->class_to_proxy)->type; klass = mono_class_from_mono_type (type); -#ifndef DISABLE_COM - if ((mono_class_is_com_object (klass) || (mono_defaults.com_object_class && klass == mono_defaults.com_object_class)) && !mono_class_vtable (mono_domain_get (), klass)->remote) +#ifndef DISABLE_COMf + if ((mono_class_is_com_object (klass) || (mono_defaults.com_object_class && klass == mono_defaults.com_object_class)) && !mono_vtable_is_remote (mono_class_vtable (mono_domain_get (), klass))) remote_class->default_vtable = mono_class_proxy_vtable (domain, remote_class, MONO_REMOTING_TARGET_COMINTEROP); else #endif @@ -4428,7 +4425,7 @@ mono_object_new_specific (MonoVTable *vtable) MONO_ARCH_SAVE_REGS; /* check for is_com_object for COM Interop */ - if (vtable->remote || mono_class_is_com_object (vtable->klass)) + if (mono_vtable_is_remote (vtable) || mono_class_is_com_object (vtable->klass)) { gpointer pa [1]; MonoMethod *im = vtable->domain->create_proxy_for_type_method; -- 2.11.4.GIT