X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fclass.h;h=47180f38be6846c0434c77d5bb7afeb9b15b4cb5;hb=dcdd5a25d92ca46ae14f74e974b4def640920e33;hp=70a158c4bcf7961a9fe8ece0437408a08536d52e;hpb=9d2fdc34b713e4e75ff492dca81b5a921c1ca740;p=mono.git diff --git a/mono/metadata/class.h b/mono/metadata/class.h index 70a158c4bcf..47180f38be6 100644 --- a/mono/metadata/class.h +++ b/mono/metadata/class.h @@ -7,6 +7,8 @@ #define MONO_CLASS_IS_ARRAY(c) ((c)->rank) +#define MONO_DEFAULT_SUPERTABLE_SIZE 6 + extern gboolean mono_print_vtable; typedef struct MonoVTable MonoVTable; @@ -91,7 +93,8 @@ struct _MonoClass { guint marshalbyref : 1; /* class is a MarshalByRefObject */ guint contextbound : 1; /* class is a ContextBoundObject */ guint delegate : 1; /* class is a Delegate */ - guint dummy : 1; /* temorary hack */ + guint gc_descr_inited : 1; /* gc_descr is initialized */ + guint dummy : 1; /* temporary hack */ MonoClass *parent; MonoClass *nested_in; @@ -108,6 +111,10 @@ struct _MonoClass { gint *interface_offsets; MonoClass **interfaces; + /* for fast subtype checks */ + guint idepth; + MonoClass **supertypes; + /* * Computed object instance size, total. */ @@ -144,6 +151,9 @@ struct _MonoClass { void *reflection_info; + void *gc_descr; + guint64 gc_bitmap; + MonoMethod *ptr_to_str; MonoMethod *str_to_ptr; @@ -153,10 +163,17 @@ struct _MonoClass { struct MonoVTable { MonoClass *klass; + /* + * According to comments in gc_gcj.h, this should be the second word in + * the vtable. + */ + void *gc_descr; MonoDomain *domain; /* each object/vtable belongs to exactly one domain */ guint max_interface_id; gpointer *interface_offsets; gpointer data; /* to store static class data */ + guint remote : 1; /* class is remotely activated */ + /* do not add any fields after vtable, the structure is dynamically extended */ gpointer vtable [MONO_ZERO_LEN_ARRAY]; }; @@ -198,6 +215,9 @@ mono_class_setup_mono_type (MonoClass *klass); void mono_class_setup_parent (MonoClass *klass, MonoClass *parent); +void +mono_class_setup_supertypes (MonoClass *klass); + MonoClass * mono_class_from_name (MonoImage *image, const char* name_space, const char *name); @@ -258,6 +278,10 @@ mono_class_min_align (MonoClass *klass); MonoClass * mono_class_from_mono_type (MonoType *type); +gboolean +mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc, + gboolean check_interfaces); + gpointer mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass); @@ -273,4 +297,7 @@ mono_lookup_dynamic_token (MonoImage *image, guint32 token); void mono_install_lookup_dynamic_token (MonoLookupDynamicToken func); +void +mono_install_get_config_dir(void); + #endif /* _MONO_CLI_CLASS_H_ */