Index: runtime/vm/fixed_cache.h |
diff --git a/runtime/vm/fixed_cache.h b/runtime/vm/fixed_cache.h |
index eac919dc844c984f17fac9e4e744fc5c5c3c7df1..3608a197cb3188d88115952bad981cdf80d0cefb 100644 |
--- a/runtime/vm/fixed_cache.h |
+++ b/runtime/vm/fixed_cache.h |
@@ -12,25 +12,21 @@ namespace dart { |
// A simple sorted fixed size Key-Value storage. |
// |
-// Assumes both Key and Value are POD-like objects. |
+// Assumes both Key and Value are default-constructible objects. |
// |
// Keys must be comparable with operator<. |
// |
// Duplicates are not allowed - check with Lookup before insertion. |
// |
-// Optionally Values may have cleanup function to delete |
-// any resources they point to. |
template <class K, class V, intptr_t kCapacity> |
class FixedCache { |
public: |
- typedef void (*Deleter)(V*); |
- |
struct Entry { |
K key; |
V value; |
}; |
- explicit FixedCache(Deleter deleter = NULL) : deleter_(deleter), length_(0) {} |
+ FixedCache() : length_(0) {} |
~FixedCache() { Clear(); } |
@@ -44,7 +40,6 @@ class FixedCache { |
intptr_t i = LowerBound(key); |
if (length_ == kCapacity) { |
- if (deleter_) deleter_(&pairs_[length_ - 1].value); |
length_ = kCapacity - 1; |
if (i == kCapacity) i = kCapacity - 1; |
} |
@@ -59,15 +54,10 @@ class FixedCache { |
} |
void Clear() { |
- if (deleter_) { |
- for (intptr_t i = 0; i < length_; i++) { |
- deleter_(&pairs_[i].value); |
- } |
- } |
length_ = 0; |
} |
- private: |
+ public: |
Florian Schneider
2017/03/09 16:33:33
Why public?
Dmitry Olshansky
2017/03/13 12:26:31
Done.
|
intptr_t LowerBound(K key) { |
intptr_t low = 0, high = length_; |
while (low != high) { |
@@ -84,7 +74,6 @@ class FixedCache { |
} |
Entry pairs_[kCapacity]; // Sorted array of pairs. |
- Deleter deleter_; |
intptr_t length_; |
}; |