On Fri, 2005-08-12 at 15:11 -0400, Bryce McKinlay wrote:
> Aaron Luchko wrote:
> 
> >On Fri, 2005-08-12 at 14:11 -0400, Aaron Luchko wrote:
> >  
> >
> >>This class defines an interface to the VM to represent a Frame (as well
> >>as changes the imports for the couple command sets that use it)
> >>    
> >>
> >
> >Ok I talked to Bryce and looked at Keiths email and think I have done
> >this the correct way this time.
> >
> >Aaron
> >ChangeLog
> >2005-08-12  Aaron Luchko  <[EMAIL PROTECTED]>
> >
> >        * vm/reference/gnu/classpath/jdwp/Frame.java: Implemented
> >     reference implementation of interface to VM for JDWP frame
> >     management.
> >        * gnu/classpath/jdwp/processor/StackFrameCommandSet.java: 
> >        updated import
> >        * gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java:
> >        updated import
> >     (executeFrames): changed getLoc() to getLocation()
> >  
> >
> 
> Aaron,
> 
> Just a couple of nits:
> 
> 1. Please make sure that each ChangeLog entry is a full sentence, ie: 
> capital letter and ".".

Sure

> 2. You may want to call the "Frame" class "VMFrame", in order to be 
> consistent with other "reference" classes which are meant to be 
> implemented by the VM?

Done

> 
> Also, this comment (and the corresponding one in getObject()) seems a 
> little odd to me:
> 
> >+public class Frame
> >+{
> >+  // The object this frame resides in
> >+  private Object obj;
> >
> 
> Its strange to me to think of frames "residing in" objects. Rather, 
> some, but not all, frames are associated with a particular object (ie 
> "this").

Cool, fixed

> 
> Otherwise, this is OK.

thanks for the quick response.

Committed this patch to HEAD

Aaron

ChangeLog
2005-08-12  Aaron Luchko  <[EMAIL PROTECTED]>

        * vm/reference/gnu/classpath/jdwp/VMFrame.java: Implemented
        reference implementation of interface to VM for JDWP frame
        management.
        * gnu/classpath/jdwp/processor/StackFrameCommandSet.java: 
        Updated import.
        (executeGetValues): Use VMFrame instead of Frame.
        (executeSetValues): Use VMFrame instead of Frame.
        (executeThisObject): Use VMFrame instead of Frame.
        * gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java:
        Updated import.
        (executeFrames): Changed getLoc() to getLocation() and use
        VMFrame instead of Frame.

Index: gnu/classpath/jdwp/processor/StackFrameCommandSet.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java,v
retrieving revision 1.1
diff -u -p -r1.1 StackFrameCommandSet.java
--- gnu/classpath/jdwp/processor/StackFrameCommandSet.java	9 Aug 2005 19:59:36 -0000	1.1
+++ gnu/classpath/jdwp/processor/StackFrameCommandSet.java	12 Aug 2005 19:15:27 -0000
@@ -39,6 +39,7 @@ exception statement from your version. *
 
 package gnu.classpath.jdwp.processor;
 
+import gnu.classpath.jdwp.VMFrame;
 import gnu.classpath.jdwp.IVirtualMachine;
 import gnu.classpath.jdwp.Jdwp;
 import gnu.classpath.jdwp.JdwpConstants;
@@ -47,7 +48,6 @@ import gnu.classpath.jdwp.exception.Jdwp
 import gnu.classpath.jdwp.exception.NotImplementedException;
 import gnu.classpath.jdwp.id.IdManager;
 import gnu.classpath.jdwp.id.ObjectId;
-import gnu.classpath.jdwp.util.Frame;
 import gnu.classpath.jdwp.util.Value;
 
 import java.io.DataOutputStream;
@@ -113,7 +113,7 @@ public class StackFrameCommandSet implem
     // has a reference to them. Furthermore they are not ReferenceTypeIds since
     // these are held permanently and we want these to be held only as long as
     // the Thread is suspended.
-    Frame frame = vm.getFrame(thread, bb);
+    VMFrame frame = vm.getVMFrame(thread, bb);
     int slots = bb.getInt();
     os.writeInt(slots); // Looks pointless but this is the protocol
     for (int i = 0; i < slots; i++)
@@ -131,7 +131,7 @@ public class StackFrameCommandSet implem
     ObjectId tId = idMan.readId(bb);
     Thread thread = (Thread) tId.getObject();
 
-    Frame frame = vm.getFrame(thread, bb);
+    VMFrame frame = vm.getVMFrame(thread, bb);
 
     int slots = bb.getInt();
     for (int i = 0; i < slots; i++)
@@ -148,7 +148,7 @@ public class StackFrameCommandSet implem
     ObjectId tId = idMan.readId(bb);
     Thread thread = (Thread) tId.getObject();
 
-    Frame frame = vm.getFrame(thread, bb);
+    VMFrame frame = vm.getVMFrame(thread, bb);
 
     Object thisObject = frame.getObject();
     Value.writeTaggedValue(os, thisObject);
Index: gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java,v
retrieving revision 1.1
diff -u -p -r1.1 ThreadReferenceCommandSet.java
--- gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java	10 Aug 2005 20:21:24 -0000	1.1
+++ gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java	12 Aug 2005 19:15:27 -0000
@@ -39,6 +39,7 @@ exception statement from your version. *
 
 package gnu.classpath.jdwp.processor;
 
+import gnu.classpath.jdwp.VMFrame;
 import gnu.classpath.jdwp.IVirtualMachine;
 import gnu.classpath.jdwp.Jdwp;
 import gnu.classpath.jdwp.JdwpConstants;
@@ -49,7 +50,6 @@ import gnu.classpath.jdwp.exception.NotI
 import gnu.classpath.jdwp.id.IdManager;
 import gnu.classpath.jdwp.id.ObjectId;
 import gnu.classpath.jdwp.id.ThreadId;
-import gnu.classpath.jdwp.util.Frame;
 import gnu.classpath.jdwp.util.JdwpString;
 import gnu.classpath.jdwp.util.Location;
 
@@ -183,13 +183,13 @@ public class ThreadReferenceCommandSet i
     int startFrame = bb.getInt();
     int length = bb.getInt();
 
-    ArrayList frames = vm.getFrames(thread, startFrame, length);
+    ArrayList frames = vm.getVMFrames(thread, startFrame, length);
     os.writeInt(frames.size());
     for (int i = 0; i < frames.size(); i++)
       {
-        Frame frame = (Frame) frames.get(i);
+        VMFrame frame = (VMFrame) frames.get(i);
         os.writeLong(frame.getId());
-        Location loc = frame.getLoc();
+        Location loc = frame.getLocation();
         loc.write(os);
       }
   }
--- /dev/null	2005-06-09 16:29:11.371620296 -0400
+++ vm/reference/gnu/classpath/jdwp/VMFrame.java	2005-08-12 15:13:31.000000000 -0400
@@ -0,0 +1,101 @@
+/* VMFrame.java -- Reference implementation of VM hooks for JDWP Frame access.
+   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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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
+{
+  // 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 varialbe
+   */
+  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;
+  }
+
+}
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to