diff -r 74533f63b116 -r d2a62e0f25eb src/share/vm/classfile/symbolTable.cpp --- a/src/share/vm/classfile/symbolTable.cpp Wed Jun 27 15:23:36 2012 +0200 +++ b/src/share/vm/classfile/symbolTable.cpp Thu Jun 28 17:03:16 2012 -0400 @@ -64,9 +64,9 @@ void SymbolTable::initialize_symbols(int arena_alloc_size) { // Initialize the arena for global symbols, size passed in depends on CDS. if (arena_alloc_size == 0) { - _arena = new Arena(); + _arena = new (mtSymbol) Arena(); } else { - _arena = new Arena(arena_alloc_size); + _arena = new (mtSymbol) Arena(arena_alloc_size); } } @@ -74,7 +74,7 @@ void SymbolTable::symbols_do(SymbolClosure *cl) { const int n = the_table()->table_size(); for (int i = 0; i < n; i++) { - for (HashtableEntry* p = the_table()->bucket(i); + for (HashtableEntry* p = the_table()->bucket(i); p != NULL; p = p->next()) { cl->do_symbol(p->literal_addr()); @@ -92,8 +92,8 @@ int total = 0; size_t memory_total = 0; for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry** p = the_table()->bucket_addr(i); - HashtableEntry* entry = the_table()->bucket(i); + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); while (entry != NULL) { // Shared entries are normally at the end of the bucket and if we run into // a shared entry, then there is nothing more to remove. However, if we @@ -117,7 +117,7 @@ p = entry->next_addr(); } // get next entry - entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); } } symbols_removed += removed; @@ -164,7 +164,7 @@ Symbol* SymbolTable::lookup(int index, const char* name, int len, unsigned int hash) { int count = 0; - for (HashtableEntry* e = bucket(index); e != NULL; e = e->next()) { + for (HashtableEntry* e = bucket(index); e != NULL; e = e->next()) { count++; // count all entries in this bucket, not just ones with same hash if (e->hash() == hash) { Symbol* sym = e->literal(); @@ -176,7 +176,7 @@ } } // If the bucket size is too deep check if this hash code is insufficient. - if (count >= BasicHashtable::rehash_count && !needs_rehashing()) { + if (count >= BasicHashtable::rehash_count && !needs_rehashing()) { _needs_rehashing = check_rehash_table(count); } return NULL; @@ -268,7 +268,7 @@ unsigned int hash = hash_symbol((char*)sym->bytes(), sym->utf8_length()); int index = the_table()->hash_to_index(hash); - for (HashtableEntry* e = the_table()->bucket(index); e != NULL; e = e->next()) { + for (HashtableEntry* e = the_table()->bucket(index); e != NULL; e = e->next()) { if (e->hash() == hash) { Symbol* literal_sym = e->literal(); if (sym == literal_sym) { @@ -387,7 +387,7 @@ Symbol* sym = allocate_symbol(name, len, c_heap, CHECK_NULL); assert(sym->equals((char*)name, len), "symbol must be properly initialized"); - HashtableEntry* entry = new_entry(hashValue, sym); + HashtableEntry* entry = new_entry(hashValue, sym); add_entry(index, entry); return sym; } @@ -435,7 +435,7 @@ bool c_heap = class_loader() != NULL; Symbol* sym = allocate_symbol((const u1*)names[i], lengths[i], c_heap, CHECK_(false)); assert(sym->equals(names[i], lengths[i]), "symbol must be properly initialized"); // why wouldn't it be??? - HashtableEntry* entry = new_entry(hashValue, sym); + HashtableEntry* entry = new_entry(hashValue, sym); add_entry(index, entry); cp->symbol_at_put(cp_indices[i], sym); } @@ -446,7 +446,7 @@ void SymbolTable::verify() { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { Symbol* s = (Symbol*)(p->literal()); guarantee(s != NULL, "symbol is NULL"); @@ -462,7 +462,7 @@ NumberSeq summary; for (int i = 0; i < the_table()->table_size(); ++i) { int count = 0; - for (HashtableEntry* e = the_table()->bucket(i); + for (HashtableEntry* e = the_table()->bucket(i); e != NULL; e = e->next()) { count++; } @@ -499,7 +499,7 @@ int memory_total = 0; int count = 0; for (i = 0; i < the_table()->table_size(); i++) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { memory_total += p->literal()->object_size(); count++; @@ -560,15 +560,15 @@ void SymbolTable::print() { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry** p = the_table()->bucket_addr(i); - HashtableEntry* entry = the_table()->bucket(i); + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); if (entry != NULL) { while (entry != NULL) { tty->print(PTR_FORMAT " ", entry->literal()); entry->literal()->print(); tty->print(" %d", entry->literal()->refcount()); p = entry->next_addr(); - entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); } tty->cr(); } @@ -631,7 +631,7 @@ oop StringTable::lookup(int index, jchar* name, int len, unsigned int hash) { int count = 0; - for (HashtableEntry* l = bucket(index); l != NULL; l = l->next()) { + for (HashtableEntry* l = bucket(index); l != NULL; l = l->next()) { count++; if (l->hash() == hash) { if (java_lang_String::equals(l->literal(), name, len)) { @@ -640,7 +640,7 @@ } } // If the bucket size is too deep check if this hash code is insufficient. - if (count >= BasicHashtable::rehash_count && !needs_rehashing()) { + if (count >= BasicHashtable::rehash_count && !needs_rehashing()) { _needs_rehashing = check_rehash_table(count); } return NULL; @@ -676,7 +676,7 @@ return test; } - HashtableEntry* entry = new_entry(hashValue, string()); + HashtableEntry* entry = new_entry(hashValue, string()); add_entry(index, entry); return string(); } @@ -761,8 +761,8 @@ // entries at a safepoint. assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry** p = the_table()->bucket_addr(i); - HashtableEntry* entry = the_table()->bucket(i); + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); while (entry != NULL) { // Shared entries are normally at the end of the bucket and if we run into // a shared entry, then there is nothing more to remove. However, if we @@ -778,15 +778,15 @@ *p = entry->next(); the_table()->free_entry(entry); } - entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); } } } void StringTable::oops_do(OopClosure* f) { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry** p = the_table()->bucket_addr(i); - HashtableEntry* entry = the_table()->bucket(i); + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); while (entry != NULL) { f->do_oop((oop*)entry->literal_addr()); @@ -798,14 +798,14 @@ } else { p = entry->next_addr(); } - entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); + entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); } } } void StringTable::verify() { for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); for ( ; p != NULL; p = p->next()) { oop s = p->literal(); guarantee(s != NULL, "interned string is NULL"); @@ -821,7 +821,7 @@ void StringTable::dump(outputStream* st) { NumberSeq summary; for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry* p = the_table()->bucket(i); + HashtableEntry* p = the_table()->bucket(i); int count = 0; for ( ; p != NULL; p = p->next()) { count++;