summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorpauljensen@chromium.org <pauljensen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-10 20:19:45 +0000
committerpauljensen@chromium.org <pauljensen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-10 20:19:45 +0000
commit5bad2f7234e08a8f32ad78b12223bbb4945ee03e (patch)
treeb4f8a4a8d2cb69b1080904f5a9d50ce75deccee7 /net
parent61479a9dd88bde5af5fbfee11d11be9168bee332 (diff)
downloadchromium_src-5bad2f7234e08a8f32ad78b12223bbb4945ee03e.zip
chromium_src-5bad2f7234e08a8f32ad78b12223bbb4945ee03e.tar.gz
chromium_src-5bad2f7234e08a8f32ad78b12223bbb4945ee03e.tar.bz2
Revert MappedFile::Flush() back to pre-upstreamed version.
BUG=243544 Review URL: https://chromiumcodereview.appspot.com/16337015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205289 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/disk_cache/mapped_file_avoid_mmap_posix.cc26
1 files changed, 6 insertions, 20 deletions
diff --git a/net/disk_cache/mapped_file_avoid_mmap_posix.cc b/net/disk_cache/mapped_file_avoid_mmap_posix.cc
index d751c74..cd514a3 100644
--- a/net/disk_cache/mapped_file_avoid_mmap_posix.cc
+++ b/net/disk_cache/mapped_file_avoid_mmap_posix.cc
@@ -47,30 +47,16 @@ bool MappedFile::Store(const FileBlock* block) {
void MappedFile::Flush() {
DCHECK(buffer_);
DCHECK(snapshot_);
- if (0 == memcmp(buffer_, snapshot_, view_size_)) {
- // Nothing changed, no need to flush.
- return;
- }
-
const char* buffer_ptr = static_cast<const char*>(buffer_);
char* snapshot_ptr = static_cast<char*>(snapshot_);
- size_t i = 0;
- while (i < view_size_) {
- size_t run_start = i;
- // Look for a run of changed bytes (possibly zero-sized). Write them out.
- while(i < view_size_ && snapshot_ptr[i] != buffer_ptr[i]) {
- snapshot_ptr[i] = buffer_ptr[i];
- i++;
- }
- if (i > run_start) {
- Write(snapshot_ptr + run_start, i - run_start, run_start);
- }
- // Look for a run of unchanged bytes (possibly zero-sized). Skip them.
- while (i < view_size_ && snapshot_ptr[i] == buffer_ptr[i]) {
- i++;
+ const size_t block_size = 4096;
+ for (size_t offset = 0; offset < view_size_; offset += block_size) {
+ size_t size = std::min(view_size_ - offset, block_size);
+ if (memcmp(snapshot_ptr + offset, buffer_ptr + offset, size)) {
+ memcpy(snapshot_ptr + offset, buffer_ptr + offset, size);
+ Write(snapshot_ptr + offset, size, offset);
}
}
- DCHECK(0 == memcmp(buffer_, snapshot_, view_size_));
}
MappedFile::~MappedFile() {