1 #ifndef _MONO_JIT_JIT_H_
2 #define _MONO_JIT_JIT_H_
6 #include <mono/metadata/loader.h>
7 #include <mono/metadata/object.h>
12 typedef struct _MBTree MBTree;
19 VAL_DOUBLE, // must be the last - do not reorder
37 unsigned is_block_start:1;
44 gint32 cli_addr; /* start instruction */
45 gint32 length; /* length of stream */
57 MonoBytecodeInfo *bcinfo;
72 guint32 args_start_index;
73 guint32 locals_start_index;
87 gpointer handler_start;
88 guint32 token_or_filter;
89 } MonoJitExceptionInfo;
97 MonoJitExceptionInfo *clauses;
101 typedef GArray MonoJitInfoTable;
103 extern gboolean mono_jit_dump_asm;
104 extern gboolean mono_jit_dump_forest;
105 extern gboolean mono_jit_trace_calls;
106 extern MonoJitInfoTable *mono_jit_info_table;
107 extern gpointer mono_end_of_stack;
110 mono_jit_info_table_new (void);
113 mono_jit_info_table_index (MonoJitInfoTable *table, gpointer addr);
116 mono_jit_info_table_add (MonoJitInfoTable *table, MonoJitInfo *ji);
119 mono_jit_info_table_find (MonoJitInfoTable *table, gpointer addr);
122 arch_handle_exception (struct sigcontext *ctx, gpointer obj);
125 mono_jit_abort (MonoObject *obj);
128 mono_cfg_new (MonoMethod *method, MonoMemPool *mp);
131 mono_cfg_free (MonoFlowGraph *cfg);
134 mono_ctree_new (MonoMemPool *mp, int op, MBTree *left,
137 mono_ctree_new_leaf (MonoMemPool *mp, int op);
140 mono_analyze_flow (MonoFlowGraph *cfg);
143 mono_analyze_stack (MonoFlowGraph *cfg);
146 mono_disassemble_code (guint8 *code, int size);
149 arch_compile_method (MonoMethod *method);
152 arch_create_jit_trampoline (MonoMethod *method);
155 arch_create_simple_jit_trampoline (MonoMethod *method);
157 /* some handy debugging functions */
160 mono_print_ctree (MBTree *tree);
163 mono_print_forest (GPtrArray *forest);