/* src/vm/jit/codegen-common.c - architecture independent code generator stuff
- 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 zu Foerderung der freien virtuellen Machine CACAO
This file is part of CACAO.
codegendata *cd;
ptrint *d; /* pointer to data memory */
u1 *c; /* pointer to code memory */
- s4 dumpsize;
+ int32_t dumpmarker;
/* mark dump memory */
- dumpsize = dump_size();
+ DMARKER;
/* allocate required data structures */
/* release dump memory */
- dump_release(dumpsize);
+ DRELEASE;
/* return native stub code */
jitdata *jd;
codeinfo *code;
int skipparams;
- s4 dumpsize;
+ int32_t dumpmarker;
/* mark dump memory */
- dumpsize = dump_size();
+ DMARKER;
/* Create JIT data structure. */
/* release memory */
- dump_release(dumpsize);
+ DRELEASE;
}
{
jitdata *jd;
codeinfo *code;
- s4 dumpsize;
methoddesc *md;
methoddesc *nmd;
int skipparams;
+ int32_t dumpmarker;
/* mark dump memory */
- dumpsize = dump_size();
+ DMARKER;
/* Create JIT data structure. */
/* release memory */
- dump_release(dumpsize);
+ DRELEASE;
/* return native stub code */
if (compileverbose)
printf("...returning - phi lifetimes where joined\n");
#endif
- return;
+ continue;
}
if (s->type == -1) {
if (compileverbose)
printf("...returning - phi lifetimes where joined\n");
#endif
- return;
+ continue;
}
tmp_i.opc = 0;
/* src/vm/jit/jit.c - calls the code generation 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 zu Foerderung der freien virtuellen Machine CACAO
This file is part of CACAO.
{
u1 *r;
jitdata *jd;
- s4 dumpsize;
+ int32_t dumpmarker;
STATISTICS(count_jit_calls++);
/* mark start of dump memory area */
- dumpsize = dump_size();
+ DMARKER;
/* create jitdata structure */
/* release dump area */
- dump_release(dumpsize);
+ DRELEASE;
#if defined(ENABLE_STATISTICS)
/* measure time */
u1 *r;
jitdata *jd;
u1 optlevel;
- s4 dumpsize;
+ int32_t dumpmarker;
/* check for max. optimization level */
/* mark start of dump memory area */
- dumpsize = dump_size();
+ DMARKER;
/* create jitdata structure */
/* release dump area */
- dump_release(dumpsize);
+ DRELEASE;
#if defined(ENABLE_STATISTICS)
/* measure time */
#endif
#if defined(ENABLE_PYTHON)
- if (!pythonpass_run(jd, "langauer_tarjan", "langauer_tarjan")) {
+ if (!pythonpass_run(jd, "langauer_tarjan", "main")) {
/*return NULL;*/
}
#endif
/* allocate registers */
if ((opt_lsra) && (jd->exceptiontablelength == 0)) {
jd->ls = DNEW(lsradata);
+ ssa(jd);
lsra(jd);
STATISTICS(count_methods_allocated_by_lsra++);
/* src/vm/jit/show.c - showing the intermediate representation
- 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 zu Foerderung der freien virtuellen Machine CACAO
This file is part of CACAO.
printf("\n");
+ if (irstage >= SHOW_CFG) {
+ printf("succs: %d [ ", bptr->successorcount);
+
+ for (i = 0; i < bptr->successorcount; i++)
+ printf("%d ", bptr->successors[i]->nr);
+
+ printf("]\n");
+ }
+
if (irstage >= SHOW_STACK) {
printf("IN: ");
show_variable_array(jd, bptr->invars, bptr->indepth, irstage);
int res;
char *method_name;
s4 len;
- s4 dumpsize;
+ int32_t dumpmarker;
/* compose full name of method */
utf_bytes(m->descriptor) +
1;
- dumpsize = dump_size(); /* allocate memory */
+ DMARKER;
method_name = DMNEW(char, len);
/* release memory */
- dump_release(dumpsize);
-
+ DRELEASE;
}
#define STATE_IS_INITIAL() ((FILTERVERBOSECALLCTR[0] == 0) && (FILTERVERBOSECALLCTR[1] == 0))
/* src/vm/vm.c - VM startup and shutdown 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 zu Foerderung der freien virtuellen Machine CACAO
This file is part of CACAO.
#if defined(ENABLE_IFCONV)
{ "ifconv", false, OPT_IFCONV },
#endif
- #if defined(ENABLE_LSRA) || defined(ENABLE_SSA)
+ #if defined(ENABLE_LSRA)
{ "lsra", false, OPT_LSRA },
#endif
+ #if defined(ENABLE_SSA)
+ { "lsra", true, OPT_LSRA },
+ #endif
#if defined(ENABLE_INTRP)
/* interpreter options */
puts(" -lsra use linear scan register allocation");
#endif
#if defined(ENABLE_SSA)
- puts(" -lsra use linear scan register allocation (with SSA)");
+ puts(" -lsra:... use linear scan register allocation (with SSA)");
+ puts(" (d)ead code elimination");
+ puts(" (c)opy propagation");
#endif
#if defined(ENABLE_DEBUG_FILTER)
puts(" -XXfi <regex> begin of dynamic scope for verbosecall filter");
break;
#endif
- #if defined(ENABLE_LSRA) || defined(ENABLE_SSA)
+ #if defined(ENABLE_LSRA)
+ case OPT_LSRA:
+ opt_lsra = true;
+ break;
+ #endif
+ #if defined(ENABLE_SSA)
case OPT_LSRA:
opt_lsra = true;
+ for (i = 0; i < strlen(opt_arg); i++) {
+ switch (opt_arg[i]) {
+ case 'c':
+ opt_ssa_cp = true;
+ break;
+
+ case 'd':
+ opt_ssa_dce = true;
+ break;
+
+ case ':':
+ break;
+
+ default:
+ usage();
+ }
+ }
break;
#endif
type vm_call_method##name##_valist(methodinfo *m, java_handle_t *o, \
va_list ap) \
{ \
- int32_t dumpsize; \
uint64_t *array; \
type value; \
+ int32_t dumpmarker; \
\
if (m->code == NULL) \
if (!jit_compile(m)) \
return 0; \
\
THREAD_NATIVEWORLD_EXIT; \
+ DMARKER; \
\
- dumpsize = dump_size(); \
array = argument_vmarray_from_valist(m, o, ap); \
value = vm_call##name##_array(m, array); \
- dump_release(dumpsize); \
\
+ DRELEASE; \
THREAD_NATIVEWORLD_ENTER; \
\
return value; \
type vm_call_method##name##_jvalue(methodinfo *m, java_handle_t *o, \
const jvalue *args) \
{ \
- int32_t dumpsize; \
uint64_t *array; \
type value; \
+ int32_t dumpmarker; \
\
if (m->code == NULL) \
if (!jit_compile(m)) \
return 0; \
\
THREAD_NATIVEWORLD_EXIT; \
+ DMARKER; \
\
- dumpsize = dump_size(); \
array = argument_vmarray_from_jvalue(m, o, args); \
value = vm_call##name##_array(m, array); \
- dump_release(dumpsize); \
\
+ DRELEASE; \
THREAD_NATIVEWORLD_ENTER; \
\
return value; \
java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o,
java_handle_objectarray_t *params)
{
- int32_t dumpsize;
uint64_t *array;
java_handle_t *xptr;
java_handle_t *ro;
imm_union value;
+ int32_t dumpmarker;
/* compile methods which are not yet compiled */
/* mark start of dump memory area */
- dumpsize = dump_size();
+ DMARKER;
/* Fill the argument array from a object-array. */
if (array == NULL) {
/* release dump area */
- dump_release(dumpsize);
+ DRELEASE;
/* enter the nativeworld again */
/* release dump area */
- dump_release(dumpsize);
+ DRELEASE;
/* enter the nativeworld again */