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