#endif
/* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION "31"
+#define MONO_AOT_FILE_VERSION "32"
#if 0
#define mono_bitset_foreach_bit(set,b,n) \
} while (0)
#define NULLIFY_INS(ins) do { \
- (ins)->opcode = CEE_NOP; \
+ (ins)->opcode = OP_NOP; \
(ins)->dreg = (ins)->sreg1 = (ins)->sreg2 = -1; \
+ (ins)->ssa_op = MONO_SSA_NOP; \
} while (0)
typedef struct MonoInst MonoInst;
#else
extern gboolean mono_compile_aot;
#endif
-extern gboolean mono_use_security_manager;
+
+typedef enum {
+ MONO_SECURITY_MODE_NONE,
+ MONO_SECURITY_MODE_CORE_CLR,
+ MONO_SECURITY_MODE_CAS,
+ MONO_SECURITY_MODE_SMCS_HACK
+} MonoSecurityMode;
+
+extern MonoSecurityMode mono_security_mode;
struct MonoEdge {
MonoEdge *next;
};
struct MonoSpillInfo {
-#ifndef MONO_ARCH_HAS_XP_REGALLOC
- MonoSpillInfo *next;
-#endif
int offset;
};
gboolean virtual;
regmask_t used_iregs;
regmask_t used_fregs;
-#if defined(MONO_ARCH_HAS_XP_LOCAL_REGALLOC)
GSList *out_ireg_args;
GSList *out_freg_args;
-#endif
};
struct MonoCallArgParm {
MonoMethod *inlined_method; /* the method which is currently inlined */
MonoInst *domainvar; /* a cache for the current domain */
MonoInst *got_var; /* Global Offset Table variable */
+ MonoInst **args;
struct MonoAliasingInformation *aliasing_info;
guint32 lmf_offset;
guint16 *intvars;
MonoProfileCoverageInfo *coverage_info;
+ GHashTable *token_info_hash;
MonoCompileArch arch;
guint32 exception_type; /* MONO_EXCEPTION_* */
guint32 exception_data;
gulong cas_linkdemand_aptc;
gulong cas_linkdemand;
gulong cas_demand_generation;
+ gulong generic_virtual_invocations;
MonoMethod *max_ratio_method;
MonoMethod *biggest_method;
gboolean enabled;
gpointer mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token) MONO_INTERNAL;
MonoVTable* mono_find_class_init_trampoline_by_addr (gconstpointer addr) MONO_INTERNAL;
gpointer mono_magic_trampoline (gssize *regs, guint8 *code, MonoMethod *m, guint8* tramp) MONO_INTERNAL;
-gpointer mono_delegate_trampoline (gssize *regs, guint8 *code, MonoMethod *m, guint8* tramp) MONO_INTERNAL;
+gpointer mono_delegate_trampoline (gssize *regs, guint8 *code, MonoClass *klass, guint8* tramp) MONO_INTERNAL;
gpointer mono_aot_trampoline (gssize *regs, guint8 *code, guint8 *token_info,
guint8* tramp) MONO_INTERNAL;
gpointer mono_aot_plt_trampoline (gssize *regs, guint8 *code, guint8 *token_info,
gpointer mono_arch_get_call_filter (void) MONO_INTERNAL;
gpointer mono_arch_get_restore_context (void) MONO_INTERNAL;
gboolean mono_arch_handle_exception (void *sigctx, gpointer obj, gboolean test_only) MONO_INTERNAL;
+void mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean stack_ovf) MONO_INTERNAL;
gpointer mono_arch_ip_from_context (void *sigctx) MONO_INTERNAL;
void mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *ctx) MONO_INTERNAL;
void mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *ctx) MONO_INTERNAL;
void mono_arch_nullify_class_init_trampoline(guint8 *code, gssize *regs) MONO_INTERNAL;
void mono_arch_nullify_plt_entry (guint8 *code) MONO_INTERNAL;
void mono_arch_patch_delegate_trampoline (guint8 *code, guint8 *tramp, gssize *regs, guint8 *addr) MONO_INTERNAL;
+gpointer mono_arch_get_this_arg_from_call (MonoMethodSignature *sig, gssize *regs, guint8 *code);
+gpointer mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_target);
gpointer mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len) MONO_INTERNAL;
+void mono_arch_emit_imt_argument (MonoCompile *cfg, MonoCallInst *call) MONO_INTERNAL;
+MonoMethod* mono_arch_find_imt_method (gpointer *regs, guint8 *code) MONO_INTERNAL;
+MonoObject* mono_arch_find_this_argument (gpointer *regs, MonoMethod *method) MONO_INTERNAL;
+gpointer mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count) MONO_INTERNAL;
/* Exception handling */
gboolean mono_handle_exception (MonoContext *ctx, gpointer obj,