diff options
author | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-30 19:20:16 +0000 |
---|---|---|
committer | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-30 19:20:16 +0000 |
commit | 16ed7fb2c8a7fd227f037804800768994453f6b5 (patch) | |
tree | b484dd0bd0295d212071fc7b2fc86b6422a1732f | |
parent | fc2432663bfc27101fdde6bca67055445ed97f05 (diff) | |
download | gcc-16ed7fb2c8a7fd227f037804800768994453f6b5.tar.gz |
* include/java-interp.h (prepared): Change type to pc_t.
(insn_index): Define for both DIRECT_THREADED and bytecode interpreters.
* interpret.cc [!DIRECT_THREADED] (POKEI): Fix typo.
(insn_index): Implement for bytecode interpreter.
* interpret-run.cc [!DIRECT_THREADED] (AVAL1U): Add _Jv_Linker class
qualifier to resolve_pool_entry.
[!DIRECT_THREADED] (AVAL2U): Likewise.
[!DIRECT_THREADED] bytecode() cannot be called without an object.
Changed all typos.
[!DIRECT_THREADED] Likewise for defining_class.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117333 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libjava/ChangeLog | 13 | ||||
-rw-r--r-- | libjava/include/java-interp.h | 6 | ||||
-rw-r--r-- | libjava/interpret-run.cc | 18 | ||||
-rw-r--r-- | libjava/interpret.cc | 15 |
4 files changed, 32 insertions, 20 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 33b21ce28ff..177ac48d295 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,16 @@ +2006-09-30 Keith Seitz <keiths@redhat.com> + + * include/java-interp.h (prepared): Change type to pc_t. + (insn_index): Define for both DIRECT_THREADED and bytecode interpreters. + * interpret.cc [!DIRECT_THREADED] (POKEI): Fix typo. + (insn_index): Implement for bytecode interpreter. + * interpret-run.cc [!DIRECT_THREADED] (AVAL1U): Add _Jv_Linker class + qualifier to resolve_pool_entry. + [!DIRECT_THREADED] (AVAL2U): Likewise. + [!DIRECT_THREADED] bytecode() cannot be called without an object. + Changed all typos. + [!DIRECT_THREADED] Likewise for defining_class. + 2006-09-26 Jack Howarth <howarth@bromo.med.uc.edu> PR target/26792: diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h index efb8b414200..133fd19f9fe 100644 --- a/libjava/include/java-interp.h +++ b/libjava/include/java-interp.h @@ -144,7 +144,7 @@ class _Jv_InterpMethod : public _Jv_MethodBase int line_table_len; _Jv_LineTableEntry *line_table; - void *prepared; + pc_t prepared; int number_insn_slots; unsigned char* bytecode () @@ -191,13 +191,9 @@ class _Jv_InterpMethod : public _Jv_MethodBase // number info is unavailable. int get_source_line(pc_t mpc); - - -#ifdef DIRECT_THREADED // Convenience function for indexing bytecode PC/insn slots in // line tables for JDWP jlong insn_index (pc_t pc); -#endif public: diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc index ee9fcad5a68..afabad26994 100644 --- a/libjava/interpret-run.cc +++ b/libjava/interpret-run.cc @@ -291,10 +291,10 @@ details. */ // class'. #define AVAL1U() \ ({ int index = get1u (pc++); \ - resolve_pool_entry (meth->defining_class, index).o; }) + _Jv_Linker::resolve_pool_entry (meth->defining_class, index).o; }) #define AVAL2U() \ ({ int index = get2u (pc); pc += 2; \ - resolve_pool_entry (meth->defining_class, index).o; }) + _Jv_Linker::resolve_pool_entry (meth->defining_class, index).o; }) // Note that we don't need to resolve the pool entry here as class // constants are never wide. #define AVAL2UP() ({ int index = get2u (pc); pc += 2; &pool_data[index]; }) @@ -303,7 +303,7 @@ details. */ #define PCVAL(unionval) unionval.i #define AMPAMP(label) NULL - pc = bytecode (); + pc = meth->bytecode (); #endif /* DIRECT_THREADED */ @@ -1545,7 +1545,7 @@ details. */ pc_t base_pc = pc - 1; int index = POPI (); - pc_t base = (pc_t) bytecode (); + pc_t base = (pc_t) meth->bytecode (); while ((pc - base) % 4 != 0) ++pc; @@ -1601,7 +1601,7 @@ details. */ unsigned char *base_pc = pc-1; int index = POPI(); - unsigned char* base = bytecode (); + unsigned char* base = meth->bytecode (); while ((pc-base) % 4 != 0) ++pc; @@ -2469,7 +2469,7 @@ details. */ #ifdef DIRECT_THREADED void *logical_pc = (void *) ((insn_slot *) pc - 1); #else - int logical_pc = pc - 1 - bytecode (); + int logical_pc = pc - 1 - meth->bytecode (); #endif _Jv_InterpException *exc = meth->exceptions (); jclass exc_class = ex->getClass (); @@ -2484,8 +2484,8 @@ details. */ #else jclass handler = NULL; if (exc[i].handler_type.i != 0) - handler = (_Jv_Linker::resolve_pool_entry (defining_class, - exc[i].handler_type.i)).clazz; + handler = (_Jv_Linker::resolve_pool_entry (meth->defining_class, + exc[i].handler_type.i)).clazz; #endif /* DIRECT_THREADED */ if (handler == NULL || handler->isAssignableFrom (exc_class)) @@ -2494,7 +2494,7 @@ details. */ #ifdef DIRECT_THREADED pc = (insn_slot *) exc[i].handler_pc.p; #else - pc = bytecode () + exc[i].handler_pc.i; + pc = meth->bytecode () + exc[i].handler_pc.i; #endif /* DIRECT_THREADED */ sp = stack; sp++->o = ex; // Push exception. diff --git a/libjava/interpret.cc b/libjava/interpret.cc index 22196aa30a1..1c4e21e6b76 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -200,7 +200,7 @@ do { DEBUG_LOCALS_INSN(I, 'd'); \ #define PEEKA(I) (locals+(I))->o #define POKEI(I,V) \ -DEBUG_LOCALS_INSN(I,i) \ +DEBUG_LOCALS_INSN(I,'i'); \ ((locals+(I))->i = (V)) @@ -1307,23 +1307,27 @@ _Jv_InterpMethod::ncode () return self->ncode; } -#ifdef DIRECT_THREADED /* Find the index of the given insn in the array of insn slots for this method. Returns -1 if not found. */ jlong _Jv_InterpMethod::insn_index (pc_t pc) { jlong left = 0; +#ifdef DIRECT_THREADED jlong right = number_insn_slots; - insn_slot* slots = reinterpret_cast<insn_slot*> (prepared); + pc_t insns = prepared; +#else + jlong right = code_length; + pc_t insns = bytecode (); +#endif while (right >= 0) { jlong mid = (left + right) / 2; - if (&slots[mid] == pc) + if (&insns[mid] == pc) return mid; - if (pc < &slots[mid]) + if (pc < &insns[mid]) right = mid - 1; else left = mid + 1; @@ -1331,7 +1335,6 @@ _Jv_InterpMethod::insn_index (pc_t pc) return -1; } -#endif // DIRECT_THREADED void _Jv_InterpMethod::get_line_table (jlong& start, jlong& end, |