[runtime] Simplify mono-debug.c since we no longer have to serialize a lot of the...
[mono.git] / mono / mini / regalloc.h
index d24026a907840b62f1867af6f6ff7d91ccbd1ece..9e910dc362e231df27f072bcfba0fa59f0264b04 100644 (file)
@@ -1,25 +1,24 @@
-
+#if defined(__native_client__) && defined(__x86_64__)
+typedef guint64 regmask_t;
+#else
 typedef size_t regmask_t;
-
-enum {
-       MONO_REG_FREE,
-       MONO_REG_FREEABLE,
-       MONO_REG_MOVEABLE,
-       MONO_REG_BUSY,
-       MONO_REG_RESERVED
-};
+#endif
 
 enum {
        MONO_REG_INT,
        MONO_REG_DOUBLE,
+       /* This is used only for allocating spill slots with GC tracking */
+       MONO_REG_INT_REF,
+       /* Ditto for managed pointers */
+       MONO_REG_INT_MP,
        MONO_REG_SIMD
 };
 
  
 #ifdef MONO_ARCH_NEED_SIMD_BANK
-#define MONO_NUM_REGBANKS 3
+#define MONO_NUM_REGBANKS 5
 #else
-#define MONO_NUM_REGBANKS 2
+#define MONO_NUM_REGBANKS 4
 #endif
 
 typedef struct {
@@ -34,7 +33,7 @@ typedef struct {
         * If the register is spilled, then this contains -spill - 1, where 'spill'
         * is the index of the spill variable.
         */
-       gint16 *vassign;
+       gint32 *vassign;
 
        /* hard -> symbolic */
        int isymbolic [MONO_MAX_IREGS];
@@ -48,13 +47,6 @@ typedef struct {
        int vassign_size;
 } MonoRegState;
 
-#define mono_regstate_next_int(rs)   ((rs)->next_vreg++)
-#define mono_regstate_next_float(rs) ((rs)->next_vreg++)
-
-
 MonoRegState* mono_regstate_new (void) MONO_INTERNAL;
 
 void          mono_regstate_free      (MonoRegState *rs) MONO_INTERNAL;
-void          mono_regstate_reset     (MonoRegState *rs) MONO_INTERNAL;
-inline int    mono_regstate_next_long (MonoRegState *rs) MONO_INTERNAL;
-