685 break;
686 }
687 return JVMTI_VISIT_OBJECTS;
688 } /* heapReferenceCallback */
689
690
691 jint JNICALL primitiveFieldCallback(
692 jvmtiHeapReferenceKind reference_kind,
693 const jvmtiHeapReferenceInfo* reference_info,
694 jlong class_tag,
695 jlong* tag_ptr,
696 jvalue value,
697 jvmtiPrimitiveType value_type,
698 void* user_data)
699 {
700 printf(" primitiveFieldCallback: ref=%s,"
701 " class_tag=%-3ld, tag=%-3ld, type=%c\n",
702 ref_kind_str[reference_kind],
703 (long) class_tag,
704 (long) DEREF(tag_ptr),
705 (int ) value_type);
706 fflush(0);
707 return 0;
708 } /* primitiveFieldCallback */
709
710
711 jint JNICALL arrayPrimitiveValueCallback(
712 jlong class_tag,
713 jlong size,
714 jlong* tag_ptr,
715 jint element_count,
716 jvmtiPrimitiveType element_type,
717 const void* elements,
718 void* user_data)
719 {
720 printf(" arrayPrimitiveValueCallback: class_tag=%-3ld,"
721 " tag=%-3ld, len=%d, type=%c\n",
722 (long) class_tag,
723 (long) DEREF(tag_ptr),
724 (int ) element_count,
725 (int ) element_type);
726 fflush(0);
727 return 0;
728 } /* arrayPrimitiveValueCallback */
729
730
731 jint JNICALL stringPrimitiveValueCallback(
732 jlong class_tag,
733 jlong size,
734 jlong* tag_ptr,
735 const jchar* value,
736 jint value_length,
737 void* user_data)
738 {
739 printf("stringPrimitiveValueCallback: class_tag=%-3ld, tag=%-3ld, len=%d\n",
740 (long) class_tag,
741 (long) DEREF(tag_ptr),
742 (int ) value_length);
743 fflush(0);
744 return 0;
745 } /* stringPrimitiveValueCallback */
746
747
748
749 /* ============================================================================= */
750
751 /** Agent algorithm. */
752 static void JNICALL
753 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
754 jobject rootObject = NULL;
755
756 printf("Wait for tested objects created\n");
757 fflush(0);
758 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout))) {
759 return;
760 }
761
762
|
685 break;
686 }
687 return JVMTI_VISIT_OBJECTS;
688 } /* heapReferenceCallback */
689
690
691 jint JNICALL primitiveFieldCallback(
692 jvmtiHeapReferenceKind reference_kind,
693 const jvmtiHeapReferenceInfo* reference_info,
694 jlong class_tag,
695 jlong* tag_ptr,
696 jvalue value,
697 jvmtiPrimitiveType value_type,
698 void* user_data)
699 {
700 printf(" primitiveFieldCallback: ref=%s,"
701 " class_tag=%-3ld, tag=%-3ld, type=%c\n",
702 ref_kind_str[reference_kind],
703 (long) class_tag,
704 (long) DEREF(tag_ptr),
705 (int) value_type);
706 fflush(0);
707 return 0;
708 } /* primitiveFieldCallback */
709
710
711 jint JNICALL arrayPrimitiveValueCallback(
712 jlong class_tag,
713 jlong size,
714 jlong* tag_ptr,
715 jint element_count,
716 jvmtiPrimitiveType element_type,
717 const void* elements,
718 void* user_data)
719 {
720 printf(" arrayPrimitiveValueCallback: class_tag=%-3ld,"
721 " tag=%-3ld, len=%d, type=%c\n",
722 (long) class_tag,
723 (long) DEREF(tag_ptr),
724 (int) element_count,
725 (int) element_type);
726 fflush(0);
727 return 0;
728 } /* arrayPrimitiveValueCallback */
729
730
731 jint JNICALL stringPrimitiveValueCallback(
732 jlong class_tag,
733 jlong size,
734 jlong* tag_ptr,
735 const jchar* value,
736 jint value_length,
737 void* user_data)
738 {
739 printf("stringPrimitiveValueCallback: class_tag=%-3ld, tag=%-3ld, len=%d\n",
740 (long) class_tag,
741 (long) DEREF(tag_ptr),
742 (int) value_length);
743 fflush(0);
744 return 0;
745 } /* stringPrimitiveValueCallback */
746
747
748
749 /* ============================================================================= */
750
751 /** Agent algorithm. */
752 static void JNICALL
753 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
754 jobject rootObject = NULL;
755
756 printf("Wait for tested objects created\n");
757 fflush(0);
758 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout))) {
759 return;
760 }
761
762
|