| 419 | |
| 420 | template <typename key_t, typename value_t> |
| 421 | void MemoryConstrainedLRUCache<key_t, value_t>::UpdateNumBytes( |
| 422 | const key_t& key) { |
| 423 | size_t& num_bytes = elems_map_.at(key).second; |
| 424 | THROW_CHECK_GE(num_bytes_, num_bytes) |
| 425 | << "Unsigned underflow in MemoryConstrainedLRUCache::UpdateNumBytes"; |
| 426 | num_bytes_ -= num_bytes; |
| 427 | num_bytes = Get(key)->NumBytes(); |
| 428 | num_bytes_ += num_bytes; |
| 429 | |
| 430 | while (num_bytes_ > max_num_bytes_ && elems_map_.size() > 1) { |
| 431 | Pop(); |
| 432 | } |
| 433 | } |
| 434 | |
| 435 | template <typename key_t, typename value_t> |
| 436 | void MemoryConstrainedLRUCache<key_t, value_t>::Clear() { |