/* src/vm/jit/reg.h - register allocator header
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
- C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
- E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
- J. Wenninger, Institut f. Computersprachen - TU Wien
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- Changes: Christian Ullrich
- Edwin Steiner
-
- $Id: reg.h 5463 2006-09-11 14:37:06Z edwin $
-
*/
#include "arch.h"
-#include "vm/jit/jit.h"
+#include "vm/jit/jit.hpp"
+#include "vm/jit/verify/typeinfo.hpp"
/************************* pseudo variable structure **************************/
float f;
double d;
basicblock *retaddr;
+ s4 ii[2];
} vv;
+#if defined(ENABLE_VERIFIER)
+ typeinfo_t typeinfo; /* type info for reference types */
+#endif
};
typedef struct varinfo varinfo5[5];
int intreg_ret; /* register to return integer values */
int fltreg_ret; /* register for return float values */
- int *argintregs; /* argument integer registers */
int *tmpintregs; /* scratch integer registers */
int *savintregs; /* saved integer registers */
- int *argfltregs; /* argument float registers */
int *tmpfltregs; /* scratch float registers */
int *savfltregs; /* saved float registers */
int *freeargintregs; /* free argument integer registers */
int *freetmpadrregs; /* free scratch address registers */
int *freesavadrregs; /* free saved address registers */
+ int *adrusedinout; /* is this adr register uses as INOUT? */
+
int argadrreguse; /* used argument address register count */
int tmpadrreguse; /* used scratch address register count */
int savadrreguse; /* used saved address register count */
int freeargadrtop; /* free argument address register count */
#endif
-#if defined(HAS_4BYTE_STACKSLOT)
- int *freemem_2;
- int freememtop_2;
-#endif
int *freemem; /* free scratch memory */
int freememtop; /* free memory count */
int freesavinttop; /* free saved integer register count */
int freetmpflttop; /* free scratch float register count */
int freesavflttop; /* free saved float register count */
+
+ int *intusedinout; /* is this int register uses as INOUT? */
+ int *fltusedinout; /* is this flt register uses as INOUT? */
+ int *regisoutvar; /* true if reg. is outvar of this block */
+ int *regcopycount; /* counts copies of each register regoff */
+ int *memcopycount; /* counts copies of each INMEMORY regoff */
+ int memcopycountsize; /* size of memcopycount buffer */
};
/* function prototypes ********************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void reg_setup(jitdata *jd);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _REG_H */