Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 19714:0e07c0b5fb1c
revlog.revision: fix cache preload for inline revlogs
Previously the length of data preloaded did not account for the interleaved io
contents. This meant that we'd sometimes have cache misses in _chunks despite
the preloading.
Having a correctly filled out cache will become essential in an upcoming patch.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Sat, 07 Sep 2013 12:42:46 -0700 |
parents | c2e27e57d250 |
children | 1aab406be57c |
comparison
equal
deleted
inserted
replaced
19713:c2e27e57d250 | 19714:0e07c0b5fb1c |
---|---|
843 | 843 |
844 return self._loadchunk(offset, length) | 844 return self._loadchunk(offset, length) |
845 | 845 |
846 def _chunkraw(self, startrev, endrev): | 846 def _chunkraw(self, startrev, endrev): |
847 start = self.start(startrev) | 847 start = self.start(startrev) |
848 length = self.end(endrev) - start | 848 end = self.end(endrev) |
849 if self._inline: | 849 if self._inline: |
850 start += (startrev + 1) * self._io.size | 850 start += (startrev + 1) * self._io.size |
851 end += (endrev + 1) * self._io.size | |
852 length = end - start | |
851 return self._getchunk(start, length) | 853 return self._getchunk(start, length) |
852 | 854 |
853 def _chunk(self, rev): | 855 def _chunk(self, rev): |
854 return decompress(self._chunkraw(rev, rev)) | 856 return decompress(self._chunkraw(rev, rev)) |
855 | 857 |