G1StringDedupEntry* remove() { G1StringDedupEntry* entry = _list; if (entry != NULL) { _list = entry->next(); _length--; } return entry; }
void G1StringDedupTable::transfer(G1StringDedupEntry** pentry, G1StringDedupTable* dest) { G1StringDedupEntry* entry = *pentry; *pentry = entry->next(); unsigned int hash = entry->hash(); size_t index = dest->hash_to_index(hash); G1StringDedupEntry** list = dest->bucket(index); entry->set_next(*list); *list = entry; }
typeArrayOop G1StringDedupTable::lookup(typeArrayOop value, bool latin1, unsigned int hash, G1StringDedupEntry** list, uintx &count) { for (G1StringDedupEntry* entry = *list; entry != NULL; entry = entry->next()) { if (entry->hash() == hash && entry->latin1() == latin1) { typeArrayOop existing_value = entry->obj(); if (equals(value, existing_value)) { // Match found return existing_value; } } count++; } // Not found return NULL; }
void G1StringDedupTable::remove(G1StringDedupEntry** pentry, uint worker_id) { G1StringDedupEntry* entry = *pentry; *pentry = entry->next(); _entry_cache->free(entry, worker_id); }