< prev index next >

src/jdk.jdwp.agent/share/native/libjdwp/ObjectReferenceImpl.c

Print this page

340         error = objectReferrers(object, &referrerBatch, maxReferrers);
341         if (error != JVMTI_ERROR_NONE) {
342             outStream_setError(out, map2jdwpError(error));
343         } else {
344             int kk;
345 
346             (void)outStream_writeInt(out, referrerBatch.count);
347             for (kk = 0; kk < referrerBatch.count; kk++) {
348                 jobject ref;
349 
350                 ref = referrerBatch.objects[kk];
351                 (void)outStream_writeByte(out, specificTypeKey(env, ref));
352                 (void)outStream_writeObjectRef(env, out, ref);
353             }
354             jvmtiDeallocate(referrerBatch.objects);
355         }
356     } END_WITH_LOCAL_REFS(env);
357     return JNI_TRUE;
358 }
359 

























































360 Command ObjectReference_Commands[] = {
361     {referenceType, "ReferenceType"},
362     {getValues, "GetValues"},
363     {setValues, "SetValues"},
364     {NULL, "<unused>"},
365     {monitorInfo, "MonitorInfo"},
366     {invokeInstance, "InvokeInstance"},
367     {disableCollection, "DisableCollection"},
368     {enableCollection, "EnableCollection"},
369     {isCollected, "IsCollected"},
370     {referringObjects, "ReferringObjects"}


371 };
372 
373 DEBUG_DISPATCH_DEFINE_CMDSET(ObjectReference)

340         error = objectReferrers(object, &referrerBatch, maxReferrers);
341         if (error != JVMTI_ERROR_NONE) {
342             outStream_setError(out, map2jdwpError(error));
343         } else {
344             int kk;
345 
346             (void)outStream_writeInt(out, referrerBatch.count);
347             for (kk = 0; kk < referrerBatch.count; kk++) {
348                 jobject ref;
349 
350                 ref = referrerBatch.objects[kk];
351                 (void)outStream_writeByte(out, specificTypeKey(env, ref));
352                 (void)outStream_writeObjectRef(env, out, ref);
353             }
354             jvmtiDeallocate(referrerBatch.objects);
355         }
356     } END_WITH_LOCAL_REFS(env);
357     return JNI_TRUE;
358 }
359 
360 static jboolean
361 isSameObjectImpl(PacketInputStream *in, PacketOutputStream *out)
362 {
363     jlong id1;
364     jlong id2;
365     jobject ref1;
366     jobject ref2;
367     JNIEnv *env;
368 
369     env = getEnv();
370     id1 = inStream_readObjectID(in);
371     id2 = inStream_readObjectID(in);
372     if (inStream_error(in)) {
373         return JNI_TRUE;
374     }
375 
376     if (id1 == NULL_OBJECT_ID || id2 == NULL_OBJECT_ID) {
377         outStream_setError(out, JDWP_ERROR(INVALID_OBJECT));
378         return JNI_TRUE;
379     }
380 
381     ref1 = commonRef_idToRef(env, id1);
382     ref2 = commonRef_idToRef(env, id2);
383     (void)outStream_writeBoolean(out, isSameObject(env, ref1, ref2));
384 
385     commonRef_idToRef_delete(env, ref1);
386     commonRef_idToRef_delete(env, ref2);
387 
388     return JNI_TRUE;
389 }
390 
391 static jboolean
392 objectHashCodeImpl(PacketInputStream *in, PacketOutputStream *out)
393 {
394     jlong id;
395     jobject ref;
396     JNIEnv *env;
397 
398     env = getEnv();
399     id = inStream_readObjectID(in);
400     if (inStream_error(in)) {
401         return JNI_TRUE;
402     }
403 
404     if (id == NULL_OBJECT_ID) {
405         outStream_setError(out, JDWP_ERROR(INVALID_OBJECT));
406         return JNI_TRUE;
407     }
408 
409     ref = commonRef_idToRef(env, id);
410     (void)outStream_writeInt(out, objectHashCode(ref));
411 
412     commonRef_idToRef_delete(env, ref);
413 
414     return JNI_TRUE;
415 }
416 
417 Command ObjectReference_Commands[] = {
418     {referenceType, "ReferenceType"},
419     {getValues, "GetValues"},
420     {setValues, "SetValues"},
421     {NULL, "<unused>"},
422     {monitorInfo, "MonitorInfo"},
423     {invokeInstance, "InvokeInstance"},
424     {disableCollection, "DisableCollection"},
425     {enableCollection, "EnableCollection"},
426     {isCollected, "IsCollected"},
427     {referringObjects, "ReferringObjects"},
428     {isSameObjectImpl, "IsSameObject"},
429     {objectHashCodeImpl, "ObjectHashCode"}
430 };
431 
432 DEBUG_DISPATCH_DEFINE_CMDSET(ObjectReference)
< prev index next >