summaryrefslogtreecommitdiff
path: root/src/shared_string.hh
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-01-28 13:04:55 +0000
committerMaxime Coste <mawww@kakoune.org>2017-01-28 13:04:55 +0000
commit072064407a6699d1168b7ac8919fea3056501a77 (patch)
tree66a5e8b27df6bdd7ccb7d349438f327cbc216ea8 /src/shared_string.hh
parent1048036d3c165e0430820da27badd729d58ace5c (diff)
Remove hash from StringData
Maintaining the hash value of strings is not worth it as we only use it for buffer reload, but pay for it on any buffer modifications.
Diffstat (limited to 'src/shared_string.hh')
-rw-r--r--src/shared_string.hh17
1 files changed, 2 insertions, 15 deletions
diff --git a/src/shared_string.hh b/src/shared_string.hh
index a13f042f..a6522edb 100644
--- a/src/shared_string.hh
+++ b/src/shared_string.hh
@@ -13,7 +13,6 @@ struct StringData : UseMemoryDomain<MemoryDomain::SharedString>
{
int refcount;
int length;
- uint32_t hash;
StringData(int ref, int len) : refcount(ref), length(len) {}
@@ -26,8 +25,8 @@ struct StringData : UseMemoryDomain<MemoryDomain::SharedString>
struct PtrPolicy
{
- static void inc_ref(StringData* r, void*) { ++r->refcount; }
- static void dec_ref(StringData* r, void*) { if (--r->refcount == 0) delete r; }
+ static void inc_ref(StringData* r, void*) noexcept { ++r->refcount; }
+ static void dec_ref(StringData* r, void*) noexcept { if (--r->refcount == 0) destroy(r); }
static void ptr_moved(StringData*, void*, void*) noexcept {}
};
@@ -40,7 +39,6 @@ struct StringData : UseMemoryDomain<MemoryDomain::SharedString>
if (back != 0)
res->data()[len-1] = back;
res->data()[len] = 0;
- res->hash = hash_data(res->data(), res->length);
return RefPtr<StringData, PtrPolicy>{res};
}
@@ -48,17 +46,6 @@ struct StringData : UseMemoryDomain<MemoryDomain::SharedString>
{
StringData::operator delete(s, sizeof(StringData) + s->length + 1);
}
-
- friend void inc_ref_count(StringData* s, void*)
- {
- ++s->refcount;
- }
-
- friend void dec_ref_count(StringData* s, void*)
- {
- if (--s->refcount == 0)
- StringData::destroy(s);
- }
};
using StringDataPtr = RefPtr<StringData, StringData::PtrPolicy>;