#include "mono/metadata/blob.h"
#include "mono/metadata/mempool.h"
#include "mono/metadata/domain-internals.h"
-#include "mono/utils/mono-hash.h"
+#include "mono/metadata/mono-hash.h"
#include "mono/utils/mono-compiler.h"
#include "mono/utils/mono-dl.h"
#include "mono/utils/monobitset.h"
#define MONO_PUBLIC_KEY_TOKEN_LENGTH 17
+#define MONO_PROCESSOR_ARCHITECTURE_NONE 0
+#define MONO_PROCESSOR_ARCHITECTURE_MSIL 1
+#define MONO_PROCESSOR_ARCHITECTURE_X86 2
+#define MONO_PROCESSOR_ARCHITECTURE_IA64 3
+#define MONO_PROCESSOR_ARCHITECTURE_AMD64 4
+
struct _MonoAssemblyName {
const char *name;
const char *culture;
uint32_t hash_alg;
uint32_t hash_len;
uint32_t flags;
- uint16_t major, minor, build, revision;
+ uint16_t major, minor, build, revision, arch;
};
struct MonoTypeNameParse {
guint8 dynamic;
guint8 corlib_internal;
gboolean ref_only;
+ guint8 wrap_non_exception_throws;
+ guint8 wrap_non_exception_throws_inited;
+ guint8 jit_optimizer_disabled;
+ guint8 jit_optimizer_disabled_inited;
/* security manager flags (one bit is for lazy initialization) */
guint32 ecma:2; /* Has the ECMA key */
guint32 aptc:2; /* Has the [AllowPartiallyTrustedCallers] attributes */
*/
GHashTable *delegate_abstract_invoke_cache;
+ /*
+ * indexed by SignatureMethodPair
+ */
+ GHashTable *delegate_bound_static_invoke_cache;
/*
* indexed by MonoMethod pointers
*/
GHashTable *method_to_table_idx;
GHashTable *field_to_table_idx;
GHashTable *method_aux_hash;
+ GHashTable *vararg_aux_hash;
MonoGHashTable *generic_def_objects;
MonoGHashTable *methodspec;
gboolean run;
guint has_old_version_top : 1;
guint has_new_version : 1;
guint is_valid : 1;
+ gint32 domain_id; /*Needed to unload per-domain binding*/
} MonoAssemblyBindingInfo;
struct _MonoMethodHeader {
- guint32 code_size;
const unsigned char *code;
- guint16 max_stack;
+#ifdef MONO_SMALL_CONFIG
+ guint16 code_size;
+#else
+ guint32 code_size;
+#endif
+ guint16 max_stack : 15;
+ unsigned int is_transient: 1; /* mono_metadata_free_mh () will actually free this header */
unsigned int num_clauses : 15;
/* if num_locals != 0, then the following apply: */
unsigned int init_locals : 1;
#define MONO_SIZEOF_METHOD_HEADER (sizeof (struct _MonoMethodHeader) - MONO_ZERO_LEN_ARRAY * SIZEOF_VOID_P)
struct _MonoMethodSignature {
- unsigned int hasthis : 1;
- unsigned int explicit_this : 1;
- unsigned int call_convention : 6;
- unsigned int pinvoke : 1;
- unsigned int ref_count : 23;
+ MonoType *ret;
+#ifdef MONO_SMALL_CONFIG
+ guint8 param_count;
+ gint8 sentinelpos;
+ unsigned int generic_param_count : 5;
+#else
guint16 param_count;
gint16 sentinelpos;
- unsigned int generic_param_count : 30;
+ unsigned int generic_param_count : 16;
+#endif
+ unsigned int call_convention : 6;
+ unsigned int hasthis : 1;
+ unsigned int explicit_this : 1;
+ unsigned int pinvoke : 1;
unsigned int is_inflated : 1;
unsigned int has_type_parameters : 1;
- MonoType *ret;
MonoType *params [MONO_ZERO_LEN_ARRAY];
};
gpointer
mono_image_alloc0 (MonoImage *image, guint size) MONO_INTERNAL;
+#define mono_image_new0(image,type,size) ((type *) mono_image_alloc0 (image, sizeof (type)* (size)))
+
char*
mono_image_strdup (MonoImage *image, const char *s) MONO_INTERNAL;
void
mono_image_close_finish (MonoImage *image) MONO_INTERNAL;
+typedef void (*MonoImageUnloadFunc) (MonoImage *image, gpointer user_data);
+
+void
+mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MONO_INTERNAL;
+
+void
+mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MONO_INTERNAL;
+
+gpointer
+mono_image_set_alloc (MonoImageSet *set, guint size) MONO_INTERNAL;
+
+gpointer
+mono_image_set_alloc0 (MonoImageSet *set, guint size) MONO_INTERNAL;
+
+char*
+mono_image_set_strdup (MonoImageSet *set, const char *s) MONO_INTERNAL;
+
+#define mono_image_set_new0(image,type,size) ((type *) mono_image_set_alloc0 (image, sizeof (type)* (size)))
MonoType*
mono_metadata_get_shared_type (MonoType *type) MONO_INTERNAL;
gboolean mono_public_tokens_are_equal (const unsigned char *pubt1, const unsigned char *pubt2) MONO_INTERNAL;
void mono_config_parse_publisher_policy (const char *filename, MonoAssemblyBindingInfo *binding_info) MONO_INTERNAL;
+void mono_config_parse_assembly_bindings (const char *filename, int major, int minor, void *user_data,
+ void (*infocb)(MonoAssemblyBindingInfo *info, void *user_data)) MONO_INTERNAL;
gboolean
mono_assembly_name_parse_full (const char *name,
MonoImage *mono_image_open_raw (const char *fname, MonoImageOpenStatus *status) MONO_INTERNAL;
+MonoException *mono_get_exception_field_access_msg (const char *msg) MONO_INTERNAL;
+
+MonoException *mono_get_exception_method_access_msg (const char *msg) MONO_INTERNAL;
+
+MonoMethod* method_from_method_def_or_ref (MonoImage *m, guint32 tok, MonoGenericContext *context) MONO_INTERNAL;
+
#endif /* __MONO_METADATA_INTERNALS_H__ */