154 tty->print_cr("Shared %s table stats -------- base: " PTR_FORMAT, 155 table_name, (intptr_t)base_address); 156 tty->print_cr("Number of entries : %9d", _num_entries); 157 tty->print_cr("Total bytes used : %9d", table_bytes); 158 tty->print_cr("Average bytes per entry : %9.3f", avg_cost); 159 tty->print_cr("Average bucket size : %9.3f", summary.avg()); 160 tty->print_cr("Variance of bucket size : %9.3f", summary.variance()); 161 tty->print_cr("Std. dev. of bucket size: %9.3f", summary.sd()); 162 tty->print_cr("Empty buckets : %9d", _num_empty_buckets); 163 tty->print_cr("Value_Only buckets : %9d", _num_value_only_buckets); 164 tty->print_cr("Other buckets : %9d", _num_other_buckets); 165 } 166 } 167 168 ///////////////////////////////////////////////////////////// 169 // 170 // Customization for dumping Symbol and String tables 171 172 void CompactSymbolTableWriter::add(unsigned int hash, Symbol *symbol) { 173 address base_address = address(MetaspaceShared::shared_rs()->base()); 174 uintx max_delta = uintx(MetaspaceShared::shared_rs()->size()); 175 assert(max_delta <= MAX_SHARED_DELTA, "range check"); 176 177 uintx deltax = address(symbol) - base_address; 178 assert(deltax < max_delta, "range check"); 179 u4 delta = u4(deltax); 180 181 CompactHashtableWriter::add(hash, delta); 182 } 183 184 void CompactStringTableWriter::add(unsigned int hash, oop string) { 185 CompactHashtableWriter::add(hash, oopDesc::encode_heap_oop(string)); 186 } 187 188 void CompactSymbolTableWriter::dump(CompactHashtable<Symbol*, char> *cht) { 189 CompactHashtableWriter::dump(cht, "symbol"); 190 } 191 192 void CompactStringTableWriter::dump(CompactHashtable<oop, char> *cht) { 193 CompactHashtableWriter::dump(cht, "string"); 194 } 195 196 ///////////////////////////////////////////////////////////// 197 // 198 // The CompactHashtable implementation | 154 tty->print_cr("Shared %s table stats -------- base: " PTR_FORMAT, 155 table_name, (intptr_t)base_address); 156 tty->print_cr("Number of entries : %9d", _num_entries); 157 tty->print_cr("Total bytes used : %9d", table_bytes); 158 tty->print_cr("Average bytes per entry : %9.3f", avg_cost); 159 tty->print_cr("Average bucket size : %9.3f", summary.avg()); 160 tty->print_cr("Variance of bucket size : %9.3f", summary.variance()); 161 tty->print_cr("Std. dev. of bucket size: %9.3f", summary.sd()); 162 tty->print_cr("Empty buckets : %9d", _num_empty_buckets); 163 tty->print_cr("Value_Only buckets : %9d", _num_value_only_buckets); 164 tty->print_cr("Other buckets : %9d", _num_other_buckets); 165 } 166 } 167 168 ///////////////////////////////////////////////////////////// 169 // 170 // Customization for dumping Symbol and String tables 171 172 void CompactSymbolTableWriter::add(unsigned int hash, Symbol *symbol) { 173 address base_address = address(MetaspaceShared::shared_rs()->base()); 174 175 uintx deltax = address(symbol) - base_address; 176 // The symbols are in RO space, which is smaler than MAX_SHARED_DELTA. 177 // The assert below is just to be extra cautious. 178 assert(deltax <= MAX_SHARED_DELTA, "the delta is too large to encode"); 179 u4 delta = u4(deltax); 180 181 CompactHashtableWriter::add(hash, delta); 182 } 183 184 void CompactStringTableWriter::add(unsigned int hash, oop string) { 185 CompactHashtableWriter::add(hash, oopDesc::encode_heap_oop(string)); 186 } 187 188 void CompactSymbolTableWriter::dump(CompactHashtable<Symbol*, char> *cht) { 189 CompactHashtableWriter::dump(cht, "symbol"); 190 } 191 192 void CompactStringTableWriter::dump(CompactHashtable<oop, char> *cht) { 193 CompactHashtableWriter::dump(cht, "string"); 194 } 195 196 ///////////////////////////////////////////////////////////// 197 // 198 // The CompactHashtable implementation |