test/hotspot/jtreg/vmTestbase/nsk/jvmti/IterateThroughHeap/filter-tagged/HeapFilter.cpp
changeset 52949 c78a17d24618
parent 52809 7edc56620d42
equal deleted inserted replaced
52948:04c9b7111aac 52949:c78a17d24618
   226       if (objects_info[object].fields[field].type == TYPE_ARRAY &&
   226       if (objects_info[object].fields[field].type == TYPE_ARRAY &&
   227          element_count == objects_info[object].fields[field].size) {
   227          element_count == objects_info[object].fields[field].size) {
   228         int matched = 1;
   228         int matched = 1;
   229         int i;
   229         int i;
   230         for (i = 0; i < element_count && matched; i++) {
   230         for (i = 0; i < element_count && matched; i++) {
   231           matched = ((jint*)objects_info[object].fields[field].value)[i]==
   231           matched = ((jint*)objects_info[object].fields[field].value)[i] ==
   232             ((jint*)elements)[i];
   232             ((jint*)elements)[i];
   233         }
   233         }
   234         if (matched)
   234         if (matched)
   235           objects_info[object].fields[field].found++;
   235           objects_info[object].fields[field].found++;
   236       }
   236       }
   266 //set expected fields value according to it's type
   266 //set expected fields value according to it's type
   267 void set_expected_value(field_info_t *field, int tagged, int is_static) {
   267 void set_expected_value(field_info_t *field, int tagged, int is_static) {
   268   if (field->primitive) {
   268   if (field->primitive) {
   269     field->size = (int) sizeof(jint);
   269     field->size = (int) sizeof(jint);
   270     if (is_static) {
   270     if (is_static) {
   271       field->value = (void*)(tagged ? &TAGGED_STATIC_INT_VALUE:
   271       field->value = (void*)(tagged ? &TAGGED_STATIC_INT_VALUE : &UNTAGGED_STATIC_INT_VALUE);
   272                              &UNTAGGED_STATIC_INT_VALUE);
       
   273     } else {
   272     } else {
   274       field->value = (void*)(tagged ? &TAGGED_INT_VALUE:
   273       field->value = (void*)(tagged ? &TAGGED_INT_VALUE : &UNTAGGED_INT_VALUE);
   275                              &UNTAGGED_INT_VALUE);
       
   276     }
   274     }
   277     field->type = TYPE_FIELD;
   275     field->type = TYPE_FIELD;
   278   } else if (0==strcmp(field->signature,STRING_SIGNATURE)) {
   276   } else if (0 == strcmp(field->signature,STRING_SIGNATURE)) {
   279     field->value = (void*)(tagged ? TAGGED_STRING_VALUE:
   277     field->value = (void*)(tagged ? TAGGED_STRING_VALUE : UNTAGGED_STRING_VALUE);
   280                            UNTAGGED_STRING_VALUE);
       
   281     field->size = (int) wcslen((wchar_t*)field->value);
   278     field->size = (int) wcslen((wchar_t*)field->value);
   282     field->type = TYPE_STRING;
   279     field->type = TYPE_STRING;
   283   } else if (0==strcmp(field->signature,INT_ARRAY_SIGNATURE)) {
   280   } else if (0 == strcmp(field->signature,INT_ARRAY_SIGNATURE)) {
   284     field->size = INT_ARRAY_LENGTH;
   281     field->size = INT_ARRAY_LENGTH;
   285     field->value = (void*)(tagged ? TAGGED_INT_ARRAY_VALUE:
   282     field->value = (void*)(tagged ? TAGGED_INT_ARRAY_VALUE : UNTAGGED_INT_ARRAY_VALUE);
   286                            UNTAGGED_INT_ARRAY_VALUE);
       
   287     field->type = TYPE_ARRAY;
   283     field->type = TYPE_ARRAY;
   288   }
   284   }
   289 }
   285 }
   290 
   286 
   291 /**
   287 /**
   425 
   421 
   426 // Check that every field was found expected amount of times
   422 // Check that every field was found expected amount of times
   427 void verify_objects(int reachable) {
   423 void verify_objects(int reachable) {
   428   int object;
   424   int object;
   429   int field;
   425   int field;
   430   for (object = 0; object < (reachable?TEST_OBJECTS_COUNT:TAGGED_OBJECTS); object++) {
   426   for (object = 0; object < (reachable ? TEST_OBJECTS_COUNT : TAGGED_OBJECTS); object++) {
   431     for (field = 0; field < objects_info[object].fields_count; field++) {
   427     for (field = 0; field < objects_info[object].fields_count; field++) {
   432       // If primitive field of object that was not collected or
   428       // If primitive field of object that was not collected or
   433       // non primitive field that was not collected was not found
   429       // non primitive field that was not collected was not found
   434       // expected amount of times, than test failed.
   430       // expected amount of times, than test failed.
   435       if ((objects_info[object].fields[field].primitive &&
   431       if ((objects_info[object].fields[field].primitive &&
   466   if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout))) {
   462   if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout))) {
   467     return;
   463     return;
   468   }
   464   }
   469 
   465 
   470   NSK_DISPLAY0("Tagging fields.\n");
   466   NSK_DISPLAY0("Tagging fields.\n");
   471   if (!NSK_VERIFY(JNI_OK==tag_objects(jvmti, jni))) {
   467   if (!NSK_VERIFY(JNI_OK == tag_objects(jvmti, jni))) {
   472     return;
   468     return;
   473   }
   469   }
   474 
   470 
   475   memset(&primitive_callbacks, 0, sizeof(jvmtiHeapCallbacks));
   471   memset(&primitive_callbacks, 0, sizeof(jvmtiHeapCallbacks));
   476   primitive_callbacks.primitive_field_callback = &field_callback;
   472   primitive_callbacks.primitive_field_callback = &field_callback;