gcc/libjava/gnu/gcj/jvmti/Breakpoint.java
Keith Seitz 02b1e78caf Breakpoint.java: Make abstract.
* gnu/gcj/jvmti/Breakpoint.java: Make abstract.
        (method): Change from private to protected.
        (location): Likewise.
        (Breakpoint): Change argument list to take only integer type.
        Add default constructor.
        (initialize_native): Renamed to ...
        (_save_insn): ... this to make function more explicit.
        (execute): New method.
        * gnu/gcj/jvmti/Breakpoint.h: Regenerate.
        * gnu/gcj/jvmti/natBreakpoint.cc (initialize_native): Rename to...
        (_save_insn): ... this.
        (install): Save the original instruction.
        * gnu/gcj/jvmti/NormalBreakpoint.java: New file.
        * gnu/gcj/jvmti/NormalBreakpoint.h: New file.
        * gnu/gcj/jvmti/natNormalBreakpoint.cc: New file.
        * gnu/gcj/jvmti/BreakpointManager.java (newBreakpoint):
        Instantiate a NormalBreakpoint instead of Breakpoint.
        * interpret-run.cc (insn_breakpoint): Remove breakpoint actions
        and call Breakpoint.execute to do them.
        * classpath/lib/gnu/gcj/jvmti/Breakpoint.class: Regenerate.
        * classpath/lib/gnu/gcj/jvmti/BreakpointManager.class: Likewise.
        * classpath/lib/gnu/gcj/jvmti/NormalBreakpoint.class: New file.
        * sources.am: Regenerate.
        * Makefile.am (nat_source_files): Add natNormalBreakpoint.cc.
        * Makefile.in: Regenerated.

From-SVN: r125834
2007-06-19 00:10:10 +00:00

74 lines
1.6 KiB
Java

// Breakpoint.java - a base class for interpreter breakpoints
/* Copyright (C) 2006, 2007 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package gnu.gcj.jvmti;
import gnu.gcj.RawDataManaged;
/**
* Base class representing a type of breakpoint in the interpreter.
* This class deals with saving insns and installing and
* uninstalling insns in the interpreter for all breakpoint classes.
*
* @author Keith Seitz (keiths@redhat.com)
*/
public abstract class Breakpoint
{
// Location of this breakpoint
protected long method;
protected long location;
// The original instruction that this breakpoint replaced
private RawDataManaged data;
/**
* Constructs a new Breakpoint
*
* @param method the method in which to set the breakpoint
* @param location the location at which to set the breakpoint
*/
public Breakpoint (long method, long location)
{
this.method = method;
this.location = location;
}
public Breakpoint ()
{
}
private native void _save_insn ();
/**
* Installs the breakpoint into the interpreter
*/
public native void install ();
/**
* Removes the breakpoint from the interpreter, re-installing
* the original instruction.
*/
public native void remove ();
/**
* Returns the original instruction at the location where
* this breakpoint was set
*/
public RawDataManaged getInsn ()
{
return data;
}
/**
* Execute the actions of this breakpoint
*/
public abstract void execute ();
}