aboutsummaryrefslogtreecommitdiff
path: root/libjava/verify.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-06-24 20:38:47 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-06-24 20:38:47 +0000
commitfdae83abe7a88e1f08ec25d3f4eb5eb21ec342bf (patch)
treee59ad5d049989b731a9627c3a574a3d26f58284f /libjava/verify.cc
parent7691fc06fee5ab69163222e1c584aed029273152 (diff)
downloadgcc-fdae83abe7a88e1f08ec25d3f4eb5eb21ec342bf.zip
gcc-fdae83abe7a88e1f08ec25d3f4eb5eb21ec342bf.tar.gz
gcc-fdae83abe7a88e1f08ec25d3f4eb5eb21ec342bf.tar.bz2
verify.cc (branch_prepass): Updated for change to exception handler type.
* verify.cc (branch_prepass): Updated for change to exception handler type. (verify_instructions_0): Likewise. * defineclass.cc (handleCodeAttribute): Initialize `prepared'. (handleExceptionTableEntry): Updated for change to exception handler type. * java/lang/Class.h (Class): Removed _Jv_InterpMethodInvocation. * include/java-interp.h (_Jv_InterpMethodInvocation): Removed. (union _Jv_InterpPC): New. (class _Jv_InterpException): Changed types to _Jv_InterpPC. (class _Jv_InterpMethod): Added new `prepared' field. (class _Jv_InterpMethod): Added `compile' method. Removed `continue1' and `find_exception'. Changed arguments to `run'. * interpret.cc (union insn_slot): New. (find_exception): Removed. (run_normal): Removed most logic. (run_synch_object): Likewise; also, use JvSynchronize. (run_synch_class): Likewise. (run): Removed. (continue1): Renamed as `run'. Compile bytecode if required. Add new code to allow refinement of direct-threaded code at runtime. Handle exceptions. (SAVE_PC): Removed. (compile): New method. (SET_ONE, SET_INSN, SET_INT, SET_DATUM): New defines. (NULLARRAYCHECK): Don't use SAVE_PC. (pc_t): New typedef. (TAKE_GOTO, GET1S, GET1U, GET2U, AVAL1U, AVAL2U, AVAL2UP, SKIP_GOTO, GOTO_VAL, PCVAL, AMPAMP): New macros. From-SVN: r54968
Diffstat (limited to 'libjava/verify.cc')
-rw-r--r--libjava/verify.cc24
1 files changed, 12 insertions, 12 deletions
diff --git a/libjava/verify.cc b/libjava/verify.cc
index 4054819..29f0f32 100644
--- a/libjava/verify.cc
+++ b/libjava/verify.cc
@@ -1882,18 +1882,18 @@ private:
// Verify exception handlers.
for (int i = 0; i < current_method->exc_count; ++i)
{
- if (! (flags[exception[i].handler_pc] & FLAG_INSN_START))
+ if (! (flags[exception[i].handler_pc.i] & FLAG_INSN_START))
verify_fail ("exception handler not at instruction start",
- exception[i].handler_pc);
- if (! (flags[exception[i].start_pc] & FLAG_INSN_START))
+ exception[i].handler_pc.i);
+ if (! (flags[exception[i].start_pc.i] & FLAG_INSN_START))
verify_fail ("exception start not at instruction start",
- exception[i].start_pc);
- if (exception[i].end_pc != current_method->code_length
- && ! (flags[exception[i].end_pc] & FLAG_INSN_START))
+ exception[i].start_pc.i);
+ if (exception[i].end_pc.i != current_method->code_length
+ && ! (flags[exception[i].end_pc.i] & FLAG_INSN_START))
verify_fail ("exception end not at instruction start",
- exception[i].end_pc);
+ exception[i].end_pc.i);
- flags[exception[i].handler_pc] |= FLAG_BRANCH_TARGET;
+ flags[exception[i].handler_pc.i] |= FLAG_BRANCH_TARGET;
}
}
@@ -2186,12 +2186,12 @@ private:
// through them all.
for (int i = 0; i < current_method->exc_count; ++i)
{
- if (PC >= exception[i].start_pc && PC < exception[i].end_pc)
+ if (PC >= exception[i].start_pc.i && PC < exception[i].end_pc.i)
{
type handler (&java::lang::Throwable::class$);
- if (exception[i].handler_type != 0)
- handler = check_class_constant (exception[i].handler_type);
- push_exception_jump (handler, exception[i].handler_pc);
+ if (exception[i].handler_type.i != 0)
+ handler = check_class_constant (exception[i].handler_type.i);
+ push_exception_jump (handler, exception[i].handler_pc.i);
}
}