96 const ZNMethodTableEntry table_entry = table[index]; 97 assert(table_entry.registered() || table_entry.unregistered(), "Entry not found"); 98 99 if (table_entry.registered() && table_entry.method() == nm) { 100 // Remove entry 101 table[index] = ZNMethodTableEntry(true /* unregistered */); 102 return; 103 } 104 105 index = next_index(index, size); 106 } 107 } 108 109 void ZNMethodTable::rebuild(size_t new_size) { 110 assert(CodeCache_lock->owned_by_self(), "Lock must be held"); 111 112 assert(is_power_of_2(new_size), "Invalid size"); 113 114 log_debug(gc, nmethod)("Rebuilding NMethod Table: " 115 SIZE_FORMAT "->" SIZE_FORMAT " entries, " 116 SIZE_FORMAT "(%.0lf%%->%.0lf%%) registered, " 117 SIZE_FORMAT "(%.0lf%%->%.0lf%%) unregistered", 118 _size, new_size, 119 _nregistered, percent_of(_nregistered, _size), percent_of(_nregistered, new_size), 120 _nunregistered, percent_of(_nunregistered, _size), 0.0); 121 122 // Allocate new table 123 ZNMethodTableEntry* const new_table = new ZNMethodTableEntry[new_size]; 124 125 // Transfer all registered entries 126 for (size_t i = 0; i < _size; i++) { 127 const ZNMethodTableEntry entry = _table[i]; 128 if (entry.registered()) { 129 register_entry(new_table, new_size, entry.method()); 130 } 131 } 132 133 // Free old table 134 _safe_delete(_table); 135 136 // Install new table 137 _table = new_table; | 96 const ZNMethodTableEntry table_entry = table[index]; 97 assert(table_entry.registered() || table_entry.unregistered(), "Entry not found"); 98 99 if (table_entry.registered() && table_entry.method() == nm) { 100 // Remove entry 101 table[index] = ZNMethodTableEntry(true /* unregistered */); 102 return; 103 } 104 105 index = next_index(index, size); 106 } 107 } 108 109 void ZNMethodTable::rebuild(size_t new_size) { 110 assert(CodeCache_lock->owned_by_self(), "Lock must be held"); 111 112 assert(is_power_of_2(new_size), "Invalid size"); 113 114 log_debug(gc, nmethod)("Rebuilding NMethod Table: " 115 SIZE_FORMAT "->" SIZE_FORMAT " entries, " 116 SIZE_FORMAT "(%.0f%%->%.0f%%) registered, " 117 SIZE_FORMAT "(%.0f%%->%.0f%%) unregistered", 118 _size, new_size, 119 _nregistered, percent_of(_nregistered, _size), percent_of(_nregistered, new_size), 120 _nunregistered, percent_of(_nunregistered, _size), 0.0); 121 122 // Allocate new table 123 ZNMethodTableEntry* const new_table = new ZNMethodTableEntry[new_size]; 124 125 // Transfer all registered entries 126 for (size_t i = 0; i < _size; i++) { 127 const ZNMethodTableEntry entry = _table[i]; 128 if (entry.registered()) { 129 register_entry(new_table, new_size, entry.method()); 130 } 131 } 132 133 // Free old table 134 _safe_delete(_table); 135 136 // Install new table 137 _table = new_table; |