[runtime] Use coop handles in some String-returning icalls
[mono.git] / mono / mini / mini.h
index bafaa414969ec65fa1aafd1bfbcaaa7da7307102..845162f76f7349228657010d253c8dbfbae09b4f 100644 (file)
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 136
+#define MONO_AOT_FILE_VERSION 137
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -490,6 +490,7 @@ enum {
 
 #define MONO_IS_SETCC(ins) ((((ins)->opcode >= OP_CEQ) && ((ins)->opcode <= OP_CLT_UN)) || (((ins)->opcode >= OP_ICEQ) && ((ins)->opcode <= OP_ICLE_UN)) || (((ins)->opcode >= OP_LCEQ) && ((ins)->opcode <= OP_LCLT_UN)) || (((ins)->opcode >= OP_FCEQ) && ((ins)->opcode <= OP_FCLT_UN)))
 
+#define MONO_HAS_CUSTOM_EMULATION(ins) (((ins)->opcode >= OP_FBEQ && (ins)->opcode <= OP_FBLT_UN) || ((ins)->opcode >= OP_FCEQ && (ins)->opcode <= OP_FCLT_UN))
 
 #define MONO_IS_LOAD_MEMBASE(ins) (((ins)->opcode >= OP_LOAD_MEMBASE && (ins)->opcode <= OP_LOADV_MEMBASE) || ((ins)->opcode >= OP_ATOMIC_LOAD_I1 && (ins)->opcode <= OP_ATOMIC_LOAD_R8))
 #define MONO_IS_STORE_MEMBASE(ins) (((ins)->opcode >= OP_STORE_MEMBASE_REG && (ins)->opcode <= OP_STOREV_MEMBASE) || ((ins)->opcode >= OP_ATOMIC_STORE_I1 && (ins)->opcode <= OP_ATOMIC_STORE_R8))
@@ -728,7 +729,13 @@ struct MonoBasicBlock {
        guint real_offset;
 
        GSList *seq_points;
+
+       // The MonoInst of the last sequence point for the current basic block.
        MonoInst *last_seq_point;
+       
+       // This will hold a list of last sequence points of incoming basic blocks
+       MonoInst **pred_seq_points;
+       guint num_pred_seq_points;
 
        GSList *spill_slot_defs;
 
@@ -1911,6 +1918,7 @@ typedef struct {
        gint32 alias_removed;
        gint32 loads_eliminated;
        gint32 stores_eliminated;
+       gint32 optimized_divisions;
        int methods_with_llvm;
        int methods_without_llvm;
        char *max_ratio_method;