From ab065b4d759004950fca79cd18a9e186f74f8e0a Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Tue, 27 Mar 2007 18:40:48 +0000 Subject: [PATCH] Classpath JDWP merge with upstream From-SVN: r123265 --- libjava/classpath/ChangeLog | 141 ++++++++ .../classpath/jdwp/event/EventManager.java | 8 +- .../jdwp/event/filters/StepFilter.java | 12 +- .../jdwp/exception/InvalidSlotException.java | 62 ++++ .../jdwp/exception/InvalidTagException.java | 57 ++++ .../jdwp/exception/TypeMismatchException.java | 62 ++++ .../gnu/classpath/jdwp/id/NullObjectId.java | 79 +++++ .../processor/ArrayReferenceCommandSet.java | 13 +- .../jdwp/processor/ClassTypeCommandSet.java | 14 +- .../processor/EventRequestCommandSet.java | 25 +- .../jdwp/processor/MethodCommandSet.java | 30 +- .../processor/ObjectReferenceCommandSet.java | 34 +- .../processor/ReferenceTypeCommandSet.java | 28 +- .../jdwp/processor/StackFrameCommandSet.java | 43 ++- .../processor/ThreadReferenceCommandSet.java | 42 ++- .../processor/VirtualMachineCommandSet.java | 107 ++++--- .../gnu/classpath/jdwp/util/MethodResult.java | 13 + .../gnu/classpath/jdwp/util/MonitorInfo.java | 76 +++++ .../gnu/classpath/jdwp/util/NullObject.java | 50 +++ .../gnu/classpath/jdwp/util/Value.java | 301 ------------------ .../classpath/jdwp/value/BooleanValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/ByteValue.java | 99 ++++++ .../gnu/classpath/jdwp/value/CharValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/DoubleValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/FloatValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/IntValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/LongValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/ObjectValue.java | 92 ++++++ .../gnu/classpath/jdwp/value/ShortValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/StringValue.java | 100 ++++++ .../gnu/classpath/jdwp/value/Value.java | 155 +++++++++ .../classpath/jdwp/value/ValueFactory.java | 247 ++++++++++++++ .../gnu/classpath/jdwp/value/VoidValue.java | 82 +++++ .../lib/gnu/classpath/jdwp/VMFrame.class | Bin 1131 -> 1160 bytes .../gnu/classpath/jdwp/VMVirtualMachine.class | Bin 2891 -> 4017 bytes .../classpath/jdwp/event/EventManager.class | Bin 4198 -> 4291 bytes .../jdwp/event/filters/StepFilter.class | Bin 1463 -> 1349 bytes .../jdwp/exception/InvalidSlotException.class | Bin 0 -> 720 bytes .../jdwp/exception/InvalidTagException.class | Bin 0 -> 685 bytes .../exception/TypeMismatchException.class | Bin 0 -> 723 bytes .../gnu/classpath/jdwp/id/NullObjectId.class | Bin 0 -> 774 bytes .../processor/ArrayReferenceCommandSet.class | Bin 4143 -> 4309 bytes .../jdwp/processor/ClassTypeCommandSet.class | Bin 5471 -> 5735 bytes .../processor/EventRequestCommandSet.class | Bin 5267 -> 5483 bytes .../jdwp/processor/MethodCommandSet.class | Bin 3284 -> 3307 bytes .../processor/ObjectReferenceCommandSet.class | Bin 6344 -> 6671 bytes .../processor/ReferenceTypeCommandSet.class | Bin 7908 -> 8228 bytes .../jdwp/processor/StackFrameCommandSet.class | Bin 3489 -> 3779 bytes .../processor/ThreadReferenceCommandSet.class | Bin 5835 -> 5884 bytes .../processor/VirtualMachineCommandSet.class | Bin 9303 -> 9307 bytes .../classpath/jdwp/util/MethodResult.class | Bin 878 -> 1147 bytes .../gnu/classpath/jdwp/util/MonitorInfo.class | Bin 0 -> 1117 bytes .../gnu/classpath/jdwp/util/NullObject.class | Bin 0 -> 303 bytes .../classpath/jdwp/value/BooleanValue.class | Bin 0 -> 867 bytes .../gnu/classpath/jdwp/value/ByteValue.class | Bin 0 -> 847 bytes .../gnu/classpath/jdwp/value/CharValue.class | Bin 0 -> 864 bytes .../classpath/jdwp/value/DoubleValue.class | Bin 0 -> 862 bytes .../gnu/classpath/jdwp/value/FloatValue.class | Bin 0 -> 857 bytes .../gnu/classpath/jdwp/value/IntValue.class | Bin 0 -> 851 bytes .../gnu/classpath/jdwp/value/LongValue.class | Bin 0 -> 852 bytes .../classpath/jdwp/value/ObjectValue.class | Bin 0 -> 1009 bytes .../gnu/classpath/jdwp/value/ShortValue.class | Bin 0 -> 864 bytes .../classpath/jdwp/value/StringValue.class | Bin 0 -> 934 bytes .../lib/gnu/classpath/jdwp/value/Value.class | Bin 0 -> 1753 bytes .../classpath/jdwp/value/ValueFactory.class | Bin 0 -> 4626 bytes .../gnu/classpath/jdwp/value/VoidValue.class | Bin 0 -> 611 bytes 66 files changed, 2243 insertions(+), 429 deletions(-) create mode 100644 libjava/classpath/gnu/classpath/jdwp/exception/InvalidSlotException.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/exception/InvalidTagException.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/exception/TypeMismatchException.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/id/NullObjectId.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/util/MonitorInfo.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/util/NullObject.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/BooleanValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/ByteValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/CharValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/DoubleValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/FloatValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/IntValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/LongValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/ObjectValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/ShortValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/StringValue.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/Value.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/ValueFactory.java create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/VoidValue.java create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidSlotException.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidTagException.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/exception/TypeMismatchException.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/id/NullObjectId.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/util/MonitorInfo.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/util/NullObject.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/BooleanValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/ByteValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/CharValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/DoubleValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/FloatValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/IntValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/LongValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/ObjectValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/ShortValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/StringValue.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/Value.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/ValueFactory.class create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/VoidValue.class diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 2ff19beeb29..305ac4f2314 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,144 @@ +2007-03-27 Keith Seitz + + Merged from upstream: + 2007-03-09 Kyle Galloway + * gnu/classpath/jdwp/exception/InvalidTagException.java: New file. + * gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java + (executeGetValues): Use Value type. + (exectureSetValues): Ditto. + * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java + (executeGetValues): Use Value type. + (executeSetValues): Ditto. + (invokeMethod): Record method return type. + * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java + (executeGetValues): Use Value type. + (executeSetValues): Ditto. + * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java + (executeGetValues): Use Value type. + * gnu/classpath/jdwp/processor/StackFrameCommandSet.java + (executeGetValues): Use Value type. + (executeSetValues): Ditto. + * gnu/classpath/jdwp/util/MethodResult.java: Add resType to store + return type. + (getResultType): New Method. + (setResultType): Ditto. + * gnu/classpath/jdwp/util/Value.java: Remove. + * gnu/classpath/jdwp/value: New Package. + * gnu/classpath/jdwp/value/Value.java: New file. + * gnu/classpath/jdwp/value/BooleanValue.java: New file. + * gnu/classpath/jdwp/value/ByteValue.java: New file. + * gnu/classpath/jdwp/value/CharValue.java: New file. + * gnu/classpath/jdwp/value/DoubleValue.java: New file. + * gnu/classpath/jdwp/value/FloatValue.java: New file. + * gnu/classpath/jdwp/value/IntValue.java: New file. + * gnu/classpath/jdwp/value/LongValue.java: New file. + * gnu/classpath/jdwp/value/ObjectValue.java: New file. + * gnu/classpath/jdwp/value/ShortValue.java: New file. + * gnu/classpath/jdwp/value/StringValue.java: New file. + * gnu/classpath/jdwp/value/ValueFactory.java: New file. + * gnu/classpath/jdwp/value/VoidValue.java: New file. + + 2007-02-28 Keith Seitz + * gnu/classpath/jdwp/processor/EventRequestCommandSet.java + (executeSet): Check if VM has capability for field access + or modification events. + * gnu/classpath/jdwp/processor/MethodCommandSet.java + (executeByteCodes): Check if VM has capability and + implement. + * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java + (executeMonitorInfo): Likewise. + * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java + (executeSourceDebugExtension): Likewise. + * gnu/classpath/jdwp/processor/StackFrameCommandSet.java + (executePopFrames): Likewise. + * gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java + (executeOwnedMonitors): Likewise. + (executeCurrentContendedMonitor): Likewise. + * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java + (executeCapabilities): Rewrite using new VMVirtualMachine + capabilities. + (executeRedefineClasses): Check if VM has capability and + implement. + (executeSetDefaultStratum): Likewise. + * gnu/classpath/jdwp/util/MonitorInfo.java; New file. + * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java + (canWatchFieldModification): New class constant. + (canWatchFieldAccess): Likewise. + (canGetBytecodes): Likewise. + (canGetSyntheticAttribute): Likewise. + (canGetOwnedMonitorInfo): Likewise. + (canGetCurrentContendedMonitor): Likewise. + (canGetMonitorInfo): Likewise. + (canRedefineClasses): Likewise. + (canAddMethod): Likewise. + (canUnrestrictedlyRedefineClasses): Likewise. + (canPopFrames): Likewise. + (canUseInstanceFilters): Likewise. + (canGetSourceDebugExtension): Likewise. + (canRequestVMDeathEvent): Likewise. + (canSetDefaultStratum): Likewise. + (redefineClasses): New method. + (setDefaultStratum): Likewise. + (getSourceDebugExtension): Likewise. + (getBytecodes): Likewise. + (getMonitorInfo): Likewise. + (getOwnedMonitors): Likewise. + (getCurrentContendedMonitor): Likewise. + (popFrames): Likewise. + + 2007-02-28 Keith Seitz + * gnu/classpath/jdwp/processor/MethodCommandSet.java + (executeLineTable): Use ReferenceTypeId instead of + ClassReferenceTypeId. + (executeVariableTable): Likewise. + (executeVariableTableWithGeneric): Fix error message. + * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java + (executeSignatureWithGeneric): Fix error message. + (executeFieldWithGeneric): Likewise. + (executeMethodsWithGeneric): Likewise. + * gnu/classpath/jdwp/processor/StackFrameCommandSet.java + (executeGetValues): Use ThreadId instead of ObjectId. + (executeSetValues): Likewise. + (executeThisObject): Likewise. + + 2007-02-28 Kyle Galloway + * gnu/classpath/jdwp/id/NullObjectId.java: New class. + * gnu/classpath/jdwp/util/NullObject.java: New class. + * vm/reference/gnu/classpath/jdwp/VMIdManager.java + (getObjectId): Handle null object. + (get): Handle objectId of 0. + + 2007-02-22 Keith Seitz + * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java + (getAllLoadedClassesCount): Remove. + (getAllLoadedClasses): Return a Collection. + * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java + (executeClassesBySignature): VMVirtualMachine.getAllLoadedClasses + now returns Collection. + (executeAllClasses): Likewise. + Get size of return from Colleciton instead of calling + getAllLoadedClassesCount. + + 2007-02-22 Kyle Galloway + * gnu/classpath/jdwp/processor/StackFrameCommandSet.java + (executeGetValues): Pass a signature byte to VMFrame.getValue. + * vm/reference/gnu/classpath/jdwp/VMFrame.java (getValue): Add + signature parameter. + + 2007-02-02 Kyle Galloway + * gnu/classpath/jdwp/processor/StackFrameCommandSet.java + (executeGetValues): Changed getFrame to use a jlong to pass frameID. + (executeSetValues): Ditto. + (executeThisObject): Ditto. + * vm/reference/gnu/classpath/jdwp/VMFrame.java: Added thread field + and a constructor used to create VMFrames. + (getThread): New method. + * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java(getFrame): + Changed to take a long instead of a ByteBuffer to pass the frameID. + + 2007-01-15 Kyle Galloway + * gnu/classpath/jdwp/exception/InvalidSlotException.java: New file. + 2007-03-26 Tom Tromey * doc/cp-tools.texinfo (gcjh Tool): Added more text. diff --git a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java index 54a7b08312d..02ffa241395 100644 --- a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java +++ b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java @@ -1,5 +1,5 @@ /* EventManager.java -- event management and notification infrastructure - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -39,6 +39,7 @@ exception statement from your version. */ package gnu.classpath.jdwp.event; +import gnu.classpath.jdwp.Jdwp; import gnu.classpath.jdwp.VMVirtualMachine; import gnu.classpath.jdwp.exception.InvalidEventTypeException; import gnu.classpath.jdwp.exception.JdwpException; @@ -130,9 +131,10 @@ public class EventManager // only two: VM_INIT, VM_DEATH try { + byte sp = (Jdwp.suspendOnStartup() + ? EventRequest.SUSPEND_THREAD : EventRequest.SUSPEND_NONE); requestEvent (new EventRequest (0, - EventRequest.EVENT_VM_INIT, - EventRequest.SUSPEND_NONE)); + EventRequest.EVENT_VM_INIT, sp)); requestEvent (new EventRequest (0, EventRequest.EVENT_VM_DEATH, EventRequest.SUSPEND_NONE)); diff --git a/libjava/classpath/gnu/classpath/jdwp/event/filters/StepFilter.java b/libjava/classpath/gnu/classpath/jdwp/event/filters/StepFilter.java index 340546e887d..d18f6975ebf 100644 --- a/libjava/classpath/gnu/classpath/jdwp/event/filters/StepFilter.java +++ b/libjava/classpath/gnu/classpath/jdwp/event/filters/StepFilter.java @@ -1,5 +1,5 @@ /* StepFilter.java -- a step filter - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -39,6 +39,7 @@ exception statement from your version. */ package gnu.classpath.jdwp.event.filters; +import gnu.classpath.jdwp.JdwpConstants; import gnu.classpath.jdwp.event.Event; import gnu.classpath.jdwp.exception.InvalidThreadException; import gnu.classpath.jdwp.id.ThreadId; @@ -48,6 +49,12 @@ import gnu.classpath.jdwp.id.ThreadId; * satisfy depth and size constraints. This modifier can only be used with * step event kinds." * + * This "filter" is not really a filter. It is simply a way to communicate + * stepping information in a convenient way between the JDWP backend and + * the virtual machine. + * + * Consequently, this "filter" always matches. + * * @author Keith Seitz (keiths@redhat.com) */ public class StepFilter @@ -115,7 +122,6 @@ public class StepFilter */ public boolean matches (Event event) { - // FIXME - throw new RuntimeException ("StepFilter.matches not implemented"); + return true; } } diff --git a/libjava/classpath/gnu/classpath/jdwp/exception/InvalidSlotException.java b/libjava/classpath/gnu/classpath/jdwp/exception/InvalidSlotException.java new file mode 100644 index 00000000000..1827edab9a6 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/exception/InvalidSlotException.java @@ -0,0 +1,62 @@ +/* InvalidSlotException.java -- an invalid variable slot exception + Copyright (C) 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.exception; + +import gnu.classpath.jdwp.JdwpConstants; + +/** + * An exception thrown when an invalid Slot id is used by the debugger + * (i.e. when trying to access a variable slot which doesn't exist). + * + * @author Kyle Galloway (kgallowa@redhat.com) + */ +public class InvalidSlotException + extends JdwpException +{ + public InvalidSlotException(int slot) + { + super(JdwpConstants.Error.INVALID_SLOT, "invalid slot: " + slot); + } + + public InvalidSlotException(String msg) + { + super(JdwpConstants.Error.INVALID_SLOT, msg); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/exception/InvalidTagException.java b/libjava/classpath/gnu/classpath/jdwp/exception/InvalidTagException.java new file mode 100644 index 00000000000..738b5e7348b --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/exception/InvalidTagException.java @@ -0,0 +1,57 @@ +/* InvalidTagException.java -- an invalid type tag exception + Copyright (C) 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.exception; + +import gnu.classpath.jdwp.JdwpConstants; + +/** + * An exception thrown when an invalid tag is used by + * the debugger + * + * @author Kyle Galloway (kgallowa@redhat.com) + */ +public class InvalidTagException + extends JdwpException +{ + public InvalidTagException (byte tag) + { + super (JdwpConstants.Error.INVALID_TAG, + "invalid tag (" + tag + ")"); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/exception/TypeMismatchException.java b/libjava/classpath/gnu/classpath/jdwp/exception/TypeMismatchException.java new file mode 100644 index 00000000000..c6af65223d5 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/exception/TypeMismatchException.java @@ -0,0 +1,62 @@ +/* TypeMismatchException.java -- mismatched type of local variable + Copyright (C) 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.exception; + +import gnu.classpath.jdwp.JdwpConstants; + +/** + * An exception throw when attempting to access a local variable of the wrong + * type. + * + * @author Kyle Galloway (kgallowa@redhat.com) + */ +public class TypeMismatchException + extends JdwpException +{ + public TypeMismatchException(byte tag) + { + super(JdwpConstants.Error.TYPE_MISMATCH, "incorrect tag: " + tag); + } + + public TypeMismatchException(String msg) + { + super(JdwpConstants.Error.TYPE_MISMATCH, msg); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/id/NullObjectId.java b/libjava/classpath/gnu/classpath/jdwp/id/NullObjectId.java new file mode 100644 index 00000000000..0e7b5e39cd8 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/id/NullObjectId.java @@ -0,0 +1,79 @@ +/* NullObjectId.java -- special objectId for null values + Copyright (C) 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 +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.id; + +import gnu.classpath.jdwp.exception.InvalidObjectException; +import gnu.classpath.jdwp.util.NullObject; + +import java.lang.ref.SoftReference; + +/** + * This is a special case of an ObjectId. When a varaible slot contains + * null as its value, this is a valid value despite the fact that it does + * not reference an object. To represent this, this will always be the id + * of the NullObject (0). + * + * @author Kyle Galloway + */ +public class NullObjectId + extends ObjectId +{ + /** + * The object class that this id represents + */ + public static final Class typeClass = NullObject.class; + + /** + * Constructs a new NullObjectId + */ + public NullObjectId() + { + super(); + setId((long) 0); + _reference = new SoftReference(new NullObject()); + try + { + disableCollection(); + } + catch(InvalidObjectException ex) + { + //This will not happen + } + } + +} diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java index a9dc6cc815f..0da0154d9d2 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java @@ -1,6 +1,6 @@ /* ArrayReferenceCommandSet.java -- class to implement the Array Reference Command Set - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -46,7 +46,8 @@ import gnu.classpath.jdwp.exception.JdwpException; import gnu.classpath.jdwp.exception.JdwpInternalErrorException; import gnu.classpath.jdwp.exception.NotImplementedException; import gnu.classpath.jdwp.id.ObjectId; -import gnu.classpath.jdwp.util.Value; +import gnu.classpath.jdwp.value.Value; +import gnu.classpath.jdwp.value.ValueFactory; import java.io.DataOutputStream; import java.io.IOException; @@ -150,11 +151,11 @@ public class ArrayReferenceCommandSet // tagged for (int i = first; i < first + length; i++) { - Object value = Array.get(array, i); + Value val = ValueFactory.createFromObject(Array.get(array, i), clazz); if (clazz.isPrimitive()) - Value.writeUntaggedValue(os, value); + val.writeUntagged(os); else - Value.writeTaggedValue(os, value); + val.writeTagged(os); } } @@ -168,7 +169,7 @@ public class ArrayReferenceCommandSet Class type = array.getClass().getComponentType(); for (int i = first; i < first + length; i++) { - Object value = Value.getUntaggedObj(bb, type); + Object value = Value.getUntaggedObject(bb, type); Array.set(array, i, value); } } diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java index a3a7ca05e59..b29b5710f91 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java @@ -1,6 +1,6 @@ /* ClassTypeCommandSet.java -- class to implement the ClassType Command Set - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -49,7 +49,8 @@ import gnu.classpath.jdwp.exception.NotImplementedException; import gnu.classpath.jdwp.id.ObjectId; import gnu.classpath.jdwp.id.ReferenceTypeId; import gnu.classpath.jdwp.util.MethodResult; -import gnu.classpath.jdwp.util.Value; +import gnu.classpath.jdwp.value.Value; +import gnu.classpath.jdwp.value.ValueFactory; import java.io.DataOutputStream; import java.io.IOException; @@ -128,7 +129,7 @@ public class ClassTypeCommandSet { ObjectId fieldId = idMan.readObjectId(bb); Field field = (Field) (fieldId.getObject()); - Object value = Value.getUntaggedObj(bb, field.getType()); + Object value = Value.getUntaggedObject(bb, field.getType()); try { field.setAccessible(true); // Might be a private field @@ -154,7 +155,8 @@ public class ClassTypeCommandSet Exception exception = mr.getThrownException(); ObjectId eId = idMan.getObjectId(exception); - Value.writeTaggedValue(os, value); + Value val = ValueFactory.createFromObject(value, mr.getResultType()); + val.writeTagged(os); eId.writeTagged(os); } @@ -192,7 +194,7 @@ public class ClassTypeCommandSet for (int i = 0; i < args; i++) { - values[i] = Value.getObj(bb); + values[i] = Value.getTaggedObject(bb); } int invokeOpts = bb.getInt(); @@ -207,6 +209,8 @@ public class ClassTypeCommandSet MethodResult mr = VMVirtualMachine.executeMethod(null, thread, clazz, method, values, false); + mr.setResultType(method.getReturnType()); + if (suspend) VMVirtualMachine.resumeAllThreads (); diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/EventRequestCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/EventRequestCommandSet.java index 59cfb94d39b..d7ebbc3a358 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/EventRequestCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/EventRequestCommandSet.java @@ -1,6 +1,6 @@ /* EventRequestCommandSet.java -- class to implement the EventRequest Command Set - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -40,6 +40,7 @@ exception statement from your version. */ package gnu.classpath.jdwp.processor; import gnu.classpath.jdwp.JdwpConstants; +import gnu.classpath.jdwp.VMVirtualMachine; import gnu.classpath.jdwp.event.EventManager; import gnu.classpath.jdwp.event.EventRequest; import gnu.classpath.jdwp.event.filters.ClassExcludeFilter; @@ -113,6 +114,28 @@ public class EventRequestCommandSet byte suspendPolicy = bb.get(); int modifiers = bb.getInt(); + switch (eventKind) + { + case JdwpConstants.EventKind.FIELD_ACCESS: + if (!VMVirtualMachine.canWatchFieldAccess) + { + String msg = "watching field accesses is not supported"; + throw new NotImplementedException(msg); + } + break; + + case JdwpConstants.EventKind.FIELD_MODIFICATION: + if (!VMVirtualMachine.canWatchFieldModification) + { + String msg = "watching field modifications is not supported"; + throw new NotImplementedException(msg); + } + break; + + default: + // okay + } + EventRequest eventReq = new EventRequest(eventKind, suspendPolicy); IEventFilter filter = null; ReferenceTypeId refId; diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/MethodCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/MethodCommandSet.java index dcfe7a6fc84..4d1bf709800 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/MethodCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/MethodCommandSet.java @@ -1,5 +1,5 @@ /* MethodCommandSet.java -- class to implement the Method Command Set - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -40,10 +40,11 @@ package gnu.classpath.jdwp.processor; import gnu.classpath.jdwp.JdwpConstants; import gnu.classpath.jdwp.VMMethod; +import gnu.classpath.jdwp.VMVirtualMachine; import gnu.classpath.jdwp.exception.JdwpException; import gnu.classpath.jdwp.exception.JdwpInternalErrorException; import gnu.classpath.jdwp.exception.NotImplementedException; -import gnu.classpath.jdwp.id.ClassReferenceTypeId; +import gnu.classpath.jdwp.id.ReferenceTypeId; import gnu.classpath.jdwp.util.LineTable; import gnu.classpath.jdwp.util.VariableTable; @@ -99,8 +100,7 @@ public class MethodCommandSet private void executeLineTable(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - ClassReferenceTypeId refId - = (ClassReferenceTypeId) idMan.readReferenceTypeId(bb); + ReferenceTypeId refId = idMan.readReferenceTypeId(bb); Class clazz = refId.getType(); VMMethod method = VMMethod.readId(clazz, bb); @@ -111,8 +111,7 @@ public class MethodCommandSet private void executeVariableTable(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - ClassReferenceTypeId refId - = (ClassReferenceTypeId) idMan.readReferenceTypeId(bb); + ReferenceTypeId refId = idMan.readReferenceTypeId(bb); Class clazz = refId.getType(); VMMethod method = VMMethod.readId(clazz, bb); @@ -121,11 +120,20 @@ public class MethodCommandSet } private void executeByteCodes(ByteBuffer bb, DataOutputStream os) - throws JdwpException + throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException("Command ByteCodes not implemented."); + if (!VMVirtualMachine.canGetBytecodes) + { + String msg = "getting bytecodes is unsupported"; + throw new NotImplementedException(msg); + } + + ReferenceTypeId id = idMan.readReferenceTypeId(bb); + Class klass = id.getType(); + VMMethod method = VMMethod.readId(klass, bb); + byte[] bytecode = VMVirtualMachine.getBytecodes(method); + os.writeInt(bytecode.length); + os.write(bytecode); } private void executeIsObsolete(ByteBuffer bb, DataOutputStream os) @@ -143,7 +151,7 @@ public class MethodCommandSet { // We don't have generics yet throw new NotImplementedException( - "Command SourceDebugExtension not implemented."); + "Command VariableTableWithGeneric not implemented."); } } diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java index ef421ea5b28..ed83fd2f94b 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java @@ -1,6 +1,6 @@ /* ObjectReferenceCommandSet.java -- class to implement the ObjectReference Command Set - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -47,8 +47,10 @@ import gnu.classpath.jdwp.exception.JdwpInternalErrorException; import gnu.classpath.jdwp.exception.NotImplementedException; import gnu.classpath.jdwp.id.ObjectId; import gnu.classpath.jdwp.id.ReferenceTypeId; -import gnu.classpath.jdwp.util.Value; import gnu.classpath.jdwp.util.MethodResult; +import gnu.classpath.jdwp.util.MonitorInfo; +import gnu.classpath.jdwp.value.Value; +import gnu.classpath.jdwp.value.ValueFactory; import java.io.DataOutputStream; import java.io.IOException; @@ -137,7 +139,9 @@ public class ObjectReferenceCommandSet { field.setAccessible(true); // Might be a private field Object value = field.get(obj); - Value.writeTaggedValue(os, value); + Value val = ValueFactory.createFromObject(value, + field.getType()); + val.writeTagged(os); } catch (IllegalArgumentException ex) { @@ -163,7 +167,7 @@ public class ObjectReferenceCommandSet for (int i = 0; i < numFields; i++) { Field field = (Field) idMan.readObjectId(bb).getObject(); - Object value = Value.getUntaggedObj(bb, field.getType()); + Object value = Value.getUntaggedObject(bb, field.getType()); try { field.setAccessible(true); // Might be a private field @@ -183,13 +187,18 @@ public class ObjectReferenceCommandSet } private void executeMonitorInfo(ByteBuffer bb, DataOutputStream os) - throws JdwpException + throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException( - "Command ExecuteMonitorInfo not implemented."); + if (!VMVirtualMachine.canGetMonitorInfo) + { + String msg = "getting monitor info not supported"; + throw new NotImplementedException(msg); + } + ObjectId oid = idMan.readObjectId(bb); + Object obj = oid.getObject(); + MonitorInfo info = VMVirtualMachine.getMonitorInfo(obj); + info.write(os); } private void executeInvokeMethod(ByteBuffer bb, DataOutputStream os) @@ -212,7 +221,7 @@ public class ObjectReferenceCommandSet for (int i = 0; i < args; i++) { - values[i] = Value.getObj(bb); + values[i] = Value.getTaggedObject(bb); } int invokeOptions = bb.getInt(); @@ -232,11 +241,14 @@ public class ObjectReferenceCommandSet MethodResult mr = VMVirtualMachine.executeMethod(obj, thread, clazz, method, values, nonVirtual); + mr.setResultType (method.getReturnType()); + Object value = mr.getReturnedValue(); Exception exception = mr.getThrownException(); ObjectId eId = idMan.getObjectId(exception); - Value.writeTaggedValue(os, value); + Value val = ValueFactory.createFromObject(value, mr.getResultType()); + val.writeTagged(os); eId.writeTagged(os); } diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java index b76143f92c9..8e8b74b9d43 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java @@ -1,6 +1,6 @@ /* ReferenceTypeCommandSet.java -- class to implement the ReferenceType Command Set - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -51,7 +51,8 @@ import gnu.classpath.jdwp.id.ObjectId; import gnu.classpath.jdwp.id.ReferenceTypeId; import gnu.classpath.jdwp.util.JdwpString; import gnu.classpath.jdwp.util.Signature; -import gnu.classpath.jdwp.util.Value; +import gnu.classpath.jdwp.value.Value; +import gnu.classpath.jdwp.value.ValueFactory; import java.io.DataOutputStream; import java.io.IOException; @@ -220,7 +221,9 @@ public class ReferenceTypeCommandSet { field.setAccessible(true); // Might be a private field Object value = field.get(null); - Value.writeTaggedValue(os, value); + Value val = ValueFactory.createFromObject(value, + field.getType()); + val.writeTagged(os); } catch (IllegalArgumentException ex) { @@ -303,10 +306,15 @@ public class ReferenceTypeCommandSet private void executeSourceDebugExtension(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException( - "Command SourceDebugExtension not implemented."); + if (!VMVirtualMachine.canGetSourceDebugExtension) + { + String msg = "source debug extension is not supported"; + throw new NotImplementedException(msg); + } + + ReferenceTypeId id = idMan.readReferenceTypeId(bb); + String ext = VMVirtualMachine.getSourceDebugExtension (id.getType()); + JdwpString.writeString(os, ext); } private void executeSignatureWithGeneric(ByteBuffer bb, DataOutputStream os) @@ -314,7 +322,7 @@ public class ReferenceTypeCommandSet { // We don't have generics yet throw new NotImplementedException( - "Command SourceDebugExtension not implemented."); + "Command SignatureWithGeneric not implemented."); } private void executeFieldWithGeneric(ByteBuffer bb, DataOutputStream os) @@ -322,7 +330,7 @@ public class ReferenceTypeCommandSet { // We don't have generics yet throw new NotImplementedException( - "Command SourceDebugExtension not implemented."); + "Command executeFieldWithGeneric not implemented."); } private void executeMethodsWithGeneric(ByteBuffer bb, DataOutputStream os) @@ -330,6 +338,6 @@ public class ReferenceTypeCommandSet { // We don't have generics yet throw new NotImplementedException( - "Command SourceDebugExtension not implemented."); + "Command executeMethodsWithGeneric not implemented."); } } diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java index cf1e8c272da..2d90e8064ae 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java @@ -45,8 +45,10 @@ import gnu.classpath.jdwp.VMVirtualMachine; import gnu.classpath.jdwp.exception.JdwpException; import gnu.classpath.jdwp.exception.JdwpInternalErrorException; import gnu.classpath.jdwp.exception.NotImplementedException; -import gnu.classpath.jdwp.id.ObjectId; -import gnu.classpath.jdwp.util.Value; +import gnu.classpath.jdwp.id.ThreadId; +import gnu.classpath.jdwp.value.ObjectValue; +import gnu.classpath.jdwp.value.Value; +import gnu.classpath.jdwp.value.ValueFactory; import java.io.DataOutputStream; import java.io.IOException; @@ -98,8 +100,8 @@ public class StackFrameCommandSet private void executeGetValues(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - ObjectId tId = idMan.readObjectId(bb); - Thread thread = (Thread) tId.getObject(); + ThreadId tId = (ThreadId) idMan.readObjectId(bb); + Thread thread = tId.getThread(); // Although Frames look like other ids they are not. First they are not // ObjectIds since they don't exist in the users code. Storing them as an @@ -115,16 +117,16 @@ public class StackFrameCommandSet { int slot = bb.getInt(); byte sig = bb.get(); - Object val = frame.getValue(slot); - Value.writeTaggedValue(os, val); + Value val = frame.getValue(slot, sig); + val.writeTagged(os); } } private void executeSetValues(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - ObjectId tId = idMan.readObjectId(bb); - Thread thread = (Thread) tId.getObject(); + ThreadId tId = (ThreadId) idMan.readObjectId(bb); + Thread thread = tId.getThread(); long frameID = bb.getLong(); VMFrame frame = VMVirtualMachine.getFrame(thread, frameID); @@ -133,7 +135,7 @@ public class StackFrameCommandSet for (int i = 0; i < slots; i++) { int slot = bb.getInt(); - Object value = Value.getObj(bb); + Value value = ValueFactory.createFromTagged(bb); frame.setValue(slot, value); } } @@ -141,21 +143,28 @@ public class StackFrameCommandSet private void executeThisObject(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - ObjectId tId = idMan.readObjectId(bb); - Thread thread = (Thread) tId.getObject(); + ThreadId tId = (ThreadId) idMan.readObjectId(bb); + Thread thread = tId.getThread(); long frameID = bb.getLong(); VMFrame frame = VMVirtualMachine.getFrame(thread, frameID); - Object thisObject = frame.getObject(); - Value.writeTaggedValue(os, thisObject); + ObjectValue objVal = new ObjectValue(frame.getObject()); + objVal.writeTagged(os); } private void executePopFrames(ByteBuffer bb, DataOutputStream os) - throws JdwpException + throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException("Command PopFrames not implemented."); + if (!VMVirtualMachine.canPopFrames) + { + String msg = "popping frames is unsupported"; + throw new NotImplementedException(msg); + } + + ThreadId tid = (ThreadId) idMan.readObjectId(bb); + Thread thread = tid.getThread(); + long fid = bb.getLong(); + VMVirtualMachine.popFrames(thread, fid); } } diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java index fd7fa743e7a..0dd10200bf3 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java @@ -1,5 +1,5 @@ /* ThreadReferenceCommandSet.java -- class to implement the ThreadReference - Command Set Copyright (C) 2005 Free Software Foundation + Command Set Copyright (C) 2005, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -198,22 +198,42 @@ public class ThreadReferenceCommandSet } private void executeOwnedMonitors(ByteBuffer bb, DataOutputStream os) - throws JdwpException + throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException( - "Command OwnedMonitors not implemented."); + if (!VMVirtualMachine.canGetOwnedMonitorInfo) + { + String msg = "getting owned monitors is not supported"; + throw new NotImplementedException(msg); + } + + ThreadId tid = (ThreadId) idMan.readObjectId(bb); + Thread thread = tid.getThread(); + Object[] monitors = VMVirtualMachine.getOwnedMonitors(thread); + + os.write(monitors.length); + for (int i = 0; i < monitors.length; ++i) + { + ObjectId id = idMan.getObjectId(monitors[i]); + id.writeTagged(os); + } } private void executeCurrentContendedMonitor(ByteBuffer bb, DataOutputStream os) - throws JdwpException + throws JdwpException, IOException { - // This command is optional, determined by VirtualMachines CapabilitiesNew - // so we'll leave it till later to implement - throw new NotImplementedException( - "Command CurrentContentedMonitors not implemented."); + if (!VMVirtualMachine.canGetCurrentContendedMonitor) + { + String msg = "getting current contended monitor is not supported"; + throw new NotImplementedException(msg); + } + + ThreadId tid = (ThreadId) idMan.readObjectId(bb); + Thread thread = tid.getThread(); + + Object monitor = VMVirtualMachine.getCurrentContendedMonitor(thread); + ObjectId id = idMan.getObjectId(monitor); + id.writeTagged(os); } private void executeStop(ByteBuffer bb, DataOutputStream os) diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java index a7edb287a56..e2703908ba2 100644 --- a/libjava/classpath/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java +++ b/libjava/classpath/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java @@ -1,6 +1,6 @@ /* VirtualMachineCommandSet.java -- class to implement the VirtualMachine Command Set - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -54,6 +54,7 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.Properties; @@ -179,7 +180,8 @@ public class VirtualMachineCommandSet ArrayList allMatchingClasses = new ArrayList(); // This will be an Iterator over all loaded Classes - Iterator iter = VMVirtualMachine.getAllLoadedClasses(); + Collection classes = VMVirtualMachine.getAllLoadedClasses(); + Iterator iter = classes.iterator (); while (iter.hasNext()) { @@ -203,22 +205,11 @@ public class VirtualMachineCommandSet private void executeAllClasses(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - // Disable garbage collection while we're collecting the info on loaded - // classes so we some classes don't get collected between the time we get - // the count and the time we get the list - //VMVirtualMachine.disableGarbageCollection(); + Collection classes = VMVirtualMachine.getAllLoadedClasses(); + os.writeInt(classes.size ()); - int classCount = VMVirtualMachine.getAllLoadedClassesCount(); - os.writeInt(classCount); - - // This will be an Iterator over all loaded Classes - Iterator iter = VMVirtualMachine.getAllLoadedClasses(); - //VMVirtualMachine.enableGarbageCollection(); - int count = 0; - - // Note it's possible classes were created since out classCount so make - // sure we don't write more classes than we told the debugger - while (iter.hasNext() && count++ < classCount) + Iterator iter = classes.iterator (); + while (iter.hasNext()) { Class clazz = (Class) iter.next(); ReferenceTypeId id = idMan.getReferenceTypeId(clazz); @@ -340,14 +331,13 @@ public class VirtualMachineCommandSet private void executeCapabilities(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - // Store these somewhere? - os.writeBoolean(false); // canWatchFieldModification - os.writeBoolean(false); // canWatchFieldAccess - os.writeBoolean(false); // canGetBytecodes - os.writeBoolean(false); // canGetSyntheticAttribute - os.writeBoolean(false); // canGetOwnedMonitorInfo - os.writeBoolean(false); // canGetCurrentContendedMonitor - os.writeBoolean(false); // canGetMonitorInfo + os.writeBoolean(VMVirtualMachine.canWatchFieldModification); + os.writeBoolean(VMVirtualMachine.canWatchFieldAccess); + os.writeBoolean(VMVirtualMachine.canGetBytecodes); + os.writeBoolean(VMVirtualMachine.canGetSyntheticAttribute); + os.writeBoolean(VMVirtualMachine.canGetOwnedMonitorInfo); + os.writeBoolean(VMVirtualMachine.canGetCurrentContendedMonitor); + os.writeBoolean(VMVirtualMachine.canGetMonitorInfo); } private void executeClassPaths(ByteBuffer bb, DataOutputStream os) @@ -401,43 +391,60 @@ public class VirtualMachineCommandSet private void executeCapabilitiesNew(ByteBuffer bb, DataOutputStream os) throws JdwpException, IOException { - // Store these somewhere? final int CAPABILITIES_NEW_SIZE = 32; - os.writeBoolean(false); // canWatchFieldModification - os.writeBoolean(false); // canWatchFieldAccess - os.writeBoolean(false); // canGetBytecodes - os.writeBoolean(false); // canGetSyntheticAttribute - os.writeBoolean(false); // canGetOwnedMonitorInfo - os.writeBoolean(false); // canGetCurrentContendedMonitor - os.writeBoolean(false); // canGetMonitorInfo - os.writeBoolean(false); // canRedefineClasses - os.writeBoolean(false); // canAddMethod - os.writeBoolean(false); // canUnrestrictedlyRedefineClasses - os.writeBoolean(false); // canPopFrames - os.writeBoolean(false); // canUseInstanceFilters - os.writeBoolean(false); // canGetSourceDebugExtension - os.writeBoolean(false); // canRequestVMDeathEvent - os.writeBoolean(false); // canSetDefaultStratum + + executeCapabilities(bb, os); + os.writeBoolean(VMVirtualMachine.canRedefineClasses); + os.writeBoolean(VMVirtualMachine.canAddMethod); + os.writeBoolean(VMVirtualMachine.canUnrestrictedlyRedefineClasses); + os.writeBoolean(VMVirtualMachine.canPopFrames); + os.writeBoolean(VMVirtualMachine.canUseInstanceFilters); + os.writeBoolean(VMVirtualMachine.canGetSourceDebugExtension); + os.writeBoolean(VMVirtualMachine.canRequestVMDeathEvent); + os.writeBoolean(VMVirtualMachine.canSetDefaultStratum); for (int i = 15; i < CAPABILITIES_NEW_SIZE; i++) - // Future capabilities - // currently unused - os.writeBoolean(false); // Set to false + { + // Future capabilities (currently unused) + os.writeBoolean(false); + } } private void executeRedefineClasses(ByteBuffer bb, DataOutputStream os) throws JdwpException { - // Optional command, don't implement - throw new NotImplementedException( - "Command VirtualMachine.RedefineClasses not implemented"); + if (!VMVirtualMachine.canRedefineClasses) + { + String msg = "redefinition of classes is not supported"; + throw new NotImplementedException(msg); + } + + int classes = bb.getInt(); + Class[] types = new Class[classes]; + byte[][] bytecodes = new byte[classes][]; + for (int i = 0; i < classes; ++i) + { + ReferenceTypeId id = idMan.readReferenceTypeId(bb); + int classfile = bb.getInt(); + byte[] bytecode = new byte[classfile]; + bb.get(bytecode); + types[i] = id.getType(); + bytecodes[i] = bytecode; + } + + VMVirtualMachine.redefineClasses (types, bytecodes); } private void executeSetDefaultStratum(ByteBuffer bb, DataOutputStream os) throws JdwpException { - // Optional command, don't implement - throw new NotImplementedException( - "Command VirtualMachine.SetDefaultStratum not implemented"); + if (!VMVirtualMachine.canSetDefaultStratum) + { + String msg = "setting the default stratum is not supported"; + throw new NotImplementedException(msg); + } + + String stratum = JdwpString.readString(bb); + VMVirtualMachine.setDefaultStratum(stratum); } private void executeAllClassesWithGeneric(ByteBuffer bb, DataOutputStream os) diff --git a/libjava/classpath/gnu/classpath/jdwp/util/MethodResult.java b/libjava/classpath/gnu/classpath/jdwp/util/MethodResult.java index a9c1b330579..190511de83f 100644 --- a/libjava/classpath/gnu/classpath/jdwp/util/MethodResult.java +++ b/libjava/classpath/gnu/classpath/jdwp/util/MethodResult.java @@ -52,6 +52,9 @@ public class MethodResult // Any Exception that was thrown by the executing method private Exception thrownException; + + // The type of this result + private Class resType; public Object getReturnedValue() { @@ -73,4 +76,14 @@ public class MethodResult this.thrownException = thrownException; } + public Class getResultType() + { + return resType; + } + + public void setResultType(Class type) + { + resType = type; + } + } diff --git a/libjava/classpath/gnu/classpath/jdwp/util/MonitorInfo.java b/libjava/classpath/gnu/classpath/jdwp/util/MonitorInfo.java new file mode 100644 index 00000000000..f28eabf834e --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/util/MonitorInfo.java @@ -0,0 +1,76 @@ +/* MonitorInfo.java -- class used to return monitor information + for JDWP. + + Copyright (C) 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.util; + +import gnu.classpath.jdwp.VMIdManager; +import gnu.classpath.jdwp.id.ObjectId; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * This class is used to pass monitor information between + * the JDWP back-end and the virtual machine. + * + * @author Keith Seitz (keiths@redhat.com) + */ +public class MonitorInfo +{ + public int entryCount; + public Thread owner; + public Thread[] waiters; + + public void write(DataOutputStream os) + throws IOException + { + VMIdManager idm = VMIdManager.getDefault(); + ObjectId id = idm.getObjectId(owner); + id.write(os); + os.write(entryCount); + os.write(waiters.length); + for (int i = 0; i < waiters.length; ++i) + { + id = idm.getObjectId(waiters[i]); + id.write(os); + } + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/util/NullObject.java b/libjava/classpath/gnu/classpath/jdwp/util/NullObject.java new file mode 100644 index 00000000000..ec762fc2fbf --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/util/NullObject.java @@ -0,0 +1,50 @@ +/* NullObject.java -- placeholder for null values + Copyright (C) 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 +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.util; + +/** + * This is a placeholder for null. There are several places in JDWP where null + * is a valid value (i.e. when geting the value of a variable slot that + * contains a null reference at that time). This class distinguishes between + * these "meaningful" null values and invalid null pointers. + * + * @author Kyle Galloway + */ +public class NullObject +{ +} diff --git a/libjava/classpath/gnu/classpath/jdwp/util/Value.java b/libjava/classpath/gnu/classpath/jdwp/util/Value.java index 414c4a33b82..e69de29bb2d 100644 --- a/libjava/classpath/gnu/classpath/jdwp/util/Value.java +++ b/libjava/classpath/gnu/classpath/jdwp/util/Value.java @@ -1,301 +0,0 @@ -/* Value.java -- class to read/write JDWP tagged and untagged values - Copyright (C) 2005, 2006, 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 -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.util; - -import gnu.classpath.jdwp.JdwpConstants; -import gnu.classpath.jdwp.VMIdManager; -import gnu.classpath.jdwp.exception.InvalidFieldException; -import gnu.classpath.jdwp.exception.JdwpException; -import gnu.classpath.jdwp.exception.JdwpInternalErrorException; -import gnu.classpath.jdwp.exception.NotImplementedException; -import gnu.classpath.jdwp.id.ObjectId; - -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - -/** - * A class to read/write JDWP tagged and untagged values. - * - * @author Aaron Luchko - */ -public class Value -{ - /** - * Will write the given object as an untagged value to the DataOutputStream. - * - * @param os write the value here - * @param obj the Object to write - * @throws IOException - * @throws InvalidFieldException - */ - public static void writeUntaggedValue(DataOutputStream os, Object obj) - throws JdwpException, IOException - { - writeValue(os, obj, false); - } - - /** - * Will write the given object as a tagged value to the DataOutputStream. - * - * @param os write the value here - * @param obj the Object to write - * @throws IOException - * @throws InvalidFieldException - */ - public static void writeTaggedValue(DataOutputStream os, Object obj) - throws JdwpException, IOException - { - writeValue(os, obj, true); - } - - /** - * Will write the given object as either a value or an untagged value to the - * DataOutputStream. - * - * @param os write the value here - * @param obj the Object to write - * @param tagged true if the value is tagged, false otherwise - * @throws IOException - * @throws InvalidFieldException - */ - private static void writeValue(DataOutputStream os, Object obj, - boolean tagged) - throws IOException, JdwpException - { - Class clazz = obj.getClass(); - if (clazz.isPrimitive()) - { - if (clazz == byte.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.BYTE); - os.writeByte(((Byte) obj).byteValue()); - } - else if (clazz == char.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.CHAR); - os.writeChar(((Character) obj).charValue()); - } - else if (clazz == float.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.FLOAT); - os.writeFloat(((Float) obj).floatValue()); - } - else if (clazz == double.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.DOUBLE); - os.writeDouble(((Double) obj).doubleValue()); - } - else if (clazz == int.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.BYTE); - os.writeInt(((Integer) obj).intValue()); - } - else if (clazz == long.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.LONG); - os.writeLong(((Long) obj).longValue()); - } - else if (clazz == short.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.SHORT); - os.writeInt(((Short) obj).shortValue()); - } - else if (clazz == void.class) - { // A 'void' has no data - if (tagged) - os.writeByte(JdwpConstants.Tag.VOID); - } - else if (clazz == boolean.class) - { - if (tagged) - os.writeByte(JdwpConstants.Tag.BOOLEAN); - os.writeBoolean(((Boolean) obj).booleanValue()); - } - else - { // This shouldn't be possible - throw new JdwpInternalErrorException( - "Field has invalid primitive!"); - } - } - else - { - // Object is an Object, not a primitive type wrapped in an object - // Write the appropriate tag - if (tagged) - { - if (clazz.isArray()) - os.writeByte(JdwpConstants.Tag.ARRAY); - else if (obj instanceof String) - os.writeByte(JdwpConstants.Tag.STRING); - else if (obj instanceof Thread) - os.writeByte(JdwpConstants.Tag.THREAD); - else if (obj instanceof ThreadGroup) - os.writeByte(JdwpConstants.Tag.THREAD_GROUP); - else if (obj instanceof ClassLoader) - os.writeByte(JdwpConstants.Tag.CLASS_LOADER); - else if (obj instanceof Class) - os.writeByte(JdwpConstants.Tag.CLASS_OBJECT); - else - os.writeByte(JdwpConstants.Tag.OBJECT); - } - ObjectId oid = VMIdManager.getDefault().getObjectId(obj); - oid.write(os); - } - } - - /** - * Reads the appropriate object for the tagged value contained in the - * ByteBuffer. - * - * @param bb contains the Object - * @return The Object referenced by the value - * @throws JdwpException - * @throws IOException - */ - public static Object getObj(ByteBuffer bb) - throws JdwpException, IOException - { - return getUntaggedObj(bb, bb.get()); - } - - /** - * Reads an object of the given Class from the untagged value contained - * in the ByteBuffer. - * - * @param bb contains the Object - * @param type corresponds to the TAG of value to be read - * @return the resultant object - * @throws JdwpException - * @throws IOException - */ - public static Object getUntaggedObj(ByteBuffer bb, Class type) - throws JdwpException, IOException - { - if (type.isPrimitive()) - { - if (type == byte.class) - return new Byte(bb.get()); - else if (type == char.class) - return new Character(bb.getChar()); - else if (type == float.class) - return new Float(bb.getFloat()); - else if (type == double.class) - return new Double(bb.getDouble()); - else if (type == int.class) - return new Integer(bb.getInt()); - else if (type == long.class) - return new Long(bb.getLong()); - else if (type == short.class) - return new Short(bb.getShort()); - else if (type == boolean.class) - return Boolean.valueOf(bb.get() != 0); - else if (type == void.class) - return new byte[0]; - else - { // This shouldn't be possible - throw new JdwpInternalErrorException( - "Field has invalid primitive!"); - } - } - else - { - // Field is an object - ObjectId oid = VMIdManager.getDefault().readObjectId(bb); - return oid.getObject(); - } - } - - /** - * Reads the an object of the given Class from the untagged value contained - * in the ByteBuffer. - * - * @param bb contains the Object - * @param tag TAG of the Value to be read - * @return the object - * @throws JdwpException - * @throws IOException - */ - public static Object getUntaggedObj(ByteBuffer bb, byte tag) - throws JdwpException, IOException - { - switch (tag) - { - case JdwpConstants.Tag.BYTE: - return new Byte(bb.get()); - case JdwpConstants.Tag.CHAR: - return new Character(bb.getChar()); - case JdwpConstants.Tag.FLOAT: - return new Float(bb.getFloat()); - case JdwpConstants.Tag.DOUBLE: - return new Double(bb.getDouble()); - case JdwpConstants.Tag.INT: - return new Integer(bb.getInt()); - case JdwpConstants.Tag.LONG: - return new Long(bb.getLong()); - case JdwpConstants.Tag.SHORT: - return new Short(bb.getShort()); - case JdwpConstants.Tag.VOID: - return new byte[0]; - case JdwpConstants.Tag.BOOLEAN: - return (bb.get() == 0) ? new Boolean(false) : new Boolean(true); - case JdwpConstants.Tag.STRING: - return JdwpString.readString(bb); - case JdwpConstants.Tag.ARRAY: - case JdwpConstants.Tag.THREAD: - case JdwpConstants.Tag.OBJECT: - case JdwpConstants.Tag.THREAD_GROUP: - case JdwpConstants.Tag.CLASS_LOADER: - case JdwpConstants.Tag.CLASS_OBJECT: - // All these cases are ObjectIds - ObjectId oid = VMIdManager.getDefault().readObjectId(bb); - return oid.getObject(); - default: - throw new NotImplementedException("Tag " + tag - + " is not implemented."); - } - } -} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/BooleanValue.java b/libjava/classpath/gnu/classpath/jdwp/value/BooleanValue.java new file mode 100644 index 00000000000..42bb806fadb --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/BooleanValue.java @@ -0,0 +1,100 @@ +/* BooleanValue.java -- JDWP wrapper class for a boolean value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an boolean value. + * + * @author Kyle Galloway + */ +public final class BooleanValue + extends Value +{ + // The boolean wrapped by this class + boolean _value; + + /** + * Create a new BooleanValue from an boolean + * + * @param value the boolean to wrap + */ + public BooleanValue(boolean value) + { + super(JdwpConstants.Tag.BOOLEAN); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public boolean getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Boolean(_value); + } + + /** + * Write the wrapped boolean to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeBoolean(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/ByteValue.java b/libjava/classpath/gnu/classpath/jdwp/value/ByteValue.java new file mode 100644 index 00000000000..204fe86b0e8 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/ByteValue.java @@ -0,0 +1,99 @@ +/* ByteValue.java -- JDWP wrapper class for a byte value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an byte value. + * + * @author Kyle Galloway + */ +public final class ByteValue + extends Value +{ + // The byte wrapped by this class + byte _value; + + /** + * Create a new ByteValue from an byte + * + * @param value the byte to wrap + */ + public ByteValue(byte value) + { + super(JdwpConstants.Tag.BYTE); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public byte getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Byte(_value); + } + + /** + * Write the wrapped byte to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeByte(_value); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/CharValue.java b/libjava/classpath/gnu/classpath/jdwp/value/CharValue.java new file mode 100644 index 00000000000..f68fc88d156 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/CharValue.java @@ -0,0 +1,100 @@ +/* CharValue.java -- JDWP wrapper class for a char value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an char value. + * + * @author Kyle Galloway + */ +public final class CharValue + extends Value +{ + // The char wrapped by this class + char _value; + + /** + * Create a new CharValue from an char + * + * @param value the char to wrap + */ + public CharValue(char value) + { + super(JdwpConstants.Tag.CHAR); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public char getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Character(_value); + } + + /** + * Write the wrapped char to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeChar(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/DoubleValue.java b/libjava/classpath/gnu/classpath/jdwp/value/DoubleValue.java new file mode 100644 index 00000000000..45923c4dac4 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/DoubleValue.java @@ -0,0 +1,100 @@ +/* DoubleValue.java -- JDWP wrapper class for a double value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an double value. + * + * @author Kyle Galloway + */ +public final class DoubleValue + extends Value +{ + // The double wrapped by this class + double _value; + + /** + * Create a new DoubleValue from an double + * + * @param value the double to wrap + */ + public DoubleValue(double value) + { + super(JdwpConstants.Tag.DOUBLE); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public double getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Double(_value); + } + + /** + * Write the wrapped double to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeDouble(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/FloatValue.java b/libjava/classpath/gnu/classpath/jdwp/value/FloatValue.java new file mode 100644 index 00000000000..970f77c07b4 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/FloatValue.java @@ -0,0 +1,100 @@ +/* FloatValue.java -- JDWP wrapper class for a float value + Copyright (C) 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 +afloat 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an float value. + * + * @author Kyle Galloway + */ +public final class FloatValue + extends Value +{ + // The float wrapped by this class + float _value; + + /** + * Create a new FloatValue from an float + * + * @param value the float to wrap + */ + public FloatValue(float value) + { + super(JdwpConstants.Tag.FLOAT); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public float getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Float(_value); + } + + /** + * Write the wrapped float to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeFloat(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/IntValue.java b/libjava/classpath/gnu/classpath/jdwp/value/IntValue.java new file mode 100644 index 00000000000..27868754f7f --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/IntValue.java @@ -0,0 +1,100 @@ +/* IntValue.java -- JDWP wrapper class for an int value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an int value. + * + * @author Kyle Galloway + */ +public final class IntValue + extends Value +{ + // The int wrapped by this class + int _value; + + /** + * Create a new IntValue from an int + * + * @param value the int to wrap + */ + public IntValue(int value) + { + super(JdwpConstants.Tag.INT); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public int getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Integer(_value); + } + + /** + * Write the wrapped int to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeInt(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/LongValue.java b/libjava/classpath/gnu/classpath/jdwp/value/LongValue.java new file mode 100644 index 00000000000..0ebe0e9f98a --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/LongValue.java @@ -0,0 +1,100 @@ +/* LongValue.java -- JDWP wrapper class for a long value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an long value. + * + * @author Kyle Galloway + */ +public final class LongValue + extends Value +{ + // The long wrapped by this class + long _value; + + /** + * Create a new LongValue from an long + * + * @param value the long to wrap + */ + public LongValue(long value) + { + super(JdwpConstants.Tag.LONG); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public long getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Long(_value); + } + + /** + * Write the wrapped long to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeLong(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/ObjectValue.java b/libjava/classpath/gnu/classpath/jdwp/value/ObjectValue.java new file mode 100644 index 00000000000..7ec9beb5f93 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/ObjectValue.java @@ -0,0 +1,92 @@ +/* ObjectValue.java -- JDWP wrapper class for an Object value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; +import gnu.classpath.jdwp.VMIdManager; +import gnu.classpath.jdwp.id.ObjectId; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an Object value. + * + * @author Kyle Galloway + */ +public final class ObjectValue + extends Value +{ + // The Object wrapped by this class + Object _value; + + /** + * Create a new ObjectValue from an Object + * + * @param value the Object to wrap + */ + public ObjectValue(Object value) + { + super(JdwpConstants.Tag.OBJECT); + _value = value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return _value; + } + + /** + * Write the wrapped object to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + ObjectId oid = VMIdManager.getDefault().getObjectId(_value); + oid.write(os); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/ShortValue.java b/libjava/classpath/gnu/classpath/jdwp/value/ShortValue.java new file mode 100644 index 00000000000..cbde2269e6c --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/ShortValue.java @@ -0,0 +1,100 @@ +/* ShortValue.java -- JDWP wrapper class for a short value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an short value. + * + * @author Kyle Galloway + */ +public final class ShortValue + extends Value +{ + // The short wrapped by this class + short _value; + + /** + * Create a new ShortValue from a short + * + * @param value the short to wrap + */ + public ShortValue(short value) + { + super(JdwpConstants.Tag.SHORT); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public short getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return new Short(_value); + } + + /** + * Write the wrapped short to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + os.writeShort(_value); + } +} + diff --git a/libjava/classpath/gnu/classpath/jdwp/value/StringValue.java b/libjava/classpath/gnu/classpath/jdwp/value/StringValue.java new file mode 100644 index 00000000000..2371547efed --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/StringValue.java @@ -0,0 +1,100 @@ +/* StringValue.java -- JDWP wrapper class for an String value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; +import gnu.classpath.jdwp.util.JdwpString; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an String value. + * + * @author Kyle Galloway + */ +public final class StringValue + extends Value +{ + // The String wrapped by this class + String _value; + + /** + * Create a new StringValue from an String + * + * @param value the String to wrap + */ + public StringValue(String value) + { + super(JdwpConstants.Tag.OBJECT); + _value = value; + } + + /** + * Get the value held in this Value + * + * @return the value represented by this Value object + */ + public String getValue() + { + return _value; + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return _value; + } + + /** + * Write the wrapped object to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + JdwpString.writeString(os, _value); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/Value.java b/libjava/classpath/gnu/classpath/jdwp/value/Value.java new file mode 100644 index 00000000000..4ad8bec0703 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/Value.java @@ -0,0 +1,155 @@ +/* Value.java -- base class of JDWP values + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.exception.InvalidClassException; +import gnu.classpath.jdwp.exception.InvalidObjectException; +import gnu.classpath.jdwp.exception.InvalidTagException; +import gnu.classpath.jdwp.exception.JdwpInternalErrorException; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + +/** + * Superclass for all JDWP Values. + * + * @author Kyle Galloway + */ +public abstract class Value +{ + // A Tag representing the type of this value + private byte _tag; + + /** + * Create a new value of type tag. + * + * @param tag the type of the value + */ + protected Value(byte tag) + { + _tag = tag; + } + + /** + * Get the tag for this Value + * + * @return the byte tag of this Value + */ + public byte getTag() + { + return _tag; + } + + /** + * Calls the dervied classes writeValue method to write its value to the + * DataOutputStream. + * + * @param os write the value here + * @throws IOException + */ + public void writeUntagged(DataOutputStream os) + throws IOException + { + write(os); + } + + /** + * Will write the given object as a tagged value to the DataOutputStream. + * + * @param os write the value here + * @param obj the Object to write + * @throws IOException + */ + public void writeTagged(DataOutputStream os) + throws IOException + { + os.write (_tag); + write(os); + } + + /** + * This method must write the value to the DataOutputStream in a manner + * appropriate for the type of the value. + * + * @param os DataOutputStream to write to + * @throws IOException + */ + protected abstract void write(DataOutputStream os) + throws IOException; + + /** + * Returns an object representing this type + * + * @return an Object represntation of this value + */ + protected abstract Object getObject(); + + /** + * Get an untagged object from the ByteBuffer + * + * @param bb the ByteBuffer to extract the value from + * @param type a Class representing the type + * @return an Object from the ByteBuffer of the type of the Class parameter + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + public static Object getUntaggedObject(ByteBuffer bb, Class type) + throws JdwpInternalErrorException, InvalidObjectException, InvalidClassException + { + Value val = ValueFactory.createFromUntagged(bb, type); + return val.getObject(); + } + + /** + * Get an untagged object from the ByteBuffer + * + * @param bb the ByteBuffer to extract the value from + * @param tag a byte tag representing the type + * @return an Object from the ByteBuffer of the type of the Class parameter + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + public static Object getTaggedObject(ByteBuffer bb) + throws JdwpInternalErrorException, InvalidObjectException, InvalidTagException + { + Value val = ValueFactory.createFromTagged(bb); + return val.getObject(); + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/ValueFactory.java b/libjava/classpath/gnu/classpath/jdwp/value/ValueFactory.java new file mode 100644 index 00000000000..8f1a8780eeb --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/ValueFactory.java @@ -0,0 +1,247 @@ +/* ValueFactory.java -- factory to create JDWP Values + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; +import gnu.classpath.jdwp.VMIdManager; +import gnu.classpath.jdwp.exception.InvalidClassException; +import gnu.classpath.jdwp.exception.InvalidObjectException; +import gnu.classpath.jdwp.exception.InvalidTagException; +import gnu.classpath.jdwp.exception.JdwpInternalErrorException; +import gnu.classpath.jdwp.id.ObjectId; +import gnu.classpath.jdwp.util.JdwpString; + +import java.nio.ByteBuffer; + +/** + * A factory to create JDWP Values. + * + * @author Kyle Galloway + */ +public class ValueFactory +{ + /** + * Creates a new Value of appropriate type for the value in the ByteBuffer + * by reading the tag byte from the front of the buffer. + * + * @param bb contains the Object + * @return A new Value of appropriate type + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + public static Value createFromTagged(ByteBuffer bb) + throws JdwpInternalErrorException, InvalidObjectException, InvalidTagException + { + return create(bb, bb.get()); + } + + /** + * Creates a new Value of appropriate type for the value in the ByteBuffer + * by checking the type of the Class passed in. + * + * @param bb contains the Object + * @param type a Class representing the type of the value in the ByteBuffer + * @return A new Value of appropriate type + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + public static Value createFromUntagged(ByteBuffer bb, Class type) + throws JdwpInternalErrorException, InvalidObjectException, InvalidClassException + { + byte tag = getTagForClass(type); + + try + { + return create(bb, tag); + } + catch (InvalidTagException ite) + { + throw new InvalidClassException(ite); + } + } + + /** + * Creates a new Value of appropriate type for the value in the ByteBuffer. + * + * @param bb contains the Object + * @param tag a byte representing the type of the object + * @return A new Value of appropriate type + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + private static Value create(ByteBuffer bb, byte tag) + throws JdwpInternalErrorException, InvalidObjectException, InvalidTagException + { + Value val = null; + switch(tag) + { + case JdwpConstants.Tag.BYTE: + val = new ByteValue(bb.get()); + break; + case JdwpConstants.Tag.BOOLEAN: + val = new BooleanValue((bb.get() != 0)); + break; + case JdwpConstants.Tag.CHAR: + val = new CharValue(bb.getChar()); + break; + case JdwpConstants.Tag.SHORT: + val = new ShortValue(bb.getShort()); + break; + case JdwpConstants.Tag.INT: + val = new IntValue(bb.getInt()); + break; + case JdwpConstants.Tag.FLOAT: + val = new FloatValue(bb.getFloat()); + break; + case JdwpConstants.Tag.LONG: + val = new LongValue(bb.getLong()); + break; + case JdwpConstants.Tag.DOUBLE: + val = new DoubleValue(bb.getDouble()); + break; + case JdwpConstants.Tag.VOID: + val = new VoidValue(); + break; + case JdwpConstants.Tag.ARRAY: + case JdwpConstants.Tag.THREAD: + case JdwpConstants.Tag.OBJECT: + case JdwpConstants.Tag.THREAD_GROUP: + case JdwpConstants.Tag.CLASS_LOADER: + case JdwpConstants.Tag.CLASS_OBJECT: + ObjectId oid = VMIdManager.getDefault().readObjectId(bb); + val = new ObjectValue(oid.getObject()); + break; + case JdwpConstants.Tag.STRING: + val = new StringValue(JdwpString.readString(bb)); + break; + default: + throw new InvalidTagException(tag); + } + + return val; + } + + /** + * Creates a tag for the type of the class. + * + * @param klass the type to get a tag for + * @return a byte tag representing the class + * @throws JdwpInternalErrorException + * @throws InvalidObjectException + */ + private static byte getTagForClass(Class klass) + throws JdwpInternalErrorException + { + byte tag; + + if (klass.isPrimitive()) + { + if (klass == byte.class) + tag = JdwpConstants.Tag.BYTE; + else if (klass == boolean.class) + tag = JdwpConstants.Tag.BOOLEAN; + else if (klass == char.class) + tag = JdwpConstants.Tag.CHAR; + else if (klass == short.class) + tag = JdwpConstants.Tag.SHORT; + else if (klass == int.class) + tag = JdwpConstants.Tag.INT; + else if (klass == float.class) + tag = JdwpConstants.Tag.FLOAT; + else if (klass == long.class) + tag = JdwpConstants.Tag.LONG; + else if (klass == double.class) + tag = JdwpConstants.Tag.DOUBLE; + else if (klass == void.class) + tag = JdwpConstants.Tag.VOID; + else + throw new JdwpInternalErrorException("Invalid primitive class"); + } + else + { + tag = JdwpConstants.Tag.OBJECT; + } + + return tag; + } + + /** + * Create a value type for an Object of type determined by a Class. This is + * a special case where a value needs to be created, but the value to create + * it for is already in an object, not in a buffer. + * + * @param value the Object to convert to a Value + * @param type the Class type of the object + * @return a new Value representing this object + */ + public static Value createFromObject(Object value, Class type) + { + Value val = null; + + if (type.isPrimitive()) + { + if (type == byte.class) + val = new ByteValue(((Byte) value).byteValue()); + else if (type == boolean.class) + val = new BooleanValue(((Boolean) value).booleanValue()); + else if (type == char.class) + val = new CharValue(((Character) value).charValue()); + else if (type == short.class) + val = new ShortValue(((Short) value).shortValue()); + else if (type == int.class) + val = new IntValue(((Integer) value).intValue()); + else if (type == float.class) + val = new FloatValue(((Float) value).floatValue()); + else if (type == long.class) + val = new LongValue(((Long) value).longValue()); + else if (type == double.class) + val = new DoubleValue(((Double) value).doubleValue()); + else if (type == void.class) + val = new VoidValue(); + } + else + { + if (type.isAssignableFrom(String.class)) + val = new StringValue ((String) value); + else + val = new ObjectValue(value); + } + + return val; + } +} diff --git a/libjava/classpath/gnu/classpath/jdwp/value/VoidValue.java b/libjava/classpath/gnu/classpath/jdwp/value/VoidValue.java new file mode 100644 index 00000000000..82cded92903 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/VoidValue.java @@ -0,0 +1,82 @@ +/* VoidValue.java -- JDWP wrapper class for a void value + Copyright (C) 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 +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.value; + +import gnu.classpath.jdwp.JdwpConstants; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Wrapper for an void value. + * + * @author Kyle Galloway + */ +public class VoidValue + extends Value +{ + /** + * Create a new VoidValue. + */ + public VoidValue () + { + super(JdwpConstants.Tag.VOID); + } + + /** + * Return an object representing this type + * + * @return an Object represntation of this value + */ + @Override + protected Object getObject() + { + return null; + } + + /** + * Write the wrapped void to the given DataOutputStream. + * + * @param os the output stream to write to + */ + @Override + protected void write(DataOutputStream os) + throws IOException + { + } +} diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/VMFrame.class b/libjava/classpath/lib/gnu/classpath/jdwp/VMFrame.class index 10e284132fa3b6b6b9c5ddc84f8425b1eef20978..cf8f695204e4f85c4c2ba339fdff0dc28614b1b0 100644 GIT binary patch delta 150 zcmaFO(ZRXl6Jv;qhNqLJPkLUdesWG?adAOnNrrw_N_l~PSz=CUs(u)Vv}R=BC{8T_ zvl$tHItZwrtjY9Q(3gRQ!JmPXA%KC8A&^0YA!xELa};CbWqy*mJ9%@ge|uK delta 125 zcmeC+e9f`p6QjAPhNq@aR$^JAeokUuy1su>R%&vIH6sH@acW6eVoqr)BZHWRCx(j2 zZcLvAeHd66{1`YH{2BNd0vJRX0w;ShM=?fBUdrslm^WFUMRYPdi#lUDkY&Tz0OGS7 LF)%PNF&F~?Gj|}e diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class b/libjava/classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class index f48b6eb890ad060e4b41d8b0cbef1ab7dafd0ad8..09c69bf4234e0e26c6eb555fd04f188eeaff27e1 100644 GIT binary patch literal 4017 zcmb_e+j10D6kVN6GGsC_2_ZmGP!uE=!T=&FK`|r*0!hFG2PJCk^qkBzbb7|_(?IZs zchrB-Qc)h%va~FutingF@&o)9pVW1_dnVnT#`3|3x$J%Rb?tR7zyI~~F97!8dKOI@ z9xB^j!LW4Kt?9B-xKO%WD-@@TrXxMwn%0eqX^Si}8oDm%m-K?A+vURP#S6la8u|>~ zKBr5gGGPjbFqOKIf{QV~BCF=#`IMVUeznnd)m+yy7uWae7>E9>*@R z4-Ff*Fel`=SkgU9&Phj?-ZIq-YFrDh=hoQgf>HHssd7*Gqw=I_6;9}GMe2)|7-9Dd zt`xPJX_psd#SwamwylRv;`fw>=Kg`AhRhhj&!HLH^4NlVIhQHIGUF{T3g@f}qhbA2 z)zGb??wCprl^Izv8Exm(e_#_U$*H8KZkbmZup_MhtX~t$?+@ztsTL?lRBgFqR}4{8 z>~gc{*D#opOVmvYCy7kMfxU-GMlCA{>EsO;u?GbfW&}K{7q+2)U~OeN z?xaVu*sozzN)^|n@%c5P{MJi>eaaIQtI%R z=sJQYvp7r;S9fc~H;<=O)HX&vqpK~V9G=c&6h}3*>xMKhi7~|@pAVC2bv%z_n4pia zy=6h-sr}bKzZQrAnh)Vb9+N7?Jxmcvoa4qnmB$Y3)Q}BfRa8n=Np7?$PKTXtT4NCO zsiCDDV9{Fh`(V8+kEhNgBl9=qSk1~^`Yb4GW*Hs-cffC=b$DNxYqGg8U=rNk`kpo(E@z{{qZ;>cdM~OToDGZ znmR%sM*{@6-^dzjMm53MA|{SlQX?;fQ-~5XjCVd2av#3HX_j=g6oLwZ-~!>b!tJ;- zT3tw(NNQdeJo1&FBg&kCaKc+p?Hjc!`ofg|yVd*OHrbg4rTQkp<$h%>CYF7>F4$SkYQ+qD< z2zVk2VK|U~naApzgRpinSoA4EFm^@5g~T36nK|DBbiV6z<>9n2k;#UI^31HQzC1Rj zIGyzG&nRbllW)8|>L|u`p3~}`){Q>2pp{aVQWMruZcE6ygxsEx^9i{lA>WgbI}>tO zLheq;>l1QMLf(*&dlT};n4H5VY-X>jQ}w%*z4Hac@B1hf_^a`^W$-6#{hoiCa6i8l zK){oDfZzGRfDk^&XKouFqO3A6(~$bh_!!Be-f_ZALL z4NdR9g+ntpksA*F4gdD{pHv+=nCZ>j!O)?W-F+>$Fm|r_VCzi`^tJT1?mv|6%l?Wj zec4+$KJ+EJ`?7;yfvfBKvbS;a-Bzu)wKwzG-+v4S>)AnSSNkcVmvxp|X$9@Lhz?j- zk7a7Bgr`O*mf5Rh?H-14i4U7AIE1TwKfHWVb)D=btf8y}+Faj*B6VZNxgjv7J@{j$QN#aNL2T zA&x_Q$^|$++Q9Kh1jiQ`C&E%9`w|usnwOy`G>b42niA`b$64Zh9Uhm>PvPQ%E{BFVr{{ZEU(*^(l literal 2891 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 literal 4198 zcma)8Yj7J^75=U)S+=r{9XoOTNK>bA9LtXi0*#C9hDL6hD6t*dxK5Q&(zUdeH<4G$ zYUMmgTT0(A!lMsLp^upkoq+&J19pmMXn!zdXlGys%0K=9Gcdrw@PpwGkMiBC)k=1x zx*m`2?z#7#`8%CLj*3p5?m=k-Whw^ESlxC-O$l$q8&2 zS6=gunU3t$bF+>8(MDw;RbNyDzgE`jx?HLs`5WS6SVuH(cu+!ex3jLAga$~r1XRM^jq$Q8F~ z*n_=HwVuryGNi%srG-i+n^jI9kuLUW*pG1*rIRVRCLmVQ$}L>oQL<*G@li90}qu zyFkfLaaO};aW~aw8K;=M<5BYKICFYrSd73awJyJr>f$q(^(lp!(%tl8>L<9`%zgUj|pt#!ZO;Hl_AAFk0&%dDWNsyt!3b( z=AYK^jO-A#wlSBPrx-+3z-JPVh_P>&@~NfFyBh#^G$hi7Zo9b1_&lD|@VvYw)~Fd3 zKkaS!x`r3!jTBIJCW;Yz@$}1hRuP)Jn1`+@ZDn%Xc^#FhqO3r9$iYnBP8heD@{V1n zz__0UH^_8gGq1!Nep2`lk~gz@;{C|6p1<|9@-)7MIm*9)xCHGYAADHL-w;P&FZ|ez zMrD;7o3PH^Hmc@<^>0GEf`%oC_#&F=g6|hRFKZQqDIR|(_a5>*`6vMwfbV_I5`uWM zZxI{%#E;P0w}du&>yVE>MC%edslAkb*N|#R5sUEHU}%4>nfX@s(5Lt;-;yZ zpZY5PLsjhStJpVGvG-Q7hpX5RSFtBn*q6{9uW345vxuGrgqalins8s=fd9}%2ysq) zPh7yDtD1k|X6F6~RkNRJxtm$O2VKyyjblG%FoXmPdj?T9=1CY-MUs8`UOuIe=9tAS z&ceh)93R6mJd5LaiQ_ArJ&!qD;%!_U|xqgljoD!orEyg(R!5J~d_H~5gQJfWN+$VAzPvU;@FdNrX9M9nq@f;o% zFR%~2#OIgsxOg2;h;QRb@f|*2z|-O)zN~bu6;zCfDmHc-K#1=8}_TU00-@+XN!+|%@ z*&cWccL}_M?%~?@T6+B4i{QhAw9g29&s1M=ctAPK;?Wpl$AL=A>53|f;=dwI@F5nS2jS~7s;vV)7x~cCT z4zve;hQ{{5WjwBoPn8AK!#V1Yj=$qB{6ht{QzWnzed7VX6YFQD=(6fiowbRRSmZD zGM*h+zze1PbSQ}bA&~!~gUGgv8tf2$42ysYp{sC|7s7}eLMyhqxuLk(5(;RyL0g(Mp8vWvYpK$f6#(QIFgKmt28wvfK(7A9U#( os)+GJ=_7TMD}ik#upR;n6WBl*WkVjYA&;`n9%V0+Bv$|b0pXVUq5uE@ diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/event/filters/StepFilter.class b/libjava/classpath/lib/gnu/classpath/jdwp/event/filters/StepFilter.class index ce6d2fbaca9bef7363ada7c16a773f6e21c25d9b..00c99201a97b02223610e45d3c8eb30003d890a6 100644 GIT binary patch delta 155 zcmdnaeUwY!)W2Q(7#J7~864Odm>3zfCl@klZ?yi*G zd4?bc6^392O@@%kRV-1Av6KB-MJK;vQD@8mv(#DD8H<4|c}Ft_Mg}IJsZ13zfCl@klZ?yi*l*P_q%g7*=l~|UjpOcuEt{+sI zSCW~V>ROSUT2PXipU1&q&&Z$@T#{PgmYGwMTBMhoSdyHPTC9+lU!stiTac5Qo0?aW zn!?3k!{Ernz{B9g$RMiWgD^0-q$o2l-C8qjvL5qENf!nd26qNN1`h@)1}_GA25$xx z1|J4Z2H(j7EK!VMle1ZD7!xP20FpVApR&k%+A%OQFaaITwVS~vQpj#QgTsCxkBLDK mNU||70?Bd)eIO|YQN>^Y^dbmwF*q~00Oc7OT!B0$1~&l9i8`kM diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidSlotException.class b/libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidSlotException.class new file mode 100644 index 0000000000000000000000000000000000000000..36b8d35b6e0e884698626dd0fdf6074c2a02b757 GIT binary patch literal 720 zcmaKqUoQhe6vfZ2(pA+`wCZpDc_qtlcin>&kkT(`xgkgQmu!{3lK6@<;siZ{f!K+#El~f*{Wv=r!E4e z>rOKs-KvnVUHv!4e(9GvKAi`FDujXiu%Rt_!XPATUNf-dnbJ!X`k^+p3QJ%Ne+VGP zuR#p)nc(V@-!Z=P>tieLFs`%7SEOcNka@wxEAr1R!3>|t*4Pem*u^Z@xwZ^*nCFTC oSimAfH9XycAF-u|8w}s*L)+&S4t~*$F3mu(wK8Fu^)ak`11t`x?f?J) literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidTagException.class b/libjava/classpath/lib/gnu/classpath/jdwp/exception/InvalidTagException.class new file mode 100644 index 0000000000000000000000000000000000000000..43a8518448a23b0618f2ebae58faf98880bbc9be GIT binary patch literal 685 zcmaJGD&hka@PUf&VxmQy^qcCozLrf)=>l9te|quV*QNDCWWj<_TH7+M~%G5XLIXkr(Zo zYw2H#Yg-c16}K+zn($Sae-&dvL$wIIm4DaJXL%(;l*h?kmkEig+xF}7RE0iMeb8Is zl(7gV@s9yV;`a~o8RzVZ?-7o38!38whIW-sJR&*U!B~2tgG>igkH|kTAc6%xM?XdO e5W_z5I6#4G*{%RvEOEwCSjNhy%_?URtbG7=X|3%5 literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/exception/TypeMismatchException.class b/libjava/classpath/lib/gnu/classpath/jdwp/exception/TypeMismatchException.class new file mode 100644 index 0000000000000000000000000000000000000000..97b019578d62c57aebe55b8847332e023815c406 GIT binary patch literal 723 zcmaKqUr!oA6vfZwkE}?=QUoj7Qrd@wCT=t)8d1~Gv`HJR4;Yd@4$B0FEW4ZCLG8!t zizIF02k=7~?*f{p5MO5Qot*Q#CpU9<|K}FKEau98^dGsWFG*D=0}wYAD$7(a9AF*2naWN+|ljNR;6j`+;ivG?;k$_Jc45(N2ni#sq1TRG8ucxu{#Prja?PE zd#ToM2P5ex-M~VDu)RF)B8E^-zKmtZ01+y^k$2*`+6#}|%+w~7c73fvl{_Wno2@>f z(1`+R;nH#rX`=K3i!un8ZLFY3Sna7$?xi0GGJfX`v?Nq}k?-lg7b|n08;iSHIe|Q? zHm;&17~{H)HQXSqOeA;4B$}^VeG4}UwZD{OIdl)AVX`lWGM1q)1q7-B>!=x^TZFad zLWeUA+O57JxozV%?hwQWMww+3wicrQ18*B%bsKk4V&wugF+Fr5tyz2(g%<7+9xqW} ze)i?qM7Z7X#M3I6@py4z=H`-P#nWi?mSq1kV;+z=h|<`XFO^ZWviJZV8fmb@H1qs& z2peV&e9EB&ix&@{Zw~L~D^|rf*r$BT;R^o+??9V#o?tbz8VsJtJa5Dvli6^ls5s>_ zTyxH`es~UXIK{>ko8PhJoMGoH3hz%jvc>|}(U_xeW=x);fDW^G&fZt-?XsG0vTF7W O8~5>mYY>_lgVrBrF0-8g literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.class b/libjava/classpath/lib/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.class index 7f0f3a4dade31e715c272f5831029ff2ba2ad2aa..755e2996ca385aa0f926964cba4a446a9f0eeefe 100644 GIT binary patch delta 892 zcmYk3S4>lJ6vlrCDeWzn)K#^j21kvGT1jvO95F^5(SV{vO;oPsN~(adRB+?KJ@NYB z3eiNxg@^-j;okef2cJxQ_SIMMv}i(Za&z+Kob!GE-)YMDHn8ivKlj^!EWWr&62>}` z(xYyfw|UfSk8zFbZW@JPTr8-v%GTMTqWC}03dhz&H<&bWL+Bcg+E&cYi>@ipU$M## z$Asy_=B%=+tWcR%Q5xzHb2};1%B;#tr#-n>sMFG1FHvrq+~Smw8mTOZM#>|xNR{p7 z4tL$O2m|6lhIE=SY2}`fRvnGR?1dFEtF+WE5&92vGNfs^!LJGibnV6}RbsYf|}DoAIoCS1oTsu)K#lUdIUHfYw3EMk);+f0Nl+O<`c zni_VnjRS1Q(drC4IZrK(>{3{}X=9J_+RJD5@tytr)XrZVC{P( zV=|iKlFbRp)mzWvw9Mm-ETLYCRV(K#sTy}>$MZ2sLlY?pa+!!Es!5tR2}5iwRwyZ- zEGMi4lkv-99%&#K=~BpJtx^c8$rF8(TP84;r>c2W>CH2qJH31h%@+z(@dk`m-Z<61 z{=o~1>Y}1*P*j%`)n!F>g^^s-LpCx=>)A9p_k2^v|FdGue=COaA#TNR26kBKjKN0@ MXK46OiKBe}3#1a**Z=?k delta 778 zcmYL`Sx8i26vuy`>8#ggForS{oMJ@DCBZT@lb~o5mvp3!a&)F?Or>lbZMDVrRW1>> z5P@Z(X=a+4X}i%&y%h8oJ@?vccJ65Oa_>3k`_B3Qzu)=l?oV-k`ZGEX8-X^rZ*aId8bd<@^xkRsY1Qh-jlP21*~Hs z>+!IW#T1i83AvP#N4cDAqD=mkc&TCw)oj;`wD$NKtkmMb&pZP97p=m2jak@0h4dc| z&tQ4HOSPpY#=0ycbmvQeZ z)QQ9%k*LQ-14--^gJCjhW*HGy(!yF=#pVGvb5M*OBE(_#aYVACoS?0Z3mik|IJYG2 z;-svqogq#!&S^eyhR>YkJLmYxd49?5-&|yhOUlA!mB1C1#8u^?LuH|>T&}AEI@M}f zcQH4Wm)mNa)OK?RyV%_|{dzRwB@+%*6tDsn4GYC@3|3W*j~W5xP+J9`pIBU~l4pz% zN0KVxxkM&BA~GuPF{|Y);f2&JQklybetpd0)m{ovA#1RFttUH^Jzaw8o}jufsJaE! w13~qW40>dby%b8kfj)hwvnX#yO2*Dek;;2Rigeu5Qqp5Jq~xoFlChM@zogr1hbI`@1v-8B$1X@Ee|>QR#1Qoq@l0VU^d@=_&Sk+M0@Ehvnw!#JrL@Amuh5WLRS_ z%?kEA{4GJFdRn86yBJo8YxOJSRheUIwz<*nw#Ze5`5P=5i|2wU#JAUbqj7no%7mzy zC9ZB3VRHJudB&cj955YP*1QijKH`vqLu!rD&1iO+iY?n*tvRhnII8loLT+v^)H0tZ5GZ%mMsdH^_$JDl>X(kR8ndJ-rv^Hb6BXqevoj@9wu1SrB#-NGv6^D8 zr-U20oNCIcWhpmOK^-;R%&qeENNkYUN~782=*#h9+5hiTTOJ#Owu&ouu| zORLZm3d0OU2)k8XEeP|5Zjm^$OC~uEo5YJqlK3PRoe3+3b^>7P*tm+q{E3i1bxUMy3h>N3~rNpBJDP$YO_F zeo?NyBvda8)y^oDYnJNWX{s#F=RF~aQAJ5(RQt?kXO4AJcF9u0PIH~}f|7A};-cMD z=7$NnExIL4*C_kls_ffKlQNTr`M_>DnI3Mo{Pw<2Li{e|C0CMaToT5|Q2wiZw%G z@h}DQ+)5ec3bApSRIpr(S|i_Eq_TRt$7y5&gK>d7K!}6fDbM9@4oUkDbHA*6WHi@v zl#LvdZXFlO6Kr9UXJzo8<0SU!E;^z{h`CWiqN^)qP!tifofffvc3M-6Ur=(Y}&1)2j}l e`i6pmaB4bh^Rca#Q4-pi{pZ@}0iCR|x delta 1238 zcmY+DYfw~W9L9fVVb3nh;VKBn1dAF577%lYVr42u$AQM8i&D(kObhHFv|Qp+T9ZsM zqcu($o)3yvI!&mJHRYhos(B$x%`m)VMK`l7Klk0Kp54tMKkR$n^Pd0zd7k(AKYP9W zia+!0--nL@cXQo?%V3dXm~%#&Q}-|2;xP)GtEu^gO~LSB$YKK<4bs~~1FO0Rg6-|0 zw#JrDgMc$)%pcG5-f%4#=77aPA_kc+^mPn`R>rI1-3FBgqEncK-6^IE#GQj%igC^~6Y%dK%h1d?un8{HJdDmZ0)6%o&R>Ics3*9&!Dp(m&U^X62eweC^?!^N&?>$26uvR{vms zZ>YPiE*wr^_xqUQg2hEHIrV9~3a7Yi@olU$voF*?*cF{ZJLl(0`8d?=Sba?*3k8gCMm zay(9uC#n;IjS(cMO!XwF^j{F-nAS{Tn|fwZ8@q?0Y{c&|=De1(VDV(aqp}Et0n;`k ztUJNUfJg5=)!tn1QN9SIBvt$NkYT6f`pTl5c4l&lhrTjwcZKb-Q<9>b4_LXWqnJ^? zv8_*LUyg8Zvu#aKb6j5a@)jd}Cmk`@`CEnz6oX%l}ZTujUeu|HB zn_`G;xjD+Q|3;a@+jJC{`?oR Cwj81W diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/processor/EventRequestCommandSet.class b/libjava/classpath/lib/gnu/classpath/jdwp/processor/EventRequestCommandSet.class index e1f284cd54dcdfb673fb6865f98b67df33a9c360..bbe0714c0206be2096f20ecf8a519593abc17322 100644 GIT binary patch delta 2010 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 MLW!Wjn+E&s32T&YvH$=8 delta 707 zcmb`DPfrs;7{;G1l&#y9SQ1G~sA+`+sVwyby&* zJoQR~_J=o|TD8Q+*`r!H*YFwlDh?O#B9?SR{D^!V)iH?M$lwk%X!c@}h z=Yn1tQ7l8n3VKMR508?OX7`@Y^dCAL5nl=sXD5c!hBnl4N?MzgO+6Jv zP>!+<$i9Ph1F1kjkX;241VJ{ziUNWtvbwN)UkauAXJ+zdzVEyDe)r3+W|LdGcHh~s z89+1PR1hVQE~i@DQwOQ#X)UZt<1tmkG~@{=dHzu5s3O0L>3B!M3^~bCBW<{^pv2!a z%UC=3azcg0qcqIKECE+evELW+cPK6#)@|@me@;lCy{zkSOQ&X+eJwTPt3_t0n1ezE zbLFDw8nM+b6wDWBZorYrW>sFbCRpa7gMvlUWosyw$j5Ddvx)EJMN5KKEiOaOwRNpC z2P-vvj8y`$gx)(4^5y0EbMK?^N?&vh*;H+0`9#BNtdRrM=1+$O>hWzTKaiI^tT2#I zLdp4oA%)3-!ccOsq^PK{IONY2FbxY*k+?2HeZzfC3w(jRroBSN49ZZjL2gqMET3uE zgw3)-?Ps2lvLLSjt zSWasA2|r7hqhsPhoYrvW0gC%oR`+&Th54q2ThixDGT+f~SC%>x6(KYcB}{UGv$-Oo zg`xO&xs=@rE%7Y8=!(|pj&|sQ4(Nq0$V4|}p*Q-VFS0QZ z&%uZO$in~(#UK>nc?2;SqmYA_;m6w;f*IUrBOh}y49ig@_qwEKIBXb!7>q;>zO9SV zXo#0&No<}i7bd72ijnduw@2QHwTqt85?7~Gx9Un5Q`SRzZMv;V7_-Yz(`(&`dD*&k z9Tsdc&g~-S_FKkTgva8EUVL{&Iik=EJqdVWWcOh)zZeBNA&%>-1Tuy|UV{g(qb4R0 z%$t1q79Jz`Cou_aF&Q0EI*Ht;FwHbFpFz$u$#4!CO(2i?urt+YXa;Vs4(`UO6FNgg zPF<*F6iXGNnEIGlFdre5z|68aSc+wc#zWL|IZqarZ-sYJ2894Tc#rR_wOHPU_wfPO zKE&T0AHvE|oHs064 z3nw8iVcw;LwVVYR#7e2Gm5vpJvJ%f=70Ik-)LJ%wJ)2y{c5j>(|3pS5_C!iti9HpM z-ou`bluGOjtpsdia0D=mMWK!?Pw-^-r5a`e(Bjs1-H0aHY3tB-3x8KON#zb~=bIf7 zjZ-S$R%xtNX{=EoLt_(juOmd0tccfbeyZtVhBMPV$?ZP%T2j`aXKEN5y^7%`dgk7T zEW=b`^xulDUX>3pNL`QZGRMGecHA3hB-P`>_|fauBi~LLwvE^04cqE&uD_I5QJjc+Jntjy{nY;ebdGv` z96}lna|Dl~4USR&;~c~jv|k1K;UscVQHlUg(L<*(oZ~-&`&gW%8_#1RF3`Sz(7qQi z3zsnuSFi|I>8#6a>ovCVFKocy*oN!agBvVylWA`;!|jO16`V;bR;BToDvi(F)7VBR zrT2||_@0qO`eX(0L9ZKkI;K5NjDyJ!Aavla72X(4q=wBBn(Wt{r_tluT@^#dEG)b zN=#`k5Eka0P|Rg8o6^lqJm#>lJ_w65>?&Lgi$#)%L$YwoafvNm!cOF7@W0rwfpGi_ DWIFRo delta 1867 zcmZWp3s6*L7(Ex3y?ZZrVOiLftES6Xnu2e`nN3Y)Bt_J8@Reh=!VS@7VPFw;niwgw z>An4Fn&w-HvV^n+HG!;r-~;oKruMM3e3ka_RjHj_2xn?`=HBoA|M&mjIp;gyzS?hh zZ(HN-t#tr;&)lv}<_ym)PfxGMm)mp9v>8UW|G};kWV|VQDE-ZgkS^mbF;nSc zS|-6IGE|ocDnmt*n%V0)tk+P1TnTcn;m?{=Xs8IFQp3A=PeKgW#{2x?a=cc8TX>?J zVzqj|`F#x^V52yw_8C(xAvvueKi}iaaSfYoWS97jQ3bv{e?id*-;)I{UxDA1mtW{L z@(rKg$mtD@2@Z_kNh>tV`Q6sXWr^xGNY?Y8G8ni@b2+_wHwxdphnTWzj zx)MpENYLVy2JDdWiG)sJ#nLo;(x)&>h$}8BE;M{OL%iPR3dJfK@VSPa*d=CZE0sOi zE2B}uy)8<|MQYe50@gN`JvgAD2?s@$wXgY*hQl}_&RZYelo4Z=hFs8aF?@ecUa@DI z*GMbydZ~9_fltL${H)=Z(5}t!{eSa{hF|fU2*mc0@dvKSxGEZBJ4fM$hMVGQ>^y0( zD79UgJRJQn5^iK-AVwn%V~~!q{2Iq73*-5lM6n*@(}PEmiz%4F%7t7h#uJ#s)u)h+ zmyv^od@o_fQq06U_(VgTaQLC11hJR}CrXio+312fV!Az78Hz~m0bX(3?vm2QO?$_( z6x~vb*DBD?ZP|uJlXXiC7T1U3v~WDE{#mo+Fgv1F-Pux&2wFNFBUm!@9?!B7P-yEY`AG1Uj<65wNkki7LgBEw~rSAE0hS%4B<04Tje9 ztGP)r;hj2W*Hfdqu-YzHb9$@jYOClf4N1|(Er+fQ(FWm7ddK~Sj$EO5ww7L~~Ib4i)lJ+i&yazfO(Fyy|9s4;-P4wSE zihPK}beP^c%7Hn?;W!E(PS7SNISQvZ3MWyHZ?K>Yr)kMEwBuRM&>1YoIV{6@s(yjW zo@380q6(K#!$IGH%h-)8IKa6MdGrYTOBq__YHF3MsaY;U+}Y~Uh8B36>Oeb0G*=R9w} zb9d~o&pCDVSRVi{)v1t0m?Rb`^S3Y8ZXdAp%vfpA9YjKl-|)K%7e$BCT))=emXsv$b65M<`YYS~kznQUVx9QfIJV%1 zB6V8)jms)r5_{F=k{dSk_y;=)x^=NoLTdB}gHo#sR|pf*fMTyqD{8VWm4jHO#nTwl z6Nm_kpp=;1N|2S6&(UI#WO^t_PLP+)DPOE2rP!G5BDL6`Ey-o9B|cGDj5lc35lV#D zm@n)`pFCer1!9@erL^d26j{Y)W0kT{Pd2iPKI5V+Toz?H^~w@GmC{%d$*ESB>&eaM z4&>b3;U&1@(PS(jIa{TcWY8(CPe_q?C>n8w;?77k;fyES+oQ3Bl!gt*gKC;Y@Jx?} z!~RIC^PW&J;!h-FQd1~#|12pY#X^BhRw&%wCWWO4=Z#lW4Wa5|c{inYA6 z0n5?ByN_ZOHp7p{5x{mnxdZoM51)PxA?(9yyofd&v5W^eU684E)N^=3kMgt^hG>|E7&Aj@;eP%p}`Z#!#0eH|-^b@a^t{X~2YBTbK6?;$96~W8x$zom(Sv%tj@dZO z?H=N`j))rb_uk{s;TZIIlXd%GML(Q4fw6cS9=wBzIEmZwE@t9A9@q&q;{!3r@_^<5 zrq_r>8!en6#jY%Wj^h33^rS} zz4*639WTkmOZzjcsuZsFQdWPbl1xgIqI+m-53 zw|g2UbbN|Je8%(n0^{%{s__+*f5T~K*z9lF-T^GeS+;b5t^AH{JBKwm&-VO?b?n9? z?8Y|E?_x)ETzVU_)BSOm27acam7GVJ$d4Ar(BLWdt`jl_*n(a6a;ls;I!VLsE8xI` z=;cVsI04e)S*RGQ8E^2o)r_`~bey4KFcay?z+J6^hO)`X@@x1_q8$ERmx*%4G;6Ip z&!?!cDvsje9;O%`gPDcEpB4=+F~uMc?G)fFjnWaeyD^mPvnT(9V6L6D45DTYt~?&2sS-}A5V&6>5(A- delta 1384 zcmaKreN5DK9LL|ElN-|utZ-{;}=dB1=6 zT>bO{=kZGuM*&pGRTdZom1?;;W4O&e{B3shy7m;?X`Hd(SAjQvp5Ncs-7}}9qo+Tj z;WwNWIJa);?u)GG=<14eCeGCZmZ0PMb$3M8_stKsSa41-H(siqPO_^#so8U8u*Qzv zxS-(=%nD3hk-nv!f~3-5qa8E&Q-cYY1jf=vmJ8IEsU=2o1=NHipo$#})v%-4n5>DW zrW_?^hbB%*Q%>jA<_t|TMOO{ZmAYhW;=*1*@;~s@erLVer-@$zYRXwx+0;4P*|b?1T-EARW8l!lTNjD_!wq z4;zKh@a7Zu=3OI*8I5`y^&ox$WclJr<8| zPQV2v6)B){G3^KjexZamA0JQ_))BSz;Q!(h*uJaZlen$++D|jB++COd^CKVk-44>tzyKJun?q)qE5g{oCYzm z#6}pKn8m_P+IdC9%KL^yWaHg{QkCba5W9-zxYEute}?1E)5Z(%U{>Alsgo3ylUpsR z>YT@CORurIt>H1rQeJOv5!hSc5CgJ^X7$ZQ&=~RVKhn={+2$AMGyzaI5{SRV>034|1yr1r{3~ZOa8yG ziV|2k%+F=MhxuM&`G^%DRvxkPiRB|!VFIi8Kd?%!V3n##Z%bN`-9qeEh8zhaAmu9G zS7!@Sa1$x#Q9fO@`5oTSI9g*@$W!SXq!LD{f<-Eo&mWYU|IMvs?gHl4GPhYm%HUtD S4*QE3_4*f4=Wx8Yl>Y_P0VBl# diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/processor/StackFrameCommandSet.class b/libjava/classpath/lib/gnu/classpath/jdwp/processor/StackFrameCommandSet.class index 5b8fa18bafab2b36dac8ac5497234c5a472ba2fc..d47a51d77ed54c6b5c1bf074e6ec140846459df0 100644 GIT binary patch delta 1604 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 Ho9&+fnZAMd diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.class b/libjava/classpath/lib/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.class index d92898641f88dbe26de459331951c64ac364faad..eadc685a0b5018de08bcbea1e2f784f662549c5f 100644 GIT binary patch delta 3289 zcmb7G33OD|8UFrcX5K6>3rr?32}y>8K$ZzRX$b_CSP~!v!YW&EAVZiK5}28w1#P56 z+z^2)6=>@*Ej4Yy?MR0J0xHU;R1k^_Y89-~MX7CRX=zQrd5H@djP-?seRU7W-IHRlUrWvTj3kj7!K48Dru;z^Dhbq8tO+m@C)qL z5D_GO)w+&0>=9T4VSmsUZV0L=wp7bL?AP$TT5jtVdjJR3gEmk4i-H7Wf1R(sW>86; zFBG!l5MI&nvY@Zpp!JTQ7O1KBg&Tu@9fxs5U9yc$KZaK|92X>ZZ=Dtn2I^~cyoM8M zvOT->bsZ;hLJ;e#u6AG_-q3LxX9U_3U#P-=N0=))xpVB;fwMZ^#9IPWD6rCROplLF zzoX+E-c|eTnU?o;{2Cvq3-$urd3>bdf*@U8vZtGM{01MZ(T?f1i};;}-wLwT`uJq^ zw4+Dt@9_t9$T8INnT|{Nqq^#t@6i@T@%cl7vUbg_y}EsPstapUVN`ZYe-Z)vchahWbXqi`KQ z3c12x($H8Rwo8H}>Ee=Pl^#DJt2gNt_jPAaURX=v?Km%~y7ZAWwIsgOmLYvL@kGg3 zA5StQlaSBF-y>e-OBi7qsLLR=Eg_}f5M74C!f-)`IbPxJxF(rZD^?T`|2rQ z&YawtRwRz{%Zf?Kz$%;eow<ru2lD_&wb1YpmmkVb(+A(*N3Lm4$-Q(GzF%9AHfl z>g=bo%{}jyvCo;wPg5CUF%i|MKrJR?DJl`dRII>s+=&@z!Ytf_TW}xdU_ItyBj)2# zRAC!##Sh`bkFgL>aQ9C5@ib~^vL!6hT2{twcoB7Y8TB}h2Asfh7D^Cj5yrb{r15X3 z$?w3$aaf7ZunM2!F8mGO!9Q@f0IMYyYs7|T(Xp1sx>sDdUsCaaq+^{7!b6mFos7Z; zDaIpGibvIa*X82JV8Y|j&;mOX%fxmJ#!pbf1k3qeiB`#}oCvnDRh2+-1g>{+H4Lx7-SPX0azGj<^!yZP3J zKG=&4Jdc6cj}bV4F*t~EoSTA|2>uWj;1w!zn4pgk^iizEF|6bKR=i5!O+Yi^qWGa3 z&*-S0@=+3wmQlnQ9=DllZKrMGx%E%@Gg)`yUi<}@xz>jo{*_8vm_lz{!QZLJ2=t(? z+hN5#6yqxO(HJ$|ShX@0C;o|l!G^Uuw|!yA7lS_P8Mmv+$^&gYyowT3cnkKRT|h=S zh)Q8 z+8V~8<#Hx0>voeWZEERbLyTx8)q9r80(Cjkr z7a?4e+Y%9{`rMsnwiHC9mvW{IZZbyOkl1N4N%2M`y~9wJ11;?*yP?lvPQV3f^AVwc z3>QA3nitWJ^*Ml-O#w3+PQ6D`@zF$4MjR74Ka<(dqrMB7dw@FDQ^MtF$6Ykd0~Ri9 zmKb$3C4YRD^fOFzpJa1n;sL9rKh=(!W~B^}93stwx6>fQ(MxhAkEU6G!p^w>`bOu} z=+x}u>zMGey0#b)NlD7AZcxdL4$+{A74c$+QyfSWT|JhX@BA{K#Lj$TkfT~MGbLYD z_I29QU}Ce;cqe_3nX7K@Gs%_B+onHs8GxS5wYTIVow+>Gr!2Xk`#?Jl3wEej8LUic zWyyp8b7=&Z3b~Z49!$&37&a!YO}^RvO*|O_8=F~1!zRV*wX}R0rLLq69QGb1P3h2l zwA&O_v3pks%CX#4f&{k1Bq>9Rj90VM^W$zXN;QFb-zYb!jp;e%W4*Bv`TC#ku$d$u zQo*p3VV5ZkUCGc>;g)HHJ{?&yLzy!sq>O8mG8QN6%PHeIj%MkUi4mEk0vXxymC-3y zW9QTlGKP(uLt^JLr7Ff-z*s(H%R=PKA`IvA23d?!sX?VI!7UO%mDHk!&!F62TF{e?PVhZe3t37TBsqcHr)uGHJ z+bRluC-Yfl2wl)OOL?=BY->2%%-J=@?DzU6H|?V|CRRvEUcPrXM*MFQyH^tv#6TB4_={c<Lyx6A9F4&F52MMR+F6pps3qk+r zn$U4wq2szj$91(b8|8~$12HI%(mLmwBNlw^5qo*WzW?_K)sWR+d`4Lw=KdqpxLLzUJp z$m3w^qw=3BP*I}LV8K!gE)i6)fCy@-PfEdxuWDOSY)iFOOz%wAf_c*i+I4|azBA1G9rY;)&8~qf{swIv0z$AZS#j( z+7xu-N%6YHoqCKAulpPQ%_|Ga8~yF=Ry>X4GM*83>kz{UJS$49lcbY4E#s8fV09Xv z!x^!|nq6^L!8x2E82o{N4Nu@j1ux+@1bLOey;{8`#GagCi>%m>-zs<+uMmvw!F8%` zo~D^!Q}8<85GI>P`kjJ{_`UGie9~q7LB^Y+&Nj&K7Osdbwt3P!cu&T=;)*TT@IL-1 zVwI87hYJ3LKZ_~KQgK=dPqN}5K3DKhEz7`_YG`6(V^xbkpayhAYI}K0M>7{>ZO{Nl zZ%hrE(TW@Bk@1zNiFF!4B!aOy7Th3%LPj!)ov|Y%Ss^o7#LKbMB^$-cq=>Azl+-va zm(AZ03a(Z4h*q+ZU7-X@6t!_f2PH9M77--T5aHrmuY}P1IZm z<4qP9<7_5{G8m#Gelz8W9r2?)xeDb$A|$kTw706w0Y)}&Rh#M$uuccbr%=AQ7C*o; zoJPttg5VG&IYuf}s8uI16Vo(^x6&wuim{6&P;Ut`5oYaD-V#u)lu9KEm5TZH8fk(; z-=T@(fPLWTa(A&*!d^tx zVtB#=nlH8{6w?B6JfS4KkWgIS($wT{4!CQBZJ`c-<4k|Us$jF4KSvFyD|itV%H7-& zatE7Q8`UPYIiv>6w3smFTlUUXLzC4N{*K1b+z|J5N7H}rUP>5OE*cWc%r;uCP#sIU zFL6ChJT#1%3Rl2@=?GvZR-+nCn2mPSU@hk2`ZQ5_%1%2 z%EW$*b@-IieTLicFN6tLPX^ph7HlL1n<)`n$ce3#iaWS7enbVhlScD(EbgH)2&%w+ zVuSN~*)ACI5M=Cz6%WJ1#SOQo~E@nUHKfo{_6Ni$& z7j8lf?*;D7>qb}gG3;M>1do*(yYY)sQx|ewrYCWjZ~{m9S1P%rZah^gyJTMkzup0x z%jl9Kcz%KQ*b9W6J+F9O#t6@s^JcsuNp zyYWG>#p|^2o=p-tB|SiA&)LVhs@~eBBazp?f(eHZhX@=@cruP6n@RWLDU9N?tBh?G zT<2^Sp%y2hvJkB}&7?oa9G}5Pw*MGsVdF^aplFEsKQ_z@ZP|<#unN3tWzAwZ)t&eY zQ)%FY8}SjYGSLqFfQ9>nec2d@Yb>C|=@al*eop4@DZ}5;$u<=kx>x2{4*VV0VdfGf z{DZv~j-AHE$H30nB#0L>EMZEC0XWMmD%tG>leqocDTaX)-*D!H7-IG}`KE0cY`k#qomOztXqA9S@RB=5$k4B5EjQqk2tY31kz++rSO|t%7 zz4&JEt}4XSY$Q<)QfQ92JtHr6tUj{wT=zIC6Gt<0s>XW_5&HJO{;(bv0CW?FT?i{J z;?RpZ^b)veDMMd|L9|@tXHHL<)J>DCy*{2b2TkF%R;7a~A~a2G%gm0OshRkkjG9ho z7M28tny1UVndRNWRcvN?tEg7D z-Nm-M*>;yM`SGme@HJM`$b($>zbX5_y!QCI!k+d75sT1SqVN9e)FqQUT2JL0y_VHxyWr7~n z&!ya65Pj!TUEjG>7d@A%`4rM-&%l7E^&Q6IL623e&WacItR%}pX6Kj8&OwbG{=)g# z?Gd-K{RrE;*?vT~&(iF)MCbE3drq+DID2wD+P5RWP-LcaC11JE;mnKBvYB15daJb6 zw!z6$o@eCeV5S$j<6dI$=XhAp>malPgtzp8aFUfgc6r6R^mI`@uw1QNosmtFTCC;QHcC z{9!D@As>6%PT+8F#6wq|mzQNZb0dbs!T&T)vh}HuXRB?ty1k6QB#h%tFzi^^K!rHb z8mHY|r>HiXRDPHbXlF$rjYw(SvS8v05lLf>xSLf;c}l3J`%u$NBHmunNJ3Wi?_1bJ zmGHWU6yM60PT+bBQV*k#|Ub!mwM)vJIR!;)=sB(#(T?vMYh`tQfhTchzc9Re^ zM_OxivT0|uZyf!=wXYghr?sLlpP)hC3Q7Ppu}wQe3vF6g$=}fVLO%_pNxjTk9P}s)Es16&1XIQWa|H`!-$Ll$excqkfixBKY73_)+3) zEVfN6NMLqnGH1>?v!7q@9{_f-l0<}ItzrARVR6rEbJ^5e^@q0ZOViS?glszXvhaLM zCJ|%EwD>*OEp9jTn_5d4k|FI1>ASY5SGna2hN)7xXP;q0HeKhzK6^AoTbho|Fw@ia zTc*y$foYrakRe*!s4~P(oVrLMinNANq-avfw8gc5R}*f9*Q|ihF}PLbuBq})F(#X) z$FN@dk2RvrG=wbo8_5*APd7Fx~)WrZ@;uHl}ENCA@-MA3=8siep|w z5+ej8jsal4m!*qSM5$ZHcMWlFs?ALHzTdWb7Oc|jC_R0IJ~9#9h=|TO{hVLb5EgPeRLBArhY2Z!ggbE#}j&5?!x%b?2e&-|KetbOxuz-S&l)yyAi>z{0*6TGH9$Cju zqh>{+s#-Fk-xZ%2cD5EO- zH=fP4LvDFh=z_pq6FNHMOyedda8IC{QO+k~I|571I$8!*Xd75L%{kgm!N3%w<#R~GfA2ZhKshI@ z_g_t6D8;(l`n8aA)Izc4dwvv@-AxtmPjAbP&&35`jD%_a9cfC|M~!=n&O{QMGQ|_F zBfnQ@S(Jh@lmCpXACv1|emj!G64pT8FM{n zrZrNmb9FYjIh)8~3lCvqmHG?3OlX(RIhwR2!Xh4!Q{%fOdZ!qrfMq-)@f6#&!dl}x J9+N(W)nD#q1*rf4 literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/util/NullObject.class b/libjava/classpath/lib/gnu/classpath/jdwp/util/NullObject.class new file mode 100644 index 0000000000000000000000000000000000000000..5e093e132a5a5104468edcfd90062a850bc4a000 GIT binary patch literal 303 zcmaivK~KU!5QX2AmSP1<{09&Y>cQ1B#0!b11`itU+p>Xe)|Rxp^1C>ZaNq~{ql~j? z;?c`{^WG$rZ$7_{CjgHa#s~=Gb>&21WZQ0~-H39v+X`p35esL`OJ1tN#s~?+QhrEb zWVIGQEulNpm9|fW&du$T5YFqBO3=YY9}&8QG}Dz@xc6K&Z!$NEaGlkKG)viNpMT5H zZgfkSWdD;)3CU~innFEme=q%my!U(c7Jm8YG Pf1V@u0Vl#0Yk>3{O^8H$ literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/BooleanValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/BooleanValue.class new file mode 100644 index 0000000000000000000000000000000000000000..07a234965f729ed51536017d1ed88544fd5f691f GIT binary patch literal 867 zcmZ`%+iuf95IvhZb?v&Bv;{&-ODUAvLBisNmmr|!B0v#&Xo=LkppCmqH*)RBS+{&t zABqH20*MdcqY$$jlSY*yOXHoHGiT<^?w`Lue*<`envD{}b~nkxDCUDfpR41rcXZYd zPkEe+a4$_`!IPGDY*-8%6QKsfF#Xw7GO#u|&txLia|X+A2QB)&N{@t#Da?AX;pzBZ z&~m^q@1cxohJ}Vq#K-)kBeDbDi3P(_BaL|6;+fQb5wz5?95C!OCXO>cd7YtLOf}OL zs+e@j4`@V(0?kfOM2ca>4;npw%EOo^-EbJK+qlh8xe6D=E~;45DrSiMER%{xUH6CO zG7VpI#hbb6=W1VNf}hm2eD}?lNc5FVlYxy*hGoM_==aT0#>EyM*tpM7{hz(ggR1Y=5B~~x4aeNx%@J1YWuuh#e2&+ZjH3D}j jq6IpSG}RB>yHe+x1gBke#*{fDWey%vfFI$g8nBT zG*L-3@dx;$jC1d<3n6KmOz+H`Idf)a|NQ;=8^9wpY*ZLF2XPjJ5g(67Tpb6)qq9+P z%A-sK?N3Vd^vj0Dus#uIFbvZlOc?`flk-HzQaxp`{C1;9e=m|F;bICk4>o2TFkJIc z#WcfgN5*15JL!w`9q&hiVZM`uJnHdOYQG3t>R65$wmK7alzLkX)k4e6K&V3Bl;0p> z4h6dXp$HYjqTlEY`6&+~9uI;%+Oo0CP`?OkRu@aC5$Rbf73o{^^D>zPFS+8~OpP*i zpi;q4T6$Rb)yGhbluY8Wjdg|v!$#=6ZkchhflV8C8J7QNuX1^~hb>ZUx@sAEn|r!J zC815MOcp^B4w5Vl#cQeeSuZ!UqkGZm8C?Qop-({8qBos|tV7-#ROknI&AIkD+~(?c zcwfn{piZ`KYM)WvbJVblS&H4v@tDJP@~9H?l&4Pt3s@{z1LIT2<~Mks36#@m81UB6 zc;;O#Xe`_y;#|^WYN~PGFD$*+1n0Q*abn=iWK@+;i^CuixK)0(gi$6BUN7UXuG^%txakmwkV5dNK6R zd7KMB=<}?jb|wsljfpsoVVHie%NSTd!Q&{2QounU)n7(Cs+@dtSUr*HrO literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/DoubleValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/DoubleValue.class new file mode 100644 index 0000000000000000000000000000000000000000..cd3446f62f72fe7d5aa01346256c2d7c39218da6 GIT binary patch literal 862 zcmZ`%T~E|N6g{&PO1lMCKwVMr3!z;T8((}`qoUQQ*|-nrCOnbZGFfI*+D&%~{wp<6 zNi^{X_@j(>rUf=6`!XN*o;e>g^Y`DcKL8%1WuwNhIY^5zPWX5{;_5IQ9-NHAW1bWu zjIyGih@M{CuoyO`A`OONZr>baU=eMe%2cXn43-}SJ(^x+2g1b+>K<%(y8bfgIbc}y zFpD{crH)L+hvKL&@{gR98J0U)%#$9^rQTOXOC8EF!&YaioeAS@hS|#0{6MJ6=!_qb zLx&38{!qkhLw?M|gr|eBthR03U}#*FOI{aE+|(K7iTfm%ij1!NB)AdPxH!Jd3ypj4&8xyzlNDI+VVDv1Y5&9u$v}jHFXmn`zmb$v{wHnbW+}8FF zEPSJV4NEjGn%;9d_X2h7ph2~3)FV8uV3}sUTA@Du3#{U5#TpXED7L<1;R}IEIt>Hf z8yc?!R5TXRUat;6F&2sVH=28z;1p|LFL8XD;5f5l;TG0OX@jsj%{s;8x)D7`Q& z_yINOP@*>&iC8gg`ayTZk9nBzbQqS|j*TnS)GTdiT{Ll3J6Iy>lUyolbK5VAWfs2R ziuVdNF4Vrt1wZO&>+Z`>u^20vr4t)B7&Z(ip=^hT?R%k{RCPq+LJq49g1F|Mi1b%*P>In z?bdg!e5JUC2Cb{6_6gNJ#WMD=M!8ER9v84q5mjP?&go8I6BjGi(8Q$J{)Uy$1S;t? z40vN`JhQJ?G#1fbu8JR$sK$A}(EOkYPOde6%+$ACg-^d6501Kd|w*UYD literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/IntValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/IntValue.class new file mode 100644 index 0000000000000000000000000000000000000000..44314bcf0643a5fc8efe5c329970064541854573 GIT binary patch literal 851 zcmZ`%+iuf95IvhZb?iF51EHmbQlNG!Ve!IC5KwNyC~6)Gk$6HIca=JF?Z{cTd=w8L z0hK`N2lS&5vuh`G42I3AFpXiD{i3TFSU|zED2e2A2Ez@!E`467hr-4T<{X%CRQ{FMwZJg% zpo&?Bg?5yP{rtEmvX8tM3x?%(8uGZyvq;5d(vU~dh+(@uwViR-Erx2@QLQfuCk!*L zN9|dZ==266lnkq`*B*K*ZRuXjmGz|I;7`=1>v>LQ0XS7-ry+?%}z-cZ9 zXRw>=zfk`{aRm#s&gfZ=d z&?y-3LDM*TUoB}2qP;2vd^ hL2Fl0{l?a%J6j)cnnmx5Gi&0^!XxYu5reDcz5fhsq+b94 literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/LongValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/LongValue.class new file mode 100644 index 0000000000000000000000000000000000000000..ed3f15c591fd02f6b6ae05fc61ce7f247b75e83a GIT binary patch literal 852 zcmZ`%U2oGs5S&Zhx^~^Pv;{(;EtCRwkg#~+B?u^Ag2*Bdg-AT1i+f5Pxpw57TmBRh zNI)f!_yPPV#O}pSt4et}-|o)N&g}W`zh8d9ef2q3L!IQ=$i_{9RYOVWx1CAF#Wr?q+!kn@RxfgSxWiK&GnKUn z)N8S>r$u-2MyEs38>({MYc97>;5N5@ zVDTHpH7wCtH?^nK_Y4cz#WLltP>t}ogcbVoZI$ZuKVS`)E7p)OW@7U@7QYZ^Ovf;w zZD_nPprWye_G;Dq$VepO-)MYff)lKNy}An d6SvOXxuzg#7rk@NoQX3BcX5x11bj0-_zyDCq{ILK literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/ObjectValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/ObjectValue.class new file mode 100644 index 0000000000000000000000000000000000000000..09f765c4338420ea2d490286fbc27cef8859d38e GIT binary patch literal 1009 zcmah{+iuf95IviuHA&ny=?y5fgi=Z_r4|xzK}fU(5h)=LMMl5_+Sp6Fk!wfJy5+M# zf`WM91NbP!tZhXRb%iXiJv(R4oVon|^Ya&gN3aa!7|gO5{|O){`cqE{x3OhlGrO~PujBT(&xay3aR)WxBzZ^TBab}Auub|h%A1L5YyNE$ z_prlIo|e{e86Ia%Ad61A>HIn_(e0vc;6b+B8KjAITxZAyG=q(#iCJx8$On?d)c%*4 zDnAaQ&=D`B9(iSEc>B7ow93RqE6wPoJ)tvC{|2tnStRQva`XUZv(o*JQnU393t!02 zVTsPgIQALE9iWUuROoI!!J~?0vM3TO_WuHLMCerj literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/ShortValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/ShortValue.class new file mode 100644 index 0000000000000000000000000000000000000000..c4c9584b3da34e90ac6e6721f36747c3fd84f331 GIT binary patch literal 864 zcmZ`%T~E|N6g{(aDJ_LXKwUu)MWkI48ee=_qvBV@Y}|+9COnbZGTH5>w43e}{82t= zqLOIh5Aa7B?@a41A=xyY&b@Q)x#!%@pT9qU19*%*6BUN-UXuG^%txakmwkV5dNK6R zd7KMB=%<i@(nQv#tDveN&9hLvjnrIglL_ssZgdxDDs(3pz4R|=HE2&JX|*VNhYCG_ z(^v{FVK>&lW8o{s71U^5)V0s4?gi#?fF;V^D)6|0Ws0a0D|Aj*1FN`Mvidrvj*V|v z_)MUJPQifpn#R%lYDr@d?d`Jo2{lzX=NIb7ir^A!U#@X{yu#s(IqqVEI&BhGnY^bB l9#BRZwDuI$58R))v-JU|S#+;Bv&POW?7}4?22Zzd`~%7KsCxha literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/StringValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/StringValue.class new file mode 100644 index 0000000000000000000000000000000000000000..32526db8bdb145afdf02d3259419b28cb97f6fe8 GIT binary patch literal 934 zcma)4+iuf95Iqx|x^~<)^undk0;QBBm9Tg&LbP1OB_a<+enlI1m2TwPk+W|3ERaAT z9{2!03NgF3N>EaSERA+`N&tKnv0C-rGjPa(5_BMVN?mP@(K`_K`}JeoR)K#f`Tb%S|{!a80X(nZ{NFtFd<5xjPAFDB8r+Xpc32Dr% zUeTT(NL@);ZMCOK5ysU6SrO5B5ci&QfQTgulZi3ngDmOMQGUhWrz^|gT=H! z!>g9@>ekELEbh$wFe~y{zEI`>&52b$FcSF3BEBKm!d#85!*3V!Y(4f~qQ)N(bei3- z@H@L-u<(if8kX2D+TJJJw~q!6(B#;avL2VQ%pP}Qh4aMUD%L90(E2>F^BD^txu}FQ zWxyK?6WDjXf^iu3>i;xHGn=pBI*(XqaHH;qRkqI&qs-eiB)(zek1XFN`n-gALXvkb P$-`Z2GZ5jP<-YS9G6l&P literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/Value.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/Value.class new file mode 100644 index 0000000000000000000000000000000000000000..c23ace6f3af04f403a8190c41941bdb6485ba416 GIT binary patch literal 1753 zcma)6*-{fh6g?fXz!1XbzJiJ-K^feaxDg-<732ZTgFaZ3(1xMHOls(;{DJ;~{(}!% zrD*x!2l!Ezr)QEdLZEoaWcv2)bIv{YPXGD)>oo}Zv0j$mvQ@50fuW*Xv1%pDv-P?ejH*?8Ltv!1 zzrq{|d@b>+RLfcv`6#RJt!FFw+~HnTt_Yk?7yUA9*POAGwb)SghFVgdwAOQ4wlVvz zBJ0X_os9%e2n@Hf=N8*L2CF!g#AzHAi23*e5tkxQ?2RqZ>t|9Lbr?8@3kjSTIM%}7 zsYc_EX*cJztR7a?GW}3G6Yzvu!SV;0(yFtSdaqfn!*cVRO6D7{UrR3+IzFv?p6dXZ zz_`He4yMbNLFPQCWX@62bFA8|=eb_np#-i7T;KQboWuFDR|2J>gQmc>gBxd za8+PD!ha+CgTIsC(f5_B2>SU<`6s8CKh4}33@~;i$i^UsxZ*hs6P1@04&iVU)AZLs zEc*?8pP3ZE=`>)$he`VHu_lZl>``VN<9?Jo$9-uJ8PU?>+3_u$+?Hkd(HAV|Wk^!I zEh&yOIO|Io>3}-lL`{urbz2zSfgTiHr9rFcgB@Z>wHZAipGs3x~<{qSx zA(P(erj1!##)Mzh0;9Siz1i`fm|VELgJeb9e~%kRxH7 v#ouQKB7}SZZB&@(kx!IoUeMW}m@3l3T|6I&@+nlH(d3CW(REj6eQkw*_sfgZ literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/classpath/jdwp/value/ValueFactory.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/ValueFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..375ad8020a4b01cd8cac02b056bfa226e8cc9f7a GIT binary patch literal 4626 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 D?uvZu literal 0 HcmV?d00001