java-insns.h (enum java_code): Add op_breakpoint.

* include/java-insns.h (enum java_code): Add op_breakpoint.
        * include/java-interp.h (_Jv_InterpMethod): Declare breakpoint_insn.
        [INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_slot.
        [!INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_opcode.
        (install_break): Declare.
        * interpret.cc (breakpoint_insn): Define breakpoint insn.
        (compile): Add op_breakpoint to "can't happen" cases.
        [INTERPRETER] Initialize breakpoint insn if necessary.
        (install_break): New method.
        * interpret-run.cc: Add op_breakpoint to insn_targets.
        Add insn_breakpoint label.
        * verify.cc (branch_prepass): Add op_breakpoint to unrecognized
        opcodes section of switch statement.
        (verify_instructions_0): Likewise.

From-SVN: r117734
This commit is contained in:
Keith Seitz 2006-10-14 20:11:12 +00:00 committed by Keith Seitz
parent 1526c4b5b6
commit 0f546316f4
6 changed files with 65 additions and 6 deletions

View file

@ -133,6 +133,14 @@ struct _Jv_LineTableEntry
class _Jv_InterpMethod : public _Jv_MethodBase
{
// Breakpoint instruction
static pc_t breakpoint_insn;
#ifdef DIRECT_THREADED
static insn_slot bp_insn_slot;
#else
static unsigned char bp_insn_opcode;
#endif
_Jv_ushort max_stack;
_Jv_ushort max_locals;
int code_length;
@ -206,6 +214,10 @@ class _Jv_InterpMethod : public _Jv_MethodBase
void get_line_table (jlong& start, jlong& end, jintArray& line_numbers,
jlongArray& code_indices);
/* Installs a break instruction at the given code index. Returns
the pc_t of the breakpoint or NULL if index is invalid. */
pc_t install_break (jlong index);
// Gets the instruction at the given index
pc_t get_insn (jlong index);