< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/unit/FollowReferences/followref004/followref004.cpp

Print this page
rev 52185 : [mq]: refactor


 129      void*        user_data)
 130 {
 131     printf("stringPrimitiveValueCallback: class_tag=%-3ld, tag=%-3ld, len=%d\n",
 132            (long) class_tag,
 133            (long) DEREF(tag_ptr),
 134            (int ) value_length);
 135     fflush(0);
 136 
 137     markTagVisited(DEREF(tag_ptr));
 138 
 139     return JVMTI_VISIT_OBJECTS;
 140 
 141 } /* stringPrimitiveValueCallback */
 142 
 143 /* ============================================================================= */
 144 
 145 static void createGlobalRefs(JNIEnv * jni)
 146 {
 147     jclass klass;
 148 
 149     if  ( ! NSK_JNI_VERIFY(jni, (klass = NSK_CPP_STUB2(FindClass, jni, JAVA_LANG_STRING_CLASS_NAME)) != NULL) ) {
 150         nsk_jvmti_setFailStatus();
 151         return;
 152     }
 153 
 154     if ( ! NSK_JNI_VERIFY(jni, (g_jniGlobalRef = NSK_CPP_STUB2(NewGlobalRef, jni, klass)) != NULL) ) {
 155         nsk_jvmti_setFailStatus();
 156     }
 157 
 158     if ( ! NSK_JNI_VERIFY(jni, (g_jniWeakGlobalRef = NSK_CPP_STUB2(NewWeakGlobalRef, jni, klass)) != NULL) ) {
 159         nsk_jvmti_setFailStatus();
 160     }
 161 
 162 } /* createGlobalRefs */
 163 
 164 /** Agent algorithm. */
 165 
 166 static void JNICALL agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg)
 167 {
 168     jvmtiError retCode;
 169 
 170     printf(">>> Sync with Java code\n");
 171     fflush(0);
 172 
 173     if (!NSK_VERIFY(nsk_jvmti_waitForSync(g_timeout))) {
 174         return;
 175     }
 176 
 177     printf(">>> Create JNI global references\n");
 178     fflush(0);
 179 
 180     createGlobalRefs(jni);
 181 
 182     retCode = NSK_CPP_STUB6(FollowReferences,
 183                               jvmti,
 184                               (jint) 0,                 /* heap filter */
 185                               NULL,                     /* class */
 186                               NULL,                     /* inital object */
 187                               &g_heapCallbacks,
 188                               (const void *) &g_fakeUserData);
 189 
 190     if ( ! NSK_VERIFY(retCode == JVMTI_ERROR_NONE) ) {
 191         nsk_jvmti_setFailStatus();
 192     }
 193 
 194     checkThatAllTagsVisited();
 195 
 196     printf(">>> Let debugee to finish\n");
 197     fflush(0);
 198 
 199     if (!NSK_VERIFY(nsk_jvmti_resumeSync())) {
 200         return;
 201     }
 202 
 203 } /* agentProc */
 204 


 230 
 231     if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL)) {
 232         return JNI_ERR;
 233     }
 234 
 235     /* Setting Heap Callbacks */
 236     memset(&g_heapCallbacks, 0, sizeof(g_heapCallbacks));
 237     g_heapCallbacks.heap_iteration_callback         = NULL;
 238     g_heapCallbacks.heap_reference_callback         = heapReferenceCallback;
 239     g_heapCallbacks.primitive_field_callback        = primitiveFieldCallback;
 240     g_heapCallbacks.array_primitive_value_callback  = arrayPrimitiveValueCallback;
 241     g_heapCallbacks.string_primitive_value_callback = stringPrimitiveValueCallback;
 242 
 243     jvmti_FollowRefObject_init();
 244 
 245     {
 246         jvmtiCapabilities caps;
 247 
 248         memset(&caps, 0, sizeof(caps));
 249         caps.can_tag_objects = 1;
 250         if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB2(AddCapabilities, jvmti, &caps))) {
 251             return JNI_ERR;
 252         }
 253     }
 254 
 255     if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL))) {
 256         return JNI_ERR;
 257     }
 258 
 259     return JNI_OK;
 260 
 261 } /* Agent_OnLoad */
 262 
 263 
 264 /* ============================================================================= */
 265 
 266 }


 129      void*        user_data)
 130 {
 131     printf("stringPrimitiveValueCallback: class_tag=%-3ld, tag=%-3ld, len=%d\n",
 132            (long) class_tag,
 133            (long) DEREF(tag_ptr),
 134            (int ) value_length);
 135     fflush(0);
 136 
 137     markTagVisited(DEREF(tag_ptr));
 138 
 139     return JVMTI_VISIT_OBJECTS;
 140 
 141 } /* stringPrimitiveValueCallback */
 142 
 143 /* ============================================================================= */
 144 
 145 static void createGlobalRefs(JNIEnv * jni)
 146 {
 147     jclass klass;
 148 
 149     if  ( ! NSK_JNI_VERIFY(jni, (klass = jni->FindClass(JAVA_LANG_STRING_CLASS_NAME)) != NULL) ) {
 150         nsk_jvmti_setFailStatus();
 151         return;
 152     }
 153 
 154     if ( ! NSK_JNI_VERIFY(jni, (g_jniGlobalRef = jni->NewGlobalRef(klass)) != NULL) ) {
 155         nsk_jvmti_setFailStatus();
 156     }
 157 
 158     if ( ! NSK_JNI_VERIFY(jni, (g_jniWeakGlobalRef = jni->NewWeakGlobalRef(klass)) != NULL) ) {
 159         nsk_jvmti_setFailStatus();
 160     }
 161 
 162 } /* createGlobalRefs */
 163 
 164 /** Agent algorithm. */
 165 
 166 static void JNICALL agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg)
 167 {
 168     jvmtiError retCode;
 169 
 170     printf(">>> Sync with Java code\n");
 171     fflush(0);
 172 
 173     if (!NSK_VERIFY(nsk_jvmti_waitForSync(g_timeout))) {
 174         return;
 175     }
 176 
 177     printf(">>> Create JNI global references\n");
 178     fflush(0);
 179 
 180     createGlobalRefs(jni);
 181 
 182     retCode = jvmti->FollowReferences((jint) 0,                 /* heap filter */


 183                                       NULL,                     /* class */
 184                                       NULL,                     /* inital object */
 185                                       &g_heapCallbacks,
 186                                       (const void *) &g_fakeUserData);
 187 
 188     if ( ! NSK_VERIFY(retCode == JVMTI_ERROR_NONE) ) {
 189         nsk_jvmti_setFailStatus();
 190     }
 191 
 192     checkThatAllTagsVisited();
 193 
 194     printf(">>> Let debugee to finish\n");
 195     fflush(0);
 196 
 197     if (!NSK_VERIFY(nsk_jvmti_resumeSync())) {
 198         return;
 199     }
 200 
 201 } /* agentProc */
 202 


 228 
 229     if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL)) {
 230         return JNI_ERR;
 231     }
 232 
 233     /* Setting Heap Callbacks */
 234     memset(&g_heapCallbacks, 0, sizeof(g_heapCallbacks));
 235     g_heapCallbacks.heap_iteration_callback         = NULL;
 236     g_heapCallbacks.heap_reference_callback         = heapReferenceCallback;
 237     g_heapCallbacks.primitive_field_callback        = primitiveFieldCallback;
 238     g_heapCallbacks.array_primitive_value_callback  = arrayPrimitiveValueCallback;
 239     g_heapCallbacks.string_primitive_value_callback = stringPrimitiveValueCallback;
 240 
 241     jvmti_FollowRefObject_init();
 242 
 243     {
 244         jvmtiCapabilities caps;
 245 
 246         memset(&caps, 0, sizeof(caps));
 247         caps.can_tag_objects = 1;
 248         if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps))) {
 249             return JNI_ERR;
 250         }
 251     }
 252 
 253     if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL))) {
 254         return JNI_ERR;
 255     }
 256 
 257     return JNI_OK;
 258 
 259 } /* Agent_OnLoad */
 260 
 261 
 262 /* ============================================================================= */
 263 
 264 }
< prev index next >