X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fverify%2Ftypecheck.c;h=3b89744d3d3e8fc9219324bcb94c756f137f47b8;hb=9f859ad50d3d5d98c185d40b86b2179bc4dc9aeb;hp=4720feba3dba09f0c80ef97bebee15760b18e1c9;hpb=d362a578296d95d99d4c996a12d116ecbb809866;p=cacao.git diff --git a/src/vm/jit/verify/typecheck.c b/src/vm/jit/verify/typecheck.c index 4720feba3..3b89744d3 100644 --- a/src/vm/jit/verify/typecheck.c +++ b/src/vm/jit/verify/typecheck.c @@ -22,8 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: typecheck.c 7246 2007-01-29 18:49:05Z twisti $ - */ /* @@ -146,23 +144,25 @@ error reporting. #ifdef ENABLE_VERIFIER #include "mm/memory.h" + #include "native/native.h" #include "toolbox/logging.h" +#include "vm/access.h" +#include "vm/array.h" #include "vm/builtin.h" #include "vm/exceptions.h" #include "vm/global.h" +#include "vm/primitive.h" +#include "vm/resolve.h" -#include "vm/access.h" #include "vm/jit/jit.h" #include "vm/jit/parse.h" -#include "vm/jit/patcher.h" #include "vm/jit/show.h" #include "vmcore/loader.h" #include "vmcore/options.h" -#include "vmcore/resolve.h" #include @@ -415,49 +415,49 @@ handle_multianewarray(verifier_state *state) static void typecheck_invalidate_locals(verifier_state *state, s4 index, bool twoword) { - s4 i; + s4 javaindex; s4 t; - s4 mapped; + s4 varindex; jitdata *jd = state->jd; s4 *localmap = jd->local_map; varinfo *vars = jd->var; - i = state->reverselocalmap[index]; + javaindex = state->reverselocalmap[index]; - /* invalidate locals of two-word type at index i-1 */ + /* invalidate locals of two-word type at index javaindex-1 */ - if (i > 0) { - localmap += 5 * (i-1); + if (javaindex > 0) { + localmap += 5 * (javaindex-1); for (t=0; t<5; ++t) { - mapped = *localmap++; - if (mapped >= 0 && IS_2_WORD_TYPE(vars[mapped].type)) { - LOG1("invalidate local %d", mapped); - vars[mapped].type = TYPE_VOID; + varindex = *localmap++; + if (varindex >= 0 && IS_2_WORD_TYPE(vars[varindex].type)) { + LOG1("invalidate local %d", varindex); + vars[varindex].type = TYPE_VOID; } } } else { - localmap += 5 * i; + localmap += 5 * javaindex; } - /* invalidate locals at index i */ + /* invalidate locals at index javaindex */ for (t=0; t<5; ++t) { - mapped = *localmap++; - if (mapped >= 0) { - LOG1("invalidate local %d", mapped); - vars[mapped].type = TYPE_VOID; + varindex = *localmap++; + if (varindex >= 0) { + LOG1("invalidate local %d", varindex); + vars[varindex].type = TYPE_VOID; } } - /* if a two-word type is written, invalidate locals at index i+1 */ + /* if a two-word type is written, invalidate locals at index javaindex+1 */ if (twoword) { for (t=0; t<5; ++t) { - mapped = *localmap++; - if (mapped >= 0) { - LOG1("invalidate local %d", mapped); - vars[mapped].type = TYPE_VOID; + varindex = *localmap++; + if (varindex >= 0) { + LOG1("invalidate local %d", varindex); + vars[varindex].type = TYPE_VOID; } } } @@ -533,7 +533,6 @@ handle_basic_block(verifier_state *state) LOGSTR1("\n---- BLOCK %04d ------------------------------------------------\n",state->bptr->nr); LOGFLUSH; - DOLOG(show_basicblock(jd, state->bptr, SHOW_STACK)); superblockend = false; state->bptr->flags = BBFINISHED; @@ -556,6 +555,7 @@ handle_basic_block(verifier_state *state) /* init variable types at the start of this block */ typevector_copy_inplace(state->bptr->inlocals, jd->var, state->numlocals); + DOLOG(show_basicblock(jd, state->bptr, SHOW_STACK)); DOLOG(typecheck_print_vararray(stdout, jd, state->bptr->invars, state->bptr->indepth)); DOLOG(typevector_print(stdout, jd->var, state->numlocals)); @@ -747,9 +747,9 @@ bool typecheck(jitdata *jd) state.reverselocalmap = DMNEW(s4, state.validlocals); for (i=0; imaxlocals; ++i) for (t=0; t<5; ++t) { - s4 mapped = jd->local_map[5*i + t]; - if (mapped >= 0) - state.reverselocalmap[mapped] = i; + s4 varindex = jd->local_map[5*i + t]; + if (varindex >= 0) + state.reverselocalmap[varindex] = i; } DOLOG(