bool G1StringDedupTable::equals(typeArrayOop value1, typeArrayOop value2) { return (value1 == value2 || (value1->length() == value2->length() && (!memcmp(value1->base(T_BYTE), value2->base(T_BYTE), value1->length() * sizeof(jbyte))))); }
unsigned int G1StringDedupTable::hash_code(typeArrayOop value, bool latin1) { unsigned int hash; int length = value->length(); if (latin1) { const jbyte* data = (jbyte*)value->base(T_BYTE); if (use_java_hash()) { hash = java_lang_String::hash_code(data, length); } else { hash = AltHashing::murmur3_32(_table->_hash_seed, data, length); } } else { length /= sizeof(jchar) / sizeof(jbyte); // Convert number of bytes to number of chars const jchar* data = (jchar*)value->base(T_CHAR); if (use_java_hash()) { hash = java_lang_String::hash_code(data, length); } else { hash = AltHashing::murmur3_32(_table->_hash_seed, data, length); } } return hash; }
unsigned int G1StringDedupTable::hash_code(typeArrayOop value) { unsigned int hash; int length = value->length(); const jchar* data = (jchar*)value->base(T_CHAR); if (use_java_hash()) { hash = java_lang_String::hash_code(data, length); } else { hash = AltHashing::murmur3_32(_table->_hash_seed, data, length); } return hash; }