* src/vm/jit/jit.h (stackptr): Removed.
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 23 Apr 2008 13:23:45 +0000 (15:23 +0200)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 23 Apr 2008 13:23:45 +0000 (15:23 +0200)
(stackelement): Moved from here...
* src/vm/jit/stack.h (stackelement_t): ...to here.

* src/vm/jit/abi.h,
src/vm/jit/allocator/liveness.c,
src/vm/jit/allocator/lsra.c,
src/vm/jit/allocator/lsra.h,
src/vm/jit/allocator/simplereg.c,
src/vm/jit/alpha/md-abi.c,
src/vm/jit/arm/md-abi.c,
src/vm/jit/i386/asmpart.S,
src/vm/jit/i386/md-abi.c,
src/vm/jit/loop/analyze.c,
src/vm/jit/m68k/linux/md-abi.c,
src/vm/jit/mips/md-abi.c,
src/vm/jit/optimizing/lifetimes.h,
src/vm/jit/optimizing/lsra.c,
src/vm/jit/parse.c,
src/vm/jit/powerpc/darwin/md-abi.c,
src/vm/jit/powerpc/linux/md-abi.c,
src/vm/jit/powerpc/netbsd/md-abi.c,
src/vm/jit/powerpc64/linux/md-abi.c,
src/vm/jit/s390/md-abi.c,
src/vm/jit/sparc64/md-abi.c,
src/vm/jit/stack.c,
src/vm/jit/x86_64/md-abi.c: Replaced stackptr with stackelement_t*.

25 files changed:
src/vm/jit/abi.h
src/vm/jit/allocator/liveness.c
src/vm/jit/allocator/lsra.c
src/vm/jit/allocator/lsra.h
src/vm/jit/allocator/simplereg.c
src/vm/jit/alpha/md-abi.c
src/vm/jit/arm/md-abi.c
src/vm/jit/i386/asmpart.S
src/vm/jit/i386/md-abi.c
src/vm/jit/jit.h
src/vm/jit/loop/analyze.c
src/vm/jit/m68k/linux/md-abi.c
src/vm/jit/mips/md-abi.c
src/vm/jit/optimizing/lifetimes.h
src/vm/jit/optimizing/lsra.c
src/vm/jit/parse.c
src/vm/jit/powerpc/darwin/md-abi.c
src/vm/jit/powerpc/linux/md-abi.c
src/vm/jit/powerpc/netbsd/md-abi.c
src/vm/jit/powerpc64/linux/md-abi.c
src/vm/jit/s390/md-abi.c
src/vm/jit/sparc64/md-abi.c
src/vm/jit/stack.c
src/vm/jit/stack.h
src/vm/jit/x86_64/md-abi.c

index 99ed02b6d1154192e20578e329a606f2c43ff1e2..6a84ade40945d8609617f94385de998e6a2232d8 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/abi.h - common ABI defines
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
 #include "config.h"
 #include "vm/types.h"
 
+#include "arch.h"
+
 #include "vm/jit/abi-asm.h"
 #include "vm/jit/jit.h"
+#include "vm/jit/stack.h"
 
-#include "arch.h"
 
 /* ABI externs ****************************************************************/
 
@@ -69,7 +69,7 @@ void md_param_alloc(methoddesc *md);
 void md_param_alloc_native(methoddesc *md);
 
 /* machine dependent return value handling function */
-void md_return_alloc(jitdata *jd, stackptr stackslot);
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot);
 
 #endif /* _ABI_H */
 
index 32ebf4dda5883b489a8c79d2a580a03a243d331c..5a0e1da95539354da4a5c092039ee7364de06f62 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/allocator/liveness.c - liveness analysis for lsra
 
-   Copyright (C) 2005, 2006, 2007 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) 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 Ullrich
-
-
 */
 
 
 
 /* function prototypes */
 void liveness_scan_registers_canditates(jitdata *jd, int b_index, int iindex, 
-                                                                               stackptr src, lv_sets *sets);
-void liveness_set_stack(lsradata *ls, int block, int g_iindex, stackptr s,
+                                                                               stackelement_t* src, lv_sets *sets);
+void liveness_set_stack(lsradata *ls, int block, int g_iindex, stackelement_t* s,
                                                lv_sets *sets, int op);
 void liveness_set_local(lsradata *ls, int block, int g_iindex, s4 v_index,
                                                int type, lv_sets *sets, int op);
 
-void liveness_add_ss(struct lifetime *lt, stackptr s) {
+void liveness_add_ss(struct lifetime *lt, stackelement_t* s) {
        struct stackslot *ss;
        /* Stackslot noch nicht eingetragen? */
 
@@ -188,7 +181,7 @@ void liveness_join_lifetimes(jitdata *jd, int b_index) {
 
 void liveness_setup(jitdata *jd) {
        int i, icount, b_index;
-       stackptr src;
+       stackelement_t* src;
        methodinfo *m;
        lsradata *ls;
 
@@ -274,7 +267,7 @@ void liveness_setup(jitdata *jd) {
 void liveness_init(jitdata *jd) {
        int i, b_index, len;
        int lifetimes;
-       stackptr src, dst;
+       stackelement_t* src, dst;
        instruction *iptr;
        methodinfo *m;
        lsradata *ls;
@@ -330,7 +323,7 @@ void liveness_init(jitdata *jd) {
 void liveness_scan_basicblock(jitdata *jd, int b_index,
                                                          lv_sets *sets, int lifetimes) {
        int iindex;
-       stackptr    src;
+       stackelement_t*    src;
        instruction *iptr;
        int i;
        methodinfo *m;
@@ -424,7 +417,7 @@ void liveness(jitdata *jd) {
        int       i, p, t;
        methoddesc *md;
 #ifdef LV_DEBUG_CHECK
-       stackptr s;
+       stackelement_t* s;
 #endif
        methodinfo *m;
        registerdata *rd;
@@ -547,7 +540,7 @@ void liveness(jitdata *jd) {
                   
 }
 
-struct lifetime *liveness_get_ss_lifetime(lsradata *ls, stackptr s) {
+struct lifetime *liveness_get_ss_lifetime(lsradata *ls, stackelement_t* s) {
        struct lifetime *n;
        
        if (s->varnum >= 0) { /* new stackslot lifetime */
@@ -575,7 +568,7 @@ struct lifetime *liveness_get_ss_lifetime(lsradata *ls, stackptr s) {
        return n;
 }
 
-void liveness_set_stack(lsradata *ls, int block, int g_iindex, stackptr s,
+void liveness_set_stack(lsradata *ls, int block, int g_iindex, stackelement_t* s,
                                                lv_sets *sets,
                                                int op) {
        struct lifetime *n;
@@ -634,14 +627,14 @@ void liveness_set_local(lsradata *ls, int block, int g_iindex, s4 v_index,
 }
 
 void liveness_scan_registers_canditates(jitdata *jd, int b_index, int iindex,
-                                                                               stackptr src, lv_sets *sets)
+                                                                               stackelement_t* src, lv_sets *sets)
 {
 /*     methodinfo         *lm; */
        builtintable_entry *bte;
        methoddesc         *md;
        int i, g_iindex;
        instruction *iptr;
-       stackptr    dst;
+       stackelement_t*    dst;
        methodinfo *m;
        lsradata   *ls;
 
index b8fc55ac8da5b1f5d46c2d6d0ea71a6992d61a23..0ac20d24b929c59ad6b17e4b16b540b0bde8529f 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/allocator/lsra.c - linear scan register allocator
 
-   Copyright (C) 2005, 2006, 2007 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) 2005, 2006, 2007, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
@@ -79,7 +77,7 @@ struct freemem *lsra_getnewmem(int *);
 void lsra_setflags(int *, int);
 
 #ifdef LSRA_DEBUG_VERBOSE 
-void lsra_dump_stack(stackptr );
+void lsra_dump_stack(stackelement_t* );
 void print_lifetimes(jitdata *, int *, int);
 #endif
 
@@ -87,9 +85,9 @@ void print_lifetimes(jitdata *, int *, int);
 void lsra_scan_registers_canditates(jitdata *, int);
 void lsra_join_lifetimes(jitdata *, int);
 
-void _lsra_new_stack( lsradata *, stackptr , int , int, int);
-void _lsra_from_stack(lsradata *, stackptr , int , int, int);
-void lsra_add_ss(struct lifetime *, stackptr );
+void _lsra_new_stack( lsradata *, stackelement_t* , int , int, int);
+void _lsra_from_stack(lsradata *, stackelement_t* , int , int, int);
+void lsra_add_ss(struct lifetime *, stackelement_t* );
 void lsra_usage_local(lsradata *, s4 , int , int , int , int );
 #endif
 
@@ -105,7 +103,7 @@ bool lsra(jitdata *jd)
 #if defined(LSRA_DEBUG_CHECK)
        methodinfo   *m;
        int      b_index;
-       stackptr in,out;
+       stackelement_t* in,out;
        int      ind, outd;
 #endif
 
@@ -1979,7 +1977,7 @@ void lsra_join_lifetimes(jitdata *jd,int b_index) {
        }
 }
 
-struct stackslot *lsra_make_ss(stackptr s, int bb_index)
+struct stackslot *lsra_make_ss(stackelement_t* s, int bb_index)
 {
        struct stackslot *ss;
 
@@ -1989,7 +1987,7 @@ struct stackslot *lsra_make_ss(stackptr s, int bb_index)
        return ss;
 }
 
-void lsra_add_ss(struct lifetime *lt, stackptr s) {
+void lsra_add_ss(struct lifetime *lt, stackelement_t* s) {
        struct stackslot *ss;
 
        /* Stackslot not in list? */
@@ -2006,7 +2004,7 @@ void lsra_add_ss(struct lifetime *lt, stackptr s) {
        }
 }
 
-struct lifetime *get_ss_lifetime(lsradata *ls, stackptr s) {
+struct lifetime *get_ss_lifetime(lsradata *ls, stackelement_t* s) {
        struct lifetime *n;
        
        if (s->varnum >= 0) { /* new stackslot lifetime */
@@ -2078,7 +2076,7 @@ struct lifetime *get_ss_lifetime(lsradata *ls, stackptr s) {
 
 #define lsra_new_stack(ls, s, block, instr) \
        if ((s)->varkind != ARGVAR) _lsra_new_stack(ls, s, block, instr, LSRA_STORE)
-void _lsra_new_stack(lsradata *ls, stackptr s, int block, int instr, int store)
+void _lsra_new_stack(lsradata *ls, stackelement_t* s, int block, int instr, int store)
 {
        struct lifetime *n;
 
@@ -2102,7 +2100,7 @@ void _lsra_new_stack(lsradata *ls, stackptr s, int block, int instr, int store)
        if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_LOAD)
 #define lsra_pop_from_stack(ls, s, block, instr) \
        if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_POP)
-void _lsra_from_stack(lsradata *ls, stackptr s, int block, int instr, int store)
+void _lsra_from_stack(lsradata *ls, stackelement_t* s, int block, int instr, int store)
 {
        struct lifetime *n;
 
@@ -2166,7 +2164,7 @@ void lsra_usage_local(lsradata *ls, s4 v_index, int type, int block, int instr,
 }      
 
 #ifdef LSRA_DEBUG_VERBOSE
-void lsra_dump_stack(stackptr s)
+void lsra_dump_stack(stackelement_t* s)
 {
        while (s!=NULL) {
                printf("%p(R%3i N%3i K%3i T%3i F%3i) ",(void *)s,s->regoff, s->varnum, 
@@ -2186,8 +2184,8 @@ void lsra_scan_registers_canditates(jitdata *jd, int b_index)
        int i;
        int opcode;
        int iindex;
-       stackptr    src;
-       stackptr    dst;
+       stackelement_t*    src;
+       stackelement_t*    dst;
        instruction *iptr;
        bool join_ret; /* for lsra_join* Macros */
        methodinfo *m;
index 306480e5346d79f459c2637687d8f0450a6aea2a..3043bdced4676333c79a4c37d9e787f76dc0fc1f 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/allocator/lsra.h - linear scan register allocator header
 
-   Copyright (C) 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) 2005, 2006, 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 Ullrich
-
-   Changes: Edwin Steiner
-
 */
 
 
@@ -129,7 +121,7 @@ struct b_loop {
 
 
 struct stackslot {
-       stackptr s;
+       stackelement_t* s;
        int bb;
        struct stackslot *next;
 };
index f5cd6fce9f2b665cb917c91e55fbcbd22d6fa442..bcb7b9b59310a70d9eb92950e845c2cbfa92703f 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/allocator/simplereg.c - register allocator
 
-   Copyright (C) 1996-2005, 2007 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, 2007, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
@@ -1801,8 +1799,8 @@ void simplereg_make_statistics(jitdata *jd)
        int i;
        s4 len;
 #if 0
-       stackptr    src, src_old;
-       stackptr    dst;
+       stackelement_t*    src, src_old;
+       stackelement_t*    dst;
        instruction *iptr;
 #endif
        basicblock  *bptr;
index 2bc665662a31b3fed76332acc6aa5d8f13092798..90189e17ae6d47338e9eedd43eb6fa902785ab18 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/alpha/md-abi.c - functions for Alpha ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -246,7 +244,7 @@ void md_param_alloc_native(methoddesc *md)
    NOTE: Do not pass a LOCALVAR in stackslot->varnum.
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo *m;
        methoddesc *md;
index 12d4110b0803db867ddc776f8fb4d36754087b18..b10d45665a84181304360d564ac1b6afadb580eb 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/arm/md-abi.c - functions for arm ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -350,7 +348,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;
index af29ffea9606000826c987576f71b1724c1ee063..6904b0a89fa21ec96bb50975eacecad602962e5f 100644 (file)
@@ -120,7 +120,7 @@ asm_vm_call_method_long:
 asm_vm_call_method_float:
 asm_vm_call_method_double:
        push    bp
-       mov     sp,bp                       /* save stackptr                      */
+       mov     sp,bp                       /* save stack pointer                 */
        sub     $(4*4),sp                   /* create stackframe                  */
        and     $0xfffffff0,sp              /* align stack to 16-byte             */
 
index 71f99b0b8d573151547282d80e33a9c01a18730c..f4d9f4c66cc2dafe337d057741f35c0ccff7ce12 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/i386/md-abi.c - functions for i386 Linux ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -159,7 +157,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        /* nothing */
 }
index 5206fb7c71a431d7212611d169e7321db8c0f2af..f45733fe18f76c3afaa8336e651c7a864139c727 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/jit.h - code generation header
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -31,8 +29,6 @@
 /* forward typedefs ***********************************************************/
 
 typedef struct jitdata jitdata;
-typedef struct stackelement stackelement;
-typedef stackelement *stackptr;
 typedef struct basicblock basicblock;
 typedef struct instruction instruction;
 typedef struct insinfo_inline insinfo_inline;
@@ -50,6 +46,7 @@ typedef struct exception_entry exception_entry;
 #include "vm/jit/codegen-common.h"
 #include "vm/jit/reg.h"
 #include "vm/jit/replace.h"
+#include "vm/jit/stack.h"
 #include "vm/jit/stacktrace.h"
 
 #if defined(ENABLE_INLINING)
@@ -70,7 +67,6 @@ typedef struct exception_entry exception_entry;
 
 #include "vm/jit/verify/typeinfo.h"
 
-#include "vmcore/descriptor.h"
 #include "vmcore/method.h"
 #include "vmcore/references.h"
 
@@ -131,7 +127,7 @@ struct jitdata {
 
        instruction     *instructions;    /* ICMDs, valid between parse and stack */
        basicblock      *basicblocks;     /* start of basic block list            */
-       stackelement    *stack;           /* XXX should become stack.c internal   */
+       stackelement_t  *stack;           /* XXX should become stack.c internal   */
        s4               instructioncount;/* XXX remove this?                     */
        s4               basicblockcount; /* number of basic blocks               */
        s4               stackcount;      /* number of stackelements to allocate  */
@@ -231,41 +227,6 @@ struct exception_entry {
 };
 
 
-/* stack element structure ****************************************************/
-
-/* flags */
-
-#define SAVEDVAR      1         /* variable has to survive method invocations */
-#define INMEMORY      2         /* variable stored in memory                  */
-#define SAVREG        4         /* allocated to a saved register              */
-#define ARGREG        8         /* allocated to an arg register               */
-#define PASSTHROUGH  32         /* stackslot was passed-through by an ICMD    */
-#define PREALLOC     64         /* preallocated var like for ARGVARS. Used    */
-                                /* with the new var system */
-#define INOUT    128            /* variable is an invar or/and an outvar      */
-
-#define IS_SAVEDVAR(x)    ((x) & SAVEDVAR)
-#define IS_INMEMORY(x)    ((x) & INMEMORY)
-
-
-/* variable kinds */
-
-#define UNDEFVAR   0            /* stack slot will become temp during regalloc*/
-#define TEMPVAR    1            /* stack slot is temp register                */
-#define STACKVAR   2            /* stack slot is numbered stack slot          */
-#define LOCALVAR   3            /* stack slot is local variable               */
-#define ARGVAR     4            /* stack slot is argument variable            */
-
-
-struct stackelement {
-       stackptr prev;              /* pointer to next element towards bottom     */
-       instruction *creator;       /* instruction that created this element      */
-       s4       type;              /* slot type of stack element                 */
-       s4       flags;             /* flags (SAVED, INMEMORY)                    */
-       s4       varkind;           /* kind of variable or register               */
-       s4       varnum;            /* number of variable                         */
-};
-
 /* macros for accessing variables *********************************************
  
    Use VAROP for s1, s2, s3 and dst operands (eg. VAROP(iptr->s1)),
@@ -1002,7 +963,7 @@ static inline bool instruction_has_dst(const instruction *iptr) {
        if (
                (icmd_table[iptr->opc].dataflow == DF_INVOKE) ||
                (icmd_table[iptr->opc].dataflow == DF_BUILTIN)
-       ) {
+               ) {
                return instruction_call_site(iptr)->returntype.type != TYPE_VOID;
        } else {
                return icmd_table[iptr->opc].dataflow >= DF_DST_BASE;
index 67f06a1f3b478e6302b60a19772f26b9ea698bb5..43a7dad53c6e7c8558b960f94509082155f61706 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/loop/analyze.c - bound check removal functions
 
-   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, 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: Christopher Kruegel
-
-   Changes: Christian Thalinger
-
-   Contains the functions which perform the bound check removals. With
-   the loops identified, these functions scan the code for array
-   accesses that take place in loops and try to guarantee that their
-   bounds are never violated. The function to call is
-   optimize_loops().
-
 */
 
 
 
 #include "mm/memory.h"
 #include "toolbox/logging.h"
+
 #include "vm/jit/jit.h"
+#include "vm/jit/stack.h"
+
 #include "vm/jit/loop/analyze.h"
 #include "vm/jit/loop/graph.h"
 #include "vm/jit/loop/loop.h"
@@ -1520,8 +1509,8 @@ int insert_static(methodinfo *m, codegendata *cd, loopdata *ld, int arrayRef, st
 
 /*     copy a stack and return the start pointer of the newly created one
 */
-stackptr copy_stack_from(stackptr source) { 
-       stackptr current, top;
+stackelement_t* copy_stack_from(stackelement_t* source) { 
+       stackelement_t* current, top;
 
        if (source == NULL)
                return NULL;
@@ -1561,7 +1550,7 @@ stackptr copy_stack_from(stackptr source) {
 
    inst: pointer to the new instruction
    tos: stackpointer before this operation is executed
-   newstack: temporary stackptr
+   newstack: temporary stackelement_t*
    stackdepth: counts the current stackdepth
    original start: blockpointer to the head of the new, optimized loop 
 */
@@ -2588,7 +2577,7 @@ void create_static_checks(methodinfo *m, codegendata *cd, loopdata *ld, struct L
 
        /* tos and newstack are needed by the macros, that insert instructions into */
        /* the new loop head                                                        */
-       stackptr newstack, tos;
+       stackelement_t* newstack, tos;
        exceptiontable *ex;
 
        /* prevent some compiler warnings */
index 63c2b13e0e0f0b52bcc9d1c168466bb733c2b669..cea5faea8ee3ba237592ff9f7d000cbbc625a6a4 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/m68k/linux/md-abi.c - linux specific abi functions
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -156,7 +154,7 @@ void md_param_alloc(methoddesc *md)
    %d0 for all word types %d0-%d1 for 2 word types. %f0-%f1 for floats/doubles
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 { 
 
 /* The Problem: %a0, %a1, %d0 and %d1 are scratch registers by platform abi
index 1b3065edf3b80ce477aa745496fc87d644b46d82..256fa4717a8fe25180125c2e63ffe8ec469dd426 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/mips/md-abi.c - functions for MIPS ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -28,6 +26,7 @@
 #include "config.h"
 
 #include <stdarg.h>
+#include <stdint.h>
 
 #include "vm/types.h"
 
@@ -38,6 +37,7 @@
 #include "vm/global.h"
 
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 #include "vmcore/method.h"
@@ -641,7 +641,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo *m;
        methoddesc *md;
index f46b51b078e29318a3be0312e6f41c34fca591dc..08f4ae6ca6489ed2c50f6efe76d82d5e59f29b60 100644 (file)
@@ -1,9 +1,7 @@
-/* src/vm/jit/lsra/graph.h - lifetimes header
+/* src/vm/jit/optimizing/lifetimes.h - lifetimes header
 
-   Copyright (C) 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) 2005, 2006, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.
 
-   Contact: cacao@complang.tuwien.ac.at
-
-   Authors: Christian Ullrich
-
-
 */
 
 
@@ -56,7 +49,7 @@
 
 typedef struct site *lt_iterator;
 void lt_scanlifetimes(jitdata *, graphdata *, dominatordata *);
-void lt_add_ss(struct lifetime *, stackptr );
+void lt_add_ss(struct lifetime *, stackelement_t *);
 void lt_remove_use_site(struct lifetime *lt, int block, int iindex);
 void lt_move_use_sites(struct lifetime *from, struct lifetime *to);
 void lt_lifeness_analysis(jitdata *, graphdata *);
index 408dddcb54150c8584ebd47cbd9f1b1c404d9601..3b2006772c6721b117d8feddd03204237f1f91c2 100644 (file)
@@ -56,7 +56,7 @@ extern const char *string_java_lang_InternalError;
 void lsra_setup(jitdata *);
 void lsra_main(jitdata *);
 #ifdef LSRA_DEBUG_VERBOSE
-void lsra_dump_stack(stackptr );
+void lsra_dump_stack(stackelement_t*);
 void print_lifetimes(jitdata *, int *, int);
 void print_all_lifetimes(jitdata *);
 #endif
@@ -92,7 +92,7 @@ void lsra(jitdata *jd) {
 #if defined(LSRA_DEBUG_CHECK)
 #if 0
        int b_index;
-       stackptr in,out;
+       stackelement_t* in,out;
        int      ind, outd;
 #endif
 #endif
index 98f34996d1be8d28e0e58d038bfd3b24cc0d1745..db707e71421de82ebc346a81d4d77ef221a5fad6 100644 (file)
@@ -1897,7 +1897,7 @@ invoke_method:
 
        /* allocate stack table */
 
-       jd->stack = DMNEW(stackelement, jd->stackcount);
+       jd->stack = DMNEW(stackelement_t, jd->stackcount);
 
        /* everything's ok */
 
index 529b69354f9cfd38bf29db2fac765f18d1f3046b..783991af9aab3f00461445f2daca116524c2abe7 100644 (file)
@@ -1,9 +1,7 @@
-/* src/vm/jit/powerpc/darwin/md-abi.c - functions for PowerPC Darwin ABI
+/* src/vm/jit/powerpc/darwin/md-abi.c - PowerPC Darwin ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -34,6 +32,7 @@
 #include "vm/global.h"
 
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 
@@ -394,7 +393,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t* stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;
index 28fb658bb151a3c464448e286710dbe551a5351a..af175d4cac72d7a5fe22a199779de0200101537b 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/powerpc/linux/md-abi.c - functions for PowerPC Linux ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -35,6 +33,7 @@
 #include "vm/global.h"
 
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 
@@ -402,7 +401,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;
index 140a820e7d0616fc37c1c593d1ddd800d79d01c2..aa9caeb424cc5dba210566c91949ef7d161a8b6b 100644 (file)
@@ -1,9 +1,7 @@
-/* src/vm/jit/powerpc/netbsd/md-abi.c - functions for PowerPC NetBSD ABI
+/* src/vm/jit/powerpc/netbsd/md-abi.c - PowerPC NetBSD ABI
 
-   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, 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
-
 */
 
 
@@ -38,7 +30,9 @@
 
 #include "vm/descriptor.h"
 #include "vm/global.h"
+
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 
 #define _ALIGN(a)    do { if ((a) & 1) (a)++; } while (0)
@@ -207,7 +201,7 @@ void md_param_alloc(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t* stackslot)
 {
        methodinfo   *m;
        registerdata *rd;
index 3cb624189caa9c49636bd1fc73005cdac79b00ed..f1a054e122c6130ca8c6d3ae8516475b89e76714 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/powerpc64/linux/md-abi.c - functions for PowerPC64 Linux ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -36,6 +34,7 @@
 #include "vm/global.h"
 
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 
@@ -290,7 +289,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;
index fc9d3ac5fae2606eff7875da300e6214fb44aebf..99715c6e1a2f272d03597ea5750e42a426042755 100644 (file)
@@ -1,9 +1,7 @@
-/* src/vm/jit/x86_64/md-abi.c - functions for x86_64 Linux ABI
+/* src/vm/jit/s390/md-abi.c - s390 Linux ABI
 
-   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, 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:
-
 */
 
+
 #include "config.h"
 
 #include "vm/global.h"
+#include "vm/types.h"
+
 #include "vm/jit/jit.h"
+#include "vm/jit/stack.h"
+
 #include "vm/jit/s390/md-abi.h"
-#include "vm/types.h"
 
 #include "vmcore/descriptor.h"
 
 #include <assert.h>
 
+
 /* register descripton array **************************************************/
 
 s4 nregdescint[] = {
@@ -267,7 +264,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t* stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;
index 633e67e7a39f98eb9d9a9d189ebdbd40ae44d537..4afd70d7c8e8b337cafb4412071629ef70e26c0a 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/sparc64/md-abi.c - functions for Sparc ABI
 
-   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, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
@@ -33,6 +31,7 @@
 #include "vm/global.h"
 
 #include "vm/jit/abi.h"
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 
@@ -40,6 +39,7 @@
 #include "mm/memory.h"
 #include <assert.h>
 
+
 /* helper macros for allocation methods ***************************************/
 #define MIN(a,b) (((a) <= (b)) ? (a) : (b))
 
@@ -293,7 +293,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t* stackslot)
 {
        /* XXX */
 }
index c0bcf6ade0adc207c4f381b24c81e203e930aa1d..e692269d25bf2c6846b3dac13efe6597a0c8a94c 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/stack.c - stack analysis
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -118,7 +116,7 @@ typedef struct stackdata_t stackdata_t;
 
 struct stackdata_t {
     basicblock *bptr;             /* the current basic block being analysed   */
-    stackptr new;                 /* next free stackelement                   */
+    stackelement_t *new;          /* next free stackelement                   */
     s4 vartop;                    /* next free variable index                 */
     s4 localcount;                /* number of locals (at the start of var)   */
     s4 varcount;                  /* maximum number of variables expected     */
@@ -132,7 +130,7 @@ struct stackdata_t {
        bool repeat;                  /* if true, iterate the analysis again      */
        exception_entry **handlers;   /* exception handlers for the current block */
        exception_entry *extableend;  /* points to the last exception entry       */
-       stackelement exstack;         /* instack for exception handlers           */
+       stackelement_t exstack;         /* instack for exception handlers           */
 };
 
 
@@ -509,7 +507,7 @@ struct stackdata_t {
 /* forward declarations *******************************************************/
 
 static void stack_create_invars(stackdata_t *sd, basicblock *b, 
-                                                               stackptr curstack, int stackdepth);
+                                                               stackelement_t * curstack, int stackdepth);
 static void stack_create_invars_from_outvars(stackdata_t *sd, basicblock *b);
 
 #if defined(STACK_VERBOSE)
@@ -519,7 +517,7 @@ static void stack_verbose_show_block(stackdata_t *sd, basicblock *bptr);
 static void stack_verbose_block_enter(stackdata_t *sd, bool reanalyse);
 static void stack_verbose_block_exit(stackdata_t *sd, bool superblockend);
 static void stack_verbose_show_state(stackdata_t *sd, instruction *iptr, 
-                                                                        stackptr curstack);
+                                                                        stackelement_t * curstack);
 #endif
 
 
@@ -744,9 +742,9 @@ static void stack_merge_locals(stackdata_t *sd, basicblock *b)
 *******************************************************************************/
 
 static void stack_create_invars(stackdata_t *sd, basicblock *b, 
-                                                               stackptr curstack, int stackdepth)
+                                                               stackelement_t * curstack, int stackdepth)
 {
-       stackptr sp;
+       stackelement_t * sp;
        int i;
        int index;
        varinfo *dv;
@@ -831,10 +829,10 @@ static void stack_create_invars_from_outvars(stackdata_t *sd, basicblock *b)
 *******************************************************************************/
 
 static basicblock * stack_check_invars(stackdata_t *sd, basicblock *b,
-                                                                          stackptr curstack, int stackdepth)
+                                                                          stackelement_t * curstack, int stackdepth)
 {
        int i;
-       stackptr sp;
+       stackelement_t * sp;
        basicblock *orig;
        bool separable;
        varinfo *sv;
@@ -1068,9 +1066,9 @@ static basicblock * stack_check_invars_from_outvars(stackdata_t *sd, basicblock
 
 *******************************************************************************/
 
-static stackptr stack_create_instack(stackdata_t *sd)
+static stackelement_t * stack_create_instack(stackdata_t *sd)
 {
-    stackptr sp;
+    stackelement_t * sp;
        int depth;
        int index;
 
@@ -1114,7 +1112,7 @@ static stackptr stack_create_instack(stackdata_t *sd)
 
 *******************************************************************************/
 
-static basicblock *stack_mark_reached(stackdata_t *sd, basicblock *b, stackptr curstack, int stackdepth) 
+static basicblock *stack_mark_reached(stackdata_t *sd, basicblock *b, stackelement_t * curstack, int stackdepth) 
 {
        assert(b != NULL);
 
@@ -1883,7 +1881,7 @@ bool stack_reanalyse_block(stackdata_t *sd)
 
 *******************************************************************************/
 
-static void stack_change_to_tempvar(stackdata_t *sd, stackptr sp, 
+static void stack_change_to_tempvar(stackdata_t *sd, stackelement_t * sp, 
                                                                        instruction *ilimit)
 {
        s4 newindex;
@@ -2017,8 +2015,8 @@ bool stack_analyse(jitdata *jd)
        registerdata *rd;
        stackdata_t   sd;
        int           stackdepth;
-       stackptr      curstack;       /* current stack top                        */
-       stackptr      copy;
+       stackelement_t *curstack;       /* current stack top                        */
+       stackelement_t *copy;
        int           opcode;         /* opcode of current instruction            */
        int           i, varindex;
        int           javaindex;
@@ -2031,10 +2029,10 @@ bool stack_analyse(jitdata *jd)
        basicblock   *original;
        exception_entry *ex;
 
-       stackptr     *last_store_boundary;
-       stackptr      coalescing_boundary;
+       stackelement_t **last_store_boundary;
+       stackelement_t *coalescing_boundary;
 
-       stackptr      src1, src2, src3, src4, dst1, dst2;
+       stackelement_t *src1, *src2, *src3, *src4, *dst1, *dst2;
 
        branch_target_t *table;
        lookup_target_t *lookup;
@@ -2108,7 +2106,7 @@ bool stack_analyse(jitdata *jd)
        for (i = 0; i < m->maxstack * 5; i++)
                jd->interface_map[i].flags = UNUSED;
 
-       last_store_boundary = DMNEW(stackptr, m->maxlocals);
+       last_store_boundary = DMNEW(stackelement_t *, m->maxlocals);
 
        /* initialize flags and invars (none) of first block */
 
@@ -4750,13 +4748,13 @@ static void stack_verbose_block_exit(stackdata_t *sd, bool superblockend)
        printf("\n");
 }
 
-static void stack_verbose_show_state(stackdata_t *sd, instruction *iptr, stackptr curstack)
+static void stack_verbose_show_state(stackdata_t *sd, instruction *iptr, stackelement_t *curstack)
 {
-       stackptr sp;
+       stackelement_t *sp;
        s4       i;
        s4       depth;
        varinfo *v;
-       stackptr *stack;
+       stackelement_t **stack;
 
        printf("    javalocals ");
        show_javalocals_array(sd->jd, sd->javalocals, sd->maxlocals, SHOW_STACK);
@@ -4766,7 +4764,7 @@ static void stack_verbose_show_state(stackdata_t *sd, instruction *iptr, stackpt
                i++;
        depth = i;
 
-       stack = MNEW(stackptr, depth);
+       stack = MNEW(stackelement_t *, depth);
        for(sp = curstack; sp; sp = sp->prev)
                stack[--i] = sp;
 
index 2af166477e2e98c6358f6bdc976a8c5d869a1f3d..eceb2db2204fd84ca3b6256b58a5a471c9d559a9 100644 (file)
@@ -1,9 +1,7 @@
-/* vm/jit/stack.h - stack analysis header
+/* src/vm/jit/stack.h - stack analysis 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, 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
-
 */
 
 
 #ifndef _STACK_H
 #define _STACK_H
 
+/* forward typedefs ***********************************************************/
+
+typedef struct stackelement_t stackelement_t;
+
+
 #include "config.h"
 
+#include <stdint.h>
+
 #include "vm/types.h"
 
 #include "vm/exceptions.h"
 #include "vm/global.h"
+
 #include "vm/jit/jit.h"
 #include "vm/jit/reg.h"
 
 
+/* stack element structure ****************************************************/
+
+/* flags */
+
+#define SAVEDVAR      1         /* variable has to survive method invocations */
+#define INMEMORY      2         /* variable stored in memory                  */
+#define SAVREG        4         /* allocated to a saved register              */
+#define ARGREG        8         /* allocated to an arg register               */
+#define PASSTHROUGH  32         /* stackslot was passed-through by an ICMD    */
+#define PREALLOC     64         /* preallocated var like for ARGVARS. Used    */
+                                /* with the new var system */
+#define INOUT    128            /* variable is an invar or/and an outvar      */
+
+#define IS_SAVEDVAR(x)    ((x) & SAVEDVAR)
+#define IS_INMEMORY(x)    ((x) & INMEMORY)
+
+
+/* variable kinds */
+
+#define UNDEFVAR   0            /* stack slot will become temp during regalloc*/
+#define TEMPVAR    1            /* stack slot is temp register                */
+#define STACKVAR   2            /* stack slot is numbered stack slot          */
+#define LOCALVAR   3            /* stack slot is local variable               */
+#define ARGVAR     4            /* stack slot is argument variable            */
+
+
+struct stackelement_t {
+       stackelement_t *prev;       /* pointer to next element towards bottom     */
+       instruction    *creator;    /* instruction that created this element      */
+       s4              type;       /* slot type of stack element                 */
+       s4              flags;      /* flags (SAVED, INMEMORY)                    */
+       s4              varkind;    /* kind of variable or register               */
+       s4              varnum;     /* number of variable                         */
+};
+
+
 /* macros used internally by analyse_stack ************************************/
 
 /*--------------------------------------------------*/
index 95b1c1e785432c116411a30255dc065a49b52a88..9ae511b14cf585da2310a9ee858cabc74953fd4b 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/jit/x86_64/md-abi.c - functions for x86_64 Linux ABI
 
-   Copyright (C) 1996-2005, 2006, 2007 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.
 
@@ -34,6 +32,7 @@
 
 #include "vm/jit/abi.h"
 #include "vm/jit/jit.h" /* for REG_* (maybe can be removed) */
+#include "vm/jit/stack.h"
 
 #include "vmcore/descriptor.h"
 
@@ -226,7 +225,7 @@ void md_param_alloc_native(methoddesc *md)
 
 *******************************************************************************/
 
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t *stackslot)
 {
        methodinfo   *m;
        codeinfo     *code;