PatchSet 7387 Date: 2006/08/19 21:48:45 Author: robilad Branch: HEAD Tag: (none) Log: cleaned up VM interfaces
2006-08-19 Dalibor Topic <[EMAIL PROTECTED]> * libraries/javalib/vmspecific/gnu/classpath/jdwp/VMFrame.java, libraries/javalib/vmspecific/gnu/classpath/jdwp/VMIdManager.java, libraries/javalib/vmspecific/gnu/classpath/jdwp/VMMethod.java, libraries/javalib/vmspecific/gnu/classpath/jdwp/VMVirtualMachine.java, libraries/javalib/vmspecific/gnu/inet/finger/package.html, libraries/javalib/vmspecific/gnu/inet/gopher/package.html, libraries/javalib/vmspecific/gnu/inet/imap/package.html, libraries/javalib/vmspecific/gnu/inet/nntp/package.html, libraries/javalib/vmspecific/gnu/inet/pop3/package.html, libraries/javalib/vmspecific/gnu/inet/smtp/package.html, libraries/javalib/vmspecific/gnu/java/lang/VMInstrumentationImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMCompilationMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMRuntimeMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/lang/management/VMThreadMXBeanImpl.java, libraries/javalib/vmspecific/gnu/java/nio/VMChannel.java, libraries/javalib/vmspecific/gnu/java/nio/VMPipe.java, libraries/javalib/vmspecific/gnu/java/nio/VMSelector.java, libraries/javalib/vmspecific/java/io/VMFile.java, libraries/javalib/vmspecific/java/io/VMObjectInputStream.java, libraries/javalib/vmspecific/java/io/VMObjectStreamClass.java, libraries/javalib/vmspecific/java/lang/VMClass.java, libraries/javalib/vmspecific/java/lang/VMCompiler.java, libraries/javalib/vmspecific/java/lang/VMDouble.java, libraries/javalib/vmspecific/java/lang/VMFloat.java, libraries/javalib/vmspecific/java/lang/VMMath.java, libraries/javalib/vmspecific/java/lang/VMObject.java, libraries/javalib/vmspecific/java/lang/management/VMManagementFactory.java, libraries/javalib/vmspecific/java/lang/reflect/VMProxy.java, libraries/javalib/vmspecific/java/net/VMNetworkInterface.java, libraries/javalib/vmspecific/java/nio/VMDirectByteBuffer.java, libraries/javalib/vmspecific/java/nio/channels/VMChannels.java: Removed. * libraries/javalib/vmspecific/Makefile.am: Removed unimplemented and duplicate VM interfaces. Members: ChangeLog:1.4889->1.4890 libraries/javalib/vmspecific/Makefile.am:1.1->1.2 libraries/javalib/vmspecific/Makefile.in:1.1->1.2 libraries/javalib/vmspecific/gnu/classpath/jdwp/VMFrame.java:1.2->1.3(DEAD) libraries/javalib/vmspecific/gnu/classpath/jdwp/VMIdManager.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/classpath/jdwp/VMMethod.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/classpath/jdwp/VMVirtualMachine.java:1.2->1.3(DEAD) libraries/javalib/vmspecific/gnu/inet/finger/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/inet/gopher/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/inet/imap/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/inet/nntp/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/inet/pop3/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/inet/smtp/package.html:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/VMInstrumentationImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMCompilationMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMRuntimeMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/lang/management/VMThreadMXBeanImpl.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/nio/VMChannel.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/gnu/java/nio/VMPipe.java:1.2->1.3(DEAD) libraries/javalib/vmspecific/gnu/java/nio/VMSelector.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/io/VMFile.java:1.2->1.3(DEAD) libraries/javalib/vmspecific/java/io/VMObjectInputStream.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/io/VMObjectStreamClass.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/VMClass.java:1.3->1.4(DEAD) libraries/javalib/vmspecific/java/lang/VMCompiler.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/VMDouble.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/VMFloat.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/VMMath.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/VMObject.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/management/VMManagementFactory.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/lang/reflect/VMProxy.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/net/VMNetworkInterface.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/nio/VMDirectByteBuffer.java:1.1->1.2(DEAD) libraries/javalib/vmspecific/java/nio/channels/VMChannels.java:1.1->1.2(DEAD) Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.4889 kaffe/ChangeLog:1.4890 --- kaffe/ChangeLog:1.4889 Mon Aug 14 01:05:47 2006 +++ kaffe/ChangeLog Sat Aug 19 21:48:45 2006 @@ -1,3 +1,46 @@ +2006-08-19 Dalibor Topic <[EMAIL PROTECTED]> + + * libraries/javalib/vmspecific/gnu/classpath/jdwp/VMFrame.java, + libraries/javalib/vmspecific/gnu/classpath/jdwp/VMIdManager.java, + libraries/javalib/vmspecific/gnu/classpath/jdwp/VMMethod.java, + libraries/javalib/vmspecific/gnu/classpath/jdwp/VMVirtualMachine.java, + libraries/javalib/vmspecific/gnu/inet/finger/package.html, + libraries/javalib/vmspecific/gnu/inet/gopher/package.html, + libraries/javalib/vmspecific/gnu/inet/imap/package.html, + libraries/javalib/vmspecific/gnu/inet/nntp/package.html, + libraries/javalib/vmspecific/gnu/inet/pop3/package.html, + libraries/javalib/vmspecific/gnu/inet/smtp/package.html, + libraries/javalib/vmspecific/gnu/java/lang/VMInstrumentationImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMClassLoadingMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMCompilationMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMRuntimeMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/lang/management/VMThreadMXBeanImpl.java, + libraries/javalib/vmspecific/gnu/java/nio/VMChannel.java, + libraries/javalib/vmspecific/gnu/java/nio/VMPipe.java, + libraries/javalib/vmspecific/gnu/java/nio/VMSelector.java, + libraries/javalib/vmspecific/java/io/VMFile.java, + libraries/javalib/vmspecific/java/io/VMObjectInputStream.java, + libraries/javalib/vmspecific/java/io/VMObjectStreamClass.java, + libraries/javalib/vmspecific/java/lang/VMClass.java, + libraries/javalib/vmspecific/java/lang/VMCompiler.java, + libraries/javalib/vmspecific/java/lang/VMDouble.java, + libraries/javalib/vmspecific/java/lang/VMFloat.java, + libraries/javalib/vmspecific/java/lang/VMMath.java, + libraries/javalib/vmspecific/java/lang/VMObject.java, + libraries/javalib/vmspecific/java/lang/management/VMManagementFactory.java, + libraries/javalib/vmspecific/java/lang/reflect/VMProxy.java, + libraries/javalib/vmspecific/java/net/VMNetworkInterface.java, + libraries/javalib/vmspecific/java/nio/VMDirectByteBuffer.java, + libraries/javalib/vmspecific/java/nio/channels/VMChannels.java: + Removed. + + * libraries/javalib/vmspecific/Makefile.am: Removed unimplemented and duplicate + VM interfaces. + 2006-08-13 Kurt Miller <[EMAIL PROTECTED]> * configure.ac: Include sys/param.h when testing for Index: kaffe/libraries/javalib/vmspecific/Makefile.am diff -u kaffe/libraries/javalib/vmspecific/Makefile.am:1.1 kaffe/libraries/javalib/vmspecific/Makefile.am:1.2 --- kaffe/libraries/javalib/vmspecific/Makefile.am:1.1 Sun Aug 13 01:47:09 2006 +++ kaffe/libraries/javalib/vmspecific/Makefile.am Sat Aug 19 21:48:48 2006 @@ -29,40 +29,14 @@ vminterfacedir = $(FAKE) dist_vminterface_JAVA = \ - gnu/classpath/jdwp/VMFrame.java \ - gnu/classpath/jdwp/VMIdManager.java \ - gnu/classpath/jdwp/VMMethod.java \ - gnu/classpath/jdwp/VMVirtualMachine.java \ gnu/classpath/VMStackWalker.java \ gnu/classpath/VMSystemProperties.java \ - gnu/java/lang/management/VMClassLoadingMXBeanImpl.java \ - gnu/java/lang/management/VMCompilationMXBeanImpl.java \ - gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java \ - gnu/java/lang/management/VMRuntimeMXBeanImpl.java \ - gnu/java/lang/management/VMThreadMXBeanImpl.java \ - gnu/java/lang/VMInstrumentationImpl.java \ gnu/java/net/InetAddressImpl.java \ gnu/java/net/PlainDatagramSocketImpl.java \ gnu/java/net/PlainSocketImpl.java \ gnu/java/net/SysInetAddressImpl.java \ - gnu/java/nio/VMChannel.java \ - gnu/java/nio/VMPipe.java \ - gnu/java/nio/VMSelector.java \ - java/io/VMFile.java \ - java/io/VMObjectInputStream.java \ - java/io/VMObjectStreamClass.java \ - java/lang/management/VMManagementFactory.java \ java/lang/Runtime.java \ - java/lang/VMClass.java \ java/lang/VMClassLoader.java \ - java/lang/VMCompiler.java \ - java/lang/VMDouble.java \ - java/lang/VMFloat.java \ - java/lang/VMMath.java \ - java/lang/VMObject.java \ java/lang/VMProcess.java \ java/lang/VMRuntime.java \ java/lang/VMString.java \ @@ -74,13 +48,9 @@ java/lang/reflect/Field.java \ java/lang/reflect/Method.java \ java/lang/reflect/VMArray.java \ - java/lang/reflect/VMProxy.java \ java/net/InetAddress.java \ java/net/VMInetAddress.java \ - java/net/VMNetworkInterface.java \ java/net/VMURLConnection.java \ - java/nio/channels/VMChannels.java \ - java/nio/VMDirectByteBuffer.java \ java/security/VMAccessController.java \ java/security/VMSecureRandom.java \ java/util/VMTimeZone.java \ Index: kaffe/libraries/javalib/vmspecific/Makefile.in diff -u kaffe/libraries/javalib/vmspecific/Makefile.in:1.1 kaffe/libraries/javalib/vmspecific/Makefile.in:1.2 --- kaffe/libraries/javalib/vmspecific/Makefile.in:1.1 Sun Aug 13 01:47:09 2006 +++ kaffe/libraries/javalib/vmspecific/Makefile.in Sat Aug 19 21:48:48 2006 @@ -364,40 +364,14 @@ FAKE = fakeinstall vminterfacedir = $(FAKE) dist_vminterface_JAVA = \ - gnu/classpath/jdwp/VMFrame.java \ - gnu/classpath/jdwp/VMIdManager.java \ - gnu/classpath/jdwp/VMMethod.java \ - gnu/classpath/jdwp/VMVirtualMachine.java \ gnu/classpath/VMStackWalker.java \ gnu/classpath/VMSystemProperties.java \ - gnu/java/lang/management/VMClassLoadingMXBeanImpl.java \ - gnu/java/lang/management/VMCompilationMXBeanImpl.java \ - gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java \ - gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java \ - gnu/java/lang/management/VMRuntimeMXBeanImpl.java \ - gnu/java/lang/management/VMThreadMXBeanImpl.java \ - gnu/java/lang/VMInstrumentationImpl.java \ gnu/java/net/InetAddressImpl.java \ gnu/java/net/PlainDatagramSocketImpl.java \ gnu/java/net/PlainSocketImpl.java \ gnu/java/net/SysInetAddressImpl.java \ - gnu/java/nio/VMChannel.java \ - gnu/java/nio/VMPipe.java \ - gnu/java/nio/VMSelector.java \ - java/io/VMFile.java \ - java/io/VMObjectInputStream.java \ - java/io/VMObjectStreamClass.java \ - java/lang/management/VMManagementFactory.java \ java/lang/Runtime.java \ - java/lang/VMClass.java \ java/lang/VMClassLoader.java \ - java/lang/VMCompiler.java \ - java/lang/VMDouble.java \ - java/lang/VMFloat.java \ - java/lang/VMMath.java \ - java/lang/VMObject.java \ java/lang/VMProcess.java \ java/lang/VMRuntime.java \ java/lang/VMString.java \ @@ -409,13 +383,9 @@ java/lang/reflect/Field.java \ java/lang/reflect/Method.java \ java/lang/reflect/VMArray.java \ - java/lang/reflect/VMProxy.java \ java/net/InetAddress.java \ java/net/VMInetAddress.java \ - java/net/VMNetworkInterface.java \ java/net/VMURLConnection.java \ - java/nio/channels/VMChannels.java \ - java/nio/VMDirectByteBuffer.java \ java/security/VMAccessController.java \ java/security/VMSecureRandom.java \ java/util/VMTimeZone.java \ @@ -531,7 +501,7 @@ distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/gnu/classpath $(distdir)/gnu/classpath/jdwp $(distdir)/gnu/java/lang $(distdir)/gnu/java/lang/management $(distdir)/gnu/java/net $(distdir)/gnu/java/nio $(distdir)/java/io $(distdir)/java/lang $(distdir)/java/lang/management $(distdir)/java/lang/ref $(distdir)/java/lang/reflect $(distdir)/java/net $(distdir)/java/nio $(distdir)/java/nio/channels $(distdir)/java/security $(distdir)/java/util $(distdir)/org/kaffe/jar $(distdir)/org/kaffe/management $(distdir)/org/kaffe/security $(distdir)/org/kaffe/security/provider $(distdir)/org/kaffe/util + $(mkdir_p) $(distdir)/gnu/classpath $(distdir)/gnu/java/net $(distdir)/java/lang $(distdir)/java/lang/ref $(distdir)/java/lang/reflect $(distdir)/java/net $(distdir)/java/security $(distdir)/java/util $(distdir)/org/kaffe/jar $(distdir)/org/kaffe/management $(distdir)/org/kaffe/security $(distdir)/org/kaffe/security/provider $(distdir)/org/kaffe/util @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ =================================================================== Checking out kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMFrame.java RCS: /home/cvs/kaffe/kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/Attic/VMFrame.java,v VERS: 1.2 *************** --- kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMFrame.java Sat Aug 19 22:02:38 2006 +++ /dev/null Sun Aug 4 19:57:58 2002 @@ -1,106 +0,0 @@ -/* VMFrame.java -- Reference implementation of VM hooks for JDWP Frame access. - 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 -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package gnu.classpath.jdwp; - -import gnu.classpath.jdwp.util.Location; - -/** - * Reference implementation of VM hooks for JDWP Frame access. - * - * @author aluchko - */ - -public class VMFrame -{ - /** - * Returns the size of a frame ID over JDWP - */ - public static final int SIZE = 8; - - // The object this frame resides in - private Object obj; - - // The current location of this frame - private Location loc; - - // id of this frame - private long id; - - /** - * Gets the current location of the frame. - */ - public Location getLocation() - { - return loc; - } - - /** - * Returns the value of the variable in the given slot. - * - * @param slot the slot containing the variable - */ - public native Object getValue(int slot); - - /** - * Assigns the given variable to the given value. - * @param slot The slot which contains the variable - * @param value The value to assign the variable to - */ - public native void setValue(int slot, Object value); - - /** - * Get the object which is represented by 'this' in the context of the frame, - * returns null if the method is native or static. - */ - public Object getObject() - { - return obj; - } - - /** - * Get the frameID - * @return an id which is unique within the scope of the VM - */ - public long getId() - { - return id; - } - -} =================================================================== Checking out kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMIdManager.java RCS: /home/cvs/kaffe/kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/Attic/VMIdManager.java,v VERS: 1.1 *************** --- kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMIdManager.java Sat Aug 19 22:02:39 2006 +++ /dev/null Sun Aug 4 19:57:58 2002 @@ -1,427 +0,0 @@ -/* VMIdManager.java -- A reference/example implementation of a manager for - JDWP object/reference type IDs - - Copyright (C) 2005 Free Software Foundation - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package gnu.classpath.jdwp; - -import gnu.classpath.jdwp.exception.InvalidClassException; -import gnu.classpath.jdwp.exception.InvalidObjectException; -import gnu.classpath.jdwp.id.*; - -import java.lang.ref.Reference; -import java.lang.ref.ReferenceQueue; -import java.lang.ref.SoftReference; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Iterator; - -/** - * This class manages objects and referencetypes that are reported - * to the debugger. All objects and referencetypes reported to the - * debugger should go through this manager. - * - * A brief summary of what an <code>IdManager</code> must provide: - * - * <code> - * public ObjectId getObjectId (Object theObject); - * public ObjectId get (long id); - * public ObjectId readObjectId (ByteBuffer bb); - * public ReferenceTypeId getReferenceTypeId (Class clazz); - * public ReferenceTypeId getReferenceType (long id); - * public ReferenceTypeId readReferenceTypeId (ByteBuffer bb); - * </code> - * - * See the javadoc on these methods later in this file for more - * information on these functions. - * - * <b>NOTE:</b> All IDs handled by the ID manager (all object and reference - * type IDs) are assumed to be of type <code>long</code>. - * - * @author Keith Seitz ([EMAIL PROTECTED]) - */ -public class VMIdManager -{ - // This factory generates ids for objects and types that may - // be sent to a debugger. - private static class IdFactory - { - // ID of last object / referencetype - private static Object _idLock = new Object (); - private static Object _ridLock = new Object (); - private static long _lastId = 0; - private static long _lastRid = 0; - - // A list of all ID types - private static HashMap _idList = new HashMap (); - - // Initialize the id list with known types - static - { - // ObjectId and ArrayId are special cases. See newObjectId. - _idList.put (ClassLoaderId.typeClass, ClassLoaderId.class); - _idList.put (ClassObjectId.typeClass, ClassObjectId.class); - //_idList.put (FieldId.typeClass, FieldId.class); - //_idList.put (FrameId.typeClass, FrameId.class); - //_idList.put (MethodId.typeClass, MethodId.class); - _idList.put (StringId.typeClass, StringId.class); - _idList.put (ThreadId.typeClass, ThreadId.class); - _idList.put (ThreadGroupId.typeClass, ThreadGroupId.class); - } - - /** - * Returns a new id for the given object - * - * @param object the object for which an id is desired - * @returns a suitable object id - */ - public static ObjectId newObjectId (SoftReference obj) - { - ObjectId id = null; - Object object = obj.get (); - - // Special case: arrays - if (object.getClass ().isArray ()) - id = new ArrayId (); - else - { - // Loop through all classes until we hit baseclass - Class myClass; - for (myClass = object.getClass (); myClass != null; - myClass = myClass.getSuperclass ()) - { - Class clz = (Class) _idList.get (myClass); - if (clz != null) - { - try - { - id = (ObjectId) clz.newInstance (); - synchronized (_idLock) - { - id.setId (++_lastId); - } - id.setReference (obj); - return id; - } - catch (InstantiationException ie) - { - // This really should not happen - throw new RuntimeException ("cannot create new ID", ie); - } - catch (IllegalAccessException iae) - { - // This really should not happen - throw new RuntimeException ("illegal access of ID", iae); - } - } - } - - /* getSuperclass returned null and no matching ID type found. - So it must derive from Object. */ - id = new ObjectId (); - } - - synchronized (_idLock) - { - id.setId (++_lastId); - } - id.setReference (obj); - return id; - } - - /** - * Returns a new reference type id for the given class - * - * @param clazz the <code>Class</code> for which an id is desired - * @returns a suitable reference type id or null when the - * reference is cleared. - */ - public static ReferenceTypeId newReferenceTypeId (SoftReference ref) - { - ReferenceTypeId id; - Class clazz = (Class) ref.get (); - if (clazz == null) - return null; - - if (clazz.isArray ()) - id = new ArrayReferenceTypeId (); - else if (clazz.isInterface ()) - id = new InterfaceReferenceTypeId (); - else - id = new ClassReferenceTypeId (); - synchronized (_ridLock) - { - id.setId (++_lastRid); - } - return id; - } - } - - /** - * This class is a SoftReferenceIdentity type that is used by - * the ID manager. - */ - class ReferenceKey extends SoftReference - { - // Hash code of referent - private int _hash; - - /** - * Constructs a new <code>ReferenceKey</code> object - * with the given referent. - * - * <p>This constructor should only be used for object lookups - * by the backend. - * - * @param referent the object to reference - */ - public ReferenceKey (Object referent) - { - super (referent); - _hash = referent.hashCode (); - } - - /** - * Constructs a new <code>ReferenceKey</code> object - * with the given referent and reference queue. - * - * <p>The JDWP back-end stores a <code>ReferenceKey</code> - * with its corresponding <code>JdwpId</code>. This constructor - * is used by the back-end when adding new IDs to be managed. - * - * @param referent the object to reference - * @param queue the queue to which to report garbage collections - */ - public ReferenceKey (Object referent, ReferenceQueue queue) - { - super (referent, queue); - _hash = referent.hashCode (); - } - - /** - * Returns the hash code of the referent. - * This seems hacky, but is required in order to use this class - * as a hash table key. - * - * @returns the hash code of the referent - */ - public int hashCode () - { - return _hash; - } - - /** - * Comparator for keys - * - * This method can be used in two ways: - * - * <ol> - * <li>For table lookups, where we want to compare referents</li> - * <li>For clearing GCd objects, where we want to compare the actual - * key object (not the referent)</li> - * </ol> - */ - public boolean equals (Object obj) - { - if (obj instanceof ReferenceKey) - { - ReferenceKey ref = (ReferenceKey) obj; - - /* First check if the two references are the same. - If they are, that means we must be clearing GCd objects. */ - if (this == obj) - return true; - - return (ref.get () == get ()); - } - - return false; - } - } - - // instance of VMIdManager - private static VMIdManager _idm = new VMIdManager (); - - // A reference queue for our objects - private ReferenceQueue _refQueue; - - // Mapping of objects (ReferenceKey) to IDs (ObjectId) - private Hashtable _oidTable; - - // Mapping of ID numbers (Long) to IDs (ObjectId) - private Hashtable _idTable; - - /* Mapping of class (ReferenceKey) to IDs (ReferenceTypeId) for reference - types. Unlike other types, reference id types are NEVER released. */ - private Hashtable _classTable; - - // Mapping of ID numbers (Long) to reference type IDs (ReferenceTypeId) - private Hashtable _ridTable; - - /** - * Gets the instance of VMIdManager, constructing a new one - * if none currently exists. - */ - public static VMIdManager getDefault () - { - return _idm; - } - - // Constructs a new <code>IdManager</code> - private VMIdManager () - { - _refQueue = new ReferenceQueue (); - _oidTable = new Hashtable (50); - _idTable = new Hashtable (50); - _classTable = new Hashtable (20); - _ridTable = new Hashtable (20); - } - - // Updates the object ID table, removing IDs whose objects have - // been garbage collected. - private void _update () - { - Reference ref; - while ((ref = _refQueue.poll ()) != null) - { - ObjectId id = (ObjectId) _oidTable.get (ref); - _oidTable.remove (ref); - _idTable.remove (new Long (id.getId ())); - } - } - - /** - * Returns an id for the given object, adding it - * if it does not have an id. - * - * @param theObject the object to get an ID/add - * @returns the ID of the object - */ - public ObjectId getObjectId (Object theObject) - { - ReferenceKey ref = new ReferenceKey (theObject, _refQueue); - ObjectId id = (ObjectId) _oidTable.get (ref); - if (id == null) - { - // update the tables -- this is an arbitrary place to put this - _update (); - - // Object not found. Make new id for it - id = IdFactory.newObjectId (ref); - _oidTable.put (ref, id); - _idTable.put (new Long (id.getId ()), id); - } - - return id; - } - - /** - * Returns the <code>JdwpId</code> for a given ID. Unlike - * <code>getId</code>, it throws an exception if the ID is not - * known. - * - * @param id the numerical ID of the desired <code>JdwpId</code> - * @throws InvalidObjectException if the ID is not found - */ - public ObjectId get (long id) - throws InvalidObjectException - { - ObjectId oid = (ObjectId) _idTable.get (new Long (id)); - if (oid == null) - throw new InvalidObjectException (id); - - return oid; - } - - public ObjectId readObjectId (ByteBuffer bb) - throws InvalidObjectException - { - long id = bb.getLong (); - return get (id); - } - - /** - * Gets the reference type id for the given class, creating - * a new one if it does not already have an id - * - * @param clazz the class for which to get an ID - * @returns the ID of the class - */ - public ReferenceTypeId getReferenceTypeId (Class clazz) - { - ReferenceKey ref = new ReferenceKey (clazz); - ReferenceTypeId id = (ReferenceTypeId)_classTable.get (ref); - if (id == null) - { - // Object not found. Make new id for it - id = IdFactory.newReferenceTypeId (ref); - _classTable.put (ref, id); - _ridTable.put (new Long (id.getId ()), id); - } - - return id; - } - - /** - * Returns the <code>ReferenceTypeId</code> for a given ID. Unlike - * <code>getReferenceTypeId</code>, it throws an exception if the ID is not - * known. - * - * @param id the numerical ID of the desired reference type - * @throws InvalidClassException if the ID is not found - */ - public ReferenceTypeId getReferenceType (long id) - throws InvalidClassException - { - ReferenceTypeId rid = (ReferenceTypeId) _ridTable.get (new Long (id)); - if (rid == null) - throw new InvalidClassException (id); - - return rid; - } - - public ReferenceTypeId readReferenceTypeId (ByteBuffer bb) - throws InvalidClassException - { - long id = bb.getLong (); - return getReferenceType (id); - } -} =================================================================== Checking out kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMMethod.java RCS: /home/cvs/kaffe/kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/Attic/VMMethod.java,v VERS: 1.1 *************** --- kaffe/libraries/javalib/vmspecific/gnu/classpath/jdwp/VMMethod.java Sat Aug 19 22:02:39 2006 +++ /dev/null Sun Aug 4 19:57:58 2002 @@ -1,178 +0,0 @@ -/* VMMethod.java -- a method in a virtual machine - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package gnu.classpath.jdwp; - -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - -import gnu.classpath.jdwp.exception.JdwpException; -import gnu.classpath.jdwp.util.LineTable; -import gnu.classpath.jdwp.util.VariableTable; - -/** - * This class is really an amalgamation of two classes: one class - * represents a virtual machine method and the other represents - * the JDWP back-end's ID for the method. - * - * @author Keith Seitz ([EMAIL PROTECTED]) - */ -public class VMMethod -{ - /** - * Returns the size of a JDWP method ID - * @see gnu.classpath.jdwp.id.JdwpId#SIZE - */ - public static final int SIZE = 8; - - // The class in which this method is declared - private Class _class; - - // The method's ID - private long _methodId; - - /** - * Constructs a new VMMethod object. This constructor is protected - * so that only the factory methods of VMVirtualMachine can be used - * to create VMMethods. - * - * @param klass the method's containing class - * @param id method identifier, e.g., jmethodID - * @see gnu.classpath.jdwp.VMVirtualMachine#getAllClassMethods - * @see gnu.classpath.jdwp.VMVirtualMachine#getClassMethod - */ - protected VMMethod(Class klass, long id) - { - _class = klass; - _methodId = id; - } - - /** - * Returns the internal method ID for this method - */ - public long getId() - { - return _methodId; - } - - /** - * Returns the method's declaring class - */ - public Class getDeclaringClass() - { - return _class; - } - - /** - * Returns the name of this method - */ - public native String getName(); - - /** - * Returns the signature of this method - */ - public native String getSignature(); - - /** - * Returns the method's modifier flags - */ - public native int getModifiers(); - - /** - * "Returns line number information for the method, if present. The line - * table maps source line numbers to the initial code index of the line. - * The line table is ordered by code index (from lowest to highest). The - * line number information is constant unless a new class definition is - * installed using RedefineClasses." - * - * @return the line table - * @throws JdwpException - */ - public native LineTable getLineTable() - throws JdwpException; - - /** - * "Returns variable information for the method. The variable table - * includes arguments and locals declared within the method. For instance - * methods, the "this" reference is included in the table. Also, synthetic - * variables may be present." - * - * @return the variable table - * @throws JdwpException - */ - public native VariableTable getVariableTable() - throws JdwpException; - - /** - * Returns a string representation of this method (not - * required but nice for debugging). - */ - public String toString() - { - return getDeclaringClass().getName() + "." + getName(); - } - - /** - * Writes the method's ID to the output stream - * - * @param ostream the output stream to which to write - * @throws IOException for any errors writing to the stream - * @see gnu.classpath.jdwp.id.JdwpId#write - */ - public void writeId(DataOutputStream ostream) - throws IOException - { - ostream.writeLong(getId()); - } - - /** - * Returns a VMMethod from the ID in the byte buffer - * - * @param klass the method's declaring class - * @param bb a ByteBuffer containing the method's ID - * @throws JdwpException for any errors creating the method - * @throws IOException for any errors reading from the buffer - */ - public static VMMethod readId(Class klass, ByteBuffer bb) *** Patch too long, truncated *** _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe