From 8185e47822465a5c7a9cc6e56a11f16996855d79 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Thu, 25 Oct 2012 23:11:13 -0700 Subject: Add an LRU cache plus hashing primitives This patch adds a hashtable-based LRU cache. This should be significantly higher performance than the GenerationCache it is intended to replace. It is a large part of the fix for bug 7271109 TextLayoutCache low-level performance issues. We added a new method to BasicHashtable to detect when rehashing is needed, because the internal linked list pointers would get invalidated by that rehashing. Also, the hash_type specialized to pointers had a small flaw. Change-Id: I950c2083f96519777b851dbe157100e0a334caec --- libs/utils/BasicHashtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libs/utils/BasicHashtable.cpp') diff --git a/libs/utils/BasicHashtable.cpp b/libs/utils/BasicHashtable.cpp index fb8ec9f83f..fd51b7b2e0 100644 --- a/libs/utils/BasicHashtable.cpp +++ b/libs/utils/BasicHashtable.cpp @@ -80,7 +80,7 @@ void BasicHashtableImpl::clear() { SharedBuffer* sb = SharedBuffer::bufferFromData(mBuckets); if (sb->onlyOwner()) { destroyBuckets(mBuckets, mBucketCount); - for (size_t i = 0; i < mSize; i++) { + for (size_t i = 0; i < mBucketCount; i++) { Bucket& bucket = bucketAt(mBuckets, i); bucket.cookie = 0; } -- cgit v1.2.3-59-g8ed1b