X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fclass-internals.h;h=b4134130427225c54b073bac452efd1a7f9124a5;hb=62b96ad507e6ba07bde09991a30e5447255e44ba;hp=6305d51c2682a171b9bdbc73969e8e36e00161a8;hpb=a5fc1343a36f9609a5bb2d7aa9142398f6887bbc;p=mono.git diff --git a/mono/metadata/class-internals.h b/mono/metadata/class-internals.h index 6305d51c268..b4134130427 100644 --- a/mono/metadata/class-internals.h +++ b/mono/metadata/class-internals.h @@ -194,7 +194,7 @@ struct _MonoEvent { }; /* type of exception being "on hold" for later processing (see exception_type) */ -enum { +typedef enum { MONO_EXCEPTION_NONE = 0, MONO_EXCEPTION_INVALID_PROGRAM = 3, MONO_EXCEPTION_UNVERIFIABLE_IL = 4, @@ -211,7 +211,7 @@ enum { MONO_EXCEPTION_INLINE_FAILED = 15, MONO_EXCEPTION_MONO_ERROR = 16, /* add other exception type */ -}; +} MonoExceptionType; /* This struct collects the info needed for the runtime use of a class, * like the vtables for a domain, the GC descriptor, etc. @@ -256,6 +256,15 @@ typedef struct { GList *nested_classes; } MonoClassExt; +typedef enum { + MONO_CLASS_DEF = 1, /* non-generic type */ + MONO_CLASS_GTD, /* generic type definition */ + MONO_CLASS_GINST, /* generic instantiation */ + MONO_CLASS_GPARAM, /* generic parameter */ + MONO_CLASS_ARRAY, /* vector or array, bounded or not */ + MONO_CLASS_POINTER, /* pointer of function pointer*/ +} MonoTypeKind; + struct _MonoClass { /* element class for arrays and enum basetype for enums */ MonoClass *element_class; @@ -272,8 +281,6 @@ struct _MonoClass { int instance_size; /* object instance size */ guint inited : 1; - /* We use init_pending to detect cyclic calls to mono_class_init */ - guint init_pending : 1; /* A class contains static and non static data. Static data can be * of the same type as the class itselfs, but it does not influence @@ -317,13 +324,11 @@ struct _MonoClass { guint nested_classes_inited : 1; /* Whenever nested_class is initialized */ /* next byte*/ + guint class_kind : 3; /* One of the values from MonoTypeKind */ guint interfaces_inited : 1; /* interfaces is initialized */ guint simd_type : 1; /* class is a simd intrinsic type */ - guint is_generic : 1; /* class is a generic type definition */ - guint is_inflated : 1; /* class is a generic instance */ guint has_finalize_inited : 1; /* has_finalize is initialized */ - guint fields_inited : 1; /* fields is initialized */ - guint setup_fields_called : 1; /* to prevent infinite loops in setup_fields */ + guint fields_inited : 1; /* setup_fields () has finished */ guint has_failure : 1; /* See MONO_CLASS_PROP_EXCEPTION_DATA for a MonoErrorBoxed with the details */ MonoClass *parent; @@ -707,7 +712,7 @@ void mono_class_setup_supertypes (MonoClass *klass); void -mono_class_setup_fields_locking (MonoClass *klass); +mono_class_setup_fields (MonoClass *klass); /* WARNING * Only call this function if you can ensure both @klass and @parent @@ -911,7 +916,7 @@ void mono_classes_cleanup (void); void -mono_class_layout_fields (MonoClass *klass, int instance_size); +mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_size, gboolean sre); void mono_class_setup_interface_offsets (MonoClass *klass); @@ -1434,4 +1439,7 @@ mono_error_set_for_class_failure (MonoError *orerror, const MonoClass *klass); gboolean mono_class_has_failure (const MonoClass *klass); +/*Now that everything has been defined, let's include the inline functions */ +#include + #endif /* __MONO_METADATA_CLASS_INTERNALS_H__ */