MONO_OPT_ABCREM = 1 << 18,
MONO_OPT_SSAPRE = 1 << 19,
MONO_OPT_EXCEPTION= 1 << 20,
MONO_OPT_ABCREM = 1 << 18,
MONO_OPT_SSAPRE = 1 << 19,
MONO_OPT_EXCEPTION= 1 << 20,
MonoSpillInfo *spill_info; /* machine register spills */
MonoSpillInfo *spill_info_float; /* fp register spills */
gint spill_count;
MonoSpillInfo *spill_info; /* machine register spills */
MonoSpillInfo *spill_info_float; /* fp register spills */
gint spill_count;
/* unsigned char *cil_code; */
MonoMethod *inlined_method; /* the method which is currently inlined */
MonoInst *domainvar; /* a cache for the current domain */
/* unsigned char *cil_code; */
MonoMethod *inlined_method; /* the method which is currently inlined */
MonoInst *domainvar; /* a cache for the current domain */
- gboolean disable_aot;
- gboolean disable_ssa;
- gboolean run_cctors;
- gboolean need_lmf_area;
- gboolean compile_aot;
- gboolean got_var_allocated;
- gboolean ret_var_is_local;
+ guint disable_aot : 1;
+ guint disable_ssa : 1;
+ guint run_cctors : 1;
+ guint need_lmf_area : 1;
+ guint compile_aot : 1;
+ guint got_var_allocated : 1;
+ guint ret_var_is_local : 1;
-#ifdef __ia64
- guint8 ins, locals, outs; /* reg stack region sizes */
-#endif /* __ia64 */
+
+ /* Fields used by the local reg allocator */
+ void* reginfo;
+ void* reginfof;
+ void* reverse_inst_list;
+ int reginfo_len, reginfof_len;
+ int reverse_inst_list_len;
MonoInst* mono_compile_create_var_load (MonoCompile *cfg, gssize var_index);
MonoInst* mono_compile_create_var_store (MonoCompile *cfg, gssize var_index, MonoInst *value);
MonoType* mono_type_from_stack_type (MonoInst *ins);
MonoInst* mono_compile_create_var_load (MonoCompile *cfg, gssize var_index);
MonoInst* mono_compile_create_var_store (MonoCompile *cfg, gssize var_index, MonoInst *value);
MonoType* mono_type_from_stack_type (MonoInst *ins);
void mono_blockset_print (MonoCompile *cfg, MonoBitSet *set, const char *name, guint idom);
void mono_print_tree (MonoInst *tree);
void mono_print_tree_nl (MonoInst *tree);
void mono_blockset_print (MonoCompile *cfg, MonoBitSet *set, const char *name, guint idom);
void mono_print_tree (MonoInst *tree);
void mono_print_tree_nl (MonoInst *tree);
const char* mono_inst_name (int op);
void mono_inst_foreach (MonoInst *tree, MonoInstFunc func, gpointer data);
void mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id);
const char* mono_inst_name (int op);
void mono_inst_foreach (MonoInst *tree, MonoInstFunc func, gpointer data);
void mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id);
void mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target);
void mono_remove_patch_info (MonoCompile *cfg, int ip);
gpointer mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *patch_info, gboolean run_cctors);
void mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target);
void mono_remove_patch_info (MonoCompile *cfg, int ip);
gpointer mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *patch_info, gboolean run_cctors);
int mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options);
MonoCompile *mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gboolean run_cctors, gboolean compile_aot, int parts);
void mono_destroy_compile (MonoCompile *cfg);
int mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options);
MonoCompile *mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gboolean run_cctors, gboolean compile_aot, int parts);
void mono_destroy_compile (MonoCompile *cfg);
void mono_aot_init (void);
MonoJitInfo* mono_aot_get_method (MonoDomain *domain,
MonoMethod *method);
gpointer mono_aot_get_method_from_token (MonoDomain *domain, MonoImage *image, guint32 token);
gboolean mono_aot_is_got_entry (guint8 *code, guint8 *addr);
void mono_aot_init (void);
MonoJitInfo* mono_aot_get_method (MonoDomain *domain,
MonoMethod *method);
gpointer mono_aot_get_method_from_token (MonoDomain *domain, MonoImage *image, guint32 token);
gboolean mono_aot_is_got_entry (guint8 *code, guint8 *addr);
gboolean mono_aot_init_vtable (MonoVTable *vtable);
gboolean mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res);
MonoJitInfo* mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr);
gboolean mono_aot_init_vtable (MonoVTable *vtable);
gboolean mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res);
MonoJitInfo* mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr);
gboolean mono_aot_is_pagefault (void *ptr);
void mono_aot_handle_pagefault (void *ptr);
guint32 mono_aot_get_n_pagefaults (void);
gboolean mono_aot_is_pagefault (void *ptr);
void mono_aot_handle_pagefault (void *ptr);
guint32 mono_aot_get_n_pagefaults (void);
gboolean mono_method_blittable (MonoMethod *method);
gboolean mono_method_same_domain (MonoJitInfo *caller, MonoJitInfo *callee);
gboolean mono_method_blittable (MonoMethod *method);
gboolean mono_method_same_domain (MonoJitInfo *caller, MonoJitInfo *callee);
gpointer mono_delegate_trampoline (gssize *regs, guint8 *code, MonoMethod *m, guint8* tramp);
gpointer mono_aot_trampoline (gssize *regs, guint8 *code, guint8 *token_info,
guint8* tramp);
gpointer mono_delegate_trampoline (gssize *regs, guint8 *code, MonoMethod *m, guint8* tramp);
gpointer mono_aot_trampoline (gssize *regs, guint8 *code, guint8 *token_info,
guint8* tramp);
void mono_class_init_trampoline (gssize *regs, guint8 *code, MonoVTable *vtable, guint8 *tramp);
gboolean mono_running_on_valgrind (void);
void mono_class_init_trampoline (gssize *regs, guint8 *code, MonoVTable *vtable, guint8 *tramp);
gboolean mono_running_on_valgrind (void);
void *mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments);
void *mono_arch_instrument_epilog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments);
MonoCallInst *mono_arch_call_opcode (MonoCompile *cfg, MonoBasicBlock* bb, MonoCallInst *call, int is_virtual);
void *mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments);
void *mono_arch_instrument_epilog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments);
MonoCallInst *mono_arch_call_opcode (MonoCompile *cfg, MonoBasicBlock* bb, MonoCallInst *call, int is_virtual);
-MonoInst *mono_arch_get_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args);
+MonoInst *mono_arch_get_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args);
-void mono_call_inst_add_outarg_reg (MonoCallInst *call, int vreg, int hreg, gboolean fp);
+void mono_call_inst_add_outarg_reg (MonoCompile *cfg, MonoCallInst *call, int vreg, int hreg, gboolean fp);
const char *mono_arch_regname (int reg);
const char *mono_arch_fregname (int reg);
gpointer mono_arch_get_throw_exception (void);
const char *mono_arch_regname (int reg);
const char *mono_arch_fregname (int reg);
gpointer mono_arch_get_throw_exception (void);
gpointer mono_arch_create_jit_trampoline (MonoMethod *method);
MonoJitInfo *mono_arch_create_jump_trampoline (MonoMethod *method);
gpointer mono_arch_create_class_init_trampoline(MonoVTable *vtable);
gpointer mono_arch_create_jit_trampoline (MonoMethod *method);
MonoJitInfo *mono_arch_create_jump_trampoline (MonoMethod *method);
gpointer mono_arch_create_class_init_trampoline(MonoVTable *vtable);
GList *mono_arch_get_allocatable_int_vars (MonoCompile *cfg);
GList *mono_arch_get_global_int_regs (MonoCompile *cfg);
guint32 mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv);
GList *mono_arch_get_allocatable_int_vars (MonoCompile *cfg);
GList *mono_arch_get_global_int_regs (MonoCompile *cfg);
guint32 mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv);
void mono_arch_register_lowlevel_calls (void);
gpointer mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr);
void mono_arch_patch_callsite (guint8 *code, guint8 *addr);
void mono_arch_register_lowlevel_calls (void);
gpointer mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr);
void mono_arch_patch_callsite (guint8 *code, guint8 *addr);
void mono_arch_patch_delegate_trampoline (guint8 *code, guint8 *tramp, gssize *regs, guint8 *addr);
gpointer mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len);
/* Exception handling */
gboolean mono_handle_exception (MonoContext *ctx, gpointer obj,
gpointer original_ip, gboolean test_only);
void mono_arch_patch_delegate_trampoline (guint8 *code, guint8 *tramp, gssize *regs, guint8 *addr);
gpointer mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len);
/* Exception handling */
gboolean mono_handle_exception (MonoContext *ctx, gpointer obj,
gpointer original_ip, gboolean test_only);
void mono_print_thread_dump (void *sigctx);
void mono_jit_walk_stack (MonoStackWalk func, gboolean do_il_offset, gpointer user_data);
void mono_jit_walk_stack_from_ctx (MonoStackWalk func, MonoContext *ctx, gboolean do_il_offset, gpointer user_data);
void mono_print_thread_dump (void *sigctx);
void mono_jit_walk_stack (MonoStackWalk func, gboolean do_il_offset, gpointer user_data);
void mono_jit_walk_stack_from_ctx (MonoStackWalk func, MonoContext *ctx, gboolean do_il_offset, gpointer user_data);