Show More
@@ -147,8 +147,11 b' class bundlerevlog(revlog.revlog):' | |||||
147 | iterrev = rev |
|
147 | iterrev = rev | |
148 | # reconstruct the revision if it is from a changegroup |
|
148 | # reconstruct the revision if it is from a changegroup | |
149 | while iterrev > self.repotiprev: |
|
149 | while iterrev > self.repotiprev: | |
150 | if self._revisioncache and self._revisioncache[1] == iterrev: |
|
150 | if ( | |
151 |
|
|
151 | self._inner._revisioncache | |
|
152 | and self._inner._revisioncache[1] == iterrev | |||
|
153 | ): | |||
|
154 | rawtext = self._inner._revisioncache[2] | |||
152 | break |
|
155 | break | |
153 | chain.append(iterrev) |
|
156 | chain.append(iterrev) | |
154 | iterrev = self.index[iterrev][3] |
|
157 | iterrev = self.index[iterrev][3] |
@@ -390,6 +390,8 b' class _InnerRevlog:' | |||||
390 |
|
390 | |||
391 | # revlog header -> revlog compressor |
|
391 | # revlog header -> revlog compressor | |
392 | self._decompressors = {} |
|
392 | self._decompressors = {} | |
|
393 | # 3-tuple of (node, rev, text) for a raw revision. | |||
|
394 | self._revisioncache = None | |||
393 |
|
395 | |||
394 | @property |
|
396 | @property | |
395 | def index_file(self): |
|
397 | def index_file(self): | |
@@ -1023,8 +1025,6 b' class revlog:' | |||||
1023 | self.delta_config = DeltaConfig() |
|
1025 | self.delta_config = DeltaConfig() | |
1024 | self.delta_config.upper_bound_comp = upperboundcomp |
|
1026 | self.delta_config.upper_bound_comp = upperboundcomp | |
1025 |
|
1027 | |||
1026 | # 3-tuple of (node, rev, text) for a raw revision. |
|
|||
1027 | self._revisioncache = None |
|
|||
1028 | # Maps rev to chain base rev. |
|
1028 | # Maps rev to chain base rev. | |
1029 | self._chainbasecache = util.lrucachedict(100) |
|
1029 | self._chainbasecache = util.lrucachedict(100) | |
1030 |
|
1030 | |||
@@ -1665,7 +1665,7 b' class revlog:' | |||||
1665 |
|
1665 | |||
1666 | def clearcaches(self): |
|
1666 | def clearcaches(self): | |
1667 | """Clear in-memory caches""" |
|
1667 | """Clear in-memory caches""" | |
1668 | self._revisioncache = None |
|
1668 | self._inner._revisioncache = None | |
1669 | self._chainbasecache.clear() |
|
1669 | self._chainbasecache.clear() | |
1670 | self._inner._segmentfile.clear_cache() |
|
1670 | self._inner._segmentfile.clear_cache() | |
1671 | self._inner._segmentfile_sidedata.clear_cache() |
|
1671 | self._inner._segmentfile_sidedata.clear_cache() | |
@@ -2571,7 +2571,7 b' class revlog:' | |||||
2571 | if validatehash: |
|
2571 | if validatehash: | |
2572 | self.checkhash(text, node, rev=rev) |
|
2572 | self.checkhash(text, node, rev=rev) | |
2573 | if not validated: |
|
2573 | if not validated: | |
2574 | self._revisioncache = (node, rev, rawtext) |
|
2574 | self._inner._revisioncache = (node, rev, rawtext) | |
2575 |
|
2575 | |||
2576 | return text |
|
2576 | return text | |
2577 |
|
2577 | |||
@@ -2588,21 +2588,21 b' class revlog:' | |||||
2588 |
|
2588 | |||
2589 | # Check if we have the entry in cache |
|
2589 | # Check if we have the entry in cache | |
2590 | # The cache entry looks like (node, rev, rawtext) |
|
2590 | # The cache entry looks like (node, rev, rawtext) | |
2591 | if self._revisioncache: |
|
2591 | if self._inner._revisioncache: | |
2592 | if self._revisioncache[0] == node: |
|
2592 | if self._inner._revisioncache[0] == node: | |
2593 | return (rev, self._revisioncache[2], True) |
|
2593 | return (rev, self._inner._revisioncache[2], True) | |
2594 | cachedrev = self._revisioncache[1] |
|
2594 | cachedrev = self._inner._revisioncache[1] | |
2595 |
|
2595 | |||
2596 | if rev is None: |
|
2596 | if rev is None: | |
2597 | rev = self.rev(node) |
|
2597 | rev = self.rev(node) | |
2598 |
|
2598 | |||
2599 | chain, stopped = self._inner._deltachain(rev, stoprev=cachedrev) |
|
2599 | chain, stopped = self._inner._deltachain(rev, stoprev=cachedrev) | |
2600 | if stopped: |
|
2600 | if stopped: | |
2601 | basetext = self._revisioncache[2] |
|
2601 | basetext = self._inner._revisioncache[2] | |
2602 |
|
2602 | |||
2603 | # drop cache to save memory, the caller is expected to |
|
2603 | # drop cache to save memory, the caller is expected to | |
2604 | # update self._revisioncache after validating the text |
|
2604 | # update self._inner._revisioncache after validating the text | |
2605 | self._revisioncache = None |
|
2605 | self._inner._revisioncache = None | |
2606 |
|
2606 | |||
2607 | targetsize = None |
|
2607 | targetsize = None | |
2608 | rawsize = self.index[rev][2] |
|
2608 | rawsize = self.index[rev][2] | |
@@ -2684,8 +2684,11 b' class revlog:' | |||||
2684 | # revision data is accessed. But this case should be rare and |
|
2684 | # revision data is accessed. But this case should be rare and | |
2685 | # it is extra work to teach the cache about the hash |
|
2685 | # it is extra work to teach the cache about the hash | |
2686 | # verification state. |
|
2686 | # verification state. | |
2687 | if self._revisioncache and self._revisioncache[0] == node: |
|
2687 | if ( | |
2688 |
self._revisioncache |
|
2688 | self._inner._revisioncache | |
|
2689 | and self._inner._revisioncache[0] == node | |||
|
2690 | ): | |||
|
2691 | self._inner._revisioncache = None | |||
2689 |
|
2692 | |||
2690 | revornode = rev |
|
2693 | revornode = rev | |
2691 | if revornode is None: |
|
2694 | if revornode is None: | |
@@ -3149,7 +3152,7 b' class revlog:' | |||||
3149 | rawtext = deltacomputer.buildtext(revinfo) |
|
3152 | rawtext = deltacomputer.buildtext(revinfo) | |
3150 |
|
3153 | |||
3151 | if type(rawtext) == bytes: # only accept immutable objects |
|
3154 | if type(rawtext) == bytes: # only accept immutable objects | |
3152 | self._revisioncache = (node, curr, rawtext) |
|
3155 | self._inner._revisioncache = (node, curr, rawtext) | |
3153 | self._chainbasecache[curr] = deltainfo.chainbase |
|
3156 | self._chainbasecache[curr] = deltainfo.chainbase | |
3154 | return curr |
|
3157 | return curr | |
3155 |
|
3158 | |||
@@ -3432,7 +3435,7 b' class revlog:' | |||||
3432 | self._docket.write(transaction, stripping=True) |
|
3435 | self._docket.write(transaction, stripping=True) | |
3433 |
|
3436 | |||
3434 | # then reset internal state in memory to forget those revisions |
|
3437 | # then reset internal state in memory to forget those revisions | |
3435 | self._revisioncache = None |
|
3438 | self._inner._revisioncache = None | |
3436 | self._chaininfocache = util.lrucachedict(500) |
|
3439 | self._chaininfocache = util.lrucachedict(500) | |
3437 | self._inner._segmentfile.clear_cache() |
|
3440 | self._inner._segmentfile.clear_cache() | |
3438 | self._inner._segmentfile_sidedata.clear_cache() |
|
3441 | self._inner._segmentfile_sidedata.clear_cache() |
General Comments 0
You need to be logged in to leave comments.
Login now