This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [RFA] Implement JVMTI GetClassStatus
Tom Tromey wrote:
+ if (state == JV_STATE_ERROR)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_ERROR;
+ else if (state > JV_STATE_IN_PROGRESS)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_INITIALIZED;
I'm just suggesting changing the 'else if' to:
else if (state == JV_STATE_DONE)
I'm not sure how JV_STATE_PHANTOM would map onto this.
Perhaps it should be treated like JV_STATE_ERROR.
Ok, we can always change it if it is a problem. How about the attached
for jvmti.cc?
Keith
Index: jvmti.cc
===================================================================
--- jvmti.cc (revision 121059)
+++ jvmti.cc (working copy)
@@ -420,6 +420,36 @@
}
static jvmtiError JNICALL
+_Jv_JVMTI_GetClassStatus (MAYBE_UNUSED jvmtiEnv *env, jclass klass,
+ jint *status_ptr)
+{
+ REQUIRE_PHASE (env, JVMTI_PHASE_START | JVMTI_PHASE_LIVE);
+ NULL_CHECK (status_ptr);
+ if (klass == NULL)
+ return JVMTI_ERROR_INVALID_CLASS;
+
+ if (klass->isArray ())
+ *status_ptr = JVMTI_CLASS_STATUS_ARRAY;
+ else if (klass->isPrimitive ())
+ *status_ptr = JVMTI_CLASS_STATUS_PRIMITIVE;
+ else
+ {
+ jbyte state = _Jv_GetClassState (klass);
+ *status_ptr = 0;
+ if (state >= JV_STATE_LINKED)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_VERIFIED;
+ if (state >= JV_STATE_PREPARED)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_PREPARED;
+ if (state == JV_STATE_ERROR || state == JV_STATE_PHANTOM)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_ERROR;
+ else if (state == JV_STATE_DONE)
+ (*status_ptr) |= JVMTI_CLASS_STATUS_INITIALIZED;
+ }
+
+ return JVMTI_ERROR_NONE;
+}
+
+static jvmtiError JNICALL
_Jv_JVMTI_GetClassModifiers (MAYBE_UNUSED jvmtiEnv *env, jclass klass,
jint *mods)
{
@@ -1452,7 +1524,7 @@
_Jv_JVMTI_Allocate, // Allocate
_Jv_JVMTI_Deallocate, // Deallocate
UNIMPLEMENTED, // GetClassSignature
- UNIMPLEMENTED, // GetClassStatus
+ _Jv_JVMTI_GetClassStatus, // GetClassStatus
UNIMPLEMENTED, // GetSourceFileName
_Jv_JVMTI_GetClassModifiers, // GetClassModifiers
_Jv_JVMTI_GetClassMethods, // GetClassMethods