< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/jvmti_FollowRefObjects.cpp

Print this page
rev 52185 : [mq]: refactor


  98 
  99             DBG(printf(">>> Tag %" LL "d has been visited %i times: %s\n", i, g_tagVisitCount[i], g_szTagInfo[i]));
 100         }
 101     }
 102 
 103     return ok;
 104 }
 105 
 106 JNIEXPORT void JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_resetTags(JNIEnv* jni, jclass klass)
 107 {
 108     memset(g_szTagInfo, 0, sizeof(g_szTagInfo));
 109     memset(g_tagFlags, 0, sizeof(g_tagFlags));
 110     memset(g_tagVisitCount, 0, sizeof(g_tagVisitCount));
 111 }
 112 
 113 JNIEXPORT jboolean JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_setTag(JNIEnv* jni, jclass klass, jobject o, jlong tag, jstring sInfo)
 114 {
 115     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 116     jint hashCode;
 117 
 118     if ( ! NSK_VERIFY(NSK_CPP_STUB3(SetTag, jvmti, o, tag) == JVMTI_ERROR_NONE) ) {
 119         NSK_COMPLAIN2("Can't set tag %li for object %lx\n", tag, o);
 120         return JNI_FALSE;
 121     }
 122 
 123     if ( ! NSK_VERIFY(NSK_CPP_STUB3(GetObjectHashCode, jvmti, o, &hashCode) == JVMTI_ERROR_NONE) ) {
 124         NSK_COMPLAIN1("Can't get hash object %lx\n", o);
 125         return JNI_FALSE;
 126     }
 127 
 128     NSK_DISPLAY2("setTag: %08x <- % 3li", hashCode, tag);
 129 
 130     if ( tag > 0 && tag < MAX_TAG ) {
 131         jboolean fCopy;
 132         const char * s;
 133 
 134         if ( ! NSK_VERIFY((s = NSK_CPP_STUB3(GetStringUTFChars, jni, sInfo, &fCopy)) != NULL) ) {
 135             NSK_COMPLAIN1("Can't get string at %#p\n", sInfo);
 136             return JNI_FALSE;
 137         }
 138 
 139         if ( ! s ) {
 140             NSK_COMPLAIN1("Can't get string at %#p: NULL\n", sInfo);
 141             return JNI_FALSE;
 142         }
 143 
 144         g_szTagInfo[tag] = strdup(s);
 145 
 146         NSK_CPP_STUB3(ReleaseStringUTFChars, jni, sInfo, s);
 147 
 148         NSK_DISPLAY1(" // %s", g_szTagInfo[tag]);
 149 
 150     }
 151 
 152     markTagSet(tag);
 153 
 154     return JNI_TRUE;
 155 }
 156 
 157 JNIEXPORT jlong JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_getTag(JNIEnv* jni, jclass klass, jobject o)
 158 {
 159     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 160 
 161     jlong tag;
 162     jvmtiError r;
 163     if ( ! NSK_VERIFY((r = NSK_CPP_STUB3(GetTag, jvmti, o, &tag)) == JVMTI_ERROR_NONE) ) {
 164         NSK_COMPLAIN2("Can't GetTag for object %lx. Return code: %i\n", o, r);
 165         return -1;
 166     }
 167 
 168     return tag;
 169 }
 170 
 171 /* ============================================================================= */
 172 
 173 int g_refsToVerifyCnt;
 174 
 175 RefToVerify g_refsToVerify[MAX_REFS];
 176 
 177 /* ============================================================================= */
 178 
 179 JNIEXPORT void JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_resetRefsToVerify(JNIEnv* jni, jclass klass)
 180 {
 181     g_refsToVerifyCnt = 0;
 182 }
 183 


 207     }
 208 
 209     pRefRec = &g_refsToVerify[g_refsToVerifyCnt++];
 210 
 211     pRefRec->_tagFrom = tagFrom;
 212     pRefRec->_tagTo = tagTo;
 213     pRefRec->_refKind = refKind;
 214     pRefRec->_expectedCount = expectedCount;
 215     pRefRec->_actualCount = actualCount;
 216 
 217     return JNI_TRUE;
 218 }
 219 
 220 JNIEXPORT jboolean JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_addRefToVerify(JNIEnv* jni, jclass klass, jobject from, jobject to, jint refKind, jint count)
 221 {
 222     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 223     jvmtiError r;
 224     jlong tagFrom, tagTo;
 225     RefToVerify * pRefRec;
 226 
 227     if ( ! NSK_VERIFY((r = NSK_CPP_STUB3(GetTag, jvmti, from, &tagFrom)) == JVMTI_ERROR_NONE) ) {
 228         NSK_COMPLAIN2("TEST_BUG: Can't GetTag for object %lx. Return code: %i\n", from, r);
 229         nsk_jvmti_setFailStatus();
 230         return JNI_FALSE;
 231     }
 232 
 233 
 234     if ( ! NSK_VERIFY((r = NSK_CPP_STUB3(GetTag, jvmti, to, &tagTo)) == JVMTI_ERROR_NONE) ) {
 235         NSK_COMPLAIN2("TEST_BUG: Can't GetTag for object %lx. Return code: %i\n", to, r);
 236         nsk_jvmti_setFailStatus();
 237         return JNI_FALSE;
 238     }
 239 
 240     if ( (pRefRec = findRefToVerify(tagFrom, tagTo, refKind)) != NULL ) {
 241         pRefRec->_expectedCount += count;
 242         return JNI_TRUE;
 243     }
 244 
 245     return addRefToVerify(tagFrom, tagTo, refKind, count, 0);
 246 }
 247 
 248 jboolean markRefToVerify(jlong tagFrom, jlong tagTo, int refKind)
 249 {
 250     RefToVerify * pRefRec;
 251 
 252     if ( (pRefRec = findRefToVerify(tagFrom, tagTo, refKind)) != NULL ) {
 253         pRefRec->_actualCount++;
 254         return JNI_TRUE;




  98 
  99             DBG(printf(">>> Tag %" LL "d has been visited %i times: %s\n", i, g_tagVisitCount[i], g_szTagInfo[i]));
 100         }
 101     }
 102 
 103     return ok;
 104 }
 105 
 106 JNIEXPORT void JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_resetTags(JNIEnv* jni, jclass klass)
 107 {
 108     memset(g_szTagInfo, 0, sizeof(g_szTagInfo));
 109     memset(g_tagFlags, 0, sizeof(g_tagFlags));
 110     memset(g_tagVisitCount, 0, sizeof(g_tagVisitCount));
 111 }
 112 
 113 JNIEXPORT jboolean JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_setTag(JNIEnv* jni, jclass klass, jobject o, jlong tag, jstring sInfo)
 114 {
 115     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 116     jint hashCode;
 117 
 118     if ( ! NSK_VERIFY(jvmti->SetTag(o, tag) == JVMTI_ERROR_NONE) ) {
 119         NSK_COMPLAIN2("Can't set tag %li for object %lx\n", tag, o);
 120         return JNI_FALSE;
 121     }
 122 
 123     if ( ! NSK_VERIFY(jvmti->GetObjectHashCode(o, &hashCode) == JVMTI_ERROR_NONE) ) {
 124         NSK_COMPLAIN1("Can't get hash object %lx\n", o);
 125         return JNI_FALSE;
 126     }
 127 
 128     NSK_DISPLAY2("setTag: %08x <- % 3li", hashCode, tag);
 129 
 130     if ( tag > 0 && tag < MAX_TAG ) {
 131         jboolean fCopy;
 132         const char * s;
 133 
 134         if ( ! NSK_VERIFY((s = jni->GetStringUTFChars(sInfo, &fCopy)) != NULL) ) {
 135             NSK_COMPLAIN1("Can't get string at %#p\n", sInfo);
 136             return JNI_FALSE;
 137         }
 138 
 139         if ( ! s ) {
 140             NSK_COMPLAIN1("Can't get string at %#p: NULL\n", sInfo);
 141             return JNI_FALSE;
 142         }
 143 
 144         g_szTagInfo[tag] = strdup(s);
 145 
 146         jni->ReleaseStringUTFChars(sInfo, s);
 147 
 148         NSK_DISPLAY1(" // %s", g_szTagInfo[tag]);
 149 
 150     }
 151 
 152     markTagSet(tag);
 153 
 154     return JNI_TRUE;
 155 }
 156 
 157 JNIEXPORT jlong JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_getTag(JNIEnv* jni, jclass klass, jobject o)
 158 {
 159     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 160 
 161     jlong tag;
 162     jvmtiError r;
 163     if ( ! NSK_VERIFY((r = jvmti->GetTag(o, &tag)) == JVMTI_ERROR_NONE) ) {
 164         NSK_COMPLAIN2("Can't GetTag for object %lx. Return code: %i\n", o, r);
 165         return -1;
 166     }
 167 
 168     return tag;
 169 }
 170 
 171 /* ============================================================================= */
 172 
 173 int g_refsToVerifyCnt;
 174 
 175 RefToVerify g_refsToVerify[MAX_REFS];
 176 
 177 /* ============================================================================= */
 178 
 179 JNIEXPORT void JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_resetRefsToVerify(JNIEnv* jni, jclass klass)
 180 {
 181     g_refsToVerifyCnt = 0;
 182 }
 183 


 207     }
 208 
 209     pRefRec = &g_refsToVerify[g_refsToVerifyCnt++];
 210 
 211     pRefRec->_tagFrom = tagFrom;
 212     pRefRec->_tagTo = tagTo;
 213     pRefRec->_refKind = refKind;
 214     pRefRec->_expectedCount = expectedCount;
 215     pRefRec->_actualCount = actualCount;
 216 
 217     return JNI_TRUE;
 218 }
 219 
 220 JNIEXPORT jboolean JNICALL Java_nsk_jvmti_unit_FollowReferences_FollowRefObjects_addRefToVerify(JNIEnv* jni, jclass klass, jobject from, jobject to, jint refKind, jint count)
 221 {
 222     jvmtiEnv * jvmti = nsk_jvmti_getAgentJVMTIEnv();
 223     jvmtiError r;
 224     jlong tagFrom, tagTo;
 225     RefToVerify * pRefRec;
 226 
 227     if ( ! NSK_VERIFY((r = jvmti->GetTag(from, &tagFrom)) == JVMTI_ERROR_NONE) ) {
 228         NSK_COMPLAIN2("TEST_BUG: Can't GetTag for object %lx. Return code: %i\n", from, r);
 229         nsk_jvmti_setFailStatus();
 230         return JNI_FALSE;
 231     }
 232 
 233 
 234     if ( ! NSK_VERIFY((r = jvmti->GetTag(to, &tagTo)) == JVMTI_ERROR_NONE) ) {
 235         NSK_COMPLAIN2("TEST_BUG: Can't GetTag for object %lx. Return code: %i\n", to, r);
 236         nsk_jvmti_setFailStatus();
 237         return JNI_FALSE;
 238     }
 239 
 240     if ( (pRefRec = findRefToVerify(tagFrom, tagTo, refKind)) != NULL ) {
 241         pRefRec->_expectedCount += count;
 242         return JNI_TRUE;
 243     }
 244 
 245     return addRefToVerify(tagFrom, tagTo, refKind, count, 0);
 246 }
 247 
 248 jboolean markRefToVerify(jlong tagFrom, jlong tagTo, int refKind)
 249 {
 250     RefToVerify * pRefRec;
 251 
 252     if ( (pRefRec = findRefToVerify(tagFrom, tagTo, refKind)) != NULL ) {
 253         pRefRec->_actualCount++;
 254         return JNI_TRUE;


< prev index next >