projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
[mono.git]
/
mono
/
metadata
/
class.h
diff --git
a/mono/metadata/class.h
b/mono/metadata/class.h
index a498691c06c6fa24ff93f9af92d35c8564a9bd9d..47180f38be6846c0434c77d5bb7afeb9b15b4cb5 100644
(file)
--- a/
mono/metadata/class.h
+++ b/
mono/metadata/class.h
@@
-7,6
+7,8
@@
#define MONO_CLASS_IS_ARRAY(c) ((c)->rank)
#define MONO_CLASS_IS_ARRAY(c) ((c)->rank)
+#define MONO_DEFAULT_SUPERTABLE_SIZE 6
+
extern gboolean mono_print_vtable;
typedef struct MonoVTable MonoVTable;
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 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;
MonoClass *parent;
MonoClass *nested_in;
@@
-108,6
+111,10
@@
struct _MonoClass {
gint *interface_offsets;
MonoClass **interfaces;
gint *interface_offsets;
MonoClass **interfaces;
+ /* for fast subtype checks */
+ guint idepth;
+ MonoClass **supertypes;
+
/*
* Computed object instance size, total.
*/
/*
* Computed object instance size, total.
*/
@@
-144,6
+151,9
@@
struct _MonoClass {
void *reflection_info;
void *reflection_info;
+ void *gc_descr;
+ guint64 gc_bitmap;
+
MonoMethod *ptr_to_str;
MonoMethod *str_to_ptr;
MonoMethod *ptr_to_str;
MonoMethod *str_to_ptr;
@@
-153,10
+163,17
@@
struct _MonoClass {
struct MonoVTable {
MonoClass *klass;
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;
MonoDomain *domain; /* each object/vtable belongs to exactly one domain */
guint max_interface_id;
gpointer *interface_offsets;
- gpointer data;
+ 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];
};
gpointer vtable [MONO_ZERO_LEN_ARRAY];
};
@@
-172,6
+189,8
@@
extern MonoStats mono_stats;
typedef gpointer (*MonoTrampoline) (MonoMethod *method);
typedef gpointer (*MonoTrampoline) (MonoMethod *method);
+typedef gpointer (*MonoLookupDynamicToken) (MonoImage *image, guint32 token);
+
MonoClass *
mono_class_get (MonoImage *image, guint32 type_token);
MonoClass *
mono_class_get (MonoImage *image, guint32 type_token);
@@
-182,7
+201,7
@@
void
mono_class_layout_fields (MonoClass *klass);
void
mono_class_layout_fields (MonoClass *klass);
void
-mono_class_setup_vtable (MonoClass *klass);
+mono_class_setup_vtable (MonoClass *klass
, MonoMethod **overrides, int onum
);
MonoVTable *
mono_class_vtable (MonoDomain *domain, MonoClass *klass);
MonoVTable *
mono_class_vtable (MonoDomain *domain, MonoClass *klass);
@@
-196,6
+215,9
@@
mono_class_setup_mono_type (MonoClass *klass);
void
mono_class_setup_parent (MonoClass *klass, MonoClass *parent);
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);
MonoClass *
mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
@@
-256,6
+278,10
@@
mono_class_min_align (MonoClass *klass);
MonoClass *
mono_class_from_mono_type (MonoType *type);
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);
gpointer
mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass);
@@
-265,4
+291,13
@@
mono_install_trampoline (MonoTrampoline func);
void
mono_install_remoting_trampoline (MonoTrampoline func);
void
mono_install_remoting_trampoline (MonoTrampoline func);
+gpointer
+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_ */
#endif /* _MONO_CLI_CLASS_H_ */