< prev index next >

src/hotspot/share/classfile/stringTable.cpp

Print this page
rev 52316 : 8185525: Add JFR event for DictionarySizes
Summary: Added TableStatistics event
Reviewed-by: egahlin, coleenp


 619   if (obj == NULL) {
 620     return 0;
 621   } else if (obj->klass() == SystemDictionary::String_klass()) {
 622     return (obj->size() + java_lang_String::value(obj)->size()) * HeapWordSize;
 623   } else {
 624     return obj->size();
 625   }
 626 }
 627 
 628 struct SizeFunc : StackObj {
 629   size_t operator()(WeakHandle<vm_string_table_data>* val) {
 630     oop s = val->peek();
 631     if (s == NULL) {
 632       // Dead
 633       return 0;
 634     }
 635     return literal_size(s);
 636   };
 637 };
 638 







 639 void StringTable::print_table_statistics(outputStream* st,
 640                                          const char* table_name) {
 641   SizeFunc sz;
 642   _local_table->statistics_to(Thread::current(), sz, st, table_name);
 643 }
 644 
 645 // Verification
 646 class VerifyStrings : StackObj {
 647  public:
 648   bool operator()(WeakHandle<vm_string_table_data>* val) {
 649     oop s = val->peek();
 650     if (s != NULL) {
 651       assert(java_lang_String::length(s) >= 0, "Length on string must work.");
 652     }
 653     return true;
 654   };
 655 };
 656 
 657 // This verification is part of Universe::verify() and needs to be quick.
 658 void StringTable::verify() {




 619   if (obj == NULL) {
 620     return 0;
 621   } else if (obj->klass() == SystemDictionary::String_klass()) {
 622     return (obj->size() + java_lang_String::value(obj)->size()) * HeapWordSize;
 623   } else {
 624     return obj->size();
 625   }
 626 }
 627 
 628 struct SizeFunc : StackObj {
 629   size_t operator()(WeakHandle<vm_string_table_data>* val) {
 630     oop s = val->peek();
 631     if (s == NULL) {
 632       // Dead
 633       return 0;
 634     }
 635     return literal_size(s);
 636   };
 637 };
 638 
 639 TableStatistics StringTable::get_table_statistics() {
 640   static TableStatistics ts;
 641   SizeFunc sz;
 642   ts = _local_table->statistics_get(Thread::current(), sz, ts);
 643   return ts;
 644 }
 645 
 646 void StringTable::print_table_statistics(outputStream* st,
 647                                          const char* table_name) {
 648   SizeFunc sz;
 649   _local_table->statistics_to(Thread::current(), sz, st, table_name);
 650 }
 651 
 652 // Verification
 653 class VerifyStrings : StackObj {
 654  public:
 655   bool operator()(WeakHandle<vm_string_table_data>* val) {
 656     oop s = val->peek();
 657     if (s != NULL) {
 658       assert(java_lang_String::length(s) >= 0, "Length on string must work.");
 659     }
 660     return true;
 661   };
 662 };
 663 
 664 // This verification is part of Universe::verify() and needs to be quick.
 665 void StringTable::verify() {


< prev index next >