--- old/src/share/vm/oops/constantPool.cpp 2015-04-16 13:30:51.256794577 -0700 +++ new/src/share/vm/oops/constantPool.cpp 2015-04-16 13:30:51.122784442 -0700 @@ -812,7 +812,7 @@ int which) { // Names are interned, so we can compare Symbol*s directly Symbol* cp_name = klass_name_at(which); - return (cp_name == k->name()); + return (cp_name->equals(k->name())); } @@ -951,7 +951,7 @@ { Symbol* k1 = klass_name_at(index1); Symbol* k2 = cp2->klass_name_at(index2); - if (k1 == k2) { + if (k1->equals(k2)) { return true; } } break; @@ -996,7 +996,7 @@ { Symbol* s1 = unresolved_string_at(index1); Symbol* s2 = cp2->unresolved_string_at(index2); - if (s1 == s2) { + if (s1->equals(s2)) { return true; } } break; @@ -1005,7 +1005,7 @@ { Symbol* s1 = symbol_at(index1); Symbol* s2 = cp2->symbol_at(index2); - if (s1 == s2) { + if (s1->equals(s2)) { return true; } } break; @@ -1660,7 +1660,7 @@ break; } case JVM_CONSTANT_Utf8: { - Symbol* sym = symbol_at(idx); + Symbol* sym = symbol_at(idx); char* str = sym->as_utf8(); // Warning! It's crashing on x86 with len = sym->utf8_length() int len = (int) strlen(str); @@ -2050,7 +2050,7 @@ // the class file for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) { assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL"); - if (en->hash() == hash && en->symbol() == sym) { + if (en->hash() == hash && en->symbol()->equals(sym)) { return; // already there } } @@ -2069,7 +2069,7 @@ unsigned int index = hash % table_size(); for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) { assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL"); - if (en->hash() == hash && en->symbol() == sym) { + if (en->hash() == hash && en->symbol()->equals(sym)) { return en; } }