1 /** 2 * \file 3 * Author: 4 * Dietmar Maurer (dietmar@ximian.com) 5 * 6 * (C) 2001, 2002, 2003 Ximian, Inc. 7 */ 8 9 #ifndef _MONO_JIT_JIT_H_ 10 #define _MONO_JIT_JIT_H_ 11 12 #include <mono/metadata/appdomain.h> 13 14 MONO_BEGIN_DECLS 15 16 MONO_API MonoDomain * 17 mono_jit_init (const char *file); 18 19 MONO_API MonoDomain * 20 mono_jit_init_version (const char *root_domain_name, const char *runtime_version); 21 22 MONO_API int 23 mono_jit_exec (MonoDomain *domain, MonoAssembly *assembly, 24 int argc, char *argv[]); 25 MONO_API void 26 mono_jit_cleanup (MonoDomain *domain); 27 28 MONO_API mono_bool 29 mono_jit_set_trace_options (const char* options); 30 31 MONO_API void 32 mono_set_signal_chaining (mono_bool chain_signals); 33 34 MONO_API void 35 mono_set_crash_chaining (mono_bool chain_signals); 36 37 /** 38 * This function is deprecated, use mono_jit_set_aot_mode instead. 39 */ 40 MONO_API void 41 mono_jit_set_aot_only (mono_bool aot_only); 42 43 /** 44 * Allows control over our AOT (Ahead-of-time) compilation mode. 45 */ 46 typedef enum { 47 /* Disables AOT mode */ 48 MONO_AOT_MODE_NONE, 49 /* Enables normal AOT mode, equivalent to mono_jit_set_aot_only (false) */ 50 MONO_AOT_MODE_NORMAL, 51 /* Enables hybrid AOT mode, JIT can still be used for wrappers */ 52 MONO_AOT_MODE_HYBRID, 53 /* Enables full AOT mode, JIT is disabled and not allowed, 54 * equivalent to mono_jit_set_aot_only (true) */ 55 MONO_AOT_MODE_FULL, 56 /* Same as full, but use only llvm compiled code */ 57 MONO_AOT_MODE_LLVMONLY, 58 /* Uses Interpreter, JIT is disabled and not allowed, 59 * equivalent to "--full-aot --interpreter" */ 60 MONO_AOT_MODE_INTERP, 61 /* Same as INTERP, but use only llvm compiled code */ 62 MONO_AOT_MODE_INTERP_LLVMONLY, 63 } MonoAotMode; 64 65 MONO_API void 66 mono_jit_set_aot_mode (MonoAotMode mode); 67 68 /* 69 * Returns whether the runtime was invoked for the purpose of AOT-compiling an 70 * assembly, i.e. no managed code will run. 71 */ 72 MONO_API mono_bool 73 mono_jit_aot_compiling (void); 74 75 /* Allow embedders to decide wherther to actually obey breakpoint instructions 76 * in specific methods (works for both break IL instructions and Debugger.Break () 77 * method calls). 78 */ 79 typedef enum { 80 /* the default is to always obey the breakpoint */ 81 MONO_BREAK_POLICY_ALWAYS, 82 /* a nop is inserted instead of a breakpoint */ 83 MONO_BREAK_POLICY_NEVER, 84 /* the breakpoint is executed only if the program has ben started under 85 * the debugger (that is if a debugger was attached at the time the method 86 * was compiled). 87 */ 88 MONO_BREAK_POLICY_ON_DBG 89 } MonoBreakPolicy; 90 91 typedef MonoBreakPolicy (*MonoBreakPolicyFunc) (MonoMethod *method); 92 MONO_API void mono_set_break_policy (MonoBreakPolicyFunc policy_callback); 93 94 MONO_API void 95 mono_jit_parse_options (int argc, char * argv[]); 96 97 MONO_API char* mono_get_runtime_build_info (void); 98 99 MONO_END_DECLS 100 101 #endif 102 103