diff options
author | pauljensen@chromium.org <pauljensen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-10 20:19:45 +0000 |
---|---|---|
committer | pauljensen@chromium.org <pauljensen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-10 20:19:45 +0000 |
commit | 5bad2f7234e08a8f32ad78b12223bbb4945ee03e (patch) | |
tree | b4f8a4a8d2cb69b1080904f5a9d50ce75deccee7 /net | |
parent | 61479a9dd88bde5af5fbfee11d11be9168bee332 (diff) | |
download | chromium_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.cc | 26 |
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() { |