Commit 05ee9ca0 by Keith Seitz Committed by Keith Seitz

java-interp.h (_Jv_InterpMethod::get_insn): Declare.

        * include/java-interp.h (_Jv_InterpMethod::get_insn): Declare.
        (_Jv_InterpMethod::set_insn): Declare.
        * interpret.cc (_Jv_InterpMethod::get_insn): New method.
        (_Jv_InterpMethod::get_insn): New method.

From-SVN: r117614
parent 4e34ede2
2006-10-10 Keith Seitz <keiths@redhat.com>
* include/java-interp.h (_Jv_InterpMethod::get_insn): Declare.
(_Jv_InterpMethod::set_insn): Declare.
* interpret.cc (_Jv_InterpMethod::get_insn): New method.
(_Jv_InterpMethod::get_insn): New method.
2006-10-10 Tom Tromey <tromey@redhat.com> 2006-10-10 Tom Tromey <tromey@redhat.com>
* prims.cc (_Jv_PrependVersionedLibdir): Use * prims.cc (_Jv_PrependVersionedLibdir): Use
......
...@@ -206,6 +206,13 @@ class _Jv_InterpMethod : public _Jv_MethodBase ...@@ -206,6 +206,13 @@ class _Jv_InterpMethod : public _Jv_MethodBase
void get_line_table (jlong& start, jlong& end, jintArray& line_numbers, void get_line_table (jlong& start, jlong& end, jintArray& line_numbers,
jlongArray& code_indices); jlongArray& code_indices);
// Gets the instruction at the given index
pc_t get_insn (jlong index);
/* Writes the given instruction at the given code index. Returns
the insn or NULL if index is invalid. */
pc_t set_insn (jlong index, pc_t insn);
#ifdef DIRECT_THREADED #ifdef DIRECT_THREADED
friend void _Jv_CompileMethod (_Jv_InterpMethod*); friend void _Jv_CompileMethod (_Jv_InterpMethod*);
#endif #endif
......
...@@ -1384,6 +1384,46 @@ _Jv_InterpMethod::get_line_table (jlong& start, jlong& end, ...@@ -1384,6 +1384,46 @@ _Jv_InterpMethod::get_line_table (jlong& start, jlong& end,
#endif // !DIRECT_THREADED #endif // !DIRECT_THREADED
} }
pc_t
_Jv_InterpMethod::get_insn (jlong index)
{
pc_t code;
#ifdef DIRECT_THREADED
if (index >= number_insn_slots || index < 0)
return NULL;
code = prepared;
#else // !DIRECT_THREADED
if (index >= code_length || index < 0)
return NULL;
code = reinterpret_cast<pc_t> (bytecode ());
#endif // !DIRECT_THREADED
return &code[index];
}
pc_t
_Jv_InterpMethod::set_insn (jlong index, pc_t insn)
{
#ifdef DIRECT_THREADED
if (index >= number_insn_slots || index < 0)
return NULL;
pc_t code = prepared;
code[index].insn = insn->insn;
#else // !DIRECT_THREADED
if (index >= code_length || index < 0)
return NULL;
pc_t code = reinterpret_cast<pc_t> (bytecode ());
code[index] = *insn;
#endif // !DIRECT_THREADED
return &code[index];
}
void * void *
_Jv_JNIMethod::ncode () _Jv_JNIMethod::ncode ()
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment