##// END OF EJS Templates
revbranchcache: populate cache incrementally...
Durham Goode -
r24376:203a078d default
parent child Browse files
Show More
@@ -367,11 +367,8 b' class revbranchcache(object):'
367
367
368 # if requested rev is missing, add and populate all missing revs
368 # if requested rev is missing, add and populate all missing revs
369 if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
369 if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
370 first = len(self._rbcrevs) // _rbcrecsize
371 self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize -
370 self._rbcrevs.extend('\0' * (len(changelog) * _rbcrecsize -
372 len(self._rbcrevs)))
371 len(self._rbcrevs)))
373 for r in xrange(first, len(changelog)):
374 self._branchinfo(r)
375
372
376 # fast path: extract data from cache, use it if node is matching
373 # fast path: extract data from cache, use it if node is matching
377 reponode = changelog.node(rev)[:_rbcnodelen]
374 reponode = changelog.node(rev)[:_rbcnodelen]
@@ -380,10 +377,17 b' class revbranchcache(object):'
380 close = bool(branchidx & _rbccloseflag)
377 close = bool(branchidx & _rbccloseflag)
381 if close:
378 if close:
382 branchidx &= _rbcbranchidxmask
379 branchidx &= _rbcbranchidxmask
383 if cachenode == reponode:
380 if cachenode == '\0\0\0\0':
381 pass
382 elif cachenode == reponode:
384 return self._names[branchidx], close
383 return self._names[branchidx], close
384 else:
385 # rev/node map has changed, invalidate the cache from here up
386 truncate = rbcrevidx + _rbcrecsize
387 del self._rbcrevs[truncate:]
388 self._rbcrevslen = min(self._rbcrevslen, truncate)
389
385 # fall back to slow path and make sure it will be written to disk
390 # fall back to slow path and make sure it will be written to disk
386 self._rbcrevslen = min(self._rbcrevslen, rev)
387 return self._branchinfo(rev)
391 return self._branchinfo(rev)
388
392
389 def _branchinfo(self, rev):
393 def _branchinfo(self, rev):
@@ -408,6 +412,7 b' class revbranchcache(object):'
408 rec = array('c')
412 rec = array('c')
409 rec.fromstring(pack(_rbcrecfmt, node, branchidx))
413 rec.fromstring(pack(_rbcrecfmt, node, branchidx))
410 self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec
414 self._rbcrevs[rbcrevidx:rbcrevidx + _rbcrecsize] = rec
415 self._rbcrevslen = min(self._rbcrevslen, rev)
411
416
412 def write(self):
417 def write(self):
413 """Save branch cache if it is dirty."""
418 """Save branch cache if it is dirty."""
General Comments 0
You need to be logged in to leave comments. Login now