##// END OF EJS Templates
revlog: move chunk cache preload from revision to _chunks...
Siddharth Agarwal -
r19716:e1797697 default
parent child Browse files
Show More
@@ -859,6 +859,8 b' class revlog(object):'
859 '''faster version of [self._chunk(rev) for rev in revs]
859 '''faster version of [self._chunk(rev) for rev in revs]
860
860
861 Assumes that revs is in ascending order.'''
861 Assumes that revs is in ascending order.'''
862 if not revs:
863 return []
862 start = self.start
864 start = self.start
863 length = self.length
865 length = self.length
864 inline = self._inline
866 inline = self._inline
@@ -868,7 +870,8 b' class revlog(object):'
868 l = []
870 l = []
869 ladd = l.append
871 ladd = l.append
870
872
871 # XXX assume for now that chunkcache is preloaded
873 # preload the cache
874 self._chunkraw(revs[0], revs[-1])
872 offset, data = self._chunkcache
875 offset, data = self._chunkcache
873
876
874 for rev in revs:
877 for rev in revs:
@@ -946,21 +949,22 b' class revlog(object):'
946 else:
949 else:
947 iterrev -= 1
950 iterrev -= 1
948 e = index[iterrev]
951 e = index[iterrev]
949 chain.reverse()
950 base = iterrev
951
952
952 if iterrev == cachedrev:
953 if iterrev == cachedrev:
953 # cache hit
954 # cache hit
954 text = self._cache[2]
955 text = self._cache[2]
956 else:
957 chain.append(iterrev)
958 chain.reverse()
955
959
956 # drop cache to save memory
960 # drop cache to save memory
957 self._cache = None
961 self._cache = None
958
962
959 self._chunkraw(base, rev)
963 bins = self._chunks(chain)
960 if text is None:
964 if text is None:
961 text = str(self._chunkbase(base))
965 text = str(bins[0])
966 bins = bins[1:]
962
967
963 bins = self._chunks(chain)
964 text = mdiff.patches(text, bins)
968 text = mdiff.patches(text, bins)
965
969
966 text = self._checkhash(text, node, rev)
970 text = self._checkhash(text, node, rev)
General Comments 0
You need to be logged in to leave comments. Login now