Index: net/disk_cache/entry_impl.cc |
=================================================================== |
--- net/disk_cache/entry_impl.cc (revision 11078) |
+++ net/disk_cache/entry_impl.cc (working copy) |
@@ -92,27 +92,7 @@ |
// written before). |
EntryImpl::~EntryImpl() { |
if (doomed_) { |
- UMA_HISTOGRAM_COUNTS("DiskCache.DeleteHeader", GetDataSize(0)); |
- UMA_HISTOGRAM_COUNTS("DiskCache.DeleteData", GetDataSize(1)); |
- for (int index = 0; index < NUM_STREAMS; index++) { |
- Addr address(entry_.Data()->data_addr[index]); |
- if (address.is_initialized()) { |
- DeleteData(address, index); |
- backend_->ModifyStorageSize(entry_.Data()->data_size[index] - |
- unreported_size_[index], 0); |
- } |
- } |
- Addr address(entry_.Data()->long_key); |
- DeleteData(address, kKeyFileIndex); |
- backend_->ModifyStorageSize(entry_.Data()->key_len, 0); |
- |
- memset(node_.buffer(), 0, node_.size()); |
- memset(entry_.buffer(), 0, entry_.size()); |
- node_.Store(); |
- entry_.Store(); |
- |
- backend_->DeleteBlock(node_.address(), false); |
- backend_->DeleteBlock(entry_.address(), false); |
+ DeleteEntryData(true); |
} else { |
bool ret = true; |
for (int index = 0; index < NUM_STREAMS; index++) { |
@@ -474,6 +454,39 @@ |
doomed_ = true; |
} |
+void EntryImpl::DeleteEntryData(bool everything) { |
+ DCHECK(doomed_ || !everything); |
+ |
+ UMA_HISTOGRAM_COUNTS("DiskCache.DeleteHeader", GetDataSize(0)); |
+ UMA_HISTOGRAM_COUNTS("DiskCache.DeleteData", GetDataSize(1)); |
+ for (int index = 0; index < NUM_STREAMS; index++) { |
+ Addr address(entry_.Data()->data_addr[index]); |
+ if (address.is_initialized()) { |
+ DeleteData(address, index); |
+ backend_->ModifyStorageSize(entry_.Data()->data_size[index] - |
+ unreported_size_[index], 0); |
+ } |
+ } |
+ |
+ if (!everything) |
+ return; |
+ |
+ // Remove all traces of this entry. |
+ backend_->RemoveEntry(this); |
+ |
+ Addr address(entry_.Data()->long_key); |
+ DeleteData(address, kKeyFileIndex); |
+ backend_->ModifyStorageSize(entry_.Data()->key_len, 0); |
+ |
+ memset(node_.buffer(), 0, node_.size()); |
+ memset(entry_.buffer(), 0, entry_.size()); |
+ node_.Store(); |
+ entry_.Store(); |
+ |
+ backend_->DeleteBlock(node_.address(), false); |
+ backend_->DeleteBlock(entry_.address(), false); |
+} |
+ |
CacheAddr EntryImpl::GetNextAddress() { |
return entry_.Data()->next; |
} |