Show More
@@ -509,7 +509,7 b' class revlog(object):' | |||||
509 | def parentrevs(self, rev): |
|
509 | def parentrevs(self, rev): | |
510 | return self.index[rev][5:7] |
|
510 | return self.index[rev][5:7] | |
511 | def start(self, rev): |
|
511 | def start(self, rev): | |
512 |
return |
|
512 | return int(self.index[rev][0] >> 16) | |
513 | def end(self, rev): |
|
513 | def end(self, rev): | |
514 | return self.start(rev) + self.length(rev) |
|
514 | return self.start(rev) + self.length(rev) | |
515 | def length(self, rev): |
|
515 | def length(self, rev): | |
@@ -845,12 +845,7 b' class revlog(object):' | |||||
845 | return hash(text, p1, p2) != node |
|
845 | return hash(text, p1, p2) != node | |
846 |
|
846 | |||
847 | def chunk(self, rev, df=None): |
|
847 | def chunk(self, rev, df=None): | |
848 | start, length = self.start(rev), self.length(rev) |
|
|||
849 | if self._inline: |
|
|||
850 | start += (rev + 1) * self._io.size |
|
|||
851 | end = start + length |
|
|||
852 | def loadcache(df): |
|
848 | def loadcache(df): | |
853 | cache_length = max(65536, length) |
|
|||
854 | if not df: |
|
849 | if not df: | |
855 | if self._inline: |
|
850 | if self._inline: | |
856 | df = self.opener(self.indexfile) |
|
851 | df = self.opener(self.indexfile) | |
@@ -859,21 +854,29 b' class revlog(object):' | |||||
859 | df.seek(start) |
|
854 | df.seek(start) | |
860 | self._chunkcache = (start, df.read(cache_length)) |
|
855 | self._chunkcache = (start, df.read(cache_length)) | |
861 |
|
856 | |||
862 | if not self._chunkcache: |
|
857 | start, length = self.start(rev), self.length(rev) | |
863 | loadcache(df) |
|
858 | if self._inline: | |
|
859 | start += (rev + 1) * self._io.size | |||
|
860 | end = start + length | |||
864 |
|
861 | |||
865 | cache_start = self._chunkcache[0] |
|
862 | offset = 0 | |
866 |
|
|
863 | if not self._chunkcache: | |
867 | if start >= cache_start and end <= cache_end: |
|
864 | cache_length = max(65536, length) | |
868 |
|
|
865 | loadcache(df) | |
869 | offset = start - cache_start |
|
|||
870 | else: |
|
866 | else: | |
871 | loadcache(df) |
|
867 | cache_start = self._chunkcache[0] | |
872 | offset = 0 |
|
868 | cache_length = len(self._chunkcache[1]) | |
|
869 | cache_end = cache_start + cache_length | |||
|
870 | if start >= cache_start and end <= cache_end: | |||
|
871 | # it is cached | |||
|
872 | offset = start - cache_start | |||
|
873 | else: | |||
|
874 | cache_length = max(65536, length) | |||
|
875 | loadcache(df) | |||
873 |
|
876 | |||
874 | # avoid copying large chunks |
|
877 | # avoid copying large chunks | |
875 | c = self._chunkcache[1] |
|
878 | c = self._chunkcache[1] | |
876 |
if |
|
879 | if cache_length != length: | |
877 | c = c[offset:offset + length] |
|
880 | c = c[offset:offset + length] | |
878 |
|
881 | |||
879 | return decompress(c) |
|
882 | return decompress(c) |
General Comments 0
You need to be logged in to leave comments.
Login now