1 #ifndef _MONO_JIT_JIT_H_
2 #define _MONO_JIT_JIT_H_
6 #include <mono/metadata/loader.h>
7 #include <mono/metadata/object.h>
8 #include <mono/metadata/exception.h>
9 #include <mono/metadata/mempool.h>
13 #define ISSTRUCT(t) (!t->byref && t->type == MONO_TYPE_VALUETYPE && !t->data.klass->enumtype)
15 typedef struct _MBTree MBTree;
22 VAL_DOUBLE, // must be the last - do not reorder
32 gpointer previous_lmf;
52 unsigned is_block_start:1;
59 gint32 cli_addr; /* start instruction */
60 gint32 length; /* length of stream */
72 unsigned share_code:1;
74 MonoBytecodeInfo *bcinfo;
89 guint32 args_start_index;
90 guint32 locals_start_index;
104 gpointer handler_start;
105 guint32 token_or_filter;
106 } MonoJitExceptionInfo;
113 unsigned num_clauses;
114 MonoJitExceptionInfo *clauses;
117 typedef GArray MonoJitInfoTable;
119 extern gboolean mono_jit_dump_asm;
120 extern gboolean mono_jit_dump_forest;
121 extern gboolean mono_jit_trace_calls;
122 extern gboolean mono_jit_share_code;
123 extern MonoJitInfoTable *mono_jit_info_table;
124 extern gpointer mono_end_of_stack;
126 extern guint32 lmf_thread_id;
129 mono_jit_info_table_new (void);
132 mono_jit_info_table_index (MonoJitInfoTable *table, gpointer addr);
135 mono_jit_info_table_add (MonoJitInfoTable *table, MonoJitInfo *ji);
138 mono_jit_info_table_find (MonoJitInfoTable *table, gpointer addr);
141 arch_handle_exception (struct sigcontext *ctx, gpointer obj);
144 arch_get_throw_exception (void);
147 arch_get_throw_exception_by_name (void);
150 mono_jit_abort (MonoObject *obj);
153 mono_cfg_new (MonoMethod *method, MonoMemPool *mp);
156 mono_cfg_free (MonoFlowGraph *cfg);
159 mono_ctree_new (MonoMemPool *mp, int op, MBTree *left,
162 mono_ctree_new_leaf (MonoMemPool *mp, int op);
165 mono_analyze_flow (MonoFlowGraph *cfg);
168 mono_analyze_stack (MonoFlowGraph *cfg);
171 mono_disassemble_code (guint8 *code, int size, char *id);
174 arch_compile_method (MonoMethod *method);
177 arch_create_jit_trampoline (MonoMethod *method);
179 /* some handy debugging functions */
182 mono_print_ctree (MBTree *tree);
185 mono_print_forest (GPtrArray *forest);