X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Freg.h;h=8ea1a9a3e704ffc25aa51b6b3a8694fefab4f0b2;hb=abe50084a6e83f833d1d2a0274bc75a8a89b25f4;hp=bbc619d580d42a6c1ce381b7a6a1d0f4c83ea706;hpb=1efe5a722fbd5486252a92798a099c9e5eee9b8b;p=cacao.git diff --git a/src/vm/jit/reg.h b/src/vm/jit/reg.h index bbc619d58..8ea1a9a3e 100644 --- a/src/vm/jit/reg.h +++ b/src/vm/jit/reg.h @@ -1,9 +1,9 @@ /* src/vm/jit/reg.h - register allocator header - Copyright (C) 1996-2005 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 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 This file is part of CACAO. @@ -19,16 +19,17 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. - Contact: cacao@complang.tuwien.ac.at + Contact: cacao@cacaojvm.org Authors: Christian Thalinger Changes: Christian Ullrich + Edwin Steiner - $Id: reg.h 4014 2005-12-30 14:20:25Z twisti $ + $Id: reg.h 5549 2006-09-28 17:02:56Z edwin $ */ @@ -36,15 +37,7 @@ #ifndef _REG_H #define _REG_H -/* #define INVOKE_NEW_DEBUG */ - - -/* preliminary define for testing of the new creation of ARGVAR Stackslots in stack.c */ -/* Changes affect handling of ARGVAR Stackslots in reg_of_var in codegen.inc */ -/* and calculation of rd->ifmemuse in reg.inc */ - -/* We typedef these structures before #includes to resolve circular */ -/* dependencies. */ +/* forward typedefs ***********************************************************/ typedef struct varinfo varinfo; typedef struct registerdata registerdata; @@ -55,27 +48,32 @@ typedef struct registerdata registerdata; #include "arch.h" -#include "vm/jit/codegen-common.h" #include "vm/jit/jit.h" -#include "vm/jit/inline/inline.h" +#include "vm/jit/verify/typeinfo.h" /************************* pseudo variable structure **************************/ struct varinfo { - int type; /* basic type of variable */ - int flags; /* flags (SAVED, INMEMORY) */ - int regoff; /* register number or memory offset */ + s4 type; /* basic type of variable */ + s4 flags; /* flags (SAVED, INMEMORY) */ + union { + s4 regoff; /* register number or memory offset */ + s4 i; + s8 l; + float f; + double d; + basicblock *retaddr; + } vv; +#if defined(ENABLE_VERIFIER) + typeinfo typeinfo; /* type info for reference types */ +#endif }; typedef struct varinfo varinfo5[5]; struct registerdata { - varinfo5 *locals; - varinfo5 *interfaces; - - int intreg_ret; /* register to return integer values */ int fltreg_ret; /* register for return float values */ @@ -133,20 +131,16 @@ struct registerdata { int freesavinttop; /* free saved integer register count */ int freetmpflttop; /* free scratch float register count */ int freesavflttop; /* free saved float register count */ + + int *regcopycount; /* counts copies of each register regoff */ + int *memcopycount; /* counts copies of each INMEMORY regoff */ + int memcopycountsize; /* size of memcopycount buffer */ }; /* function prototypes ********************************************************/ -void reg_init(void); -void reg_setup(methodinfo *m, registerdata *rd, t_inlining_globals *id); -void reg_free(methodinfo *m, registerdata *rd); -void reg_close(void); -void regalloc(methodinfo *m, codegendata *cd, registerdata *rd); - -#if defined(ENABLE_STATISTICS) -void reg_make_statistics( methodinfo *, codegendata *, registerdata *); -#endif +void reg_setup(jitdata *jd); #endif /* _REG_H */ @@ -162,4 +156,5 @@ void reg_make_statistics( methodinfo *, codegendata *, registerdata *); * c-basic-offset: 4 * tab-width: 4 * End: + * vim:noexpandtab:sw=4:ts=4: */