static jboolean reflectedType(PacketInputStream *in, PacketOutputStream *out) { jbyte tag; jobject object; JNIEnv *env; env = getEnv(); object = inStream_readObjectRef(env, in); if (inStream_error(in)) { return JNI_TRUE; } /* * In our implementation, the reference type id is the same as the * class object id, so we bounce it right back. * */ tag = referenceTypeTag(object); (void)outStream_writeByte(out, tag); (void)outStream_writeObjectRef(env, out, object); return JNI_TRUE; }
static void writeFieldAccessEvent(JNIEnv *env, PacketOutputStream *out, EventInfo *evinfo) { jbyte fieldClassTag; fieldClassTag = referenceTypeTag(evinfo->u.field_access.field_clazz); (void)outStream_writeObjectRef(env, out, evinfo->thread); writeCodeLocation(out, evinfo->clazz, evinfo->method, evinfo->location); (void)outStream_writeByte(out, fieldClassTag); (void)outStream_writeObjectRef(env, out, evinfo->u.field_access.field_clazz); (void)outStream_writeFieldID(out, evinfo->u.field_access.field); (void)outStream_writeObjectTag(env, out, evinfo->object); (void)outStream_writeObjectRef(env, out, evinfo->object); }
static void writeFieldModificationEvent(JNIEnv *env, PacketOutputStream *out, EventInfo *evinfo) { jbyte fieldClassTag; fieldClassTag = referenceTypeTag(evinfo->u.field_modification.field_clazz); (void)outStream_writeObjectRef(env, out, evinfo->thread); writeCodeLocation(out, evinfo->clazz, evinfo->method, evinfo->location); (void)outStream_writeByte(out, fieldClassTag); (void)outStream_writeObjectRef(env, out, evinfo->u.field_modification.field_clazz); (void)outStream_writeFieldID(out, evinfo->u.field_modification.field); (void)outStream_writeObjectTag(env, out, evinfo->object); (void)outStream_writeObjectRef(env, out, evinfo->object); (void)outStream_writeValue(env, out, (jbyte)evinfo->u.field_modification.signature_type, evinfo->u.field_modification.new_value); }
static void writeClassEvent(JNIEnv *env, PacketOutputStream *out, EventInfo *evinfo) { jbyte classTag; jint status; char *signature = NULL; jvmtiError error; classTag = referenceTypeTag(evinfo->clazz); error = classSignature(evinfo->clazz, &signature, NULL); if (error != JVMTI_ERROR_NONE) { EXIT_ERROR(error,"signature"); } status = classStatus(evinfo->clazz); (void)outStream_writeObjectRef(env, out, evinfo->thread); (void)outStream_writeByte(out, classTag); (void)outStream_writeObjectRef(env, out, evinfo->clazz); (void)outStream_writeString(out, signature); (void)outStream_writeInt(out, map2jdwpClassStatus(status)); jvmtiDeallocate(signature); }