2008-10-28 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / regalloc.c
1 /*
2  * regalloc.c: register state class
3  *
4  * Authors:
5  *    Paolo Molaro (lupus@ximian.com)
6  *
7  * (C) 2003 Ximian, Inc.
8  */
9 #include "mini.h"
10
11 MonoRegState*
12 mono_regstate_new (void)
13 {
14         MonoRegState* rs = g_new0 (MonoRegState, 1);
15
16         mono_regstate_reset (rs);
17
18         return rs;
19 }
20
21 void
22 mono_regstate_free (MonoRegState *rs) {
23         g_free (rs->vassign);
24         g_free (rs);
25 }
26
27 void
28 mono_regstate_reset (MonoRegState *rs) {
29         rs->next_vreg = MAX (MONO_MAX_IREGS, MONO_MAX_FREGS);
30 #ifdef MONO_ARCH_NEED_SIMD_BANK
31         rs->next_vreg = MAX (rs->next_vreg, MONO_MAX_XREGS);
32 #endif
33 }
34
35 inline int
36 mono_regstate_next_long (MonoRegState *rs)
37 {
38         int rval = rs->next_vreg;
39
40         rs->next_vreg += 2;
41
42         return rval;
43 }
44