This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[RFA] Implement VMVM.getClassStatus
- From: Keith Seitz <keiths at redhat dot com>
- To: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: Sat, 17 Feb 2007 09:08:53 -0800
- Subject: [RFA] Implement VMVM.getClassStatus
Hi,
The attached patch simply moves some code from the jdwp breakpoint
callback to VMVirtualMachine.getClassStatus, thereby implementing it.
Ok?
Keith
ChangeLog
2007-02-16 Keith Seitz <keiths@redhat.com>
* gnu/classpath/jdwp/natVMVirtualMachine.cc
(jdwpClassPrepareCB): Move class status stuff to ...
(getClassStatus): ... here.
Index: gnu/classpath/jdwp/natVMVirtualMachine.cc
===================================================================
--- gnu/classpath/jdwp/natVMVirtualMachine.cc (revision 122065)
+++ gnu/classpath/jdwp/natVMVirtualMachine.cc (working copy)
@@ -453,9 +453,25 @@
jint
gnu::classpath::jdwp::VMVirtualMachine::
-getClassStatus (MAYBE_UNUSED jclass klass)
+getClassStatus (jclass klass)
{
- return 0;
+ jint flags = 0;
+ jvmtiError err = _jdwp_jvmtiEnv->GetClassStatus (klass, &flags);
+ if (err != JVMTI_ERROR_NONE)
+ throw_jvmti_error (err);
+
+ using namespace gnu::classpath::jdwp::event;
+ jint status = 0;
+ if (flags & JVMTI_CLASS_STATUS_VERIFIED)
+ status |= ClassPrepareEvent::STATUS_VERIFIED;
+ if (flags & JVMTI_CLASS_STATUS_PREPARED)
+ status |= ClassPrepareEvent::STATUS_PREPARED;
+ if (flags & JVMTI_CLASS_STATUS_ERROR)
+ status |= ClassPrepareEvent::STATUS_ERROR;
+ if (flags & JVMTI_CLASS_STATUS_INITIALIZED)
+ status |= ClassPrepareEvent::STATUS_INITIALIZED;
+
+ return status;
}
JArray<gnu::classpath::jdwp::VMMethod *> *
@@ -628,7 +644,7 @@
jstring
gnu::classpath::jdwp::VMVirtualMachine::
-getSourceFile (MAYBE_UNUSED jclass clazz)
+getSourceFile (jclass clazz)
{
return NULL;
}
@@ -812,27 +828,12 @@
}
static void JNICALL
-jdwpClassPrepareCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
+jdwpClassPrepareCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
jthread thread, jclass klass)
{
using namespace gnu::classpath::jdwp;
- jint flags = 0;
- jvmtiError err = env->GetClassStatus (klass, &flags);
- if (err != JVMTI_ERROR_NONE)
- throw_jvmti_error (err);
-
- using namespace gnu::classpath::jdwp::event;
- jint status = 0;
- if (flags & JVMTI_CLASS_STATUS_VERIFIED)
- status |= ClassPrepareEvent::STATUS_VERIFIED;
- if (flags & JVMTI_CLASS_STATUS_PREPARED)
- status |= ClassPrepareEvent::STATUS_PREPARED;
- if (flags & JVMTI_CLASS_STATUS_ERROR)
- status |= ClassPrepareEvent::STATUS_ERROR;
- if (flags & JVMTI_CLASS_STATUS_INITIALIZED)
- status |= ClassPrepareEvent::STATUS_INITIALIZED;
-
+ jint status = VMVirtualMachine::getClassStatus (klass);
event::ClassPrepareEvent *event
= new event::ClassPrepareEvent (thread, klass, status);
Jdwp::notify (event);