summaryrefslogtreecommitdiff
path: root/src/common/shared_cache.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/shared_cache.hpp')
-rw-r--r--src/common/shared_cache.hpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/common/shared_cache.hpp b/src/common/shared_cache.hpp
index 69a4c06dfbf..178d1001be3 100644
--- a/src/common/shared_cache.hpp
+++ b/src/common/shared_cache.hpp
@@ -85,12 +85,23 @@ public:
assert(weak_refs.empty());
}
+ void clear(K key) {
+ VPtr val; // release any ref we have after we drop the lock
+ {
+ Mutex::Locker l(lock);
+ if (weak_refs.count(key)) {
+ val = weak_refs[key].lock();
+ }
+ lru_remove(key);
+ }
+ }
+
void set_size(size_t new_size) {
list<VPtr> to_release;
{
Mutex::Locker l(lock);
max_size = new_size;
- trim_cache(to_release);
+ trim_cache(&to_release);
}
}