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:
Edwin Smith
2013-06-07 10:14:18 -07:00
commit de sgolemon
commit f69a002911
2 arquivos alterados com 5 adições e 14 exclusões
+3 -4
Ver Arquivo
@@ -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;