From dcff630527292e8d64ccaedbd5b92bee57a19091 Mon Sep 17 00:00:00 2001 From: kgallowa Date: Mon, 9 Apr 2007 20:30:20 +0000 Subject: [PATCH] 2007-04-09 Kyle Galloway * classpath/gnu/classpath/jdwp/value/ArrayValue.java: New file. * classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class: New file. * gnu/classpath/jdwp/ArrayValue.h: New file. * gnu/classpath/jdwp/natVMFrame.cc (getValue): Add array case. (setValue): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123680 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 8 ++ .../gnu/classpath/jdwp/value/ArrayValue.java | 92 +++++++++++++++++++++ .../lib/gnu/classpath/jdwp/value/ArrayValue.class | Bin 0 -> 1006 bytes libjava/gnu/classpath/jdwp/natVMFrame.cc | 15 ++++ libjava/gnu/classpath/jdwp/value/ArrayValue.h | 41 +++++++++ 5 files changed, 156 insertions(+) create mode 100644 libjava/classpath/gnu/classpath/jdwp/value/ArrayValue.java create mode 100644 libjava/classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class create mode 100644 libjava/gnu/classpath/jdwp/value/ArrayValue.h diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 52772f070c4..dc120cabc49 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2007-04-09 Kyle Galloway + + * classpath/gnu/classpath/jdwp/value/ArrayValue.java: New file. + * classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class: New file. + * gnu/classpath/jdwp/ArrayValue.h: New file. + * gnu/classpath/jdwp/natVMFrame.cc (getValue): Add array case. + (setValue): Ditto. + 2007-04-09 David Daney PR libgcj/23758 diff --git a/libjava/classpath/gnu/classpath/jdwp/value/ArrayValue.java b/libjava/classpath/gnu/classpath/jdwp/value/ArrayValue.java new file mode 100644 index 00000000000..c5e00a019d9 --- /dev/null +++ b/libjava/classpath/gnu/classpath/jdwp/value/ArrayValue.java @@ -0,0 +1,92 @@ +/* ArrayValue.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 Array value. + * + * @author Kyle Galloway + */ +public class ArrayValue + extends Value +{ + // The Array wrapped by this class represented as a Object + Object _value; + + /** + * Create a new ArrayValue from an Object + * + * @param value the Object to wrap + */ + public ArrayValue(Object value) + { + super(JdwpConstants.Tag.ARRAY); + _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/lib/gnu/classpath/jdwp/value/ArrayValue.class b/libjava/classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class new file mode 100644 index 0000000000000000000000000000000000000000..f2352401ec7824dd7000c9a245b59203151dde1c GIT binary patch literal 1006 zcmah{+iuf95IviuHA&p2=?y5fq%DP9N-ZSbf{=Ov5h)=LMM2O9w6T|TBiD|cbqjw5 z5){M(AHYW;W^F62s4HZ7?b$hV=FH{ypP#<~JceZ;!>~EAd8|2114Qm_iDX77-mgOVVa@TmY#SOp7cfVn)h9yGx;`mdpwZZPA+rmSdJOC z+SdxcsEmY7C93lSp<=ZRi`Cjykpw*pq@uK|NeR-o4!GjoP>n)$r~<)Hn!1$2^N+R| zDd~G-11k&*Q9lUX>P|cb+{K!K)%3>pIxVNeJw6bDiF>FJC&@byA9(00h7Hn}Qr)Gf zrsm%;v5ET(#Yt%`hv7-u0Mh8BlZ>zB5Zwb*4LnSjdkJY`88;a+K8;`{Zem)S7_z=3 zF_r%%rpgcfFtEi7sV82#nB9)1@=`;-J zL^Ng$NN94pErhy7{v3I3N8;YljTT@2fjgS%9P6F!#yPhBRrr?Fy(8MAh`JI7O%#?< TL!C&Aq_cr-B4v0KiQ4%Kgk$GP literal 0 HcmV?d00001 diff --git a/libjava/gnu/classpath/jdwp/natVMFrame.cc b/libjava/gnu/classpath/jdwp/natVMFrame.cc index e32e7334136..6f2d5233233 100644 --- a/libjava/gnu/classpath/jdwp/natVMFrame.cc +++ b/libjava/gnu/classpath/jdwp/natVMFrame.cc @@ -24,6 +24,7 @@ details. */ #include #include #include +#include #include #include #include @@ -240,6 +241,14 @@ gnu::classpath::jdwp::VMFrame::getValue (jint slot, jbyte sig) case 'V': value = new VoidValue (); break; + case '[': + { + Object *obj = getObjectJVMTI (env, thread, slot, depth, sig); + if (obj == NULL) + obj = new util::NullObject (); + value = new ArrayValue (obj); + break; + } default: Object *obj = getObjectJVMTI (env, thread, slot, depth, sig); if (obj == NULL) @@ -313,6 +322,12 @@ gnu::classpath::jdwp::VMFrame::setValue (jint slot, Value* value) } case 'V': break; + case '[': + { + ArrayValue *val = reinterpret_cast (value); + setObjectJVMTI (env, thread, slot, depth, sig, val->getObject ()); + break; + } default: { ObjectValue *val = reinterpret_cast (value); diff --git a/libjava/gnu/classpath/jdwp/value/ArrayValue.h b/libjava/gnu/classpath/jdwp/value/ArrayValue.h new file mode 100644 index 00000000000..3c6e6935e30 --- /dev/null +++ b/libjava/gnu/classpath/jdwp/value/ArrayValue.h @@ -0,0 +1,41 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __gnu_classpath_jdwp_value_ArrayValue__ +#define __gnu_classpath_jdwp_value_ArrayValue__ + +#pragma interface + +#include +extern "Java" +{ + namespace gnu + { + namespace classpath + { + namespace jdwp + { + namespace value + { + class ArrayValue; + } + } + } + } +} + +class gnu::classpath::jdwp::value::ArrayValue : public ::gnu::classpath::jdwp::value::Value +{ + +public: + ArrayValue(::java::lang::Object *); +public: // actually protected + virtual ::java::lang::Object * getObject(); + virtual void write(::java::io::DataOutputStream *); +public: // actually package-private + ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::value::Value)))) _value; +public: + static ::java::lang::Class class$; +}; + +#endif // __gnu_classpath_jdwp_value_ArrayValue__ -- 2.11.0