/* src/vm/jit/allocator/liveness.c - liveness analysis for lsra
- 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) 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
-
- Changes:
+*/
- $Id: liveness.c $
-*/
+#include "config.h"
#include <limits.h>
#include <stdlib.h>
+#include "vm/types.h"
+
#include "mm/memory.h"
#include "toolbox/logging.h"
#include "toolbox/worklist.h"
#include "vm/builtin.h"
-#include "vm/exceptions.h"
+#include "vm/exceptions.hpp"
#include "vm/global.h"
#include "vm/method.h"
#include "vm/resolve.h"
#include "vm/jit/codegen-common.h"
-#include "vm/jit/jit.h"
+#include "vm/jit/jit.hpp"
#include "vm/jit/allocator/lsra.h"
#include "vm/jit/allocator/liveness.h"
+
/* 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? */
void liveness_setup(jitdata *jd) {
int i, icount, b_index;
- stackptr src;
+ stackelement_t* src;
methodinfo *m;
lsradata *ls;
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;
}
}
ls->maxlifetimes = lifetimes;
- ls->lifetimecount = lifetimes + jd->cd->maxlocals * (TYPE_ADR+1);
+ ls->lifetimecount = lifetimes + jd->maxlocals * (TYPE_ADR+1);
}
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;
int i, p, t;
methoddesc *md;
#ifdef LV_DEBUG_CHECK
- stackptr s;
+ stackelement_t* s;
#endif
methodinfo *m;
registerdata *rd;
}
-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 */
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;
}
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;
break;
default:
- *exceptionptr =
- new_internalerror("Unknown ICMD %d during register allocation",
- iptr->opc);
+ exceptions_throw_internalerror("Unknown ICMD %d during register allocation",
+ iptr->opc);
return;
} /* switch */
}