Avoid compiling libmonoruntime and libmono when --disable-boehm is used.
[mono.git] / mono / mini / mini.h
index f5800d08e1811a9aeda32797831a183ef10e5cc0..e9ab524ff1314e03928cda75cd04e7acbae1911e 100644 (file)
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 80
+#define MONO_AOT_FILE_VERSION 82
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -1413,6 +1413,12 @@ typedef struct {
 
        GSList *try_block_holes;
 
+       /* DWARF location list for 'this' */
+       GSList *this_loclist;
+
+       /* DWARF location list for 'rgctx_var' */
+       GSList *rgctx_loclist;
+
        /* GC Maps */
    
        /* The offsets of the locals area relative to the frame pointer */
@@ -1652,6 +1658,10 @@ typedef struct {
         * is hit.
         */
        gboolean soft_breakpoints;
+       /*
+        * Whenever to break in the debugger using G_BREAKPOINT on unhandled exceptions.
+        */
+       gboolean break_on_exc;
 } MonoDebugOptions;
 
 enum {
@@ -1735,6 +1745,8 @@ char*       mono_get_runtime_build_info    (void) MONO_INTERNAL;
 
 /* helper methods */
 void      mono_disable_optimizations       (guint32 opts) MONO_INTERNAL;
+void      mono_set_optimizations           (guint32 opts) MONO_INTERNAL;
+void      mono_set_verbose_level           (guint32 level) MONO_INTERNAL;
 MonoJumpInfoToken* mono_jump_info_token_new (MonoMemPool *mp, MonoImage *image, guint32 token) MONO_INTERNAL;
 MonoJumpInfoToken* mono_jump_info_token_new2 (MonoMemPool *mp, MonoImage *image, guint32 token, MonoGenericContext *context) MONO_INTERNAL;
 MonoInst* mono_find_spvar_for_region        (MonoCompile *cfg, int region) MONO_INTERNAL;
@@ -1832,6 +1844,7 @@ gboolean  mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *m
 gboolean mono_compile_is_broken (MonoCompile *cfg, MonoMethod *method, gboolean fail_compile) MONO_INTERNAL;
 MonoInst *mono_get_got_var (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int native_offset) MONO_INTERNAL;
+void      mono_add_var_location (MonoCompile *cfg, MonoInst *var, gboolean is_reg, int reg, int offset, int from, int to) MONO_INTERNAL;
 MonoInst* mono_emit_jit_icall (MonoCompile *cfg, gconstpointer func, MonoInst **args) MONO_INTERNAL;
 MonoInst* mono_emit_method_call (MonoCompile *cfg, MonoMethod *method, MonoInst **args, MonoInst *this) MONO_INTERNAL;
 void      mono_create_helper_signatures (void) MONO_INTERNAL;
@@ -1956,7 +1969,7 @@ gpointer          mono_create_generic_class_init_trampoline (void) MONO_INTERNAL
 gpointer          mono_create_jit_trampoline (MonoMethod *method) MONO_INTERNAL;
 gpointer          mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token) MONO_INTERNAL;
 gpointer          mono_create_jit_trampoline_in_domain (MonoDomain *domain, MonoMethod *method) MONO_LLVM_INTERNAL;
-gpointer          mono_create_delegate_trampoline (MonoClass *klass) MONO_INTERNAL;
+gpointer          mono_create_delegate_trampoline (MonoDomain *domain, MonoClass *klass) MONO_INTERNAL;
 gpointer          mono_create_rgctx_lazy_fetch_trampoline (guint32 offset) MONO_INTERNAL;
 gpointer          mono_create_monitor_enter_trampoline (void) MONO_INTERNAL;
 gpointer          mono_create_monitor_exit_trampoline (void) MONO_INTERNAL;
@@ -2022,6 +2035,7 @@ void              mono_if_conversion (MonoCompile *cfg) MONO_INTERNAL;
 
 /* methods that must be provided by the arch-specific port */
 void      mono_arch_init                        (void) MONO_INTERNAL;
+void      mono_arch_finish_init                 (void) MONO_INTERNAL;
 void      mono_arch_cleanup                     (void) MONO_INTERNAL;
 void      mono_arch_cpu_init                    (void) MONO_INTERNAL;
 guint32   mono_arch_cpu_optimizazions           (guint32 *exclude_mask) MONO_INTERNAL;
@@ -2057,7 +2071,6 @@ void      mono_arch_lowering_pass               (MonoCompile *cfg, MonoBasicBloc
 void      mono_arch_peephole_pass_1             (MonoCompile *cfg, MonoBasicBlock *bb) MONO_INTERNAL;
 void      mono_arch_peephole_pass_2             (MonoCompile *cfg, MonoBasicBlock *bb) MONO_INTERNAL;
 void      mono_arch_output_basic_block          (MonoCompile *cfg, MonoBasicBlock *bb) MONO_INTERNAL;
-void      mono_arch_setup_jit_tls_data          (MonoJitTlsData *tls) MONO_INTERNAL;
 void      mono_arch_free_jit_tls_data           (MonoJitTlsData *tls) MONO_INTERNAL;
 void      mono_arch_fill_argument_info          (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_arch_allocate_vars               (MonoCompile *m) MONO_INTERNAL;
@@ -2448,7 +2461,7 @@ void mono_runtime_setup_stat_profiler (void) MONO_INTERNAL;
 void mono_runtime_shutdown_stat_profiler (void) MONO_INTERNAL;
 void mono_runtime_posix_install_handlers (void) MONO_INTERNAL;
 pid_t mono_runtime_syscall_fork (void) MONO_INTERNAL;
-gboolean mono_gdb_render_native_backtraces (pid_t crashed_pid) MONO_INTERNAL;
+void mono_gdb_render_native_backtraces (pid_t crashed_pid) MONO_INTERNAL;
 
 /*
  * Signal handling
@@ -2496,29 +2509,4 @@ void SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler) MONO_INTERNAL;
 void SIG_HANDLER_SIGNATURE (mono_sigint_signal_handler)  MONO_INTERNAL;
 gboolean SIG_HANDLER_SIGNATURE (mono_chain_signal) MONO_INTERNAL;
 
-/* Subtypes of some wrapper types */
-enum {
-       MONO_AOT_WRAPPER_MONITOR_ENTER,
-       MONO_AOT_WRAPPER_MONITOR_EXIT,
-       MONO_AOT_WRAPPER_ELEMENT_ADDR,
-       MONO_AOT_WRAPPER_PTR_TO_STRUCTURE,
-       MONO_AOT_WRAPPER_STRUCTURE_TO_PTR,
-       MONO_AOT_WRAPPER_CASTCLASS_WITH_CACHE,
-       MONO_AOT_WRAPPER_ISINST_WITH_CACHE,
-       MONO_AOT_WRAPPER_MONITOR_ENTER_V4,
-       MONO_AOT_WRAPPER_JIT_ICALL,
-       MONO_AOT_WRAPPER_RUNTIME_INVOKE_DYNAMIC,
-       MONO_AOT_WRAPPER_RUNTIME_INVOKE_DIRECT,
-       MONO_AOT_WRAPPER_RUNTIME_INVOKE_VIRTUAL,
-       /*
-        * We can't encode this wrapper directly, so we emit its name instead.
-        * This means that its not possible to decode this into a method, only to check
-        * that the method reference matches a given method. This is normally not a problem
-        * as these wrappers only occur in the extra_methods table, where we already have
-        * a method we want to lookup.
-        */
-       MONO_AOT_WRAPPER_BY_NAME,
-       MONO_AOT_WRAPPER_LAST
-};
-
 #endif /* __MONO_MINI_H__ */