summaryrefslogtreecommitdiff
path: root/libjava/gnu/classpath/jdwp
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/gnu/classpath/jdwp
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/gnu/classpath/jdwp')
-rw-r--r--libjava/gnu/classpath/jdwp/Jdwp$1.h38
-rw-r--r--libjava/gnu/classpath/jdwp/Jdwp.h83
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$ClassStatus.h36
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayReference.h36
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayType.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassLoaderReference.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassObjectReference.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassType.h37
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Event.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$EventRequest.h36
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Field.h33
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$InterfaceType.h33
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Method.h38
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ObjectReference.h41
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ReferenceType.h48
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StackFrame.h37
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StringReference.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadGroupReference.h36
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadReference.h45
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$VirtualMachine.h53
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet.h33
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$Error.h88
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$EventKind.h52
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$InvokeOptions.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$ModKind.h43
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$StepDepth.h35
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$StepSize.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$SuspendPolicy.h35
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$SuspendStatus.h33
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$Tag.h48
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$ThreadStatus.h37
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$TypeTag.h35
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants$Version.h34
-rw-r--r--libjava/gnu/classpath/jdwp/JdwpConstants.h32
-rw-r--r--libjava/gnu/classpath/jdwp/VMFrame.h53
-rw-r--r--libjava/gnu/classpath/jdwp/VMFrame.java134
-rw-r--r--libjava/gnu/classpath/jdwp/VMIdManager$IdFactory.h46
-rw-r--r--libjava/gnu/classpath/jdwp/VMIdManager$ReferenceKey.h41
-rw-r--r--libjava/gnu/classpath/jdwp/VMIdManager.h62
-rw-r--r--libjava/gnu/classpath/jdwp/VMIdManager.java435
-rw-r--r--libjava/gnu/classpath/jdwp/VMMethod.h61
-rw-r--r--libjava/gnu/classpath/jdwp/VMMethod.java189
-rw-r--r--libjava/gnu/classpath/jdwp/VMVirtualMachine.h98
-rw-r--r--libjava/gnu/classpath/jdwp/VMVirtualMachine.java437
-rw-r--r--libjava/gnu/classpath/jdwp/event/BreakpointEvent.h47
-rw-r--r--libjava/gnu/classpath/jdwp/event/ClassPrepareEvent.h47
-rw-r--r--libjava/gnu/classpath/jdwp/event/ClassUnloadEvent.h41
-rw-r--r--libjava/gnu/classpath/jdwp/event/Event.h61
-rw-r--r--libjava/gnu/classpath/jdwp/event/EventManager.h52
-rw-r--r--libjava/gnu/classpath/jdwp/event/EventRequest.h75
-rw-r--r--libjava/gnu/classpath/jdwp/event/ExceptionEvent.h51
-rw-r--r--libjava/gnu/classpath/jdwp/event/MethodEntryEvent.h47
-rw-r--r--libjava/gnu/classpath/jdwp/event/MethodExitEvent.h47
-rw-r--r--libjava/gnu/classpath/jdwp/event/SingleStepEvent.h47
-rw-r--r--libjava/gnu/classpath/jdwp/event/ThreadEndEvent.h41
-rw-r--r--libjava/gnu/classpath/jdwp/event/ThreadStartEvent.h41
-rw-r--r--libjava/gnu/classpath/jdwp/event/VmDeathEvent.h39
-rw-r--r--libjava/gnu/classpath/jdwp/event/VmInitEvent.h41
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ClassExcludeFilter.h40
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ClassMatchFilter.h44
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ClassOnlyFilter.h48
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ConditionalFilter.h40
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/CountFilter.h44
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.h50
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/FieldOnlyFilter.h50
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/IEventFilter.h39
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.h48
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/LocationOnlyFilter.h48
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/StepFilter.h52
-rw-r--r--libjava/gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.h48
-rw-r--r--libjava/gnu/classpath/jdwp/exception/AbsentInformationException.h35
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidClassException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidClassLoaderException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidCountException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidEventTypeException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidFieldException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidFrameException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidLocationException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidMethodException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidObjectException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidSlotException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidStringException.h37
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidTagException.h35
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidThreadException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/InvalidThreadGroupException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/JdwpException.h40
-rw-r--r--libjava/gnu/classpath/jdwp/exception/JdwpIllegalArgumentException.h35
-rw-r--r--libjava/gnu/classpath/jdwp/exception/JdwpInternalErrorException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/NativeMethodException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/NotImplementedException.h35
-rw-r--r--libjava/gnu/classpath/jdwp/exception/TypeMismatchException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/exception/VmDeadException.h35
-rw-r--r--libjava/gnu/classpath/jdwp/id/ArrayId.h35
-rw-r--r--libjava/gnu/classpath/jdwp/id/ArrayReferenceTypeId.h35
-rw-r--r--libjava/gnu/classpath/jdwp/id/ClassLoaderId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/id/ClassObjectId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/id/ClassReferenceTypeId.h35
-rw-r--r--libjava/gnu/classpath/jdwp/id/InterfaceReferenceTypeId.h35
-rw-r--r--libjava/gnu/classpath/jdwp/id/JdwpId.h50
-rw-r--r--libjava/gnu/classpath/jdwp/id/NullObjectId.h36
-rw-r--r--libjava/gnu/classpath/jdwp/id/ObjectId.h44
-rw-r--r--libjava/gnu/classpath/jdwp/id/ReferenceTypeId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/id/StringId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/id/ThreadGroupId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/id/ThreadId.h37
-rw-r--r--libjava/gnu/classpath/jdwp/natVMFrame.cc338
-rw-r--r--libjava/gnu/classpath/jdwp/natVMMethod.cc191
-rw-r--r--libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc1159
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.h48
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ArrayTypeCommandSet.h44
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.h44
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.h44
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ClassTypeCommandSet.h54
-rw-r--r--libjava/gnu/classpath/jdwp/processor/CommandSet.h47
-rw-r--r--libjava/gnu/classpath/jdwp/processor/EventRequestCommandSet.h48
-rw-r--r--libjava/gnu/classpath/jdwp/processor/FieldCommandSet.h43
-rw-r--r--libjava/gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.h43
-rw-r--r--libjava/gnu/classpath/jdwp/processor/MethodCommandSet.h50
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.h53
-rw-r--r--libjava/gnu/classpath/jdwp/processor/PacketProcessor.h52
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.h60
-rw-r--r--libjava/gnu/classpath/jdwp/processor/StackFrameCommandSet.h49
-rw-r--r--libjava/gnu/classpath/jdwp/processor/StringReferenceCommandSet.h46
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.h48
-rw-r--r--libjava/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.h57
-rw-r--r--libjava/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.h66
-rw-r--r--libjava/gnu/classpath/jdwp/transport/ITransport.h39
-rw-r--r--libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.h51
-rw-r--r--libjava/gnu/classpath/jdwp/transport/JdwpConnection.h66
-rw-r--r--libjava/gnu/classpath/jdwp/transport/JdwpPacket.h61
-rw-r--r--libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.h50
-rw-r--r--libjava/gnu/classpath/jdwp/transport/SocketTransport.h57
-rw-r--r--libjava/gnu/classpath/jdwp/transport/TransportException.h36
-rw-r--r--libjava/gnu/classpath/jdwp/transport/TransportFactory$TransportMethod.h39
-rw-r--r--libjava/gnu/classpath/jdwp/transport/TransportFactory.h44
-rw-r--r--libjava/gnu/classpath/jdwp/util/JdwpString.h44
-rw-r--r--libjava/gnu/classpath/jdwp/util/LineTable.h44
-rw-r--r--libjava/gnu/classpath/jdwp/util/Location.h54
-rw-r--r--libjava/gnu/classpath/jdwp/util/MethodResult.h45
-rw-r--r--libjava/gnu/classpath/jdwp/util/MonitorInfo.h41
-rw-r--r--libjava/gnu/classpath/jdwp/util/NullObject.h35
-rw-r--r--libjava/gnu/classpath/jdwp/util/Signature.h51
-rw-r--r--libjava/gnu/classpath/jdwp/util/VariableTable.h47
-rw-r--r--libjava/gnu/classpath/jdwp/value/ArrayValue.h41
-rw-r--r--libjava/gnu/classpath/jdwp/value/BooleanValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/ByteValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/CharValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/DoubleValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/FloatValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/IntValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/LongValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/ObjectValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/ShortValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/StringValue.h42
-rw-r--r--libjava/gnu/classpath/jdwp/value/Value.h55
-rw-r--r--libjava/gnu/classpath/jdwp/value/ValueFactory.h50
-rw-r--r--libjava/gnu/classpath/jdwp/value/VoidValue.h39
157 files changed, 9434 insertions, 0 deletions
diff --git a/libjava/gnu/classpath/jdwp/Jdwp$1.h b/libjava/gnu/classpath/jdwp/Jdwp$1.h
new file mode 100644
index 000000000..5f779e1a8
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/Jdwp$1.h
@@ -0,0 +1,38 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_Jdwp$1__
+#define __gnu_classpath_jdwp_Jdwp$1__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class Jdwp;
+ class Jdwp$1;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::Jdwp$1 : public ::java::lang::Object
+{
+
+public: // actually package-private
+ Jdwp$1(::gnu::classpath::jdwp::Jdwp *);
+public:
+ virtual void run();
+public: // actually package-private
+ ::gnu::classpath::jdwp::Jdwp * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_Jdwp$1__
diff --git a/libjava/gnu/classpath/jdwp/Jdwp.h b/libjava/gnu/classpath/jdwp/Jdwp.h
new file mode 100644
index 000000000..ba10ead72
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/Jdwp.h
@@ -0,0 +1,83 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_Jdwp__
+#define __gnu_classpath_jdwp_Jdwp__
+
+#pragma interface
+
+#include <java/lang/Thread.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class Jdwp;
+ namespace event
+ {
+ class Event;
+ class EventRequest;
+ }
+ namespace processor
+ {
+ class PacketProcessor;
+ }
+ namespace transport
+ {
+ class JdwpConnection;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::Jdwp : public ::java::lang::Thread
+{
+
+public:
+ Jdwp();
+ static ::gnu::classpath::jdwp::Jdwp * getDefault();
+ virtual ::java::lang::ThreadGroup * getJdwpThreadGroup();
+ static jboolean suspendOnStartup();
+ virtual void configure(::java::lang::String *);
+private:
+ void _doInitialization();
+public:
+ virtual void shutdown();
+ static void notify(::gnu::classpath::jdwp::event::Event *);
+ static void notify(JArray< ::gnu::classpath::jdwp::event::Event * > *);
+ static void sendEvent(::gnu::classpath::jdwp::event::EventRequest *, ::gnu::classpath::jdwp::event::Event *);
+ static void sendEvents(JArray< ::gnu::classpath::jdwp::event::EventRequest * > *, JArray< ::gnu::classpath::jdwp::event::Event * > *, jbyte);
+private:
+ void _enforceSuspendPolicy(jbyte);
+public:
+ virtual void subcomponentInitialized();
+ virtual void run();
+private:
+ void _processConfigury(::java::lang::String *);
+public: // actually package-private
+ static ::gnu::classpath::jdwp::processor::PacketProcessor * access$0(::gnu::classpath::jdwp::Jdwp *);
+private:
+ static ::gnu::classpath::jdwp::Jdwp * _instance;
+public:
+ static jboolean isDebugging;
+private:
+ ::gnu::classpath::jdwp::processor::PacketProcessor * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) _packetProcessor;
+ ::java::lang::Thread * _ppThread;
+ ::java::util::HashMap * _properties;
+ static ::java::lang::String * _PROPERTY_SUSPEND;
+ ::gnu::classpath::jdwp::transport::JdwpConnection * _connection;
+ jboolean _shutdown;
+ ::java::lang::ThreadGroup * _group;
+ ::java::lang::Object * _initLock;
+ jint _initCount;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_Jdwp__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$ClassStatus.h b/libjava/gnu/classpath/jdwp/JdwpConstants$ClassStatus.h
new file mode 100644
index 000000000..4cc150269
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$ClassStatus.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$ClassStatus__
+#define __gnu_classpath_jdwp_JdwpConstants$ClassStatus__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$ClassStatus;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$ClassStatus : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$ClassStatus();
+ static const jint VERIFIED = 1;
+ static const jint PREPARED = 2;
+ static const jint INITIALIZED = 4;
+ static const jint ERROR = 8;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$ClassStatus__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayReference.h
new file mode 100644
index 000000000..940ada888
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayReference.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ArrayReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ArrayReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ArrayReference();
+ static const jbyte CS_VALUE = 13;
+ static const jbyte LENGTH = 1;
+ static const jbyte GET_VALUES = 2;
+ static const jbyte SET_VALUES = 3;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayType.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayType.h
new file mode 100644
index 000000000..0115eb22f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ArrayType.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayType__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayType__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ArrayType;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ArrayType : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ArrayType();
+ static const jbyte CS_VALUE = 4;
+ static const jbyte NEW_INSTANCE = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ArrayType__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassLoaderReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassLoaderReference.h
new file mode 100644
index 000000000..372555093
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassLoaderReference.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassLoaderReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassLoaderReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ClassLoaderReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ClassLoaderReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ClassLoaderReference();
+ static const jbyte CS_VALUE = 14;
+ static const jbyte VISIBLE_CLASSES = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassLoaderReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassObjectReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassObjectReference.h
new file mode 100644
index 000000000..73f215251
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassObjectReference.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassObjectReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassObjectReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ClassObjectReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ClassObjectReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ClassObjectReference();
+ static const jbyte CS_VALUE = 17;
+ static const jbyte REFLECTED_TYPE = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassObjectReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassType.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassType.h
new file mode 100644
index 000000000..4d905545b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ClassType.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassType__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassType__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ClassType;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ClassType : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ClassType();
+ static const jbyte CS_VALUE = 3;
+ static const jbyte SUPERCLASS = 1;
+ static const jbyte SET_VALUES = 2;
+ static const jbyte INVOKE_METHOD = 3;
+ static const jbyte NEW_INSTANCE = 4;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ClassType__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Event.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Event.h
new file mode 100644
index 000000000..74eba4272
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Event.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$Event__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$Event__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$Event;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$Event : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$Event();
+ static const jbyte CS_VALUE = 64;
+ static const jbyte COMPOSITE = 100;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$Event__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$EventRequest.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$EventRequest.h
new file mode 100644
index 000000000..c486a61c1
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$EventRequest.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$EventRequest__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$EventRequest__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$EventRequest;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$EventRequest : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$EventRequest();
+ static const jbyte CS_VALUE = 15;
+ static const jbyte SET = 1;
+ static const jbyte CLEAR = 2;
+ static const jbyte CLEAR_ALL_BREAKPOINTS = 3;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$EventRequest__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Field.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Field.h
new file mode 100644
index 000000000..07949aadc
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Field.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$Field__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$Field__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$Field;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$Field : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$Field();
+ static const jbyte CS_VALUE = 8;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$Field__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$InterfaceType.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$InterfaceType.h
new file mode 100644
index 000000000..608072d09
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$InterfaceType.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$InterfaceType__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$InterfaceType__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$InterfaceType;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$InterfaceType : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$InterfaceType();
+ static const jbyte CS_VALUE = 5;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$InterfaceType__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Method.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Method.h
new file mode 100644
index 000000000..8b4066514
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$Method.h
@@ -0,0 +1,38 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$Method__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$Method__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$Method;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$Method : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$Method();
+ static const jbyte CS_VALUE = 6;
+ static const jbyte LINE_TABLE = 1;
+ static const jbyte VARIABLE_TABLE = 2;
+ static const jbyte BYTE_CODES = 3;
+ static const jbyte IS_OBSOLETE = 4;
+ static const jbyte VARIABLE_TABLE_WITH_GENERIC = 5;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$Method__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ObjectReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ObjectReference.h
new file mode 100644
index 000000000..3d9f5c4bd
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ObjectReference.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ObjectReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ObjectReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ObjectReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ObjectReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ObjectReference();
+ static const jbyte CS_VALUE = 9;
+ static const jbyte REFERENCE_TYPE = 1;
+ static const jbyte GET_VALUES = 2;
+ static const jbyte SET_VALUES = 3;
+ static const jbyte MONITOR_INFO = 5;
+ static const jbyte INVOKE_METHOD = 6;
+ static const jbyte DISABLE_COLLECTION = 7;
+ static const jbyte ENABLE_COLLECTION = 8;
+ static const jbyte IS_COLLECTED = 9;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ObjectReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ReferenceType.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ReferenceType.h
new file mode 100644
index 000000000..dc4bd002a
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ReferenceType.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ReferenceType__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ReferenceType__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ReferenceType;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ReferenceType : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ReferenceType();
+ static const jbyte CS_VALUE = 2;
+ static const jbyte SIGNATURE = 1;
+ static const jbyte CLASS_LOADER = 2;
+ static const jbyte MODIFIERS = 3;
+ static const jbyte FIELDS = 4;
+ static const jbyte METHODS = 5;
+ static const jbyte GET_VALUES = 6;
+ static const jbyte SOURCE_FILE = 7;
+ static const jbyte NESTED_TYPES = 8;
+ static const jbyte STATUS = 9;
+ static const jbyte INTERFACES = 10;
+ static const jbyte CLASS_OBJECT = 11;
+ static const jbyte SOURCE_DEBUG_EXTENSION = 12;
+ static const jbyte SIGNATURE_WITH_GENERIC = 13;
+ static const jbyte FIELDS_WITH_GENERIC = 14;
+ static const jbyte METHODS_WITH_GENERIC = 15;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ReferenceType__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StackFrame.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StackFrame.h
new file mode 100644
index 000000000..60f4072c6
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StackFrame.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$StackFrame__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$StackFrame__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$StackFrame;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$StackFrame : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$StackFrame();
+ static const jbyte CS_VALUE = 16;
+ static const jbyte GET_VALUES = 1;
+ static const jbyte SET_VALUES = 2;
+ static const jbyte THIS_OBJECT = 3;
+ static const jbyte POP_FRAMES = 4;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$StackFrame__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StringReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StringReference.h
new file mode 100644
index 000000000..f795c3a8d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$StringReference.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$StringReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$StringReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$StringReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$StringReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$StringReference();
+ static const jbyte CS_VALUE = 10;
+ static const jbyte VALUE = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$StringReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadGroupReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadGroupReference.h
new file mode 100644
index 000000000..3cf1f553c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadGroupReference.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadGroupReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadGroupReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ThreadGroupReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ThreadGroupReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ThreadGroupReference();
+ static const jbyte CS_VALUE = 12;
+ static const jbyte NAME = 1;
+ static const jbyte PARENT = 2;
+ static const jbyte CHILDREN = 3;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadGroupReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadReference.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadReference.h
new file mode 100644
index 000000000..603c6d1c4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$ThreadReference.h
@@ -0,0 +1,45 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadReference__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadReference__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$ThreadReference;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$ThreadReference : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$ThreadReference();
+ static const jbyte CS_VALUE = 11;
+ static const jbyte NAME = 1;
+ static const jbyte SUSPEND = 2;
+ static const jbyte RESUME = 3;
+ static const jbyte STATUS = 4;
+ static const jbyte THREAD_GROUP = 5;
+ static const jbyte FRAMES = 6;
+ static const jbyte FRAME_COUNT = 7;
+ static const jbyte OWNED_MONITORS = 8;
+ static const jbyte CURRENT_CONTENDED_MONITOR = 9;
+ static const jbyte STOP = 10;
+ static const jbyte INTERRUPT = 11;
+ static const jbyte SUSPEND_COUNT = 12;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$ThreadReference__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$VirtualMachine.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$VirtualMachine.h
new file mode 100644
index 000000000..a6f69331d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet$VirtualMachine.h
@@ -0,0 +1,53 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet$VirtualMachine__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet$VirtualMachine__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet$VirtualMachine;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet$VirtualMachine : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet$VirtualMachine();
+ static const jbyte CS_VALUE = 1;
+ static const jbyte VERSION = 1;
+ static const jbyte CLASSES_BY_SIGNATURE = 2;
+ static const jbyte ALL_CLASSES = 3;
+ static const jbyte ALL_THREADS = 4;
+ static const jbyte TOP_LEVEL_THREAD_GROUPS = 5;
+ static const jbyte DISPOSE = 6;
+ static const jbyte IDSIZES = 7;
+ static const jbyte SUSPEND = 8;
+ static const jbyte RESUME = 9;
+ static const jbyte EXIT = 10;
+ static const jbyte CREATE_STRING = 11;
+ static const jbyte CAPABILITIES = 12;
+ static const jbyte CLASS_PATHS = 13;
+ static const jbyte DISPOSE_OBJECTS = 14;
+ static const jbyte HOLD_EVENTS = 15;
+ static const jbyte RELEASE_EVENTS = 16;
+ static const jbyte CAPABILITIES_NEW = 17;
+ static const jbyte REDEFINE_CLASSES = 18;
+ static const jbyte SET_DEFAULT_STRATUM = 19;
+ static const jbyte ALL_CLASSES_WITH_GENERIC = 20;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet$VirtualMachine__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet.h b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet.h
new file mode 100644
index 000000000..3dc0bf1a2
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$CommandSet.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$CommandSet__
+#define __gnu_classpath_jdwp_JdwpConstants$CommandSet__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$CommandSet;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$CommandSet : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$CommandSet();
+ static const jint MAXIMUM = 17;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$CommandSet__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$Error.h b/libjava/gnu/classpath/jdwp/JdwpConstants$Error.h
new file mode 100644
index 000000000..138a9160b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$Error.h
@@ -0,0 +1,88 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$Error__
+#define __gnu_classpath_jdwp_JdwpConstants$Error__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$Error;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$Error : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$Error();
+ static const jshort NONE = 0;
+ static const jshort INVALID_THREAD = 10;
+ static const jshort INVALID_THREAD_GROUP = 11;
+ static const jshort INVALID_PRIORITY = 12;
+ static const jshort THREAD_NOT_SUSPENDED = 13;
+ static const jshort THREAD_SUSPENDED = 14;
+ static const jshort INVALID_OBJECT = 20;
+ static const jshort INVALID_CLASS = 21;
+ static const jshort CLASS_NOT_PREPARED = 22;
+ static const jshort INVALID_METHODID = 23;
+ static const jshort INVALID_LOCATION = 24;
+ static const jshort INVALID_FIELDID = 25;
+ static const jshort INVALID_FRAMEID = 30;
+ static const jshort NO_MORE_FRAMES = 31;
+ static const jshort OPAQUE_FRAME = 32;
+ static const jshort NOT_CURRENT_FRAME = 33;
+ static const jshort TYPE_MISMATCH = 34;
+ static const jshort INVALID_SLOT = 35;
+ static const jshort DUPLICATE = 40;
+ static const jshort NOT_FOUND = 41;
+ static const jshort INVALID_MONITOR = 50;
+ static const jshort NOT_MONITOR_OWNER = 51;
+ static const jshort INTERRUPT = 52;
+ static const jshort INVALID_CLASS_FORMAT = 60;
+ static const jshort CIRCULAR_CLASS_DEFINITION = 61;
+ static const jshort FAILS_VERIFICATION = 62;
+ static const jshort ADD_METHOD_NOT_IMPLEMENTED = 63;
+ static const jshort SCHEMA_CHANGE_NOT_IMPLEMENTED = 64;
+ static const jshort INVALID_TYPESTATE = 65;
+ static const jshort HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66;
+ static const jshort DELETE_METHOD_NOT_IMPLEMENTED = 67;
+ static const jshort UNSUPPORTED_VERSION = 68;
+ static const jshort NAMES_DONT_MATCH = 69;
+ static const jshort CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70;
+ static const jshort METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71;
+ static const jshort NOT_IMPLEMENTED = 99;
+ static const jshort NULL_POINTER = 100;
+ static const jshort ABSENT_INFORMATION = 101;
+ static const jshort INVALID_EVENT_TYPE = 102;
+ static const jshort ILLEGAL_ARGUMENT = 103;
+ static const jshort OUT_OF_MEMORY = 110;
+ static const jshort ACCESS_DENIED = 111;
+ static const jshort VM_DEAD = 112;
+ static const jshort INTERNAL = 113;
+ static const jshort UNATTACHED_THREAD = 115;
+ static const jshort INVALID_TAG = 500;
+ static const jshort ALREADY_INVOKING = 502;
+ static const jshort INVALID_INDEX = 503;
+ static const jshort INVALID_LENGTH = 504;
+ static const jshort INVALID_STRING = 506;
+ static const jshort INVALID_CLASS_LOADER = 507;
+ static const jshort INVALID_ARRAY = 508;
+ static const jshort TRANSPORT_LOAD = 509;
+ static const jshort TRANSPORT_INIT = 510;
+ static const jshort NATIVE_METHOD = 511;
+ static const jshort INVALID_COUNT = 512;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$Error__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$EventKind.h b/libjava/gnu/classpath/jdwp/JdwpConstants$EventKind.h
new file mode 100644
index 000000000..bdb501c1b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$EventKind.h
@@ -0,0 +1,52 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$EventKind__
+#define __gnu_classpath_jdwp_JdwpConstants$EventKind__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$EventKind;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$EventKind : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$EventKind();
+ static const jbyte SINGLE_STEP = 1;
+ static const jbyte BREAKPOINT = 2;
+ static const jbyte FRAME_POP = 3;
+ static const jbyte EXCEPTION = 4;
+ static const jbyte USER_DEFINED = 5;
+ static const jbyte THREAD_START = 6;
+ static const jbyte THREAD_END = 7;
+ static const jbyte CLASS_PREPARE = 8;
+ static const jbyte CLASS_UNLOAD = 9;
+ static const jbyte CLASS_LOAD = 10;
+ static const jbyte FIELD_ACCESS = 20;
+ static const jbyte FIELD_MODIFICATION = 21;
+ static const jbyte EXCEPTION_CATCH = 30;
+ static const jbyte METHOD_ENTRY = 40;
+ static const jbyte METHOD_EXIT = 41;
+ static const jbyte VM_INIT = 90;
+ static const jbyte VM_DEATH = 99;
+ static const jbyte VM_DISCONNECTED = 100;
+ static const jbyte VM_START = 90;
+ static const jbyte THREAD_DEATH = 7;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$EventKind__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$InvokeOptions.h b/libjava/gnu/classpath/jdwp/JdwpConstants$InvokeOptions.h
new file mode 100644
index 000000000..bcd412b97
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$InvokeOptions.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$InvokeOptions__
+#define __gnu_classpath_jdwp_JdwpConstants$InvokeOptions__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$InvokeOptions;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$InvokeOptions : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$InvokeOptions();
+ static const jint INVOKE_SINGLE_THREADED = 1;
+ static const jint INVOKE_NONVIRTUAL = 2;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$InvokeOptions__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$ModKind.h b/libjava/gnu/classpath/jdwp/JdwpConstants$ModKind.h
new file mode 100644
index 000000000..f2f087a7a
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$ModKind.h
@@ -0,0 +1,43 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$ModKind__
+#define __gnu_classpath_jdwp_JdwpConstants$ModKind__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$ModKind;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$ModKind : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$ModKind();
+ static const jbyte COUNT = 1;
+ static const jbyte CONDITIONAL = 2;
+ static const jbyte THREAD_ONLY = 3;
+ static const jbyte CLASS_ONLY = 4;
+ static const jbyte CLASS_MATCH = 5;
+ static const jbyte CLASS_EXCLUDE = 6;
+ static const jbyte LOCATION_ONLY = 7;
+ static const jbyte EXCEPTION_ONLY = 8;
+ static const jbyte FIELD_ONLY = 9;
+ static const jbyte STEP = 10;
+ static const jbyte INSTANCE_ONLY = 11;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$ModKind__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$StepDepth.h b/libjava/gnu/classpath/jdwp/JdwpConstants$StepDepth.h
new file mode 100644
index 000000000..55d1b6227
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$StepDepth.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$StepDepth__
+#define __gnu_classpath_jdwp_JdwpConstants$StepDepth__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$StepDepth;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$StepDepth : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$StepDepth();
+ static const jint INTO = 0;
+ static const jint OVER = 1;
+ static const jint OUT = 2;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$StepDepth__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$StepSize.h b/libjava/gnu/classpath/jdwp/JdwpConstants$StepSize.h
new file mode 100644
index 000000000..abd3a2507
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$StepSize.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$StepSize__
+#define __gnu_classpath_jdwp_JdwpConstants$StepSize__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$StepSize;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$StepSize : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$StepSize();
+ static const jint MIN = 0;
+ static const jint LINE = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$StepSize__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendPolicy.h b/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendPolicy.h
new file mode 100644
index 000000000..8facf5795
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendPolicy.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$SuspendPolicy__
+#define __gnu_classpath_jdwp_JdwpConstants$SuspendPolicy__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$SuspendPolicy;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$SuspendPolicy : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$SuspendPolicy();
+ static const jbyte NONE = 0;
+ static const jbyte EVENT_THREAD = 1;
+ static const jbyte ALL = 2;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$SuspendPolicy__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendStatus.h b/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendStatus.h
new file mode 100644
index 000000000..6c578097d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$SuspendStatus.h
@@ -0,0 +1,33 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$SuspendStatus__
+#define __gnu_classpath_jdwp_JdwpConstants$SuspendStatus__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$SuspendStatus;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$SuspendStatus : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$SuspendStatus();
+ static const jbyte SUSPENDED = 1;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$SuspendStatus__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$Tag.h b/libjava/gnu/classpath/jdwp/JdwpConstants$Tag.h
new file mode 100644
index 000000000..99c3df9bb
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$Tag.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$Tag__
+#define __gnu_classpath_jdwp_JdwpConstants$Tag__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$Tag;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$Tag : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$Tag();
+ static const jbyte ARRAY = 91;
+ static const jbyte BYTE = 66;
+ static const jbyte CHAR = 67;
+ static const jbyte OBJECT = 76;
+ static const jbyte FLOAT = 70;
+ static const jbyte DOUBLE = 68;
+ static const jbyte INT = 73;
+ static const jbyte LONG = 74;
+ static const jbyte SHORT = 83;
+ static const jbyte VOID = 86;
+ static const jbyte BOOLEAN = 90;
+ static const jbyte STRING = 115;
+ static const jbyte THREAD = 116;
+ static const jbyte THREAD_GROUP = 103;
+ static const jbyte CLASS_LOADER = 108;
+ static const jbyte CLASS_OBJECT = 99;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$Tag__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$ThreadStatus.h b/libjava/gnu/classpath/jdwp/JdwpConstants$ThreadStatus.h
new file mode 100644
index 000000000..411abad0c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$ThreadStatus.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$ThreadStatus__
+#define __gnu_classpath_jdwp_JdwpConstants$ThreadStatus__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$ThreadStatus;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$ThreadStatus : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$ThreadStatus();
+ static const jint ZOMBIE = 0;
+ static const jint RUNNING = 1;
+ static const jint SLEEPING = 2;
+ static const jint MONITOR = 3;
+ static const jint WAIT = 4;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$ThreadStatus__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$TypeTag.h b/libjava/gnu/classpath/jdwp/JdwpConstants$TypeTag.h
new file mode 100644
index 000000000..426d3d23c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$TypeTag.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$TypeTag__
+#define __gnu_classpath_jdwp_JdwpConstants$TypeTag__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$TypeTag;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$TypeTag : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$TypeTag();
+ static const jbyte CLASS = 1;
+ static const jbyte INTERFACE = 2;
+ static const jbyte ARRAY = 3;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$TypeTag__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants$Version.h b/libjava/gnu/classpath/jdwp/JdwpConstants$Version.h
new file mode 100644
index 000000000..293652fab
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants$Version.h
@@ -0,0 +1,34 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants$Version__
+#define __gnu_classpath_jdwp_JdwpConstants$Version__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants$Version;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants$Version : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants$Version();
+ static const jint MAJOR = 1;
+ static const jint MINOR = 4;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants$Version__
diff --git a/libjava/gnu/classpath/jdwp/JdwpConstants.h b/libjava/gnu/classpath/jdwp/JdwpConstants.h
new file mode 100644
index 000000000..98f0b888e
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/JdwpConstants.h
@@ -0,0 +1,32 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_JdwpConstants__
+#define __gnu_classpath_jdwp_JdwpConstants__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class JdwpConstants;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::JdwpConstants : public ::java::lang::Object
+{
+
+public:
+ JdwpConstants();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_JdwpConstants__
diff --git a/libjava/gnu/classpath/jdwp/VMFrame.h b/libjava/gnu/classpath/jdwp/VMFrame.h
new file mode 100644
index 000000000..737f39de2
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMFrame.h
@@ -0,0 +1,53 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMFrame__
+#define __gnu_classpath_jdwp_VMFrame__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMFrame;
+ namespace util
+ {
+ class Location;
+ }
+ namespace value
+ {
+ class Value;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMFrame : public ::java::lang::Object
+{
+
+public:
+ VMFrame(::java::lang::Thread *, jlong, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Object *);
+ virtual ::gnu::classpath::jdwp::util::Location * getLocation();
+ virtual ::gnu::classpath::jdwp::value::Value * getValue(jint, jbyte);
+ virtual void setValue(jint, ::gnu::classpath::jdwp::value::Value *);
+ virtual ::java::lang::Thread * getThread();
+ virtual ::java::lang::Object * getObject();
+ virtual jlong getId();
+ static const jint SIZE = 8;
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::java::lang::Object)))) thread;
+ ::java::lang::Object * obj;
+ ::gnu::classpath::jdwp::util::Location * loc;
+ jlong id;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMFrame__
diff --git a/libjava/gnu/classpath/jdwp/VMFrame.java b/libjava/gnu/classpath/jdwp/VMFrame.java
new file mode 100644
index 000000000..de2640c85
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMFrame.java
@@ -0,0 +1,134 @@
+/* VMFrame.java -- Reference implementation of VM hooks for JDWP Frame access.
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.classpath.jdwp;
+
+import gnu.classpath.jdwp.util.Location;
+import gnu.classpath.jdwp.value.Value;
+
+/**
+ * Reference implementation of VM hooks for JDWP Frame access.
+ *
+ * @author aluchko
+ */
+
+public class VMFrame
+{
+ /**
+ * Returns the size of a frame ID over JDWP
+ */
+ public static final int SIZE = 8;
+
+ // The thread this frame resides in
+ private Thread thread;
+
+ //The object of this frame
+ private Object obj;
+
+ // The current location of this frame
+ private Location loc;
+
+ // id of this frame
+ private long id;
+
+ /**
+ * Create a new VMFrame object.
+ *
+ * @param thr a Thread, the thread this frame is in
+ * @param frame_id a long, the jframeID of this frame
+ * @param frame_loc a Location, the location of this frame
+ */
+ public VMFrame(Thread thr, long frame_id, Location frame_loc,
+ Object frame_obj)
+ {
+ thread = thr;
+ id = frame_id;
+ loc = frame_loc;
+ obj = frame_obj;
+ }
+
+ /**
+ * Gets the current location of the frame.
+ */
+ public Location getLocation()
+ {
+ return loc;
+ }
+
+ /**
+ * Returns the value of the variable in the given slot.
+ *
+ * @param slot the slot containing the variable
+ */
+ public native Value getValue(int slot, byte sig);
+
+ /**
+ * Assigns the given variable to the given value.
+ * @param slot The slot which contains the variable
+ * @param value The value to assign the variable to
+ */
+ public native void setValue(int slot, Value value);
+
+ /**
+ * Get the thread this frame is in.
+ */
+ public Thread getThread()
+ {
+ return thread;
+ }
+
+ /**
+ * Get the object which is represented by 'this' in the context of the frame,
+ * returns null if the method is native or static.
+ */
+ public Object getObject()
+ {
+ return obj;
+ }
+
+ /**
+ * Get the frameID
+ * @return an id which is unique within the scope of the VM
+ */
+ public long getId()
+ {
+ return id;
+ }
+
+}
diff --git a/libjava/gnu/classpath/jdwp/VMIdManager$IdFactory.h b/libjava/gnu/classpath/jdwp/VMIdManager$IdFactory.h
new file mode 100644
index 000000000..f24d6b368
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMIdManager$IdFactory.h
@@ -0,0 +1,46 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMIdManager$IdFactory__
+#define __gnu_classpath_jdwp_VMIdManager$IdFactory__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMIdManager$IdFactory;
+ namespace id
+ {
+ class ObjectId;
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMIdManager$IdFactory : public ::java::lang::Object
+{
+
+ VMIdManager$IdFactory();
+public:
+ static ::gnu::classpath::jdwp::id::ObjectId * newObjectId(::java::lang::ref::SoftReference *);
+ static ::gnu::classpath::jdwp::id::ReferenceTypeId * newReferenceTypeId(::java::lang::ref::SoftReference *);
+private:
+ static ::java::lang::Object * _idLock;
+ static ::java::lang::Object * _ridLock;
+ static jlong _lastId;
+ static jlong _lastRid;
+ static ::java::util::HashMap * _idList;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMIdManager$IdFactory__
diff --git a/libjava/gnu/classpath/jdwp/VMIdManager$ReferenceKey.h b/libjava/gnu/classpath/jdwp/VMIdManager$ReferenceKey.h
new file mode 100644
index 000000000..7acd047a6
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMIdManager$ReferenceKey.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMIdManager$ReferenceKey__
+#define __gnu_classpath_jdwp_VMIdManager$ReferenceKey__
+
+#pragma interface
+
+#include <java/lang/ref/SoftReference.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMIdManager;
+ class VMIdManager$ReferenceKey;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMIdManager$ReferenceKey : public ::java::lang::ref::SoftReference
+{
+
+public:
+ VMIdManager$ReferenceKey(::gnu::classpath::jdwp::VMIdManager *, ::java::lang::Object *);
+ VMIdManager$ReferenceKey(::gnu::classpath::jdwp::VMIdManager *, ::java::lang::Object *, ::java::lang::ref::ReferenceQueue *);
+ virtual jint hashCode();
+ virtual jboolean equals(::java::lang::Object *);
+private:
+ jint __attribute__((aligned(__alignof__( ::java::lang::ref::SoftReference)))) _hash;
+public: // actually package-private
+ ::gnu::classpath::jdwp::VMIdManager * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMIdManager$ReferenceKey__
diff --git a/libjava/gnu/classpath/jdwp/VMIdManager.h b/libjava/gnu/classpath/jdwp/VMIdManager.h
new file mode 100644
index 000000000..22fc42f82
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMIdManager.h
@@ -0,0 +1,62 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMIdManager__
+#define __gnu_classpath_jdwp_VMIdManager__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMIdManager;
+ namespace id
+ {
+ class ObjectId;
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMIdManager : public ::java::lang::Object
+{
+
+public:
+ static ::gnu::classpath::jdwp::VMIdManager * getDefault();
+private:
+ VMIdManager();
+ void _update();
+public:
+ virtual ::gnu::classpath::jdwp::id::ObjectId * getObjectId(::java::lang::Object *);
+ virtual ::gnu::classpath::jdwp::id::ObjectId * get(jlong);
+ virtual ::gnu::classpath::jdwp::id::ObjectId * readObjectId(::java::nio::ByteBuffer *);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getReferenceTypeId(::java::lang::Class *);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getReferenceType(jlong);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * readReferenceTypeId(::java::nio::ByteBuffer *);
+private:
+ static ::gnu::classpath::jdwp::VMIdManager * _idm;
+ ::java::lang::ref::ReferenceQueue * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _refQueue;
+ ::java::util::Hashtable * _oidTable;
+ ::java::util::Hashtable * _idTable;
+ ::java::util::Hashtable * _classTable;
+ ::java::util::Hashtable * _ridTable;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMIdManager__
diff --git a/libjava/gnu/classpath/jdwp/VMIdManager.java b/libjava/gnu/classpath/jdwp/VMIdManager.java
new file mode 100644
index 000000000..f787a8cdc
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMIdManager.java
@@ -0,0 +1,435 @@
+/* VMIdManager.java -- A reference/example implementation of a manager for
+ JDWP object/reference type IDs
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.classpath.jdwp;
+
+import gnu.classpath.jdwp.exception.InvalidClassException;
+import gnu.classpath.jdwp.exception.InvalidObjectException;
+import gnu.classpath.jdwp.id.*;
+
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.SoftReference;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Hashtable;
+
+/**
+ * This class manages objects and referencetypes that are reported
+ * to the debugger. All objects and referencetypes reported to the
+ * debugger should go through this manager.
+ *
+ * A brief summary of what an <code>IdManager</code> must provide:
+ *
+ * <code>
+ * public ObjectId getObjectId (Object theObject);
+ * public ObjectId get (long id);
+ * public ObjectId readObjectId (ByteBuffer bb);
+ * public ReferenceTypeId getReferenceTypeId (Class clazz);
+ * public ReferenceTypeId getReferenceType (long id);
+ * public ReferenceTypeId readReferenceTypeId (ByteBuffer bb);
+ * </code>
+ *
+ * See the javadoc on these methods later in this file for more
+ * information on these functions.
+ *
+ * <b>NOTE:</b> All IDs handled by the ID manager (all object and reference
+ * type IDs) are assumed to be of type <code>long</code>.
+ *
+ * <b>NOTE:</b> This class does not manage virtual machine-specific types,
+ * like methods, fields, and frames. These already have unique IDs within
+ * the virtual machine and do not need further abstraction here.
+ *
+ * @author Keith Seitz (keiths@redhat.com)
+ */
+public class VMIdManager
+{
+ // This factory generates ids for objects and types that may
+ // be sent to a debugger.
+ private static class IdFactory
+ {
+ // ID of last object / referencetype
+ private static Object _idLock = new Object ();
+ private static Object _ridLock = new Object ();
+ private static long _lastId = 0;
+ private static long _lastRid = 0;
+
+ // A list of all ID types
+ private static HashMap _idList = new HashMap ();
+
+ // Initialize the id list with known types
+ static
+ {
+ // ObjectId and ArrayId are special cases. See newObjectId.
+ _idList.put (ClassLoaderId.typeClass, ClassLoaderId.class);
+ _idList.put (ClassObjectId.typeClass, ClassObjectId.class);
+ _idList.put (StringId.typeClass, StringId.class);
+ _idList.put (ThreadId.typeClass, ThreadId.class);
+ _idList.put (ThreadGroupId.typeClass, ThreadGroupId.class);
+ }
+
+ /**
+ * Returns a new id for the given object
+ *
+ * @param obj SoftReference of the object for which an id is desired
+ * @returns a suitable object id
+ */
+ public static ObjectId newObjectId (SoftReference obj)
+ {
+ ObjectId id = null;
+ Object object = obj.get ();
+
+ // Special case: arrays
+ if (object.getClass ().isArray ())
+ id = new ArrayId ();
+ else
+ {
+ // Loop through all classes until we hit baseclass
+ Class myClass;
+ for (myClass = object.getClass (); myClass != null;
+ myClass = myClass.getSuperclass ())
+ {
+ Class clz = (Class) _idList.get (myClass);
+ if (clz != null)
+ {
+ try
+ {
+ id = (ObjectId) clz.newInstance ();
+ synchronized (_idLock)
+ {
+ id.setId (++_lastId);
+ }
+ id.setReference (obj);
+ return id;
+ }
+ catch (InstantiationException ie)
+ {
+ // This really should not happen
+ throw new RuntimeException ("cannot create new ID", ie);
+ }
+ catch (IllegalAccessException iae)
+ {
+ // This really should not happen
+ throw new RuntimeException ("illegal access of ID", iae);
+ }
+ }
+ }
+
+ /* getSuperclass returned null and no matching ID type found.
+ So it must derive from Object. */
+ id = new ObjectId ();
+ }
+
+ synchronized (_idLock)
+ {
+ id.setId (++_lastId);
+ }
+ id.setReference (obj);
+ return id;
+ }
+
+ /**
+ * Returns a new reference type id for the given class
+ *
+ * @param ref SoftReference to the desired type
+ * @returns a suitable reference type id or null when the
+ * reference is cleared.
+ */
+ public static ReferenceTypeId newReferenceTypeId (SoftReference ref)
+ {
+ ReferenceTypeId id;
+ Class clazz = (Class) ref.get ();
+ if (clazz == null)
+ return null;
+
+ if (clazz.isArray ())
+ id = new ArrayReferenceTypeId ();
+ else if (clazz.isInterface ())
+ id = new InterfaceReferenceTypeId ();
+ else
+ id = new ClassReferenceTypeId ();
+ id.setReference (ref);
+ synchronized (_ridLock)
+ {
+ id.setId (++_lastRid);
+ }
+ return id;
+ }
+ }
+
+ /**
+ * This class is a SoftReferenceIdentity type that is used by
+ * the ID manager.
+ */
+ class ReferenceKey extends SoftReference
+ {
+ // Hash code of referent
+ private int _hash;
+
+ /**
+ * Constructs a new <code>ReferenceKey</code> object
+ * with the given referent.
+ *
+ * <p>This constructor should only be used for object lookups
+ * by the backend.
+ *
+ * @param referent the object to reference
+ */
+ public ReferenceKey (Object referent)
+ {
+ super (referent);
+ _hash = referent.hashCode ();
+ }
+
+ /**
+ * Constructs a new <code>ReferenceKey</code> object
+ * with the given referent and reference queue.
+ *
+ * <p>The JDWP back-end stores a <code>ReferenceKey</code>
+ * with its corresponding <code>JdwpId</code>. This constructor
+ * is used by the back-end when adding new IDs to be managed.
+ *
+ * @param referent the object to reference
+ * @param queue the queue to which to report garbage collections
+ */
+ public ReferenceKey (Object referent, ReferenceQueue queue)
+ {
+ super (referent, queue);
+ _hash = referent.hashCode ();
+ }
+
+ /**
+ * Returns the hash code of the referent.
+ * This seems hacky, but is required in order to use this class
+ * as a hash table key.
+ *
+ * @returns the hash code of the referent
+ */
+ public int hashCode ()
+ {
+ return _hash;
+ }
+
+ /**
+ * Comparator for keys
+ *
+ * This method can be used in two ways:
+ *
+ * <ol>
+ * <li>For table lookups, where we want to compare referents</li>
+ * <li>For clearing GCd objects, where we want to compare the actual
+ * key object (not the referent)</li>
+ * </ol>
+ */
+ public boolean equals (Object obj)
+ {
+ if (obj instanceof ReferenceKey)
+ {
+ ReferenceKey ref = (ReferenceKey) obj;
+
+ /* First check if the two references are the same.
+ If they are, that means we must be clearing GCd objects. */
+ if (this == obj)
+ return true;
+
+ return (ref.get () == get ());
+ }
+
+ return false;
+ }
+ }
+
+ // instance of VMIdManager
+ private static VMIdManager _idm = new VMIdManager ();
+
+ // A reference queue for our objects
+ private ReferenceQueue _refQueue;
+
+ // Mapping of objects (ReferenceKey) to IDs (ObjectId)
+ private Hashtable _oidTable;
+
+ // Mapping of ID numbers (Long) to IDs (ObjectId)
+ private Hashtable _idTable;
+
+ /* Mapping of class (ReferenceKey) to IDs (ReferenceTypeId) for reference
+ types. Unlike other types, reference id types are NEVER released. */
+ private Hashtable _classTable;
+
+ // Mapping of ID numbers (Long) to reference type IDs (ReferenceTypeId)
+ private Hashtable _ridTable;
+
+ /**
+ * Gets the instance of VMIdManager, constructing a new one
+ * if none currently exists.
+ */
+ public static VMIdManager getDefault ()
+ {
+ return _idm;
+ }
+
+ // Constructs a new <code>IdManager</code>
+ private VMIdManager ()
+ {
+ _refQueue = new ReferenceQueue ();
+ _oidTable = new Hashtable (50);
+ _idTable = new Hashtable (50);
+ _classTable = new Hashtable (20);
+ _ridTable = new Hashtable (20);
+ }
+
+ // Updates the object ID table, removing IDs whose objects have
+ // been garbage collected.
+ private void _update ()
+ {
+ Reference ref;
+ while ((ref = _refQueue.poll ()) != null)
+ {
+ ObjectId id = (ObjectId) _oidTable.get (ref);
+ _oidTable.remove (ref);
+ _idTable.remove (new Long (id.getId ()));
+ }
+ }
+
+ /**
+ * Returns an id for the given object, adding it
+ * if it does not have an id.
+ *
+ * @param theObject the object to get an ID/add
+ * @returns the ID of the object
+ */
+ public ObjectId getObjectId (Object theObject)
+ {
+ // Special case: null object.
+ if (theObject == null)
+ return new NullObjectId ();
+
+ ReferenceKey ref = new ReferenceKey (theObject, _refQueue);
+ ObjectId id = (ObjectId) _oidTable.get (ref);
+ if (id == null)
+ {
+ // update the tables -- this is an arbitrary place to put this
+ _update ();
+
+ // Object not found. Make new id for it
+ id = IdFactory.newObjectId (ref);
+ _oidTable.put (ref, id);
+ _idTable.put (new Long (id.getId ()), id);
+ }
+
+ return id;
+ }
+
+ /**
+ * Returns the <code>JdwpId</code> for a given ID. Unlike
+ * <code>getId</code>, it throws an exception if the ID is not
+ * known.
+ *
+ * @param id the numerical ID of the desired <code>JdwpId</code>
+ * @throws InvalidObjectException if the ID is not found
+ */
+ public ObjectId get (long id)
+ throws InvalidObjectException
+ {
+ // Special case: null object id.
+ if (id == 0)
+ return new NullObjectId ();
+
+ ObjectId oid = (ObjectId) _idTable.get (new Long (id));
+ if (oid == null)
+ throw new InvalidObjectException (id);
+
+ return oid;
+ }
+
+ public ObjectId readObjectId (ByteBuffer bb)
+ throws InvalidObjectException
+ {
+ long id = bb.getLong ();
+ return get (id);
+ }
+
+ /**
+ * Gets the reference type id for the given class, creating
+ * a new one if it does not already have an id
+ *
+ * @param clazz the class for which to get an ID
+ * @returns the ID of the class
+ */
+ public ReferenceTypeId getReferenceTypeId (Class clazz)
+ {
+ ReferenceKey ref = new ReferenceKey (clazz);
+ ReferenceTypeId id = (ReferenceTypeId)_classTable.get (ref);
+ if (id == null)
+ {
+ // Object not found. Make new id for it
+ id = IdFactory.newReferenceTypeId (ref);
+ _classTable.put (ref, id);
+ _ridTable.put (new Long (id.getId ()), id);
+ }
+
+ return id;
+ }
+
+ /**
+ * Returns the <code>ReferenceTypeId</code> for a given ID. Unlike
+ * <code>getReferenceTypeId</code>, it throws an exception if the ID is not
+ * known.
+ *
+ * @param id the numerical ID of the desired reference type
+ * @throws InvalidClassException if the ID is not found
+ */
+ public ReferenceTypeId getReferenceType (long id)
+ throws InvalidClassException
+ {
+ ReferenceTypeId rid = (ReferenceTypeId) _ridTable.get (new Long (id));
+ if (rid == null)
+ throw new InvalidClassException (id);
+
+ return rid;
+ }
+
+ public ReferenceTypeId readReferenceTypeId (ByteBuffer bb)
+ throws InvalidClassException
+ {
+ long id = bb.getLong ();
+ return getReferenceType (id);
+ }
+}
diff --git a/libjava/gnu/classpath/jdwp/VMMethod.h b/libjava/gnu/classpath/jdwp/VMMethod.h
new file mode 100644
index 000000000..00f4d874c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMMethod.h
@@ -0,0 +1,61 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMMethod__
+#define __gnu_classpath_jdwp_VMMethod__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMMethod;
+ namespace util
+ {
+ class LineTable;
+ class VariableTable;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMMethod : public ::java::lang::Object
+{
+
+public: // actually protected
+ VMMethod(::java::lang::Class *, jlong);
+public:
+ virtual jlong getId();
+ virtual ::java::lang::Class * getDeclaringClass();
+ virtual ::java::lang::String * getName();
+ virtual ::java::lang::String * getSignature();
+ virtual jint getModifiers();
+ virtual ::gnu::classpath::jdwp::util::LineTable * getLineTable();
+ virtual ::gnu::classpath::jdwp::util::VariableTable * getVariableTable();
+ virtual ::java::lang::String * toString();
+ virtual void writeId(::java::io::DataOutputStream *);
+ static ::gnu::classpath::jdwp::VMMethod * readId(::java::lang::Class *, ::java::nio::ByteBuffer *);
+ virtual jboolean equals(::java::lang::Object *);
+ static const jint SIZE = 8;
+private:
+ ::java::lang::Class * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _class;
+ jlong _methodId;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMMethod__
diff --git a/libjava/gnu/classpath/jdwp/VMMethod.java b/libjava/gnu/classpath/jdwp/VMMethod.java
new file mode 100644
index 000000000..6a2b04ecf
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMMethod.java
@@ -0,0 +1,189 @@
+/* VMMethod.java -- a method in a virtual machine
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.classpath.jdwp;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import gnu.classpath.jdwp.exception.JdwpException;
+import gnu.classpath.jdwp.util.LineTable;
+import gnu.classpath.jdwp.util.VariableTable;
+
+/**
+ * This class is really an amalgamation of two classes: one class
+ * represents a virtual machine method and the other represents
+ * the JDWP back-end's ID for the method.
+ *
+ * @author Keith Seitz (keiths@redhat.com)
+ */
+public class VMMethod
+{
+ /**
+ * Returns the size of a JDWP method ID
+ * @see gnu.classpath.jdwp.id.JdwpId#SIZE
+ */
+ public static final int SIZE = 8;
+
+ // The class in which this method is declared
+ private Class _class;
+
+ // The method's ID
+ private long _methodId;
+
+ /**
+ * Constructs a new VMMethod object. This constructor is protected
+ * so that only the factory methods of VMVirtualMachine can be used
+ * to create VMMethods.
+ *
+ * @param klass the method's containing class
+ * @param id method identifier, e.g., jmethodID
+ * @see gnu.classpath.jdwp.VMVirtualMachine#getAllClassMethods
+ * @see gnu.classpath.jdwp.VMVirtualMachine#getClassMethod
+ */
+ protected VMMethod(Class klass, long id)
+ {
+ _class = klass;
+ _methodId = id;
+ }
+
+ /**
+ * Returns the internal method ID for this method
+ */
+ public long getId()
+ {
+ return _methodId;
+ }
+
+ /**
+ * Returns the method's declaring class
+ */
+ public Class getDeclaringClass()
+ {
+ return _class;
+ }
+
+ /**
+ * Returns the name of this method
+ */
+ public native String getName();
+
+ /**
+ * Returns the signature of this method
+ */
+ public native String getSignature();
+
+ /**
+ * Returns the method's modifier flags
+ */
+ public native int getModifiers();
+
+ /**
+ * "Returns line number information for the method, if present. The line
+ * table maps source line numbers to the initial code index of the line.
+ * The line table is ordered by code index (from lowest to highest). The
+ * line number information is constant unless a new class definition is
+ * installed using RedefineClasses."
+ *
+ * @return the line table
+ * @throws JdwpException
+ */
+ public native LineTable getLineTable()
+ throws JdwpException;
+
+ /**
+ * "Returns variable information for the method. The variable table
+ * includes arguments and locals declared within the method. For instance
+ * methods, the "this" reference is included in the table. Also, synthetic
+ * variables may be present."
+ *
+ * @return the variable table
+ * @throws JdwpException
+ */
+ public native VariableTable getVariableTable()
+ throws JdwpException;
+
+ /**
+ * Returns a string representation of this method (not
+ * required but nice for debugging).
+ */
+ public String toString()
+ {
+ return getDeclaringClass().getName() + "." + getName();
+ }
+
+ /**
+ * Writes the method's ID to the output stream
+ *
+ * @param ostream the output stream to which to write
+ * @throws IOException for any errors writing to the stream
+ * @see gnu.classpath.jdwp.id.JdwpId#write
+ */
+ public void writeId(DataOutputStream ostream)
+ throws IOException
+ {
+ ostream.writeLong(getId());
+ }
+
+ /**
+ * Returns a VMMethod from the ID in the byte buffer
+ *
+ * @param klass the method's declaring class
+ * @param bb a ByteBuffer containing the method's ID
+ * @throws JdwpException for any errors creating the method
+ * @throws IOException for any errors reading from the buffer
+ */
+ public static VMMethod readId(Class klass, ByteBuffer bb)
+ throws JdwpException, IOException
+ {
+ return VMVirtualMachine.getClassMethod(klass, bb.getLong());
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof VMMethod)
+ {
+ VMMethod m = (VMMethod) obj;
+ return (getId() == m.getId());
+ }
+
+ return false;
+ }
+}
diff --git a/libjava/gnu/classpath/jdwp/VMVirtualMachine.h b/libjava/gnu/classpath/jdwp/VMVirtualMachine.h
new file mode 100644
index 000000000..1f7d03abd
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMVirtualMachine.h
@@ -0,0 +1,98 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_VMVirtualMachine__
+#define __gnu_classpath_jdwp_VMVirtualMachine__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMFrame;
+ class VMMethod;
+ class VMVirtualMachine;
+ namespace event
+ {
+ class EventRequest;
+ }
+ namespace util
+ {
+ class MethodResult;
+ class MonitorInfo;
+ }
+ namespace value
+ {
+ class Value;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::VMVirtualMachine : public ::java::lang::Object
+{
+
+public:
+ VMVirtualMachine();
+ static void initialize();
+ static void suspendThread(::java::lang::Thread *);
+ static void suspendAllThreads();
+ static void resumeThread(::java::lang::Thread *);
+ static void resumeAllThreads();
+ static jint getSuspendCount(::java::lang::Thread *);
+ static ::java::util::Collection * getAllLoadedClasses();
+ static jint getClassStatus(::java::lang::Class *);
+ static JArray< ::gnu::classpath::jdwp::VMMethod * > * getAllClassMethods(::java::lang::Class *);
+ static ::gnu::classpath::jdwp::VMMethod * getClassMethod(::java::lang::Class *, jlong);
+ static ::java::util::ArrayList * getFrames(::java::lang::Thread *, jint, jint);
+ static ::gnu::classpath::jdwp::VMFrame * getFrame(::java::lang::Thread *, jlong);
+ static jint getFrameCount(::java::lang::Thread *);
+ static jint getThreadStatus(::java::lang::Thread *);
+ static ::java::util::ArrayList * getLoadRequests(::java::lang::ClassLoader *);
+ static ::gnu::classpath::jdwp::util::MethodResult * executeMethod(::java::lang::Object *, ::java::lang::Thread *, ::java::lang::Class *, ::gnu::classpath::jdwp::VMMethod *, JArray< ::gnu::classpath::jdwp::value::Value * > *, jint);
+ static ::java::lang::String * getSourceFile(::java::lang::Class *);
+ static void registerEvent(::gnu::classpath::jdwp::event::EventRequest *);
+ static void unregisterEvent(::gnu::classpath::jdwp::event::EventRequest *);
+ static void clearEvents(jbyte);
+ static void redefineClasses(JArray< ::java::lang::Class * > *, JArray< JArray< jbyte > * > *);
+ static void setDefaultStratum(::java::lang::String *);
+ static ::java::lang::String * getSourceDebugExtension(::java::lang::Class *);
+ static JArray< jbyte > * getBytecodes(::gnu::classpath::jdwp::VMMethod *);
+ static ::gnu::classpath::jdwp::util::MonitorInfo * getMonitorInfo(::java::lang::Object *);
+ static JArray< ::java::lang::Object * > * getOwnedMonitors(::java::lang::Thread *);
+ static ::java::lang::Object * getCurrentContendedMonitor(::java::lang::Thread *);
+ static void popFrames(::java::lang::Thread *, jlong);
+ static const jboolean canWatchFieldModification = 0;
+ static const jboolean canWatchFieldAccess = 0;
+ static const jboolean canGetBytecodes = 0;
+ static const jboolean canGetSyntheticAttribute = 0;
+ static const jboolean canGetOwnedMonitorInfo = 0;
+ static const jboolean canGetCurrentContendedMonitor = 0;
+ static const jboolean canGetMonitorInfo = 0;
+ static const jboolean canRedefineClasses = 0;
+ static const jboolean canAddMethod = 0;
+ static const jboolean canUnrestrictedlyRedefineClasses = 0;
+ static const jboolean canPopFrames = 0;
+ static const jboolean canUseInstanceFilters = 0;
+ static const jboolean canGetSourceDebugExtension = 0;
+ static const jboolean canRequestVMDeathEvent = 0;
+ static const jboolean canSetDefaultStratum = 0;
+private:
+ static ::java::util::Hashtable * _jdwp_suspend_counts;
+public: // actually package-private
+ static ::java::util::Hashtable * _stepping_threads;
+ static ::java::util::ArrayList * _event_list;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_VMVirtualMachine__
diff --git a/libjava/gnu/classpath/jdwp/VMVirtualMachine.java b/libjava/gnu/classpath/jdwp/VMVirtualMachine.java
new file mode 100644
index 000000000..acd0996ad
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/VMVirtualMachine.java
@@ -0,0 +1,437 @@
+/* VMVirtualMachine.java -- A reference implementation of a JDWP virtual
+ machine
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.classpath.jdwp;
+
+import gnu.classpath.jdwp.event.EventRequest;
+import gnu.classpath.jdwp.exception.InvalidMethodException;
+import gnu.classpath.jdwp.exception.JdwpException;
+import gnu.classpath.jdwp.util.MethodResult;
+import gnu.classpath.jdwp.util.MonitorInfo;
+import gnu.classpath.jdwp.value.Value;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+
+/**
+ * A virtual machine according to JDWP.
+ *
+ * @author Keith Seitz <keiths@redhat.com>
+ */
+public class VMVirtualMachine
+{
+ // VM Capabilities
+ public static final boolean canWatchFieldModification = false;
+ public static final boolean canWatchFieldAccess = false;
+ public static final boolean canGetBytecodes = false;
+ public static final boolean canGetSyntheticAttribute = false;
+ public static final boolean canGetOwnedMonitorInfo = false;
+ public static final boolean canGetCurrentContendedMonitor = false;
+ public static final boolean canGetMonitorInfo = false;
+ public static final boolean canRedefineClasses = false;
+ public static final boolean canAddMethod = false;
+ public static final boolean canUnrestrictedlyRedefineClasses = false;
+ public static final boolean canPopFrames = false;
+ public static final boolean canUseInstanceFilters = false;
+ public static final boolean canGetSourceDebugExtension = false;
+ public static final boolean canRequestVMDeathEvent = false;
+ public static final boolean canSetDefaultStratum = false;
+
+ // Thread suspension table. Maps Thread to suspend count (Integer)
+ private static Hashtable _jdwp_suspend_counts;
+
+ // List of stepping threads: maps Thread -> stepping info
+ static Hashtable _stepping_threads;
+
+ // List of co-located JVMTI events
+ static ArrayList _event_list;
+
+ public static native void initialize ();
+
+ /**
+ * Suspend a thread
+ *
+ * @param thread the thread to suspend
+ */
+ public static native void suspendThread (Thread thread)
+ throws JdwpException;
+
+ /**
+ * Suspend all threads
+ */
+ public static void suspendAllThreads ()
+ throws JdwpException
+ {
+ // Our JDWP thread group -- don't suspend any of those threads
+ Thread current = Thread.currentThread ();
+ ThreadGroup jdwpGroup = Jdwp.getDefault().getJdwpThreadGroup();
+
+ // Find the root ThreadGroup
+ ThreadGroup group = jdwpGroup;
+ ThreadGroup parent = group.getParent ();
+ while (parent != null)
+ {
+ group = parent;
+ parent = group.getParent ();
+ }
+
+ // Get all the threads in the system
+ int num = group.activeCount ();
+ Thread[] threads = new Thread[num];
+ group.enumerate (threads);
+
+ for (int i = 0; i < num; ++i)
+ {
+ Thread t = threads[i];
+ if (t != null)
+ {
+ if (t.getThreadGroup () == jdwpGroup || t == current)
+ {
+ // Don't suspend the current thread or any JDWP thread
+ continue;
+ }
+ else
+ suspendThread (t);
+ }
+ }
+
+ // Now suspend the current thread
+ if (current.getThreadGroup() != jdwpGroup)
+ suspendThread (current);
+ }
+
+ /**
+ * Resume a thread. A thread must be resumed as many times
+ * as it has been suspended.
+ *
+ * @param thread the thread to resume
+ */
+ public static native void resumeThread (Thread thread)
+ throws JdwpException;
+
+ /**
+ * Resume all threads. This simply decrements the thread's
+ * suspend count. It can not be used to force the application
+ * to run.
+ */
+ public static void resumeAllThreads ()
+ throws JdwpException
+ {
+ // Our JDWP thread group -- don't resume
+ Thread current = Thread.currentThread ();
+ ThreadGroup jdwpGroup = current.getThreadGroup ();
+
+ // Find the root ThreadGroup
+ ThreadGroup group = jdwpGroup;
+ ThreadGroup parent = group.getParent ();
+ while (parent != null)
+ {
+ group = parent;
+ parent = group.getParent ();
+ }
+
+ // Get all the threads in the system
+ int num = group.activeCount ();
+ Thread[] threads = new Thread[num];
+ group.enumerate (threads);
+
+ for (int i = 0; i < num; ++i)
+ {
+ Thread t = threads[i];
+ if (t != null)
+ {
+ if (t.getThreadGroup () == jdwpGroup || t == current)
+ {
+ // Don't resume the current thread or any JDWP thread
+ continue;
+ }
+ else
+ resumeThread (t);
+ }
+ }
+ }
+
+ /**
+ * Get the suspend count for a give thread
+ *
+ * @param thread the thread whose suspend count is desired
+ * @return the number of times the thread has been suspended
+ */
+ public static native int getSuspendCount (Thread thread)
+ throws JdwpException;
+
+ /**
+ * Returns a Collection of all classes loaded in the VM
+ */
+ public static native Collection getAllLoadedClasses ()
+ throws JdwpException;
+
+ /**
+ * Returns the status of the given class
+ *
+ * @param clazz the class whose status is desired
+ * @return a flag containing the class's status
+ * @see JdwpConstants.ClassStatus
+ */
+ public static native int getClassStatus (Class clazz)
+ throws JdwpException;
+
+ /**
+ * Returns all of the methods defined in the given class. This
+ * includes all methods, constructors, and class initializers.
+ *
+ * @param klass the class whose methods are desired
+ * @return an array of virtual machine methods
+ */
+ public static native VMMethod[] getAllClassMethods (Class klass)
+ throws JdwpException;
+
+ /**
+ * A factory method for getting valid virtual machine methods
+ * which may be passed to/from the debugger.
+ *
+ * @param klass the class in which the method is defined
+ * @param id the ID of the desired method
+ * @return the desired internal representation of the method
+ * @throws InvalidMethodException if the method is not defined
+ * in the class
+ * @throws JdwpException for any other error
+ */
+ public static native VMMethod getClassMethod(Class klass, long id)
+ throws JdwpException;
+
+ /**
+ * Returns the thread's call stack
+ *
+ * @param thread thread for which to get call stack
+ * @param start index of first frame to return
+ * @param length number of frames to return (-1 for all frames)
+ * @return a list of frames
+ */
+ public static native ArrayList getFrames (Thread thread, int start,
+ int length)
+ throws JdwpException;
+
+ /**
+ * Returns the frame for a given thread with the frame ID in
+ * the buffer
+ *
+ * I don't like this.
+ *
+ * @param thread the frame's thread
+ * @param bb buffer containing the frame's ID
+ * @return the desired frame
+ */
+ public static native VMFrame getFrame (Thread thread, long frameID)
+ throws JdwpException;
+
+ /**
+ * Returns the number of frames in the thread's stack
+ *
+ * @param thread the thread for which to get a frame count
+ * @return the number of frames in the thread's stack
+ */
+ public static native int getFrameCount (Thread thread)
+ throws JdwpException;
+
+
+ /**
+ * Returns the status of a thread
+ *
+ * @param thread the thread for which to get status
+ * @return integer status of the thread
+ * @see JdwpConstants.ThreadStatus
+ */
+ public static native int getThreadStatus (Thread thread)
+ throws JdwpException;
+
+ /**
+ * Returns a list of all classes which this class loader has been
+ * requested to load
+ *
+ * @param cl the class loader
+ * @return a list of all visible classes
+ */
+ public static native ArrayList getLoadRequests (ClassLoader cl)
+ throws JdwpException;
+
+ /**
+ * Executes a method in the virtual machine. The thread must already
+ * be suspended by a previous event. When the method invocation is
+ * complete, the thread (or all threads if INVOKE_SINGLE_THREADED is
+ * not set in options) must be suspended before this method returns.
+ *
+ * @param obj instance in which to invoke method (null for static)
+ * @param thread the thread in which to invoke the method
+ * @param clazz the class in which the method is defined
+ * @param method the method to invoke
+ * @param values arguments to pass to method
+ * @param options invocation options
+ * @return a result object containing the results of the invocation
+ */
+ public static native MethodResult executeMethod (Object obj, Thread thread,
+ Class clazz, VMMethod method,
+ Value[] values,
+ int options)
+ throws JdwpException;
+
+ /**
+ * "Returns the name of source file in which a reference type was declared"
+ *
+ * @param clazz the class for which to return a source file
+ * @return a string containing the source file name; "no path information
+ * for the file is included"
+ */
+ public static native String getSourceFile (Class clazz)
+ throws JdwpException;
+
+ /**
+ * Register a request from the debugger
+ *
+ * Virtual machines have two options. Either do nothing and allow
+ * the event manager to take care of the request (useful for broadcast-type
+ * events like class prepare/load/unload, thread start/end, etc.)
+ * or do some internal work to set up the event notification (useful for
+ * execution-related events like breakpoints, single-stepping, etc.).
+ */
+ public static native void registerEvent (EventRequest request)
+ throws JdwpException;
+
+ /**
+ * Unregisters the given request
+ *
+ * @param request the request to unregister
+ */
+ public static native void unregisterEvent (EventRequest request)
+ throws JdwpException;
+
+
+ /**
+ * Clear all events of the given kind
+ *
+ * @param kind the type of events to clear
+ */
+ public static native void clearEvents (byte kind)
+ throws JdwpException;
+
+ /**
+ * Redefines the given types. VM must support canRedefineClasses
+ * capability (may also require canAddMethod and/or
+ * canUnrestrictedlyRedefineClasses capabilities)
+ *
+ * @param types the classes to redefine
+ * @param bytecodes the new bytecode definitions for the classes
+ */
+ public static native void redefineClasses(Class[] types, byte[][] bytecodes)
+ throws JdwpException;
+
+ /**
+ * Sets the default stratum. VM must support the
+ * canSetDefaultStratum capability.
+ *
+ * @param stratum the new default stratum or empty string to
+ * use the reference default
+ */
+ public static native void setDefaultStratum(String stratum)
+ throws JdwpException;
+
+ /**
+ * Returns the source debug extension. VM must support the
+ * canGetSourceDebugExtension capability.
+ *
+ * @param klass the class for which to return information
+ * @returns the source debug extension
+ */
+ public static native String getSourceDebugExtension(Class klass)
+ throws JdwpException;
+
+ /**
+ * Returns the bytecode for the given method. VM must support the
+ * canGetBytecodes capability.
+ *
+ * @param method the method for which to get bytecodes
+ * @returns the bytecodes
+ */
+ public static native byte[] getBytecodes(VMMethod method)
+ throws JdwpException;
+
+ /**
+ * Returns monitor information about an object. VM must support
+ * the canGetMonitorInformation capability.
+ *
+ * @param obj the object
+ * @returns monitor information (owner, entry count, waiters)
+ */
+ public static native MonitorInfo getMonitorInfo(Object obj)
+ throws JdwpException;
+
+ /**
+ * Returns a list of owned monitors. VM must support the
+ * canGetOwnedMonitorInfo capability.
+ *
+ * @param thread a thread
+ * @returns the list of monitors owned by this thread
+ */
+ public static native Object[] getOwnedMonitors(Thread thread)
+ throws JdwpException;
+
+ /**
+ * Returns the current contended monitor for a thread. VM must
+ * support canGetCurrentContendedMonitor capability.
+ *
+ * @param thread the thread
+ * @returns the contended monitor
+ */
+ public static native Object getCurrentContendedMonitor(Thread thread)
+ throws JdwpException;
+
+ /**
+ * Pop all frames up to and including the given frame. VM must
+ * support canPopFrames capability. It is the responsibility
+ * of the VM to check if the thread is suspended. If it is not,
+ * the VM should throw ThreadNotSuspendedException.
+ *
+ * @param thread the thread
+ * @param frame the frame ID
+ */
+ public static native void popFrames(Thread thread, long frameId);
+}
diff --git a/libjava/gnu/classpath/jdwp/event/BreakpointEvent.h b/libjava/gnu/classpath/jdwp/event/BreakpointEvent.h
new file mode 100644
index 000000000..3a8bfd13f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/BreakpointEvent.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_BreakpointEvent__
+#define __gnu_classpath_jdwp_event_BreakpointEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class BreakpointEvent;
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::BreakpointEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ BreakpointEvent(::java::lang::Thread *, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Object *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+ ::gnu::classpath::jdwp::util::Location * _location;
+ ::java::lang::Object * _instance;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_BreakpointEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/ClassPrepareEvent.h b/libjava/gnu/classpath/jdwp/event/ClassPrepareEvent.h
new file mode 100644
index 000000000..35d24ea99
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/ClassPrepareEvent.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_ClassPrepareEvent__
+#define __gnu_classpath_jdwp_event_ClassPrepareEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class ClassPrepareEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::ClassPrepareEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ ClassPrepareEvent(::java::lang::Thread *, ::java::lang::Class *, jint);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+ ::java::lang::Class * _class;
+ jint _status;
+public:
+ static const jint STATUS_VERIFIED = 1;
+ static const jint STATUS_PREPARED = 2;
+ static const jint STATUS_INITIALIZED = 4;
+ static const jint STATUS_ERROR = 8;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_ClassPrepareEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/ClassUnloadEvent.h b/libjava/gnu/classpath/jdwp/event/ClassUnloadEvent.h
new file mode 100644
index 000000000..35447905d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/ClassUnloadEvent.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_ClassUnloadEvent__
+#define __gnu_classpath_jdwp_event_ClassUnloadEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class ClassUnloadEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::ClassUnloadEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ ClassUnloadEvent(::java::lang::String *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _signature;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_ClassUnloadEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/Event.h b/libjava/gnu/classpath/jdwp/event/Event.h
new file mode 100644
index 000000000..132d6b50d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/Event.h
@@ -0,0 +1,61 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_Event__
+#define __gnu_classpath_jdwp_event_Event__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ class EventRequest;
+ }
+ namespace transport
+ {
+ class JdwpPacket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::Event : public ::java::lang::Object
+{
+
+public:
+ Event(jbyte);
+ virtual jbyte getEventKind();
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *) = 0;
+public:
+ virtual ::java::lang::Object * getParameter(jint) = 0;
+ static ::gnu::classpath::jdwp::transport::JdwpPacket * toPacket(::java::io::DataOutputStream *, JArray< ::gnu::classpath::jdwp::event::Event * > *, JArray< ::gnu::classpath::jdwp::event::EventRequest * > *, jbyte);
+private:
+ static void _toData(::java::io::DataOutputStream *, ::gnu::classpath::jdwp::event::Event *, ::gnu::classpath::jdwp::event::EventRequest *);
+public:
+ static const jint EVENT_CLASS = 1;
+ static const jint EVENT_THREAD = 2;
+ static const jint EVENT_LOCATION = 3;
+ static const jint EVENT_INSTANCE = 4;
+ static const jint EVENT_FIELD = 5;
+ static const jint EVENT_EXCEPTION_CLASS = 6;
+ static const jint EVENT_EXCEPTION_CAUGHT = 7;
+private:
+ jbyte __attribute__((aligned(__alignof__( ::java::lang::Object)))) _eventKind;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_Event__
diff --git a/libjava/gnu/classpath/jdwp/event/EventManager.h b/libjava/gnu/classpath/jdwp/event/EventManager.h
new file mode 100644
index 000000000..45b47622c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/EventManager.h
@@ -0,0 +1,52 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_EventManager__
+#define __gnu_classpath_jdwp_event_EventManager__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ class EventManager;
+ class EventRequest;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::EventManager : public ::java::lang::Object
+{
+
+public:
+ static ::gnu::classpath::jdwp::event::EventManager * getDefault();
+private:
+ EventManager();
+public:
+ virtual JArray< ::gnu::classpath::jdwp::event::EventRequest * > * getEventRequests(::gnu::classpath::jdwp::event::Event *);
+ virtual void requestEvent(::gnu::classpath::jdwp::event::EventRequest *);
+ virtual void deleteRequest(jbyte, jint);
+ virtual void clearRequests(jbyte);
+ virtual ::gnu::classpath::jdwp::event::EventRequest * getRequest(jbyte, jint);
+ virtual ::java::util::Collection * getRequests(jbyte);
+private:
+ static ::gnu::classpath::jdwp::event::EventManager * _instance;
+ ::java::util::Hashtable * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _requests;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_EventManager__
diff --git a/libjava/gnu/classpath/jdwp/event/EventRequest.h b/libjava/gnu/classpath/jdwp/event/EventRequest.h
new file mode 100644
index 000000000..3a493a7c8
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/EventRequest.h
@@ -0,0 +1,75 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_EventRequest__
+#define __gnu_classpath_jdwp_event_EventRequest__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ class EventRequest;
+ namespace filters
+ {
+ class IEventFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::EventRequest : public ::java::lang::Object
+{
+
+public:
+ EventRequest(jbyte, jbyte);
+ EventRequest(jint, jbyte, jbyte);
+ virtual void addFilter(::gnu::classpath::jdwp::event::filters::IEventFilter *);
+ virtual ::java::util::Collection * getFilters();
+ virtual jbyte getSuspendPolicy();
+ virtual jint getId();
+ virtual void setId(jint);
+ virtual jbyte getEventKind();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+ static const jbyte EVENT_SINGLE_STEP = 1;
+ static const jbyte EVENT_BREAKPOINT = 2;
+ static const jbyte EVENT_FRAME_POP = 3;
+ static const jbyte EVENT_EXCEPTION = 4;
+ static const jbyte EVENT_USER_DEFINED = 5;
+ static const jbyte EVENT_THREAD_START = 6;
+ static const jbyte EVENT_THREAD_END = 7;
+ static const jbyte EVENT_CLASS_PREPARE = 8;
+ static const jbyte EVENT_CLASS_UNLOAD = 9;
+ static const jbyte EVENT_CLASS_LOAD = 10;
+ static const jbyte EVENT_FIELD_ACCESS = 20;
+ static const jbyte EVENT_FIELD_MODIFY = 21;
+ static const jbyte EVENT_METHOD_ENTRY = 40;
+ static const jbyte EVENT_METHOD_EXIT = 41;
+ static const jbyte EVENT_VM_INIT = 90;
+ static const jbyte EVENT_VM_DEATH = 99;
+ static const jbyte SUSPEND_NONE = 0;
+ static const jbyte SUSPEND_THREAD = 1;
+ static const jbyte SUSPEND_ALL = 2;
+private:
+ static jint _last_id;
+ static ::java::lang::Object * _idLock;
+ ::java::util::LinkedList * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _filters;
+ jint _id;
+ jbyte _suspendPolicy;
+ jbyte _kind;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_EventRequest__
diff --git a/libjava/gnu/classpath/jdwp/event/ExceptionEvent.h b/libjava/gnu/classpath/jdwp/event/ExceptionEvent.h
new file mode 100644
index 000000000..02745b631
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/ExceptionEvent.h
@@ -0,0 +1,51 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_ExceptionEvent__
+#define __gnu_classpath_jdwp_event_ExceptionEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class ExceptionEvent;
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::ExceptionEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ ExceptionEvent(::java::lang::Throwable *, ::java::lang::Thread *, ::gnu::classpath::jdwp::util::Location *, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Class *, ::java::lang::Object *);
+ virtual ::java::lang::Object * getParameter(jint);
+ virtual void setCatchLoc(::gnu::classpath::jdwp::util::Location *);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _instance;
+ ::java::lang::Throwable * _exception;
+ ::java::lang::Thread * _thread;
+ ::gnu::classpath::jdwp::util::Location * _location;
+ ::gnu::classpath::jdwp::util::Location * _catchLocation;
+ ::java::lang::Class * _klass;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_ExceptionEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/MethodEntryEvent.h b/libjava/gnu/classpath/jdwp/event/MethodEntryEvent.h
new file mode 100644
index 000000000..cb9c272b7
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/MethodEntryEvent.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_MethodEntryEvent__
+#define __gnu_classpath_jdwp_event_MethodEntryEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class MethodEntryEvent;
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::MethodEntryEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ MethodEntryEvent(::java::lang::Thread *, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Object *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+ ::gnu::classpath::jdwp::util::Location * _location;
+ ::java::lang::Object * _instance;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_MethodEntryEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/MethodExitEvent.h b/libjava/gnu/classpath/jdwp/event/MethodExitEvent.h
new file mode 100644
index 000000000..89b01537e
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/MethodExitEvent.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_MethodExitEvent__
+#define __gnu_classpath_jdwp_event_MethodExitEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class MethodExitEvent;
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::MethodExitEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ MethodExitEvent(::java::lang::Thread *, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Object *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+ ::gnu::classpath::jdwp::util::Location * _location;
+ ::java::lang::Object * _instance;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_MethodExitEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/SingleStepEvent.h b/libjava/gnu/classpath/jdwp/event/SingleStepEvent.h
new file mode 100644
index 000000000..481905888
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/SingleStepEvent.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_SingleStepEvent__
+#define __gnu_classpath_jdwp_event_SingleStepEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class SingleStepEvent;
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::SingleStepEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ SingleStepEvent(::java::lang::Thread *, ::gnu::classpath::jdwp::util::Location *, ::java::lang::Object *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+ ::gnu::classpath::jdwp::util::Location * _location;
+ ::java::lang::Object * _instance;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_SingleStepEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/ThreadEndEvent.h b/libjava/gnu/classpath/jdwp/event/ThreadEndEvent.h
new file mode 100644
index 000000000..b5b964eed
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/ThreadEndEvent.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_ThreadEndEvent__
+#define __gnu_classpath_jdwp_event_ThreadEndEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class ThreadEndEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::ThreadEndEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ ThreadEndEvent(::java::lang::Thread *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_ThreadEndEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/ThreadStartEvent.h b/libjava/gnu/classpath/jdwp/event/ThreadStartEvent.h
new file mode 100644
index 000000000..f4f7afd6c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/ThreadStartEvent.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_ThreadStartEvent__
+#define __gnu_classpath_jdwp_event_ThreadStartEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class ThreadStartEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::ThreadStartEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ ThreadStartEvent(::java::lang::Thread *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_ThreadStartEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/VmDeathEvent.h b/libjava/gnu/classpath/jdwp/event/VmDeathEvent.h
new file mode 100644
index 000000000..ae0b24ec2
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/VmDeathEvent.h
@@ -0,0 +1,39 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_VmDeathEvent__
+#define __gnu_classpath_jdwp_event_VmDeathEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class VmDeathEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::VmDeathEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ VmDeathEvent();
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_VmDeathEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/VmInitEvent.h b/libjava/gnu/classpath/jdwp/event/VmInitEvent.h
new file mode 100644
index 000000000..3a7db8811
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/VmInitEvent.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_VmInitEvent__
+#define __gnu_classpath_jdwp_event_VmInitEvent__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/Event.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class VmInitEvent;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::VmInitEvent : public ::gnu::classpath::jdwp::event::Event
+{
+
+public:
+ VmInitEvent(::java::lang::Thread *);
+ virtual ::java::lang::Object * getParameter(jint);
+public: // actually protected
+ virtual void _writeData(::java::io::DataOutputStream *);
+private:
+ ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _initialThread;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_VmInitEvent__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ClassExcludeFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ClassExcludeFilter.h
new file mode 100644
index 000000000..7a6796417
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ClassExcludeFilter.h
@@ -0,0 +1,40 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ClassExcludeFilter__
+#define __gnu_classpath_jdwp_event_filters_ClassExcludeFilter__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/event/filters/ClassMatchFilter.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ClassExcludeFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ClassExcludeFilter : public ::gnu::classpath::jdwp::event::filters::ClassMatchFilter
+{
+
+public:
+ ClassExcludeFilter(::java::lang::String *);
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ClassExcludeFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ClassMatchFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ClassMatchFilter.h
new file mode 100644
index 000000000..3670c26a6
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ClassMatchFilter.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ClassMatchFilter__
+#define __gnu_classpath_jdwp_event_filters_ClassMatchFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ClassMatchFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ClassMatchFilter : public ::java::lang::Object
+{
+
+public:
+ ClassMatchFilter(::java::lang::String *);
+ virtual ::java::lang::String * getPattern();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _pattern;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ClassMatchFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ClassOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ClassOnlyFilter.h
new file mode 100644
index 000000000..6c887abeb
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ClassOnlyFilter.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ClassOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_ClassOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ClassOnlyFilter;
+ }
+ }
+ namespace id
+ {
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ClassOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ ClassOnlyFilter(::gnu::classpath::jdwp::id::ReferenceTypeId *);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getType();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ReferenceTypeId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _id;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ClassOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ConditionalFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ConditionalFilter.h
new file mode 100644
index 000000000..23c5a14a2
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ConditionalFilter.h
@@ -0,0 +1,40 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ConditionalFilter__
+#define __gnu_classpath_jdwp_event_filters_ConditionalFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ConditionalFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ConditionalFilter : public ::java::lang::Object
+{
+
+public:
+ ConditionalFilter(::java::lang::Object *);
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ConditionalFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/CountFilter.h b/libjava/gnu/classpath/jdwp/event/filters/CountFilter.h
new file mode 100644
index 000000000..c3db4aeb8
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/CountFilter.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_CountFilter__
+#define __gnu_classpath_jdwp_event_filters_CountFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class CountFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::CountFilter : public ::java::lang::Object
+{
+
+public:
+ CountFilter(jint);
+ virtual jint getCount();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) _count;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_CountFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.h
new file mode 100644
index 000000000..4a84d43ef
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ExceptionOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_ExceptionOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ExceptionOnlyFilter;
+ }
+ }
+ namespace id
+ {
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ExceptionOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ ExceptionOnlyFilter(::gnu::classpath::jdwp::id::ReferenceTypeId *, jboolean, jboolean);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getType();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ReferenceTypeId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _refId;
+ jboolean _caught;
+ jboolean _uncaught;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ExceptionOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/FieldOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/FieldOnlyFilter.h
new file mode 100644
index 000000000..2f6d57772
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/FieldOnlyFilter.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_FieldOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_FieldOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class FieldOnlyFilter;
+ }
+ }
+ namespace id
+ {
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::FieldOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ FieldOnlyFilter(::gnu::classpath::jdwp::id::ReferenceTypeId *, ::gnu::classpath::jdwp::id::ReferenceTypeId *);
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getType();
+ virtual ::gnu::classpath::jdwp::id::ReferenceTypeId * getField();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ReferenceTypeId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _refId;
+ ::gnu::classpath::jdwp::id::ReferenceTypeId * _fieldId;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_FieldOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/IEventFilter.h b/libjava/gnu/classpath/jdwp/event/filters/IEventFilter.h
new file mode 100644
index 000000000..0723bad2d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/IEventFilter.h
@@ -0,0 +1,39 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_IEventFilter__
+#define __gnu_classpath_jdwp_event_filters_IEventFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class IEventFilter;
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::IEventFilter : public ::java::lang::Object
+{
+
+public:
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *) = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __gnu_classpath_jdwp_event_filters_IEventFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.h
new file mode 100644
index 000000000..3b5aedf4b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_InstanceOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_InstanceOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class InstanceOnlyFilter;
+ }
+ }
+ namespace id
+ {
+ class ObjectId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::InstanceOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ InstanceOnlyFilter(::gnu::classpath::jdwp::id::ObjectId *);
+ virtual ::gnu::classpath::jdwp::id::ObjectId * getInstance();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ObjectId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _instance;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_InstanceOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/LocationOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/LocationOnlyFilter.h
new file mode 100644
index 000000000..e5e0da92c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/LocationOnlyFilter.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_LocationOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_LocationOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class LocationOnlyFilter;
+ }
+ }
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::LocationOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ LocationOnlyFilter(::gnu::classpath::jdwp::util::Location *);
+ virtual ::gnu::classpath::jdwp::util::Location * getLocation();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::util::Location * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _location;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_LocationOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/StepFilter.h b/libjava/gnu/classpath/jdwp/event/filters/StepFilter.h
new file mode 100644
index 000000000..c434ae142
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/StepFilter.h
@@ -0,0 +1,52 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_StepFilter__
+#define __gnu_classpath_jdwp_event_filters_StepFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class StepFilter;
+ }
+ }
+ namespace id
+ {
+ class ThreadId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::StepFilter : public ::java::lang::Object
+{
+
+public:
+ StepFilter(::gnu::classpath::jdwp::id::ThreadId *, jint, jint);
+ virtual ::gnu::classpath::jdwp::id::ThreadId * getThread();
+ virtual jint getSize();
+ virtual jint getDepth();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ThreadId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _tid;
+ jint _size;
+ jint _depth;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_StepFilter__
diff --git a/libjava/gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.h b/libjava/gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.h
new file mode 100644
index 000000000..0c1a6eec4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_event_filters_ThreadOnlyFilter__
+#define __gnu_classpath_jdwp_event_filters_ThreadOnlyFilter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ namespace filters
+ {
+ class ThreadOnlyFilter;
+ }
+ }
+ namespace id
+ {
+ class ThreadId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::event::filters::ThreadOnlyFilter : public ::java::lang::Object
+{
+
+public:
+ ThreadOnlyFilter(::gnu::classpath::jdwp::id::ThreadId *);
+ virtual ::gnu::classpath::jdwp::id::ThreadId * getThread();
+ virtual jboolean matches(::gnu::classpath::jdwp::event::Event *);
+private:
+ ::gnu::classpath::jdwp::id::ThreadId * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _tid;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_event_filters_ThreadOnlyFilter__
diff --git a/libjava/gnu/classpath/jdwp/exception/AbsentInformationException.h b/libjava/gnu/classpath/jdwp/exception/AbsentInformationException.h
new file mode 100644
index 000000000..bb4c69955
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/AbsentInformationException.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_AbsentInformationException__
+#define __gnu_classpath_jdwp_exception_AbsentInformationException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class AbsentInformationException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::AbsentInformationException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ AbsentInformationException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_AbsentInformationException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidClassException.h b/libjava/gnu/classpath/jdwp/exception/InvalidClassException.h
new file mode 100644
index 000000000..fb6028f79
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidClassException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidClassException__
+#define __gnu_classpath_jdwp_exception_InvalidClassException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidClassException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidClassException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidClassException(jlong);
+ InvalidClassException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidClassException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidClassLoaderException.h b/libjava/gnu/classpath/jdwp/exception/InvalidClassLoaderException.h
new file mode 100644
index 000000000..201b5db3b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidClassLoaderException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidClassLoaderException__
+#define __gnu_classpath_jdwp_exception_InvalidClassLoaderException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidClassLoaderException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidClassLoaderException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidClassLoaderException(jlong);
+ InvalidClassLoaderException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidClassLoaderException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidCountException.h b/libjava/gnu/classpath/jdwp/exception/InvalidCountException.h
new file mode 100644
index 000000000..b5bfea3d7
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidCountException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidCountException__
+#define __gnu_classpath_jdwp_exception_InvalidCountException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidCountException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidCountException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidCountException(jint);
+ InvalidCountException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidCountException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidEventTypeException.h b/libjava/gnu/classpath/jdwp/exception/InvalidEventTypeException.h
new file mode 100644
index 000000000..e5e7d1292
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidEventTypeException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidEventTypeException__
+#define __gnu_classpath_jdwp_exception_InvalidEventTypeException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidEventTypeException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidEventTypeException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidEventTypeException(jbyte);
+ InvalidEventTypeException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidEventTypeException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidFieldException.h b/libjava/gnu/classpath/jdwp/exception/InvalidFieldException.h
new file mode 100644
index 000000000..31ebf4ac1
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidFieldException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidFieldException__
+#define __gnu_classpath_jdwp_exception_InvalidFieldException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidFieldException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidFieldException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidFieldException(jlong);
+ InvalidFieldException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidFieldException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidFrameException.h b/libjava/gnu/classpath/jdwp/exception/InvalidFrameException.h
new file mode 100644
index 000000000..abe84e0e4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidFrameException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidFrameException__
+#define __gnu_classpath_jdwp_exception_InvalidFrameException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidFrameException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidFrameException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidFrameException(jlong);
+ InvalidFrameException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidFrameException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidLocationException.h b/libjava/gnu/classpath/jdwp/exception/InvalidLocationException.h
new file mode 100644
index 000000000..8d44f50bc
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidLocationException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidLocationException__
+#define __gnu_classpath_jdwp_exception_InvalidLocationException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidLocationException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidLocationException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidLocationException();
+ InvalidLocationException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidLocationException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidMethodException.h b/libjava/gnu/classpath/jdwp/exception/InvalidMethodException.h
new file mode 100644
index 000000000..c6d44ca57
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidMethodException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidMethodException__
+#define __gnu_classpath_jdwp_exception_InvalidMethodException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidMethodException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidMethodException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidMethodException(jlong);
+ InvalidMethodException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidMethodException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidObjectException.h b/libjava/gnu/classpath/jdwp/exception/InvalidObjectException.h
new file mode 100644
index 000000000..20ea14f4f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidObjectException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidObjectException__
+#define __gnu_classpath_jdwp_exception_InvalidObjectException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidObjectException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidObjectException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidObjectException(jlong);
+ InvalidObjectException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidObjectException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidSlotException.h b/libjava/gnu/classpath/jdwp/exception/InvalidSlotException.h
new file mode 100644
index 000000000..4582dac59
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidSlotException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidSlotException__
+#define __gnu_classpath_jdwp_exception_InvalidSlotException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidSlotException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidSlotException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidSlotException(jint);
+ InvalidSlotException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidSlotException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidStringException.h b/libjava/gnu/classpath/jdwp/exception/InvalidStringException.h
new file mode 100644
index 000000000..b31ef702b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidStringException.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidStringException__
+#define __gnu_classpath_jdwp_exception_InvalidStringException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidStringException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidStringException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidStringException(::java::lang::String *);
+ InvalidStringException(jlong);
+ InvalidStringException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidStringException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidTagException.h b/libjava/gnu/classpath/jdwp/exception/InvalidTagException.h
new file mode 100644
index 000000000..f7f0f1e59
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidTagException.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidTagException__
+#define __gnu_classpath_jdwp_exception_InvalidTagException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidTagException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidTagException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidTagException(jbyte);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidTagException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidThreadException.h b/libjava/gnu/classpath/jdwp/exception/InvalidThreadException.h
new file mode 100644
index 000000000..72951401c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidThreadException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidThreadException__
+#define __gnu_classpath_jdwp_exception_InvalidThreadException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidThreadException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidThreadException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidThreadException(jlong);
+ InvalidThreadException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidThreadException__
diff --git a/libjava/gnu/classpath/jdwp/exception/InvalidThreadGroupException.h b/libjava/gnu/classpath/jdwp/exception/InvalidThreadGroupException.h
new file mode 100644
index 000000000..c95db0220
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/InvalidThreadGroupException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_InvalidThreadGroupException__
+#define __gnu_classpath_jdwp_exception_InvalidThreadGroupException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class InvalidThreadGroupException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::InvalidThreadGroupException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ InvalidThreadGroupException(jlong);
+ InvalidThreadGroupException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_InvalidThreadGroupException__
diff --git a/libjava/gnu/classpath/jdwp/exception/JdwpException.h b/libjava/gnu/classpath/jdwp/exception/JdwpException.h
new file mode 100644
index 000000000..04869f2e4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/JdwpException.h
@@ -0,0 +1,40 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_JdwpException__
+#define __gnu_classpath_jdwp_exception_JdwpException__
+
+#pragma interface
+
+#include <java/lang/Exception.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class JdwpException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::JdwpException : public ::java::lang::Exception
+{
+
+public:
+ JdwpException(jshort, ::java::lang::Throwable *);
+ JdwpException(jshort, ::java::lang::String *);
+ virtual jshort getErrorCode();
+private:
+ jshort __attribute__((aligned(__alignof__( ::java::lang::Exception)))) _errorCode;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_JdwpException__
diff --git a/libjava/gnu/classpath/jdwp/exception/JdwpIllegalArgumentException.h b/libjava/gnu/classpath/jdwp/exception/JdwpIllegalArgumentException.h
new file mode 100644
index 000000000..035f39738
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/JdwpIllegalArgumentException.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_JdwpIllegalArgumentException__
+#define __gnu_classpath_jdwp_exception_JdwpIllegalArgumentException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class JdwpIllegalArgumentException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::JdwpIllegalArgumentException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ JdwpIllegalArgumentException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_JdwpIllegalArgumentException__
diff --git a/libjava/gnu/classpath/jdwp/exception/JdwpInternalErrorException.h b/libjava/gnu/classpath/jdwp/exception/JdwpInternalErrorException.h
new file mode 100644
index 000000000..6829e26e6
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/JdwpInternalErrorException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_JdwpInternalErrorException__
+#define __gnu_classpath_jdwp_exception_JdwpInternalErrorException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class JdwpInternalErrorException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::JdwpInternalErrorException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ JdwpInternalErrorException(::java::lang::Throwable *);
+ JdwpInternalErrorException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_JdwpInternalErrorException__
diff --git a/libjava/gnu/classpath/jdwp/exception/NativeMethodException.h b/libjava/gnu/classpath/jdwp/exception/NativeMethodException.h
new file mode 100644
index 000000000..4f7a55c1f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/NativeMethodException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_NativeMethodException__
+#define __gnu_classpath_jdwp_exception_NativeMethodException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class NativeMethodException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::NativeMethodException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ NativeMethodException(jlong);
+ NativeMethodException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_NativeMethodException__
diff --git a/libjava/gnu/classpath/jdwp/exception/NotImplementedException.h b/libjava/gnu/classpath/jdwp/exception/NotImplementedException.h
new file mode 100644
index 000000000..4a99592fc
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/NotImplementedException.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_NotImplementedException__
+#define __gnu_classpath_jdwp_exception_NotImplementedException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class NotImplementedException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::NotImplementedException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ NotImplementedException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_NotImplementedException__
diff --git a/libjava/gnu/classpath/jdwp/exception/TypeMismatchException.h b/libjava/gnu/classpath/jdwp/exception/TypeMismatchException.h
new file mode 100644
index 000000000..701bf6ebc
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/TypeMismatchException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_TypeMismatchException__
+#define __gnu_classpath_jdwp_exception_TypeMismatchException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class TypeMismatchException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::TypeMismatchException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ TypeMismatchException(jbyte);
+ TypeMismatchException(::java::lang::String *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_TypeMismatchException__
diff --git a/libjava/gnu/classpath/jdwp/exception/VmDeadException.h b/libjava/gnu/classpath/jdwp/exception/VmDeadException.h
new file mode 100644
index 000000000..616f735b5
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/exception/VmDeadException.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_exception_VmDeadException__
+#define __gnu_classpath_jdwp_exception_VmDeadException__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/exception/JdwpException.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace exception
+ {
+ class VmDeadException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::exception::VmDeadException : public ::gnu::classpath::jdwp::exception::JdwpException
+{
+
+public:
+ VmDeadException();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_exception_VmDeadException__
diff --git a/libjava/gnu/classpath/jdwp/id/ArrayId.h b/libjava/gnu/classpath/jdwp/id/ArrayId.h
new file mode 100644
index 000000000..7e971e0bd
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ArrayId.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ArrayId__
+#define __gnu_classpath_jdwp_id_ArrayId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ArrayId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ArrayId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ ArrayId();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ArrayId__
diff --git a/libjava/gnu/classpath/jdwp/id/ArrayReferenceTypeId.h b/libjava/gnu/classpath/jdwp/id/ArrayReferenceTypeId.h
new file mode 100644
index 000000000..e52b1098f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ArrayReferenceTypeId.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ArrayReferenceTypeId__
+#define __gnu_classpath_jdwp_id_ArrayReferenceTypeId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ReferenceTypeId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ArrayReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ArrayReferenceTypeId : public ::gnu::classpath::jdwp::id::ReferenceTypeId
+{
+
+public:
+ ArrayReferenceTypeId();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ArrayReferenceTypeId__
diff --git a/libjava/gnu/classpath/jdwp/id/ClassLoaderId.h b/libjava/gnu/classpath/jdwp/id/ClassLoaderId.h
new file mode 100644
index 000000000..162100264
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ClassLoaderId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ClassLoaderId__
+#define __gnu_classpath_jdwp_id_ClassLoaderId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ClassLoaderId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ClassLoaderId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ ClassLoaderId();
+ virtual ::java::lang::ClassLoader * getClassLoader();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ClassLoaderId__
diff --git a/libjava/gnu/classpath/jdwp/id/ClassObjectId.h b/libjava/gnu/classpath/jdwp/id/ClassObjectId.h
new file mode 100644
index 000000000..5f628a465
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ClassObjectId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ClassObjectId__
+#define __gnu_classpath_jdwp_id_ClassObjectId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ClassObjectId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ClassObjectId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ ClassObjectId();
+ virtual ::java::lang::Class * getClassObject();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ClassObjectId__
diff --git a/libjava/gnu/classpath/jdwp/id/ClassReferenceTypeId.h b/libjava/gnu/classpath/jdwp/id/ClassReferenceTypeId.h
new file mode 100644
index 000000000..f159722e3
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ClassReferenceTypeId.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ClassReferenceTypeId__
+#define __gnu_classpath_jdwp_id_ClassReferenceTypeId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ReferenceTypeId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ClassReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ClassReferenceTypeId : public ::gnu::classpath::jdwp::id::ReferenceTypeId
+{
+
+public:
+ ClassReferenceTypeId();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ClassReferenceTypeId__
diff --git a/libjava/gnu/classpath/jdwp/id/InterfaceReferenceTypeId.h b/libjava/gnu/classpath/jdwp/id/InterfaceReferenceTypeId.h
new file mode 100644
index 000000000..e1f2a9179
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/InterfaceReferenceTypeId.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_InterfaceReferenceTypeId__
+#define __gnu_classpath_jdwp_id_InterfaceReferenceTypeId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ReferenceTypeId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class InterfaceReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::InterfaceReferenceTypeId : public ::gnu::classpath::jdwp::id::ReferenceTypeId
+{
+
+public:
+ InterfaceReferenceTypeId();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_InterfaceReferenceTypeId__
diff --git a/libjava/gnu/classpath/jdwp/id/JdwpId.h b/libjava/gnu/classpath/jdwp/id/JdwpId.h
new file mode 100644
index 000000000..67e8c2c53
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/JdwpId.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_JdwpId__
+#define __gnu_classpath_jdwp_id_JdwpId__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class JdwpId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::JdwpId : public ::java::lang::Object
+{
+
+public:
+ JdwpId(jbyte);
+ virtual void setId(jlong);
+ virtual jlong getId();
+ virtual ::java::lang::ref::SoftReference * getReference();
+ virtual void setReference(::java::lang::ref::SoftReference *);
+ virtual jboolean equals(::gnu::classpath::jdwp::id::JdwpId *);
+ virtual void write(::java::io::DataOutputStream *) = 0;
+ virtual void writeTagged(::java::io::DataOutputStream *);
+ static const jint SIZE = 8;
+public: // actually protected
+ jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) _id;
+private:
+ jbyte _tag;
+public: // actually protected
+ ::java::lang::ref::SoftReference * _reference;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_JdwpId__
diff --git a/libjava/gnu/classpath/jdwp/id/NullObjectId.h b/libjava/gnu/classpath/jdwp/id/NullObjectId.h
new file mode 100644
index 000000000..6231783b5
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/NullObjectId.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_NullObjectId__
+#define __gnu_classpath_jdwp_id_NullObjectId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class NullObjectId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::NullObjectId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ NullObjectId();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_NullObjectId__
diff --git a/libjava/gnu/classpath/jdwp/id/ObjectId.h b/libjava/gnu/classpath/jdwp/id/ObjectId.h
new file mode 100644
index 000000000..724d92103
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ObjectId.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ObjectId__
+#define __gnu_classpath_jdwp_id_ObjectId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/JdwpId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ObjectId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ObjectId : public ::gnu::classpath::jdwp::id::JdwpId
+{
+
+public:
+ ObjectId();
+ ObjectId(jbyte);
+ virtual ::java::lang::Object * getObject();
+ virtual void write(::java::io::DataOutputStream *);
+ virtual void disableCollection();
+ virtual void enableCollection();
+ static ::java::lang::Class * typeClass;
+private:
+ ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::id::JdwpId)))) _handle;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ObjectId__
diff --git a/libjava/gnu/classpath/jdwp/id/ReferenceTypeId.h b/libjava/gnu/classpath/jdwp/id/ReferenceTypeId.h
new file mode 100644
index 000000000..0d8a88481
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ReferenceTypeId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ReferenceTypeId__
+#define __gnu_classpath_jdwp_id_ReferenceTypeId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/JdwpId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ReferenceTypeId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ReferenceTypeId : public ::gnu::classpath::jdwp::id::JdwpId
+{
+
+public:
+ ReferenceTypeId(jbyte);
+ virtual ::java::lang::Class * getType();
+ virtual void write(::java::io::DataOutputStream *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ReferenceTypeId__
diff --git a/libjava/gnu/classpath/jdwp/id/StringId.h b/libjava/gnu/classpath/jdwp/id/StringId.h
new file mode 100644
index 000000000..901df2809
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/StringId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_StringId__
+#define __gnu_classpath_jdwp_id_StringId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class StringId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::StringId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ StringId();
+ virtual ::java::lang::String * getString();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_StringId__
diff --git a/libjava/gnu/classpath/jdwp/id/ThreadGroupId.h b/libjava/gnu/classpath/jdwp/id/ThreadGroupId.h
new file mode 100644
index 000000000..3f6b8f9e4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ThreadGroupId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ThreadGroupId__
+#define __gnu_classpath_jdwp_id_ThreadGroupId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ThreadGroupId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ThreadGroupId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ ThreadGroupId();
+ virtual ::java::lang::ThreadGroup * getThreadGroup();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ThreadGroupId__
diff --git a/libjava/gnu/classpath/jdwp/id/ThreadId.h b/libjava/gnu/classpath/jdwp/id/ThreadId.h
new file mode 100644
index 000000000..ed6259205
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/id/ThreadId.h
@@ -0,0 +1,37 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_id_ThreadId__
+#define __gnu_classpath_jdwp_id_ThreadId__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/id/ObjectId.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace id
+ {
+ class ThreadId;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::id::ThreadId : public ::gnu::classpath::jdwp::id::ObjectId
+{
+
+public:
+ ThreadId();
+ virtual ::java::lang::Thread * getThread();
+ static ::java::lang::Class * typeClass;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_id_ThreadId__
diff --git a/libjava/gnu/classpath/jdwp/natVMFrame.cc b/libjava/gnu/classpath/jdwp/natVMFrame.cc
new file mode 100644
index 000000000..6f2d52332
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/natVMFrame.cc
@@ -0,0 +1,338 @@
+// natFrame.cc -- native support for VMFrame.java
+
+/* 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. */
+
+#include <config.h>
+#include <gcj/cni.h>
+#include <jvm.h>
+#include <jvmti.h>
+#include "jvmti-int.h"
+
+#include <java-interp.h>
+
+#include <gnu/classpath/jdwp/VMFrame.h>
+#include <gnu/classpath/jdwp/VMVirtualMachine.h>
+#include <gnu/classpath/jdwp/exception/InvalidFrameException.h>
+#include <gnu/classpath/jdwp/exception/InvalidSlotException.h>
+#include <gnu/classpath/jdwp/exception/InvalidThreadException.h>
+#include <gnu/classpath/jdwp/exception/JdwpInternalErrorException.h>
+#include <gnu/classpath/jdwp/exception/TypeMismatchException.h>
+#include <gnu/classpath/jdwp/util/NullObject.h>
+#include <gnu/classpath/jdwp/value/ArrayValue.h>
+#include <gnu/classpath/jdwp/value/ByteValue.h>
+#include <gnu/classpath/jdwp/value/BooleanValue.h>
+#include <gnu/classpath/jdwp/value/CharValue.h>
+#include <gnu/classpath/jdwp/value/DoubleValue.h>
+#include <gnu/classpath/jdwp/value/FloatValue.h>
+#include <gnu/classpath/jdwp/value/IntValue.h>
+#include <gnu/classpath/jdwp/value/LongValue.h>
+#include <gnu/classpath/jdwp/value/ObjectValue.h>
+#include <gnu/classpath/jdwp/value/ShortValue.h>
+#include <gnu/classpath/jdwp/value/Value.h>
+#include <gnu/classpath/jdwp/value/VoidValue.h>
+
+using namespace java::lang;
+using namespace gnu::classpath::jdwp;
+using namespace gnu::classpath::jdwp::exception;
+
+
+// All the jvmti GetLocalXX and SetLocalXX functions return the same potential
+// errors, so this function handles them all and throws the appropriate JDWP
+// exception.
+static void
+checkJVMTIError (jvmtiEnv *env, jthread thread, jvmtiError jerr, jint slot,
+ jbyte sig)
+{
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ char *error;
+ env->GetErrorName (jerr, &error);
+ String *msg = reinterpret_cast<String *> (JvNewStringUTF (error));
+ env->Deallocate ((unsigned char *) error);
+
+ if (jerr == JVMTI_ERROR_INVALID_THREAD)
+ throw new InvalidThreadException ((jlong) thread);
+ else if (jerr == JVMTI_ERROR_NO_MORE_FRAMES)
+ throw new InvalidFrameException (msg);
+ else if (jerr == JVMTI_ERROR_INVALID_SLOT)
+ throw new InvalidSlotException (slot);
+ else if (jerr == JVMTI_ERROR_TYPE_MISMATCH)
+ throw new TypeMismatchException (sig);
+ else
+ throw new JdwpInternalErrorException (msg);
+ }
+}
+
+
+static jobject
+getObjectJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig)
+{
+ jobject value;
+ jvmtiError jerr = env->GetLocalObject (thread, depth, slot, &value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+
+ return value;
+}
+
+static void
+setObjectJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth,
+ jbyte sig, jobject value)
+{
+ if (value->getClass ()->isAssignableFrom (&util::NullObject::class$))
+ value = NULL;
+
+ jvmtiError jerr = env->SetLocalObject (thread, depth, slot, value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+}
+
+static jint
+getIntJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig)
+{
+ jint value;
+ jvmtiError jerr = env->GetLocalInt (thread, depth, slot, &value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+ return value;
+}
+
+static void
+setIntJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig,
+ jint value)
+{
+ jvmtiError jerr = env->SetLocalInt (thread, depth, slot, value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+}
+
+static jlong
+getLongJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig)
+{
+ jlong value;
+ jvmtiError jerr = env->GetLocalLong (thread, depth, slot, &value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+
+ return value;
+}
+
+static void
+setLongJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig,
+ jlong value)
+{
+ jvmtiError jerr = env->SetLocalLong (thread, depth, slot, value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+}
+
+static jfloat
+getFloatJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig)
+{
+ jfloat value;
+ jvmtiError jerr = env->GetLocalFloat (thread, depth, slot, &value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+
+ return value;
+}
+
+static void
+setFloatJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth, jbyte sig,
+ jfloat value)
+{
+ jvmtiError jerr = env->SetLocalFloat (thread, depth, slot, value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+}
+
+static jdouble
+getDoubleJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth,
+ jbyte sig)
+{
+ jdouble value;
+ jvmtiError jerr = env->GetLocalDouble (thread, depth, slot, &value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+
+ return value;
+}
+
+static void
+setDoubleJVMTI (jvmtiEnv *env, jthread thread, jint slot, jint depth,
+ jbyte sig, jdouble value)
+{
+ jvmtiError jerr = env->SetLocalDouble (thread, depth, slot, value);
+
+ checkJVMTIError (env, thread, jerr, slot, sig);
+}
+
+// This is necessary since JVMTI requires a stack depth as a parameter in all
+// its local variable functions. Since JDWP needs frameids, we have to run
+// through the call stack to translate these ids into the parameters JVMTI
+// wants.
+static jint
+getFrameDepth (_Jv_Frame *frame)
+{
+ jint depth = 0;
+ _Jv_Frame *top_frame = (_Jv_Frame *) frame->thread->frame;
+ jint num_frames = VMVirtualMachine::getFrameCount (frame->thread);
+
+ while (frame != top_frame)
+ {
+ top_frame = top_frame->next;
+ depth++;
+
+ if (depth >= num_frames || top_frame == NULL)
+ throw new InvalidFrameException ((jlong) frame);
+ }
+
+ return depth;
+}
+
+using namespace gnu::classpath::jdwp::value;
+
+Value *
+gnu::classpath::jdwp::VMFrame::getValue (jint slot, jbyte sig)
+{
+ _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (id);
+ jint depth = getFrameDepth (frame);
+ jthread thread = reinterpret_cast<jthread> (frame->thread);
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+
+ Value *value = NULL;
+
+ switch (sig)
+ {
+ case 'B':
+ value = new ByteValue ((jbyte) getIntJVMTI (env, thread, slot, depth,
+ sig));
+ break;
+ case 'Z':
+ value = new BooleanValue ((jboolean) getIntJVMTI (env, thread, slot,
+ depth, sig));
+ break;
+ case 'C':
+ value = new CharValue ((jchar) getIntJVMTI (env, thread, slot, depth,
+ sig));
+ break;
+ case 'S':
+ value = new ShortValue ((jshort) getIntJVMTI (env, thread, slot, depth,
+ sig));
+ break;
+ case 'I':
+ value = new IntValue (getIntJVMTI (env, thread, slot, depth, sig));
+ break;
+ case 'J':
+ value = new LongValue (getLongJVMTI (env, thread, slot, depth, sig));
+ break;
+ case 'F':
+ value = new FloatValue (getFloatJVMTI (env, thread, slot, depth, sig));
+ break;
+ case 'D':
+ value = new DoubleValue (getDoubleJVMTI (env, thread, slot, depth, sig));
+ break;
+ case 'V':
+ value = new VoidValue ();
+ break;
+ case '[':
+ {
+ Object *obj = getObjectJVMTI (env, thread, slot, depth, sig);
+ if (obj == NULL)
+ obj = new util::NullObject ();
+ value = new ArrayValue (obj);
+ break;
+ }
+ default:
+ Object *obj = getObjectJVMTI (env, thread, slot, depth, sig);
+ if (obj == NULL)
+ obj = new util::NullObject ();
+ value = new ObjectValue (obj);
+ break;
+ }
+
+ return value;
+}
+
+void
+gnu::classpath::jdwp::VMFrame::setValue (jint slot, Value* value)
+{
+ jbyte sig = value->getTag ();
+
+ _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (id);
+ jint depth = getFrameDepth (frame);
+ jthread thread = reinterpret_cast<jthread> (frame->thread);
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+
+ switch (sig)
+ {
+ case 'B':
+ {
+ ByteValue *val = reinterpret_cast<ByteValue *> (value);
+ setIntJVMTI (env, thread, slot, depth, sig, (jint) val->getValue ());
+ break;
+ }
+ case 'Z':
+ {
+ BooleanValue *val = reinterpret_cast<BooleanValue *> (value);
+ setIntJVMTI (env, thread, slot, depth, sig, (jint) val->getValue ());
+ break;
+ }
+ case 'C':
+ {
+ CharValue *val = reinterpret_cast<CharValue *> (value);
+ setIntJVMTI (env, thread, slot, depth, sig, (jint) val->getValue ());
+ break;
+ }
+ case 'S':
+ {
+ ShortValue *val = reinterpret_cast<ShortValue *> (value);
+ setIntJVMTI (env, thread, slot, depth, sig, (jint) val->getValue ());
+ break;
+ }
+ case 'I':
+ {
+ IntValue *val = reinterpret_cast<IntValue *> (value);
+ setIntJVMTI (env, thread, slot, depth, sig, val->getValue ());
+ break;
+ }
+ case 'J':
+ {
+ LongValue *val = reinterpret_cast<LongValue *> (value);
+ setLongJVMTI (env, thread, slot, depth, sig, val->getValue ());
+ break;
+ }
+ case 'F':
+ {
+ FloatValue *val = reinterpret_cast<FloatValue *> (value);
+ setFloatJVMTI (env, thread, slot, depth, sig, val->getValue ());
+ break;
+ }
+ case 'D':
+ {
+ DoubleValue *val = reinterpret_cast<DoubleValue *> (value);
+ setDoubleJVMTI (env, thread, slot, depth, sig, val->getValue ());
+ break;
+ }
+ case 'V':
+ break;
+ case '[':
+ {
+ ArrayValue *val = reinterpret_cast<ArrayValue *> (value);
+ setObjectJVMTI (env, thread, slot, depth, sig, val->getObject ());
+ break;
+ }
+ default:
+ {
+ ObjectValue *val = reinterpret_cast<ObjectValue *> (value);
+ setObjectJVMTI (env, thread, slot, depth, sig, val->getObject());
+ break;
+ }
+ }
+}
diff --git a/libjava/gnu/classpath/jdwp/natVMMethod.cc b/libjava/gnu/classpath/jdwp/natVMMethod.cc
new file mode 100644
index 000000000..1cea54dae
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/natVMMethod.cc
@@ -0,0 +1,191 @@
+// natVMMethod.cc -- native support for VMMethod
+
+/* 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. */
+
+#include <config.h>
+#include <gcj/cni.h>
+#include <java-interp.h>
+#include <jvmti.h>
+#include "jvmti-int.h"
+
+#include <java/lang/reflect/Modifier.h>
+#include <gnu/classpath/jdwp/VMMethod.h>
+#include <gnu/classpath/jdwp/exception/AbsentInformationException.h>
+#include <gnu/classpath/jdwp/exception/InvalidMethodException.h>
+#include <gnu/classpath/jdwp/exception/JdwpInternalErrorException.h>
+#include <gnu/classpath/jdwp/util/LineTable.h>
+#include <gnu/classpath/jdwp/util/VariableTable.h>
+
+using namespace java::lang;
+
+#define CHECK_INTERP_CLASS() \
+do \
+ { \
+ if (!_Jv_IsInterpretedClass (getDeclaringClass ())) \
+ { \
+ ::java::lang::String *msg = JvNewStringLatin1 ("native class"); \
+ throw new exception::JdwpInternalErrorException (msg); \
+ } \
+ } \
+while (0)
+
+jstring
+gnu::classpath::jdwp::VMMethod::getName ()
+{
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+ jmethodID method = reinterpret_cast<jmethodID> (_methodId);
+ char *name;
+ env->GetMethodName (method, &name, NULL, NULL);
+ jstring string = JvNewStringUTF (name);
+ env->Deallocate (reinterpret_cast<unsigned char *> (name));
+ return string;
+}
+
+jstring
+gnu::classpath::jdwp::VMMethod::getSignature ()
+{
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+ jmethodID method = reinterpret_cast<jmethodID> (_methodId);
+ char *signature;
+ env->GetMethodName (method, NULL, &signature, NULL);
+ jstring string = JvNewStringUTF (signature);
+ env->Deallocate (reinterpret_cast<unsigned char *> (signature));
+ return string;
+}
+
+jint
+gnu::classpath::jdwp::VMMethod::getModifiers ()
+{
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+ jmethodID method = reinterpret_cast<jmethodID> (_methodId);
+ jint flags;
+ env->GetMethodModifiers (method, &flags);
+
+ // If this class is compiled, as far as JDWP is concerned, its methods are
+ // native. This will set the native flag for these methods.
+ if (!_Jv_IsInterpretedClass (getDeclaringClass ()))
+ flags |= ::java::lang::reflect::Modifier::NATIVE;
+
+ return flags;
+}
+
+gnu::classpath::jdwp::util::LineTable *
+gnu::classpath::jdwp::VMMethod::getLineTable ()
+{
+ CHECK_INTERP_CLASS ();
+
+ jmethodID desired_method = reinterpret_cast<jmethodID> (_methodId);
+
+ _Jv_MethodBase *theMethod
+ = _Jv_FindInterpreterMethod (getDeclaringClass (), desired_method);
+
+ if (theMethod == NULL)
+ {
+ // this should not happen
+ ::java::lang::String *msg
+ = JvNewStringLatin1 ("could not find method in class");
+ throw new exception::JdwpInternalErrorException (msg);
+ }
+
+ if (::java::lang::reflect::Modifier::isNative (desired_method->accflags))
+ {
+ jintArray lines = JvNewIntArray (0);
+ jlongArray indices = JvNewLongArray (0);
+ return new util::LineTable (-1, -1, lines, indices);
+ }
+
+ // get the linetable
+ _Jv_InterpMethod *imeth = reinterpret_cast<_Jv_InterpMethod *> (theMethod);
+ jlong start;
+ jlong end;
+ jintArray lines;
+ jlongArray indices;
+ imeth->get_line_table (start, end, lines, indices);
+ return new util::LineTable (start, end, lines, indices);
+}
+
+
+gnu::classpath::jdwp::util::VariableTable*
+gnu::classpath::jdwp::VMMethod::getVariableTable ()
+{
+ using namespace gnu::classpath::jdwp::util;
+
+ jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv ();
+
+ CHECK_INTERP_CLASS ();
+
+ jmethodID meth = reinterpret_cast<jmethodID> (_methodId);
+ jvmtiLocalVariableEntry *var_table;
+ jint num_slots, args_len;
+
+ jvmtiError jerr = env->GetLocalVariableTable (meth, &num_slots, &var_table);
+
+ if (jerr != JVMTI_ERROR_NONE)
+ goto error;
+
+ jerr = env->GetArgumentsSize (meth, &args_len);
+
+ if (jerr != JVMTI_ERROR_NONE)
+ {
+ error:
+ using namespace gnu::classpath::jdwp::exception;
+ char *error;
+ env->GetErrorName (jerr, &error);
+ String *msg = JvNewStringUTF (error);
+ env->Deallocate (reinterpret_cast<unsigned char *> (error));
+
+ if (jerr == JVMTI_ERROR_NATIVE_METHOD)
+ throw new AbsentInformationException (msg);
+ else if (jerr == JVMTI_ERROR_INVALID_METHODID)
+ throw new InvalidMethodException (_methodId);
+ else
+ throw new JdwpInternalErrorException (msg);
+ }
+
+ jlongArray start_pcs = JvNewLongArray (num_slots);
+ jlong *start_pcs_ptr = elements (start_pcs);
+ jintArray lengths = JvNewIntArray (num_slots);
+ jint *lengths_ptr = elements (lengths);
+ jintArray slots = JvNewIntArray (num_slots);
+ jint *slots_ptr = elements (slots);
+ JArray<String *> *names = reinterpret_cast<JArray<String *> *>
+ (JvNewObjectArray (num_slots,
+ &String::class$, NULL));
+ jstring *names_ptr = elements (names);
+ JArray<String *> *signatures = reinterpret_cast<JArray<String *> *>
+ (JvNewObjectArray (num_slots,
+ &String::class$, NULL));
+ jstring *signatures_ptr = elements (signatures);
+
+ // Get the information out of the JVMTI strucutre and Deallocate the strings.
+ for (int i = 0; i < num_slots; i++)
+ {
+ start_pcs_ptr[i] = var_table[i].start_location;
+ lengths_ptr[i] = var_table[i].length;
+ slots_ptr[i] = var_table[i].slot;
+ names_ptr[i] = JvNewStringUTF (var_table[i].name);
+ env->Deallocate (reinterpret_cast<unsigned char *>
+ (var_table[i].name));
+ signatures_ptr[i] = JvNewStringUTF (var_table[i].signature);
+ env->Deallocate (reinterpret_cast<unsigned char *>
+ (var_table[i].signature));
+ env->Deallocate (reinterpret_cast<unsigned char *>
+ (var_table[i].generic_signature));
+ }
+
+ // Now Deallocate the table since it's strings have already been freed.
+ env->Deallocate (reinterpret_cast<unsigned char *> (var_table));
+
+ // Create the new JDWP VariableTable to return with the now filled arrays.
+ VariableTable* jdwp_vtable = new VariableTable (args_len, num_slots,
+ start_pcs, names, signatures,
+ lengths, slots);
+
+ return jdwp_vtable;
+}
diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc
new file mode 100644
index 000000000..7bd300b79
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc
@@ -0,0 +1,1159 @@
+// natVMVirtualMachine.cc - native support for VMVirtualMachine
+
+/* 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. */
+
+#include <config.h>
+#include <gcj/cni.h>
+#include <java-assert.h>
+#include <java-interp.h>
+#include <jvm.h>
+#include <jvmti.h>
+
+#include <java/lang/Class.h>
+#include <java/lang/ClassLoader.h>
+#include <java/lang/Integer.h>
+#include <java/lang/String.h>
+#include <java/lang/StringBuilder.h>
+#include <java/lang/Thread.h>
+#include <java/lang/Throwable.h>
+#include <java/nio/ByteBuffer.h>
+#include <java/nio/ByteBufferImpl.h>
+#include <java/util/ArrayList.h>
+#include <java/util/Collection.h>
+#include <java/util/Hashtable.h>
+#include <java/util/Iterator.h>
+
+#include <gnu/classpath/jdwp/Jdwp.h>
+#include <gnu/classpath/jdwp/JdwpConstants$StepDepth.h>
+#include <gnu/classpath/jdwp/JdwpConstants$StepSize.h>
+#include <gnu/classpath/jdwp/JdwpConstants$ThreadStatus.h>
+#include <gnu/classpath/jdwp/VMFrame.h>
+#include <gnu/classpath/jdwp/VMMethod.h>
+#include <gnu/classpath/jdwp/VMVirtualMachine.h>
+#include <gnu/classpath/jdwp/event/BreakpointEvent.h>
+#include <gnu/classpath/jdwp/event/ClassPrepareEvent.h>
+#include <gnu/classpath/jdwp/event/ExceptionEvent.h>
+#include <gnu/classpath/jdwp/event/EventManager.h>
+#include <gnu/classpath/jdwp/event/EventRequest.h>
+#include <gnu/classpath/jdwp/event/SingleStepEvent.h>
+#include <gnu/classpath/jdwp/event/ThreadEndEvent.h>
+#include <gnu/classpath/jdwp/event/ThreadStartEvent.h>
+#include <gnu/classpath/jdwp/event/VmDeathEvent.h>
+#include <gnu/classpath/jdwp/event/VmInitEvent.h>
+#include <gnu/classpath/jdwp/event/filters/IEventFilter.h>
+#include <gnu/classpath/jdwp/event/filters/LocationOnlyFilter.h>
+#include <gnu/classpath/jdwp/event/filters/StepFilter.h>
+#include <gnu/classpath/jdwp/exception/AbsentInformationException.h>
+#include <gnu/classpath/jdwp/exception/InvalidFrameException.h>
+#include <gnu/classpath/jdwp/exception/InvalidLocationException.h>
+#include <gnu/classpath/jdwp/exception/InvalidMethodException.h>
+#include <gnu/classpath/jdwp/exception/JdwpInternalErrorException.h>
+#include <gnu/classpath/jdwp/id/ThreadId.h>
+#include <gnu/classpath/jdwp/util/Location.h>
+#include <gnu/classpath/jdwp/util/MethodResult.h>
+#include <gnu/gcj/jvmti/Breakpoint.h>
+#include <gnu/gcj/jvmti/BreakpointManager.h>
+
+using namespace java::lang;
+using namespace gnu::classpath::jdwp::event;
+using namespace gnu::classpath::jdwp::util;
+
+// Stepping information
+struct step_info
+{
+ jint size; // See gnu.classpath.jdwp.JdwpConstants.StepSize
+ jint depth; // See gnu.classpath.jdwp.JdwpConstants.StepDepth
+ int stack_depth; // stack depth at start of stepping
+ jmethodID method; // method in which we are stepping
+};
+
+// Forward declarations
+static jvmtiError get_linetable (jvmtiEnv *, jmethodID, jint *,
+ jvmtiLineNumberEntry **);
+static Location *get_request_location (EventRequest *);
+static gnu::classpath::jdwp::event::filters::StepFilter *
+get_request_step_filter (EventRequest *);
+static void handle_single_step (jvmtiEnv *, struct step_info *, jthread,
+ jmethodID, jlocation);
+static void JNICALL jdwpBreakpointCB (jvmtiEnv *, JNIEnv *, jthread,
+ jmethodID, jlocation);
+static void JNICALL jdwpClassPrepareCB (jvmtiEnv *, JNIEnv *, jthread, jclass);
+static void JNICALL jdwpExceptionCB (jvmtiEnv *, JNIEnv *jni_env, jthread,
+ jmethodID, jlocation, jobject,
+ jmethodID, jlocation);
+static void JNICALL jdwpSingleStepCB (jvmtiEnv *, JNIEnv *, jthread,
+ jmethodID, jlocation);
+static void JNICALL jdwpThreadEndCB (jvmtiEnv *, JNIEnv *, jthread);
+static void JNICALL jdwpThreadStartCB (jvmtiEnv *, JNIEnv *, jthread);
+static void JNICALL jdwpVMDeathCB (jvmtiEnv *, JNIEnv *);
+static void JNICALL jdwpVMInitCB (jvmtiEnv *, JNIEnv *, jthread);
+static void throw_jvmti_error (jvmtiError);
+
+#define DEFINE_CALLBACK(Cb,Event) Cb.Event = jdwp ## Event ## CB
+#define DISABLE_EVENT(Event,Thread) \
+ _jdwp_jvmtiEnv->SetEventNotificationMode (JVMTI_DISABLE, \
+ JVMTI_EVENT_ ## Event, Thread)
+#define ENABLE_EVENT(Event,Thread) \
+ _jdwp_jvmtiEnv->SetEventNotificationMode (JVMTI_ENABLE, \
+ JVMTI_EVENT_ ## Event, Thread)
+// JVMTI environment
+static jvmtiEnv *_jdwp_jvmtiEnv;
+
+jvmtiEnv *
+_Jv_GetJDWP_JVMTIEnv (void)
+{
+ return _jdwp_jvmtiEnv;
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::initialize ()
+{
+ _jdwp_suspend_counts = new ::java::util::Hashtable ();
+ _stepping_threads = new ::java::util::Hashtable ();
+ _event_list = new ::java::util::ArrayList ();
+
+ JavaVM *vm = _Jv_GetJavaVM ();
+ union
+ {
+ void *ptr;
+ jvmtiEnv *env;
+ } foo;
+ vm->GetEnv (&(foo.ptr), JVMTI_VERSION_1_0);
+ _jdwp_jvmtiEnv = foo.env;
+
+ // Wait for VM_INIT to do more initialization
+ jvmtiEventCallbacks callbacks;
+ DEFINE_CALLBACK (callbacks, VMInit);
+ _jdwp_jvmtiEnv->SetEventCallbacks (&callbacks, sizeof (callbacks));
+ ENABLE_EVENT (VM_INIT, NULL);
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::suspendThread (Thread *thread)
+{
+ jint value;
+ Integer *count;
+ {
+ JvSynchronize dummy (_jdwp_suspend_counts);
+ count = reinterpret_cast<Integer *> (_jdwp_suspend_counts->get (thread));
+ if (count == NULL)
+ {
+ // New -- suspend thread
+ value = 0;
+ }
+ else
+ {
+ // Thread already suspended
+ value = count->intValue ();
+ }
+
+ count = Integer::valueOf (++value);
+ _jdwp_suspend_counts->put (thread, count);
+ }
+
+ if (value == 1)
+ {
+ // Suspend the thread
+ jvmtiError err = _jdwp_jvmtiEnv->SuspendThread (thread);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ using namespace gnu::gcj::runtime;
+ using namespace gnu::classpath::jdwp::exception;
+ char *reason;
+ _jdwp_jvmtiEnv->GetErrorName (err, &reason);
+ String *txt = JvNewStringLatin1 ("could not suspend thread: ");
+ StringBuilder *msg = new StringBuilder (txt);
+ msg->append (JvNewStringLatin1 (reason));
+ _jdwp_jvmtiEnv->Deallocate ((unsigned char *) reason);
+ throw new JdwpInternalErrorException (msg->toString ());
+ }
+ }
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::resumeThread (Thread *thread)
+{
+ jint value;
+ {
+ JvSynchronize dummy (_jdwp_suspend_counts);
+ Integer *count
+ = reinterpret_cast<Integer *> (_jdwp_suspend_counts->get (thread));
+ if (count == NULL)
+ {
+ // Thread not suspended: ThreadReference.Resume says to ignore it.
+ return;
+ }
+ else
+ {
+ // Decrement suspend count
+ value = count->intValue () - 1;
+ }
+
+ if (value == 0)
+ {
+ // Thread will be resumed, remove from table
+ _jdwp_suspend_counts->remove (thread);
+ }
+ else
+ {
+ // Thread stays suspended: record new suspend count
+ count = Integer::valueOf (value);
+ _jdwp_suspend_counts->put (thread, count);
+ }
+ }
+
+ if (value == 0)
+ {
+ jvmtiError err = _jdwp_jvmtiEnv->ResumeThread (thread);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ using namespace gnu::gcj::runtime;
+ using namespace gnu::classpath::jdwp::exception;
+ char *reason;
+ _jdwp_jvmtiEnv->GetErrorName (err, &reason);
+ String *txt = JvNewStringLatin1 ("could not resume thread: ");
+ StringBuilder *msg = new StringBuilder (txt);
+ msg->append (JvNewStringLatin1 (reason));
+ _jdwp_jvmtiEnv->Deallocate ((unsigned char *) reason);
+ throw new JdwpInternalErrorException (msg->toString ());
+ }
+ }
+}
+
+jint
+gnu::classpath::jdwp::VMVirtualMachine::getSuspendCount (Thread *thread)
+{
+ jint suspensions = 0;
+ Integer *count
+ = reinterpret_cast<Integer *> (_jdwp_suspend_counts->get (thread));
+ if (count != NULL)
+ suspensions = count->intValue ();
+ return suspensions;
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::registerEvent (EventRequest *request)
+{
+ switch (request->getEventKind ())
+ {
+ case EventRequest::EVENT_SINGLE_STEP:
+ {
+ Thread *thread;
+ filters::StepFilter *filter = get_request_step_filter (request);
+ if (filter == NULL)
+ {
+ // No filter specified: report every step in every
+ // thread.
+ thread = NULL;
+ }
+ else
+ {
+ // Add stepping information to list of stepping threads
+ thread = filter->getThread ()->getThread ();
+ _Jv_InterpFrame *frame
+ = reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
+ struct step_info *sinfo
+ = (struct step_info *) JvAllocBytes (sizeof (struct step_info));
+ sinfo->size = filter->getSize ();
+ sinfo->depth = filter->getDepth ();
+ sinfo->stack_depth = frame->depth ();
+ sinfo->method = frame->self->get_method ();
+ _stepping_threads->put (thread, (jobject) sinfo);
+ }
+
+ ENABLE_EVENT (SINGLE_STEP, thread);
+ }
+ break;
+
+ case EventRequest::EVENT_BREAKPOINT:
+ {
+ using namespace ::gnu::gcj::jvmti;
+ Location *loc = get_request_location (request);
+ if (loc == NULL)
+ {
+ using namespace gnu::classpath::jdwp::exception;
+ throw new InvalidLocationException ();
+ }
+
+ jlong method = loc->getMethod ()->getId ();
+ jlocation index = loc->getIndex ();
+ Breakpoint *bp = BreakpointManager::getBreakpoint (method, index);
+ if (bp == NULL)
+ {
+ // Breakpoint not in interpreter yet
+ bp = BreakpointManager::newBreakpoint (method, index);
+ }
+ else
+ {
+ // Ignore the duplicate
+ }
+ }
+ break;
+
+ case EventRequest::EVENT_FRAME_POP:
+ break;
+
+ case EventRequest::EVENT_EXCEPTION:
+ break;
+
+ case EventRequest::EVENT_USER_DEFINED:
+ break;
+
+ case EventRequest::EVENT_THREAD_START:
+ break;
+
+ case EventRequest::EVENT_THREAD_END:
+ break;
+
+ case EventRequest::EVENT_CLASS_PREPARE:
+ break;
+
+ case EventRequest::EVENT_CLASS_LOAD:
+ break;
+
+ case EventRequest::EVENT_CLASS_UNLOAD:
+ break;
+
+ case EventRequest::EVENT_FIELD_ACCESS:
+ break;
+
+ case EventRequest::EVENT_FIELD_MODIFY:
+ break;
+
+ case EventRequest::EVENT_METHOD_ENTRY:
+ break;
+
+ case EventRequest::EVENT_METHOD_EXIT:
+ break;
+
+ case EventRequest::EVENT_VM_INIT:
+ break;
+
+ case EventRequest::EVENT_VM_DEATH:
+ break;
+ }
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::unregisterEvent (EventRequest *request)
+{
+ switch (request->getEventKind ())
+ {
+ case EventRequest::EVENT_SINGLE_STEP:
+ {
+ Thread *thread;
+ filters::StepFilter *filter = get_request_step_filter (request);
+ if (filter == NULL)
+ thread = NULL;
+ else
+ {
+ thread = filter->getThread ()->getThread ();
+ _stepping_threads->remove (thread);
+ }
+
+ DISABLE_EVENT (SINGLE_STEP, thread);
+ }
+ break;
+
+ case EventRequest::EVENT_BREAKPOINT:
+ {
+ using namespace gnu::gcj::jvmti;
+ ::java::util::Collection *breakpoints;
+ EventManager *em = EventManager::getDefault ();
+ breakpoints = em->getRequests (EventRequest::EVENT_BREAKPOINT);
+
+ // Check for duplicates
+ int matches = 0;
+ Location *the_location = get_request_location (request);
+
+ // This should not be possible: we REQUIRE a Location
+ // to install a breakpoint
+ JvAssert (the_location != NULL);
+
+ ::java::util::Iterator *iter = breakpoints->iterator ();
+ while (iter->hasNext ())
+ {
+ EventRequest *er
+ = reinterpret_cast<EventRequest *> (iter->next ());
+ Location *loc = get_request_location (er);
+ JvAssert (loc != NULL);
+ if (loc->equals (the_location) && ++matches == 2)
+ {
+ // Short-circuit: already more than one breakpoint
+ return;
+ }
+ }
+
+ if (matches == 0)
+ {
+ using namespace gnu::classpath::jdwp::exception;
+ jstring msg
+ = JvNewStringLatin1 ("attempt to remove unknown breakpoint");
+ throw new JdwpInternalErrorException (msg);
+ }
+
+ jlong methodId = the_location->getMethod ()->getId ();
+ BreakpointManager::deleteBreakpoint (methodId,
+ the_location->getIndex ());
+ }
+ break;
+
+ case EventRequest::EVENT_FRAME_POP:
+ break;
+
+ case EventRequest::EVENT_EXCEPTION:
+ break;
+
+ case EventRequest::EVENT_USER_DEFINED:
+ break;
+
+ case EventRequest::EVENT_THREAD_START:
+ break;
+
+ case EventRequest::EVENT_THREAD_END:
+ break;
+
+ case EventRequest::EVENT_CLASS_PREPARE:
+ break;
+
+ case EventRequest::EVENT_CLASS_LOAD:
+ break;
+
+ case EventRequest::EVENT_CLASS_UNLOAD:
+ break;
+
+ case EventRequest::EVENT_FIELD_ACCESS:
+ break;
+
+ case EventRequest::EVENT_FIELD_MODIFY:
+ break;
+
+ case EventRequest::EVENT_METHOD_ENTRY:
+ break;
+
+ case EventRequest::EVENT_METHOD_EXIT:
+ break;
+
+ case EventRequest::EVENT_VM_INIT:
+ break;
+
+ case EventRequest::EVENT_VM_DEATH:
+ break;
+ }
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::clearEvents (MAYBE_UNUSED jbyte kind)
+{
+}
+
+java::util::Collection *
+gnu::classpath::jdwp::VMVirtualMachine::getAllLoadedClasses (void)
+{
+ using namespace ::java::util;
+ return (Collection *) new ArrayList ();
+}
+
+jint
+gnu::classpath::jdwp::VMVirtualMachine::
+getClassStatus (jclass klass)
+{
+ jint flags = 0;
+ jvmtiError err = _jdwp_jvmtiEnv->GetClassStatus (klass, &flags);
+ if (err != JVMTI_ERROR_NONE)
+ throw_jvmti_error (err);
+
+ using namespace gnu::classpath::jdwp::event;
+ jint status = 0;
+ if (flags & JVMTI_CLASS_STATUS_VERIFIED)
+ status |= ClassPrepareEvent::STATUS_VERIFIED;
+ if (flags & JVMTI_CLASS_STATUS_PREPARED)
+ status |= ClassPrepareEvent::STATUS_PREPARED;
+ if (flags & JVMTI_CLASS_STATUS_ERROR)
+ status |= ClassPrepareEvent::STATUS_ERROR;
+ if (flags & JVMTI_CLASS_STATUS_INITIALIZED)
+ status |= ClassPrepareEvent::STATUS_INITIALIZED;
+
+ return status;
+}
+
+JArray<gnu::classpath::jdwp::VMMethod *> *
+gnu::classpath::jdwp::VMVirtualMachine::
+getAllClassMethods (jclass klass)
+{
+ jint count;
+ jmethodID *methods;
+ jvmtiError err = _jdwp_jvmtiEnv->GetClassMethods (klass, &count, &methods);
+ if (err != JVMTI_ERROR_NONE)
+ throw_jvmti_error (err);
+
+ JArray<VMMethod *> *result
+ = (JArray<VMMethod *> *) JvNewObjectArray (count,
+ &VMMethod::class$, NULL);
+ VMMethod **rmeth = elements (result);
+ for (int i = 0; i < count; ++i)
+ {
+ jlong id = reinterpret_cast<jlong> (methods[i]);
+ rmeth[i] = getClassMethod (klass, id);
+ }
+
+ _jdwp_jvmtiEnv->Deallocate ((unsigned char *) methods);
+ return result;
+}
+
+gnu::classpath::jdwp::VMMethod *
+gnu::classpath::jdwp::VMVirtualMachine::
+getClassMethod (jclass klass, jlong id)
+{
+ jint count;
+ jmethodID *methods;
+ jvmtiError err = _jdwp_jvmtiEnv->GetClassMethods (klass, &count, &methods);
+ if (err != JVMTI_ERROR_NONE)
+ throw_jvmti_error (err);
+
+ jmethodID meth_id = reinterpret_cast<jmethodID> (id);
+
+ using namespace gnu::classpath::jdwp;
+
+ // Check if this method is defined for the given class and if so return a
+ // VMMethod representing it.
+ for (int i = 0; i < count; i++)
+ {
+ if (methods[i] == meth_id)
+ return new VMMethod (klass, reinterpret_cast<jlong> (meth_id));
+ }
+
+ throw new exception::InvalidMethodException (id);
+}
+
+java::util::ArrayList *
+gnu::classpath::jdwp::VMVirtualMachine::getFrames (Thread *thread, jint start,
+ jint length)
+{
+ jint frame_count = getFrameCount (thread);
+ ::java::util::ArrayList *frame_list;
+
+ // Calculate the max number of frames to be returned.
+ jint num_frames = frame_count - start;
+
+ // Check if num_frames is valid.
+ if (num_frames < 0)
+ num_frames = 0;
+
+ // Check if there are more than length frames left after start.
+ // If length ios -1 return all remaining frames.
+ if (length != -1 && num_frames > length)
+ num_frames = length;
+
+ frame_list = new ::java::util::ArrayList (num_frames);
+
+ _Jv_Frame *vm_frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
+
+ // Take start frames off the top of the stack
+ while (vm_frame != NULL && start > 0)
+ {
+ start--;
+ vm_frame = vm_frame->next;
+ }
+
+ // Use as a counter for the number of frames returned.
+ num_frames = 0;
+
+ while (vm_frame != NULL && (num_frames < length || length == -1))
+ {
+ jlong frameId = reinterpret_cast<jlong> (vm_frame);
+
+ VMFrame *frame = getFrame (thread, frameId);
+ frame_list->add (frame);
+ vm_frame = vm_frame->next;
+ num_frames++;
+ }
+
+ return frame_list;
+}
+
+gnu::classpath::jdwp::VMFrame *
+gnu::classpath::jdwp::VMVirtualMachine::
+getFrame (Thread *thread, jlong frameID)
+{
+ using namespace gnu::classpath::jdwp::exception;
+
+ _Jv_Frame *vm_frame = (_Jv_Frame *) thread->frame;
+ jint depth = 0;
+ _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (frameID);
+
+ // We need to find the stack depth of the frame, so search through the call
+ // stack to find it. This also checks for a valid frameID.
+ while (vm_frame != frame)
+ {
+ vm_frame = vm_frame->next;
+ depth++;
+ if (vm_frame == NULL)
+ throw new InvalidFrameException (frameID);
+ }
+
+ Location *loc = NULL;
+ jvmtiFrameInfo info;
+ jvmtiError jerr;
+ jint num_frames;
+ jclass klass;
+
+ // Get the info for the frame of interest
+ jerr = _jdwp_jvmtiEnv->GetStackTrace (thread, depth, 1, &info, &num_frames);
+
+ if (jerr != JVMTI_ERROR_NONE)
+ throw_jvmti_error (jerr);
+
+ jerr = _jdwp_jvmtiEnv->GetMethodDeclaringClass (info.method, &klass);
+
+ if (jerr != JVMTI_ERROR_NONE)
+ throw_jvmti_error (jerr);
+
+ VMMethod *meth
+ = getClassMethod (klass, reinterpret_cast<jlong> (info.method));
+
+ jobject this_obj;
+
+ if (info.location == -1)
+ {
+ loc = new Location (meth, 0);
+ this_obj = NULL;
+ }
+ else
+ {
+ loc = new Location (meth, info.location);
+ _Jv_InterpFrame *iframe = reinterpret_cast<_Jv_InterpFrame *> (vm_frame);
+ this_obj = iframe->get_this_ptr ();
+ }
+
+ return new VMFrame (thread, reinterpret_cast<jlong> (vm_frame), loc,
+ this_obj);
+}
+
+jint
+gnu::classpath::jdwp::VMVirtualMachine::
+getFrameCount (Thread *thread)
+{
+ jint frame_count;
+
+ jvmtiError jerr = _jdwp_jvmtiEnv->GetFrameCount (thread, &frame_count);
+
+ if (jerr != JVMTI_ERROR_NONE)
+ throw_jvmti_error (jerr);
+
+ return frame_count;
+}
+
+jint
+gnu::classpath::jdwp::VMVirtualMachine::
+getThreadStatus (Thread *thread)
+{
+ jint thr_state, status;
+
+ jvmtiError jerr = _jdwp_jvmtiEnv->GetThreadState (thread, &thr_state);
+ if (jerr != JVMTI_ERROR_NONE)
+ throw_jvmti_error (jerr);
+
+ if (thr_state & JVMTI_THREAD_STATE_SLEEPING)
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::SLEEPING;
+ else if (thr_state & JVMTI_THREAD_STATE_RUNNABLE)
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::RUNNING;
+ else if (thr_state & JVMTI_THREAD_STATE_WAITING)
+ {
+ if (thr_state & (JVMTI_THREAD_STATE_IN_OBJECT_WAIT
+ | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER))
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::MONITOR;
+ else
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::WAIT;
+ }
+ else
+ {
+ // The thread is not SLEEPING, MONITOR, or WAIT. It may, however, be
+ // alive but not yet started.
+ if (!(thr_state & (JVMTI_THREAD_STATE_ALIVE
+ | JVMTI_THREAD_STATE_TERMINATED)))
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::RUNNING;
+ status = gnu::classpath::jdwp::JdwpConstants$ThreadStatus::ZOMBIE;
+ }
+
+ return status;
+}
+
+java::util::ArrayList *
+gnu::classpath::jdwp::VMVirtualMachine::
+getLoadRequests (MAYBE_UNUSED ClassLoader *cl)
+{
+ return new ::java::util::ArrayList ();
+}
+
+MethodResult *
+gnu::classpath::jdwp::VMVirtualMachine::
+executeMethod (MAYBE_UNUSED jobject obj, MAYBE_UNUSED Thread *thread,
+ MAYBE_UNUSED jclass clazz, MAYBE_UNUSED VMMethod *method,
+ MAYBE_UNUSED JArray<value::Value *> *values,
+ MAYBE_UNUSED jint options)
+{
+ return NULL;
+}
+
+jstring
+gnu::classpath::jdwp::VMVirtualMachine::
+getSourceFile (jclass clazz)
+{
+ jstring file = _Jv_GetInterpClassSourceFile (clazz);
+
+ // Check if the source file was found.
+ if (file == NULL)
+ throw new exception::AbsentInformationException (
+ _Jv_NewStringUTF("Source file not found"));
+
+ return file;
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::
+redefineClasses (MAYBE_UNUSED JArray<jclass> *types,
+ MAYBE_UNUSED JArray<jbyteArray> *bytecodes)
+{
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::
+setDefaultStratum (MAYBE_UNUSED jstring stratum)
+{
+}
+
+jstring
+gnu::classpath::jdwp::VMVirtualMachine::
+getSourceDebugExtension (MAYBE_UNUSED jclass klass)
+{
+ return NULL;
+}
+
+jbyteArray
+gnu::classpath::jdwp::VMVirtualMachine::
+getBytecodes (MAYBE_UNUSED gnu::classpath::jdwp::VMMethod *method)
+{
+ return NULL;
+}
+
+gnu::classpath::jdwp::util::MonitorInfo *
+gnu::classpath::jdwp::VMVirtualMachine::
+getMonitorInfo (MAYBE_UNUSED jobject obj)
+{
+ return NULL;
+}
+
+jobjectArray
+gnu::classpath::jdwp::VMVirtualMachine::
+getOwnedMonitors (MAYBE_UNUSED ::java::lang::Thread *thread)
+{
+ return NULL;
+}
+
+jobject
+gnu::classpath::jdwp::VMVirtualMachine::
+getCurrentContendedMonitor (MAYBE_UNUSED ::java::lang::Thread *thread)
+{
+ return NULL;
+}
+
+void
+gnu::classpath::jdwp::VMVirtualMachine::
+popFrames (MAYBE_UNUSED ::java::lang::Thread *thread,
+ MAYBE_UNUSED jlong frameId)
+{
+}
+
+// A simple caching function used while single-stepping
+static jvmtiError
+get_linetable (jvmtiEnv *env, jmethodID method, jint *count_ptr,
+ jvmtiLineNumberEntry **table_ptr)
+{
+ static jint last_count = 0;
+ static jvmtiLineNumberEntry *last_table = NULL;
+ static jmethodID last_method = 0;
+
+ if (method == last_method)
+ {
+ *count_ptr = last_count;
+ *table_ptr = last_table;
+ return JVMTI_ERROR_NONE;
+ }
+
+ jvmtiError err;
+ jint count;
+ jvmtiLineNumberEntry *table;
+ err = env->GetLineNumberTable (method, &count, &table);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ // Keep last table in cache
+ return err;
+ }
+
+ env->Deallocate ((unsigned char *) last_table);
+ last_table = *table_ptr = table;
+ last_count = *count_ptr = count;
+ return JVMTI_ERROR_NONE;
+}
+
+static gnu::classpath::jdwp::event::filters::StepFilter *
+get_request_step_filter (EventRequest *request)
+{
+ ::java::util::Collection *filters = request->getFilters ();
+ ::java::util::Iterator *iter = filters->iterator ();
+ filters::StepFilter *filter = NULL;
+ while (iter->hasNext ())
+ {
+ using namespace gnu::classpath::jdwp::event::filters;
+ IEventFilter *next = (IEventFilter *) iter->next ();
+ if (next->getClass () == &StepFilter::class$)
+ {
+ filter = reinterpret_cast<StepFilter *> (next);
+ break;
+ }
+ }
+
+ return filter;
+}
+
+static Location *
+get_request_location (EventRequest *request)
+{
+ Location *loc = NULL;
+ ::java::util::Collection *filters = request->getFilters ();
+ ::java::util::Iterator *iter = filters->iterator ();
+ while (iter->hasNext ())
+ {
+ using namespace gnu::classpath::jdwp::event::filters;
+ IEventFilter *filter = (IEventFilter *) iter->next ();
+ if (filter->getClass () == &LocationOnlyFilter::class$)
+ {
+ LocationOnlyFilter *lof
+ = reinterpret_cast<LocationOnlyFilter *> (filter);
+ loc = lof->getLocation ();
+ }
+ }
+
+ return loc;
+}
+
+static void
+handle_single_step (jvmtiEnv *env, struct step_info *sinfo, jthread thread,
+ jmethodID method, jlocation location)
+{
+ using namespace gnu::classpath::jdwp;
+
+ if (sinfo == NULL || sinfo->size == JdwpConstants$StepSize::MIN)
+ {
+ // Stop now
+ goto send_notification;
+ }
+ else
+ {
+ // Check if we're on a new source line
+ /* This is a little inefficient when we're stepping OVER,
+ but this must be done when stepping INTO. */
+ jint count;
+ jvmtiLineNumberEntry *table;
+ if (get_linetable (env, method, &count, &table) == JVMTI_ERROR_NONE)
+ {
+ jint i;
+ for (i = 0; i < count; ++i)
+ {
+ if (table[i].start_location == location)
+ {
+ // This is the start of a new line -- stop
+ goto send_notification;
+ }
+ }
+
+ // Not at a new source line -- just keep stepping
+ return;
+ }
+ else
+ {
+ /* Something went wrong: either "absent information"
+ or "out of memory" ("invalid method id" and "native
+ method" aren't possible -- those are validated before
+ single stepping is enabled).
+
+ Do what gdb does: just keep going. */
+ return;
+ }
+ }
+
+ send_notification:
+ jclass klass;
+ jvmtiError err = env->GetMethodDeclaringClass (method, &klass);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ fprintf (stderr, "libgcj: internal error: could not find class for method while single stepping -- continuing\n");
+ return;
+ }
+
+ VMMethod *vmmethod = new VMMethod (klass, reinterpret_cast<jlong> (method));
+ Location *loc = new Location (vmmethod, location);
+ _Jv_InterpFrame *iframe
+ = reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
+ JvAssert (iframe->frame_type == frame_interpreter);
+ jobject instance = iframe->get_this_ptr ();
+ event::SingleStepEvent *event
+ = new event::SingleStepEvent (thread, loc, instance);
+
+ // We only want to send the notification (and consequently
+ // suspend) if we are not about to execute a breakpoint.
+ _Jv_InterpMethod *im = reinterpret_cast<_Jv_InterpMethod *> (iframe->self);
+ if (im->breakpoint_at (location))
+ {
+ // Next insn is a breakpoint -- record event and
+ // wait for the JVMTI breakpoint notification to
+ // enforce a suspension policy.
+ VMVirtualMachine::_event_list->add (event);
+ }
+ else
+ {
+ // Next insn is not a breakpoint, so send notification
+ // and enforce the suspend policy.
+ Jdwp::notify (event);
+ }
+}
+
+static void
+throw_jvmti_error (jvmtiError err)
+{
+ char *error;
+ jstring msg;
+ if (_jdwp_jvmtiEnv->GetErrorName (err, &error) == JVMTI_ERROR_NONE)
+ {
+ msg = JvNewStringLatin1 (error);
+ _jdwp_jvmtiEnv->Deallocate ((unsigned char *) error);
+ }
+ else
+ msg = JvNewStringLatin1 ("out of memory");
+
+ using namespace gnu::classpath::jdwp::exception;
+ throw new JdwpInternalErrorException (msg);
+}
+
+static void JNICALL
+jdwpBreakpointCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+ jthread thread, jmethodID method, jlocation location)
+{
+ jclass klass;
+ jvmtiError err;
+ err = env->GetMethodDeclaringClass (method, &klass);
+ JvAssert (err == JVMTI_ERROR_NONE);
+
+ using namespace gnu::classpath::jdwp;
+ using namespace gnu::classpath::jdwp::event;
+
+ jlong methodId = reinterpret_cast<jlong> (method);
+ VMMethod *meth = VMVirtualMachine::getClassMethod (klass, methodId);
+ Location *loc = new Location (meth, location);
+ _Jv_InterpFrame *iframe
+ = reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
+ JvAssert (iframe->frame_type == frame_interpreter);
+ jobject instance = iframe->get_this_ptr ();
+ BreakpointEvent *event = new BreakpointEvent (thread, loc, instance);
+
+ VMVirtualMachine::_event_list->add (event);
+ JArray<Event *> *events
+ = ((JArray<Event *> *)
+ JvNewObjectArray (VMVirtualMachine::_event_list->size (),
+ &Event::class$, NULL));
+ VMVirtualMachine::_event_list->toArray ((jobjectArray) events);
+ VMVirtualMachine::_event_list->clear ();
+ Jdwp::notify (events);
+}
+
+static void JNICALL
+jdwpClassPrepareCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+ jthread thread, jclass klass)
+{
+ using namespace gnu::classpath::jdwp;
+
+ jint status = VMVirtualMachine::getClassStatus (klass);
+ event::ClassPrepareEvent *event
+ = new event::ClassPrepareEvent (thread, klass, status);
+ Jdwp::notify (event);
+}
+
+static void JNICALL
+jdwpExceptionCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env, jthread thread,
+ jmethodID method, jlocation location, jobject exception,
+ jmethodID catch_method, jlocation catch_location)
+{
+ using namespace gnu::classpath::jdwp;
+ jclass throw_klass;
+ jvmtiError err = env->GetMethodDeclaringClass (method, &throw_klass);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ fprintf (stderr, "libgcj: internal error: could not find class for ");
+ fprintf (stderr, "method throwing exception -- continuing\n");
+ return;
+ }
+
+ VMMethod *vmmethod = new VMMethod (throw_klass,
+ reinterpret_cast<jlong> (method));
+ Location *throw_loc = new Location (vmmethod, location);
+ Location *catch_loc = NULL;
+ if (catch_method == 0)
+ catch_loc = Location::getEmptyLocation ();
+ else
+ {
+ jclass catch_klass;
+ err = env->GetMethodDeclaringClass (catch_method, &catch_klass);
+ if (err != JVMTI_ERROR_NONE)
+ {
+ fprintf (stderr,
+ "libgcj: internal error: could not find class for ");
+ fprintf (stderr,
+ "method catching exception -- ignoring\n");
+ }
+ else
+ {
+ vmmethod = new VMMethod (catch_klass,
+ reinterpret_cast<jlong> (catch_method));
+ catch_loc = new Location (vmmethod, catch_location);
+ }
+ }
+
+ _Jv_InterpFrame *iframe
+ = reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
+ jobject instance = (iframe == NULL) ? NULL : iframe->get_this_ptr ();
+ Throwable *throwable = reinterpret_cast<Throwable *> (exception);
+ event::ExceptionEvent *e = new ExceptionEvent (throwable, thread,
+ throw_loc, catch_loc,
+ throw_klass, instance);
+ Jdwp::notify (e);
+}
+
+static void JNICALL
+jdwpSingleStepCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env, jthread thread,
+ jmethodID method, jlocation location)
+{
+ jobject si =
+ gnu::classpath::jdwp::VMVirtualMachine::_stepping_threads->get (thread);
+ struct step_info *sinfo = reinterpret_cast<struct step_info *> (si);
+
+ if (sinfo == NULL)
+ {
+ // no step filter for this thread - simply report it
+ handle_single_step (env, NULL, thread, method, location);
+ }
+ else
+ {
+ // A step filter exists for this thread
+ using namespace gnu::classpath::jdwp;
+
+ _Jv_InterpFrame *frame
+ = reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
+
+ switch (sinfo->depth)
+ {
+ case JdwpConstants$StepDepth::INTO:
+ /* This is the easy case. We ignore the method and
+ simply stop at either the next insn, or the next source
+ line. */
+ handle_single_step (env, sinfo, thread, method, location);
+ break;
+
+ case JdwpConstants$StepDepth::OVER:
+ /* This is also a pretty easy case. We just make sure that
+ the methods are the same and that we are at the same
+ stack depth, but we should also stop on the next
+ insn/line if the stack depth is LESS THAN it was when
+ we started stepping. */
+ if (method == sinfo->method)
+ {
+ // Still in the same method -- must be at same stack depth
+ // to avoid confusion with recursive methods.
+ if (frame->depth () == sinfo->stack_depth)
+ handle_single_step (env, sinfo, thread, method, location);
+ }
+ else if (frame->depth () < sinfo->stack_depth)
+ {
+ // The method in which we were stepping was popped off
+ // the stack. We simply need to stop at the next insn/line.
+ handle_single_step (env, sinfo, thread, method, location);
+ }
+ break;
+
+ case JdwpConstants$StepDepth::OUT:
+ // All we need to do is check the stack depth
+ if (sinfo->stack_depth > frame->depth ())
+ handle_single_step (env, sinfo, thread, method, location);
+ break;
+
+ default:
+ /* This should not happen. The JDWP back-end should have
+ validated the StepFilter. */
+ fprintf (stderr,
+ "libgcj: unknown step depth while single stepping\n");
+ return;
+ }
+ }
+}
+
+static void JNICALL
+jdwpThreadEndCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+ jthread thread)
+{
+ using namespace gnu::classpath::jdwp::event;
+
+ ThreadEndEvent *e = new ThreadEndEvent (thread);
+ gnu::classpath::jdwp::Jdwp::notify (e);
+}
+
+static void JNICALL
+jdwpThreadStartCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+ jthread thread)
+{
+ using namespace gnu::classpath::jdwp::event;
+
+ ThreadStartEvent *e = new ThreadStartEvent (thread);
+ gnu::classpath::jdwp::Jdwp::notify (e);
+}
+
+static void JNICALL
+jdwpVMDeathCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env)
+{
+ using namespace gnu::classpath::jdwp::event;
+ gnu::classpath::jdwp::Jdwp::notify (new VmDeathEvent ());
+}
+
+static void JNICALL
+jdwpVMInitCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+ jthread thread)
+{
+ // The VM is now initialized, add our callbacks
+ jvmtiEventCallbacks callbacks;
+ DEFINE_CALLBACK (callbacks, Breakpoint);
+ DEFINE_CALLBACK (callbacks, ClassPrepare);
+ DEFINE_CALLBACK (callbacks, Exception);
+ DEFINE_CALLBACK (callbacks, SingleStep);
+ DEFINE_CALLBACK (callbacks, ThreadEnd);
+ DEFINE_CALLBACK (callbacks, ThreadStart);
+ DEFINE_CALLBACK (callbacks, VMDeath);
+ _jdwp_jvmtiEnv->SetEventCallbacks (&callbacks, sizeof (callbacks));
+
+ // Enable callbacks
+ ENABLE_EVENT (BREAKPOINT, NULL);
+ ENABLE_EVENT (CLASS_PREPARE, NULL);
+ ENABLE_EVENT (EXCEPTION, NULL);
+ // SingleStep is enabled only when needed
+ ENABLE_EVENT (THREAD_END, NULL);
+ ENABLE_EVENT (THREAD_START, NULL);
+ ENABLE_EVENT (VM_DEATH, NULL);
+
+ // Send JDWP VMInit
+ using namespace gnu::classpath::jdwp::event;
+ gnu::classpath::jdwp::Jdwp::notify (new VmInitEvent (thread));
+}
diff --git a/libjava/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.h
new file mode 100644
index 000000000..4bf187cda
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ArrayReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ArrayReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ArrayReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ArrayReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ArrayReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeLength(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeGetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ArrayReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ArrayTypeCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ArrayTypeCommandSet.h
new file mode 100644
index 000000000..6d7864aa4
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ArrayTypeCommandSet.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ArrayTypeCommandSet__
+#define __gnu_classpath_jdwp_processor_ArrayTypeCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ArrayTypeCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ArrayTypeCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ArrayTypeCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+ virtual void executeNewInstance(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ArrayTypeCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.h
new file mode 100644
index 000000000..3395a0eed
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ClassLoaderReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ClassLoaderReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ClassLoaderReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ClassLoaderReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ClassLoaderReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+ virtual void executeVisibleClasses(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ClassLoaderReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.h
new file mode 100644
index 000000000..67b4583a7
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ClassObjectReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ClassObjectReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ClassObjectReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ClassObjectReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ClassObjectReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+ virtual void executeReflectedType(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ClassObjectReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ClassTypeCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ClassTypeCommandSet.h
new file mode 100644
index 000000000..6967d32d7
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ClassTypeCommandSet.h
@@ -0,0 +1,54 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ClassTypeCommandSet__
+#define __gnu_classpath_jdwp_processor_ClassTypeCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ClassTypeCommandSet;
+ }
+ namespace util
+ {
+ class MethodResult;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ClassTypeCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ClassTypeCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeSuperclass(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeInvokeMethod(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeNewInstance(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ ::gnu::classpath::jdwp::util::MethodResult * invokeMethod(::java::nio::ByteBuffer *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ClassTypeCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/CommandSet.h b/libjava/gnu/classpath/jdwp/processor/CommandSet.h
new file mode 100644
index 000000000..6833202db
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/CommandSet.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_CommandSet__
+#define __gnu_classpath_jdwp_processor_CommandSet__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMIdManager;
+ namespace processor
+ {
+ class CommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::CommandSet : public ::java::lang::Object
+{
+
+public:
+ CommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte) = 0;
+public: // actually protected
+ ::gnu::classpath::jdwp::VMIdManager * __attribute__((aligned(__alignof__( ::java::lang::Object)))) idMan;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_CommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/EventRequestCommandSet.h b/libjava/gnu/classpath/jdwp/processor/EventRequestCommandSet.h
new file mode 100644
index 000000000..8a86b7bc9
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/EventRequestCommandSet.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_EventRequestCommandSet__
+#define __gnu_classpath_jdwp_processor_EventRequestCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class EventRequestCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::EventRequestCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ EventRequestCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeSet(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClear(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClearAllBreakpoints(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_EventRequestCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/FieldCommandSet.h b/libjava/gnu/classpath/jdwp/processor/FieldCommandSet.h
new file mode 100644
index 000000000..443cede87
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/FieldCommandSet.h
@@ -0,0 +1,43 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_FieldCommandSet__
+#define __gnu_classpath_jdwp_processor_FieldCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class FieldCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::FieldCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ FieldCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_FieldCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.h b/libjava/gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.h
new file mode 100644
index 000000000..2348e7966
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.h
@@ -0,0 +1,43 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_InterfaceTypeCommandSet__
+#define __gnu_classpath_jdwp_processor_InterfaceTypeCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class InterfaceTypeCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::InterfaceTypeCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ InterfaceTypeCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_InterfaceTypeCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/MethodCommandSet.h b/libjava/gnu/classpath/jdwp/processor/MethodCommandSet.h
new file mode 100644
index 000000000..3dc3a67fa
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/MethodCommandSet.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_MethodCommandSet__
+#define __gnu_classpath_jdwp_processor_MethodCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class MethodCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::MethodCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ MethodCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeLineTable(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeVariableTable(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeByteCodes(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeIsObsolete(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeVariableTableWithGeneric(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_MethodCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.h
new file mode 100644
index 000000000..74a7aaa24
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.h
@@ -0,0 +1,53 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ObjectReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ObjectReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ObjectReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ObjectReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ObjectReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeReferenceType(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeGetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeMonitorInfo(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeInvokeMethod(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeDisableCollection(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeEnableCollection(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeIsCollected(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ObjectReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/PacketProcessor.h b/libjava/gnu/classpath/jdwp/processor/PacketProcessor.h
new file mode 100644
index 000000000..d2e5057e3
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/PacketProcessor.h
@@ -0,0 +1,52 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_PacketProcessor__
+#define __gnu_classpath_jdwp_processor_PacketProcessor__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class CommandSet;
+ class PacketProcessor;
+ }
+ namespace transport
+ {
+ class JdwpConnection;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::PacketProcessor : public ::java::lang::Object
+{
+
+public:
+ PacketProcessor(::gnu::classpath::jdwp::transport::JdwpConnection *);
+ virtual ::java::lang::Object * run();
+ virtual void shutdown();
+private:
+ void _processOnePacket();
+ ::gnu::classpath::jdwp::transport::JdwpConnection * __attribute__((aligned(__alignof__( ::java::lang::Object)))) _connection;
+ jboolean _shutdown;
+ JArray< ::gnu::classpath::jdwp::processor::CommandSet * > * _sets;
+ ::java::io::ByteArrayOutputStream * _outputBytes;
+ ::java::io::DataOutputStream * _os;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_PacketProcessor__
diff --git a/libjava/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.h
new file mode 100644
index 000000000..056a5ca9c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.h
@@ -0,0 +1,60 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ReferenceTypeCommandSet__
+#define __gnu_classpath_jdwp_processor_ReferenceTypeCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ReferenceTypeCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ReferenceTypeCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ReferenceTypeCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeSignature(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClassLoader(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeModifiers(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeFields(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeMethods(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeGetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSourceFile(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeNestedTypes(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeStatus(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeInterfaces(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClassObject(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSourceDebugExtension(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSignatureWithGeneric(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeFieldWithGeneric(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeMethodsWithGeneric(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ReferenceTypeCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/StackFrameCommandSet.h b/libjava/gnu/classpath/jdwp/processor/StackFrameCommandSet.h
new file mode 100644
index 000000000..be6345610
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/StackFrameCommandSet.h
@@ -0,0 +1,49 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_StackFrameCommandSet__
+#define __gnu_classpath_jdwp_processor_StackFrameCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class StackFrameCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::StackFrameCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ StackFrameCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeGetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeThisObject(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executePopFrames(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_StackFrameCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/StringReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/StringReferenceCommandSet.h
new file mode 100644
index 000000000..4904cbc07
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/StringReferenceCommandSet.h
@@ -0,0 +1,46 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_StringReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_StringReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class StringReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::StringReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ StringReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeValue(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_StringReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.h
new file mode 100644
index 000000000..b7040d44d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.h
@@ -0,0 +1,48 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ThreadGroupReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ThreadGroupReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ThreadGroupReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ThreadGroupReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ThreadGroupReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeName(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeParent(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeChildren(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ThreadGroupReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.h b/libjava/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.h
new file mode 100644
index 000000000..c3248e913
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.h
@@ -0,0 +1,57 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_ThreadReferenceCommandSet__
+#define __gnu_classpath_jdwp_processor_ThreadReferenceCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class ThreadReferenceCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::ThreadReferenceCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ ThreadReferenceCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeName(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSuspend(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeResume(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeStatus(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeThreadGroup(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeFrames(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeFrameCount(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeOwnedMonitors(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeCurrentContendedMonitor(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeStop(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeInterrupt(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSuspendCount(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_ThreadReferenceCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.h b/libjava/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.h
new file mode 100644
index 000000000..c2eaf8787
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.h
@@ -0,0 +1,66 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_processor_VirtualMachineCommandSet__
+#define __gnu_classpath_jdwp_processor_VirtualMachineCommandSet__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/processor/CommandSet.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace processor
+ {
+ class VirtualMachineCommandSet;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::processor::VirtualMachineCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
+{
+
+public:
+ VirtualMachineCommandSet();
+ virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
+private:
+ void executeVersion(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClassesBySignature(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeAllClasses(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeAllThreads(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeTopLevelThreadGroups(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeDispose(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeIDsizes(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSuspend(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeResume(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeExit(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeCreateString(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeCapabilities(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeClassPaths(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeDisposeObjects(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeHoldEvents(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeReleaseEvents(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeCapabilitiesNew(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeRedefineClasses(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeSetDefaultStratum(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ void executeAllClassesWithGeneric(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
+ ::java::lang::ThreadGroup * getRootThreadGroup(::java::lang::ThreadGroup *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_processor_VirtualMachineCommandSet__
diff --git a/libjava/gnu/classpath/jdwp/transport/ITransport.h b/libjava/gnu/classpath/jdwp/transport/ITransport.h
new file mode 100644
index 000000000..572b61517
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/ITransport.h
@@ -0,0 +1,39 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_ITransport__
+#define __gnu_classpath_jdwp_transport_ITransport__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class ITransport;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::ITransport : public ::java::lang::Object
+{
+
+public:
+ virtual void configure(::java::util::HashMap *) = 0;
+ virtual void initialize() = 0;
+ virtual void shutdown() = 0;
+ virtual ::java::io::InputStream * getInputStream() = 0;
+ virtual ::java::io::OutputStream * getOutputStream() = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __gnu_classpath_jdwp_transport_ITransport__
diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.h b/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.h
new file mode 100644
index 000000000..6d67ad48c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.h
@@ -0,0 +1,51 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_JdwpCommandPacket__
+#define __gnu_classpath_jdwp_transport_JdwpCommandPacket__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/transport/JdwpPacket.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class JdwpCommandPacket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::JdwpCommandPacket : public ::gnu::classpath::jdwp::transport::JdwpPacket
+{
+
+public:
+ JdwpCommandPacket();
+ JdwpCommandPacket(jbyte, jbyte);
+ virtual jint getLength();
+ virtual jbyte getCommandSet();
+ virtual void setCommandSet(jbyte);
+ virtual jbyte getCommand();
+ virtual void setCommand(jbyte);
+public: // actually protected
+ virtual jint myFromBytes(JArray< jbyte > *, jint);
+ virtual void myWrite(::java::io::DataOutputStream *);
+ jbyte __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::transport::JdwpPacket)))) _commandSet;
+ jbyte _command;
+private:
+ static const jint MINIMUM_LENGTH = 2;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_JdwpCommandPacket__
diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpConnection.h b/libjava/gnu/classpath/jdwp/transport/JdwpConnection.h
new file mode 100644
index 000000000..a8333af9c
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/JdwpConnection.h
@@ -0,0 +1,66 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_JdwpConnection__
+#define __gnu_classpath_jdwp_transport_JdwpConnection__
+
+#pragma interface
+
+#include <java/lang/Thread.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace event
+ {
+ class Event;
+ class EventRequest;
+ }
+ namespace transport
+ {
+ class ITransport;
+ class JdwpConnection;
+ class JdwpPacket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::JdwpConnection : public ::java::lang::Thread
+{
+
+public:
+ JdwpConnection(::java::lang::ThreadGroup *, ::gnu::classpath::jdwp::transport::ITransport *);
+ virtual void initialize();
+private:
+ void _doHandshake();
+public:
+ virtual void run();
+private:
+ void _readOnePacket();
+public:
+ virtual ::gnu::classpath::jdwp::transport::JdwpPacket * getPacket();
+ virtual void sendPacket(::gnu::classpath::jdwp::transport::JdwpPacket *);
+ virtual void sendEvents(JArray< ::gnu::classpath::jdwp::event::EventRequest * > *, JArray< ::gnu::classpath::jdwp::event::Event * > *, jbyte);
+ virtual void shutdown();
+private:
+ static JArray< jbyte > * _HANDSHAKE;
+ ::gnu::classpath::jdwp::transport::ITransport * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) _transport;
+ ::java::util::ArrayList * _commandQueue;
+ jboolean _shutdown;
+ ::java::io::DataInputStream * _inStream;
+ ::java::io::DataOutputStream * _outStream;
+ ::java::io::ByteArrayOutputStream * _bytes;
+ ::java::io::DataOutputStream * _doStream;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_JdwpConnection__
diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpPacket.h b/libjava/gnu/classpath/jdwp/transport/JdwpPacket.h
new file mode 100644
index 000000000..bace85265
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/JdwpPacket.h
@@ -0,0 +1,61 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_JdwpPacket__
+#define __gnu_classpath_jdwp_transport_JdwpPacket__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class JdwpPacket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::JdwpPacket : public ::java::lang::Object
+{
+
+public:
+ JdwpPacket();
+ JdwpPacket(::gnu::classpath::jdwp::transport::JdwpPacket *);
+ virtual jint getId();
+ virtual void setId(jint);
+ virtual jbyte getFlags();
+ virtual void setFlags(jbyte);
+ virtual JArray< jbyte > * getData();
+ virtual void setData(JArray< jbyte > *);
+ virtual jint getLength();
+public: // actually protected
+ virtual jint myFromBytes(JArray< jbyte > *, jint) = 0;
+public:
+ static ::gnu::classpath::jdwp::transport::JdwpPacket * fromBytes(JArray< jbyte > *);
+public: // actually protected
+ virtual void myWrite(::java::io::DataOutputStream *) = 0;
+public:
+ virtual void write(::java::io::DataOutputStream *);
+public: // actually protected
+ static jint _last_id;
+ static const jint JDWP_FLAG_REPLY = 128;
+ static const jint MINIMUM_SIZE = 9;
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) _id;
+ jbyte _flags;
+ JArray< jbyte > * _data;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_JdwpPacket__
diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.h b/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.h
new file mode 100644
index 000000000..023533468
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_JdwpReplyPacket__
+#define __gnu_classpath_jdwp_transport_JdwpReplyPacket__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/transport/JdwpPacket.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class JdwpPacket;
+ class JdwpReplyPacket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::JdwpReplyPacket : public ::gnu::classpath::jdwp::transport::JdwpPacket
+{
+
+public:
+ JdwpReplyPacket();
+ JdwpReplyPacket(::gnu::classpath::jdwp::transport::JdwpPacket *, jshort);
+ JdwpReplyPacket(::gnu::classpath::jdwp::transport::JdwpPacket *);
+ virtual jint getLength();
+ virtual jshort getErrorCode();
+ virtual void setErrorCode(jshort);
+public: // actually protected
+ virtual jint myFromBytes(JArray< jbyte > *, jint);
+ virtual void myWrite(::java::io::DataOutputStream *);
+ jshort __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::transport::JdwpPacket)))) _errorCode;
+private:
+ static const jint MINIMUM_LENGTH = 2;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_JdwpReplyPacket__
diff --git a/libjava/gnu/classpath/jdwp/transport/SocketTransport.h b/libjava/gnu/classpath/jdwp/transport/SocketTransport.h
new file mode 100644
index 000000000..b5fe5c327
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/SocketTransport.h
@@ -0,0 +1,57 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_SocketTransport__
+#define __gnu_classpath_jdwp_transport_SocketTransport__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class SocketTransport;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace net
+ {
+ class Socket;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::SocketTransport : public ::java::lang::Object
+{
+
+public: // actually package-private
+ SocketTransport();
+public:
+ virtual void configure(::java::util::HashMap *);
+ virtual void initialize();
+ virtual void shutdown();
+ virtual ::java::io::InputStream * getInputStream();
+ virtual ::java::io::OutputStream * getOutputStream();
+ static ::java::lang::String * NAME;
+private:
+ static ::java::lang::String * _PROPERTY_ADDRESS;
+ static ::java::lang::String * _PROPERTY_SERVER;
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) _port;
+ ::java::lang::String * _host;
+ jboolean _server;
+ ::java::net::Socket * _socket;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_SocketTransport__
diff --git a/libjava/gnu/classpath/jdwp/transport/TransportException.h b/libjava/gnu/classpath/jdwp/transport/TransportException.h
new file mode 100644
index 000000000..18c405ceb
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/TransportException.h
@@ -0,0 +1,36 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_TransportException__
+#define __gnu_classpath_jdwp_transport_TransportException__
+
+#pragma interface
+
+#include <java/lang/Exception.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class TransportException;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::TransportException : public ::java::lang::Exception
+{
+
+public:
+ TransportException(::java::lang::String *);
+ TransportException(::java::lang::Throwable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_TransportException__
diff --git a/libjava/gnu/classpath/jdwp/transport/TransportFactory$TransportMethod.h b/libjava/gnu/classpath/jdwp/transport/TransportFactory$TransportMethod.h
new file mode 100644
index 000000000..4900baa66
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/TransportFactory$TransportMethod.h
@@ -0,0 +1,39 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_TransportFactory$TransportMethod__
+#define __gnu_classpath_jdwp_transport_TransportFactory$TransportMethod__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class TransportFactory$TransportMethod;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::TransportFactory$TransportMethod : public ::java::lang::Object
+{
+
+public:
+ TransportFactory$TransportMethod(::java::lang::String *, ::java::lang::Class *);
+public: // actually package-private
+ ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
+ ::java::lang::Class * clazz;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_TransportFactory$TransportMethod__
diff --git a/libjava/gnu/classpath/jdwp/transport/TransportFactory.h b/libjava/gnu/classpath/jdwp/transport/TransportFactory.h
new file mode 100644
index 000000000..e3e01986b
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/transport/TransportFactory.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_transport_TransportFactory__
+#define __gnu_classpath_jdwp_transport_TransportFactory__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace transport
+ {
+ class ITransport;
+ class TransportFactory;
+ class TransportFactory$TransportMethod;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::transport::TransportFactory : public ::java::lang::Object
+{
+
+public:
+ TransportFactory();
+ static ::gnu::classpath::jdwp::transport::ITransport * newInstance(::java::util::HashMap *);
+private:
+ static ::java::lang::String * _TRANSPORT_PROPERTY;
+ static JArray< ::gnu::classpath::jdwp::transport::TransportFactory$TransportMethod * > * _transportMethods;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_transport_TransportFactory__
diff --git a/libjava/gnu/classpath/jdwp/util/JdwpString.h b/libjava/gnu/classpath/jdwp/util/JdwpString.h
new file mode 100644
index 000000000..0845ca8ce
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/JdwpString.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_JdwpString__
+#define __gnu_classpath_jdwp_util_JdwpString__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class JdwpString;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::JdwpString : public ::java::lang::Object
+{
+
+public:
+ JdwpString();
+ static void writeString(::java::io::DataOutputStream *, ::java::lang::String *);
+ static ::java::lang::String * readString(::java::nio::ByteBuffer *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_JdwpString__
diff --git a/libjava/gnu/classpath/jdwp/util/LineTable.h b/libjava/gnu/classpath/jdwp/util/LineTable.h
new file mode 100644
index 000000000..6ca678c3a
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/LineTable.h
@@ -0,0 +1,44 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_LineTable__
+#define __gnu_classpath_jdwp_util_LineTable__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class LineTable;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::LineTable : public ::java::lang::Object
+{
+
+public:
+ LineTable(jlong, jlong, JArray< jint > *, JArray< jlong > *);
+ virtual void write(::java::io::DataOutputStream *);
+private:
+ jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) start;
+ jlong end;
+ JArray< jint > * lineNum;
+ JArray< jlong > * lineCI;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_LineTable__
diff --git a/libjava/gnu/classpath/jdwp/util/Location.h b/libjava/gnu/classpath/jdwp/util/Location.h
new file mode 100644
index 000000000..2e8710533
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/Location.h
@@ -0,0 +1,54 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_Location__
+#define __gnu_classpath_jdwp_util_Location__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ class VMMethod;
+ namespace util
+ {
+ class Location;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::Location : public ::java::lang::Object
+{
+
+public:
+ Location(::gnu::classpath::jdwp::VMMethod *, jlong);
+ Location(::java::nio::ByteBuffer *);
+ virtual void write(::java::io::DataOutputStream *);
+ static ::gnu::classpath::jdwp::util::Location * getEmptyLocation();
+ virtual ::gnu::classpath::jdwp::VMMethod * getMethod();
+ virtual jlong getIndex();
+ virtual ::java::lang::String * toString();
+ virtual jboolean equals(::java::lang::Object *);
+private:
+ ::gnu::classpath::jdwp::VMMethod * __attribute__((aligned(__alignof__( ::java::lang::Object)))) method;
+ jlong index;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_Location__
diff --git a/libjava/gnu/classpath/jdwp/util/MethodResult.h b/libjava/gnu/classpath/jdwp/util/MethodResult.h
new file mode 100644
index 000000000..11e26d3c9
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/MethodResult.h
@@ -0,0 +1,45 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_MethodResult__
+#define __gnu_classpath_jdwp_util_MethodResult__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class MethodResult;
+ }
+ namespace value
+ {
+ class Value;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::MethodResult : public ::java::lang::Object
+{
+
+public:
+ MethodResult(::gnu::classpath::jdwp::value::Value *, ::java::lang::Throwable *);
+ virtual ::gnu::classpath::jdwp::value::Value * getReturnedValue();
+ virtual ::java::lang::Throwable * getThrownException();
+private:
+ ::gnu::classpath::jdwp::value::Value * __attribute__((aligned(__alignof__( ::java::lang::Object)))) returnedValue;
+ ::java::lang::Throwable * thrownException;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_MethodResult__
diff --git a/libjava/gnu/classpath/jdwp/util/MonitorInfo.h b/libjava/gnu/classpath/jdwp/util/MonitorInfo.h
new file mode 100644
index 000000000..8b7d65f03
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/MonitorInfo.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_MonitorInfo__
+#define __gnu_classpath_jdwp_util_MonitorInfo__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class MonitorInfo;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::MonitorInfo : public ::java::lang::Object
+{
+
+public:
+ MonitorInfo();
+ virtual void write(::java::io::DataOutputStream *);
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) entryCount;
+ ::java::lang::Thread * owner;
+ JArray< ::java::lang::Thread * > * waiters;
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_MonitorInfo__
diff --git a/libjava/gnu/classpath/jdwp/util/NullObject.h b/libjava/gnu/classpath/jdwp/util/NullObject.h
new file mode 100644
index 000000000..c071e0a88
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/NullObject.h
@@ -0,0 +1,35 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_NullObject__
+#define __gnu_classpath_jdwp_util_NullObject__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class NullObject;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::NullObject : public ::java::lang::Object
+{
+
+public:
+ NullObject();
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_NullObject__
diff --git a/libjava/gnu/classpath/jdwp/util/Signature.h b/libjava/gnu/classpath/jdwp/util/Signature.h
new file mode 100644
index 000000000..310b1b804
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/Signature.h
@@ -0,0 +1,51 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_Signature__
+#define __gnu_classpath_jdwp_util_Signature__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class Signature;
+ }
+ }
+ }
+ namespace java
+ {
+ namespace lang
+ {
+ class CPStringBuilder;
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::Signature : public ::java::lang::Object
+{
+
+public:
+ Signature();
+ static ::java::lang::String * computeClassSignature(::java::lang::Class *);
+ static ::java::lang::String * computeFieldSignature(::java::lang::reflect::Field *);
+ static ::java::lang::String * computeMethodSignature(::java::lang::reflect::Method *);
+private:
+ static ::java::lang::String * _computeSignature(::java::lang::Class *, JArray< ::java::lang::Class * > *);
+ static void _addToSignature(::gnu::java::lang::CPStringBuilder *, ::java::lang::Class *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_Signature__
diff --git a/libjava/gnu/classpath/jdwp/util/VariableTable.h b/libjava/gnu/classpath/jdwp/util/VariableTable.h
new file mode 100644
index 000000000..893348e4f
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/util/VariableTable.h
@@ -0,0 +1,47 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_util_VariableTable__
+#define __gnu_classpath_jdwp_util_VariableTable__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace util
+ {
+ class VariableTable;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::util::VariableTable : public ::java::lang::Object
+{
+
+public:
+ VariableTable(jint, jint, JArray< jlong > *, JArray< ::java::lang::String * > *, JArray< ::java::lang::String * > *, JArray< jint > *, JArray< jint > *);
+ virtual void write(::java::io::DataOutputStream *);
+private:
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) argCnt;
+ jint slots;
+ JArray< jlong > * lineCI;
+ JArray< jint > * slot;
+ JArray< jint > * lengths;
+ JArray< ::java::lang::String * > * sigs;
+ JArray< ::java::lang::String * > * names;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_util_VariableTable__
diff --git a/libjava/gnu/classpath/jdwp/value/ArrayValue.h b/libjava/gnu/classpath/jdwp/value/ArrayValue.h
new file mode 100644
index 000000000..3c6e6935e
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/ArrayValue.h
@@ -0,0 +1,41 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_ArrayValue__
+#define __gnu_classpath_jdwp_value_ArrayValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class ArrayValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::ArrayValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ ArrayValue(::java::lang::Object *);
+public: // actually protected
+ virtual ::java::lang::Object * getObject();
+ virtual void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_ArrayValue__
diff --git a/libjava/gnu/classpath/jdwp/value/BooleanValue.h b/libjava/gnu/classpath/jdwp/value/BooleanValue.h
new file mode 100644
index 000000000..57fa16ca9
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/BooleanValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_BooleanValue__
+#define __gnu_classpath_jdwp_value_BooleanValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class BooleanValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::BooleanValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ BooleanValue(jboolean);
+ jboolean getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jboolean __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_BooleanValue__
diff --git a/libjava/gnu/classpath/jdwp/value/ByteValue.h b/libjava/gnu/classpath/jdwp/value/ByteValue.h
new file mode 100644
index 000000000..6fa45acd3
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/ByteValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_ByteValue__
+#define __gnu_classpath_jdwp_value_ByteValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class ByteValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::ByteValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ ByteValue(jbyte);
+ jbyte getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jbyte __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_ByteValue__
diff --git a/libjava/gnu/classpath/jdwp/value/CharValue.h b/libjava/gnu/classpath/jdwp/value/CharValue.h
new file mode 100644
index 000000000..2f87f776a
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/CharValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_CharValue__
+#define __gnu_classpath_jdwp_value_CharValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class CharValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::CharValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ CharValue(jchar);
+ jchar getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jchar __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_CharValue__
diff --git a/libjava/gnu/classpath/jdwp/value/DoubleValue.h b/libjava/gnu/classpath/jdwp/value/DoubleValue.h
new file mode 100644
index 000000000..c68e68362
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/DoubleValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_DoubleValue__
+#define __gnu_classpath_jdwp_value_DoubleValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class DoubleValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::DoubleValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ DoubleValue(jdouble);
+ jdouble getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jdouble __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_DoubleValue__
diff --git a/libjava/gnu/classpath/jdwp/value/FloatValue.h b/libjava/gnu/classpath/jdwp/value/FloatValue.h
new file mode 100644
index 000000000..d8917b9a5
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/FloatValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_FloatValue__
+#define __gnu_classpath_jdwp_value_FloatValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class FloatValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::FloatValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ FloatValue(jfloat);
+ jfloat getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jfloat __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_FloatValue__
diff --git a/libjava/gnu/classpath/jdwp/value/IntValue.h b/libjava/gnu/classpath/jdwp/value/IntValue.h
new file mode 100644
index 000000000..0d09aff8d
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/IntValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_IntValue__
+#define __gnu_classpath_jdwp_value_IntValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class IntValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::IntValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ IntValue(jint);
+ jint getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jint __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_IntValue__
diff --git a/libjava/gnu/classpath/jdwp/value/LongValue.h b/libjava/gnu/classpath/jdwp/value/LongValue.h
new file mode 100644
index 000000000..8416558e6
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/LongValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_LongValue__
+#define __gnu_classpath_jdwp_value_LongValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class LongValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::LongValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ LongValue(jlong);
+ jlong getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jlong __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_LongValue__
diff --git a/libjava/gnu/classpath/jdwp/value/ObjectValue.h b/libjava/gnu/classpath/jdwp/value/ObjectValue.h
new file mode 100644
index 000000000..46bef25bb
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/ObjectValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_ObjectValue__
+#define __gnu_classpath_jdwp_value_ObjectValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class ObjectValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::ObjectValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ ObjectValue(::java::lang::Object *);
+ ::java::lang::Object * getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_ObjectValue__
diff --git a/libjava/gnu/classpath/jdwp/value/ShortValue.h b/libjava/gnu/classpath/jdwp/value/ShortValue.h
new file mode 100644
index 000000000..124d78181
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/ShortValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_ShortValue__
+#define __gnu_classpath_jdwp_value_ShortValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class ShortValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::ShortValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ ShortValue(jshort);
+ jshort getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ jshort __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_ShortValue__
diff --git a/libjava/gnu/classpath/jdwp/value/StringValue.h b/libjava/gnu/classpath/jdwp/value/StringValue.h
new file mode 100644
index 000000000..dc8e52fd7
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/StringValue.h
@@ -0,0 +1,42 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_StringValue__
+#define __gnu_classpath_jdwp_value_StringValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class StringValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::StringValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ StringValue(::java::lang::String *);
+ ::java::lang::String * getValue();
+public: // actually protected
+ ::java::lang::Object * getObject();
+ void write(::java::io::DataOutputStream *);
+public: // actually package-private
+ ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_StringValue__
diff --git a/libjava/gnu/classpath/jdwp/value/Value.h b/libjava/gnu/classpath/jdwp/value/Value.h
new file mode 100644
index 000000000..8ab3d5465
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/Value.h
@@ -0,0 +1,55 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_Value__
+#define __gnu_classpath_jdwp_value_Value__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class Value;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::Value : public ::java::lang::Object
+{
+
+public: // actually protected
+ Value(jbyte);
+public:
+ virtual jbyte getTag();
+ virtual void writeUntagged(::java::io::DataOutputStream *);
+ virtual void writeTagged(::java::io::DataOutputStream *);
+public: // actually protected
+ virtual void write(::java::io::DataOutputStream *) = 0;
+ virtual ::java::lang::Object * getObject() = 0;
+public:
+ static ::java::lang::Object * getUntaggedObject(::java::nio::ByteBuffer *, ::java::lang::Class *);
+ static ::java::lang::Object * getTaggedObject(::java::nio::ByteBuffer *);
+private:
+ jbyte __attribute__((aligned(__alignof__( ::java::lang::Object)))) _tag;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_Value__
diff --git a/libjava/gnu/classpath/jdwp/value/ValueFactory.h b/libjava/gnu/classpath/jdwp/value/ValueFactory.h
new file mode 100644
index 000000000..316d5d047
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/ValueFactory.h
@@ -0,0 +1,50 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_ValueFactory__
+#define __gnu_classpath_jdwp_value_ValueFactory__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class Value;
+ class ValueFactory;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::ValueFactory : public ::java::lang::Object
+{
+
+public:
+ ValueFactory();
+ static ::gnu::classpath::jdwp::value::Value * createFromTagged(::java::nio::ByteBuffer *);
+ static ::gnu::classpath::jdwp::value::Value * createFromUntagged(::java::nio::ByteBuffer *, ::java::lang::Class *);
+private:
+ static ::gnu::classpath::jdwp::value::Value * create(::java::nio::ByteBuffer *, jbyte);
+ static jbyte getTagForClass(::java::lang::Class *);
+public:
+ static ::gnu::classpath::jdwp::value::Value * createFromObject(::java::lang::Object *, ::java::lang::Class *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_ValueFactory__
diff --git a/libjava/gnu/classpath/jdwp/value/VoidValue.h b/libjava/gnu/classpath/jdwp/value/VoidValue.h
new file mode 100644
index 000000000..48a727754
--- /dev/null
+++ b/libjava/gnu/classpath/jdwp/value/VoidValue.h
@@ -0,0 +1,39 @@
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_jdwp_value_VoidValue__
+#define __gnu_classpath_jdwp_value_VoidValue__
+
+#pragma interface
+
+#include <gnu/classpath/jdwp/value/Value.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace jdwp
+ {
+ namespace value
+ {
+ class VoidValue;
+ }
+ }
+ }
+ }
+}
+
+class gnu::classpath::jdwp::value::VoidValue : public ::gnu::classpath::jdwp::value::Value
+{
+
+public:
+ VoidValue();
+public: // actually protected
+ virtual ::java::lang::Object * getObject();
+ virtual void write(::java::io::DataOutputStream *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_jdwp_value_VoidValue__