]> gcc.gnu.org Git - gcc.git/commitdiff
java-interp.h (_Jv_InterpFrame): obj_ptr field added to hold "this" pointer for frame.
authorKyle Galloway <kgallowa@redhat.com>
Thu, 8 Feb 2007 18:01:56 +0000 (18:01 +0000)
committerKyle Galloway <kgallowa@gcc.gnu.org>
Thu, 8 Feb 2007 18:01:56 +0000 (18:01 +0000)
2007-02-06  Kyle Galloway  <kgallowa@redhat.com>

    * include/java-interp.h (_Jv_InterpFrame): obj_ptr field added
    to hold "this" pointer for frame.
    (_Jv_InterpFrame::get_this_ptr): New method.
    * interpret-run.cc: Copy the "this" pointer into obj_ptr.

From-SVN: r121717

libjava/ChangeLog
libjava/include/java-interp.h
libjava/interpret-run.cc

index d99393be56dd9ce5108d2d24c71032a4ace2ee06..e3fc13254958bc4478d84ef5b3195a6544a7f35a 100644 (file)
@@ -1,3 +1,10 @@
+2007-02-07  Kyle Galloway  <kgallowa@redhat.com>
+
+    * include/java-interp.h (_Jv_InterpFrame): obj_ptr field added
+    to hold "this" pointer for frame.
+    (_Jv_InterpFrame::get_this_ptr): New method.
+    * interpret-run.cc: Copy the "this" pointer into obj_ptr.
+
 2007-02-07  Keith Seitz  <keiths@redhat.com>
 
        * include/java-interp.h (_Jv_Frame::depth):
index ce2fac273c4c26e1eff735dc19072d64caca8e14..2b3ae7cd6f7b6ab643827242abe6b16c93e269b7 100644 (file)
@@ -387,6 +387,9 @@ public:
   _Jv_word *locals;
   char *locals_type;
 
+  // Object pointer for this frame ("this")
+  jobject obj_ptr;
+
   _Jv_InterpFrame (void *meth, java::lang::Thread *thr, jclass proxyCls = NULL)
   : _Jv_Frame (reinterpret_cast<_Jv_MethodBase *> (meth), thr,
                     frame_interpreter)
@@ -394,12 +397,18 @@ public:
     next_interp = (_Jv_InterpFrame *) thr->interp_frame;
     proxyClass = proxyCls;
     thr->interp_frame = (gnu::gcj::RawData *) this;
+    obj_ptr = NULL;
   }
 
   ~_Jv_InterpFrame ()
   {
     thread->interp_frame = (gnu::gcj::RawData *) next_interp;
   }
+
+  jobject get_this_ptr ()
+  {
+    return obj_ptr;
+  } 
 };
 
 // A native frame in the call stack really just a placeholder
index 12d0b9a5683031f0f50db0d7bf700aefd3fe3ad2..8a4d204090f89f2668bb6f2c8bd5e414438412ff 100644 (file)
@@ -349,6 +349,15 @@ details.  */
   */
   memcpy ((void*) locals, (void*) args, meth->args_raw_size);
 
+#ifdef DEBUG
+  // Get the object pointer for this method, after checking that it is
+  // non-static.
+  _Jv_Method *method = meth->get_method ();
+   
+  if ((method->accflags & java::lang::reflect::Modifier::STATIC) == 0)
+    frame_desc.obj_ptr = locals[0].o;
+#endif
+
   _Jv_word *pool_data = meth->defining_class->constants.data;
 
   /* These three are temporaries for common code used by several
This page took 0.064469 seconds and 5 git commands to generate.