Remove the SharedVariant pointer from StringData.
We only use it to lazily grab the hashcode. So just grab the hashcode eagerly when we create the string.
Esse commit está contido em:
@@ -300,10 +300,9 @@ HOT_FUNC
|
||||
StringData::StringData(SharedVariant *shared)
|
||||
: _count(0) {
|
||||
assert(shared && size_t(shared->stringLength()) <= size_t(MaxSize));
|
||||
m_hash = 0;
|
||||
m_hash = shared->stringHash();
|
||||
m_len = shared->stringLength();
|
||||
m_cdata = shared->stringData();
|
||||
m_big.shared = shared;
|
||||
m_big.cap = m_len | IsShared;
|
||||
}
|
||||
|
||||
@@ -914,8 +913,8 @@ int StringData::compare(const StringData *v2) const {
|
||||
|
||||
HOT_FUNC
|
||||
strhash_t StringData::hashHelper() const {
|
||||
strhash_t h = isShared() ? m_big.shared->stringHash() :
|
||||
hash_string_inline(m_data, m_len);
|
||||
assert(!isShared());
|
||||
strhash_t h = hash_string_inline(m_data, m_len);
|
||||
assert(h >= 0);
|
||||
m_hash |= h;
|
||||
return h;
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário