[PATCH 3 of 3] branchmap: do not specify changelog as an argument

Augie Fackler raf at durin42.com
Tue Oct 23 10:51:25 EDT 2018


queued, very nice

> On Oct 23, 2018, at 08:43, Yuya Nishihara <yuya at tcha.org> wrote:
> 
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1540296673 -32400
> #      Tue Oct 23 21:11:13 2018 +0900
> # Node ID 9dbe2753c9eabb95eda4cb8be726dd5e29f4cc7a
> # Parent  759c7efd7c9132ce6dac5bbd9a37e70acb420d24
> branchmap: do not specify changelog as an argument
> 
> Since (unfiltered)repo.changelog lookup gets as fast as __dict__ lookup,
> there's no point to pass in changelog instance.
> 
>  $ hg perfbranchmap --clear-revbranch -R mozilla-central
>  ! base
>  (orig) wall 20.593091 comb 20.600000 user 20.520000 sys 0.080000 (best of 3)
>  (this) wall 20.129126 comb 20.130000 user 20.020000 sys 0.110000 (best of 3)
> 
> This backs out most of the changes in 76d4272bd57b and 47c03042cd1d.
> 
> diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py
> --- a/mercurial/branchmap.py
> +++ b/mercurial/branchmap.py
> @@ -281,7 +281,7 @@ class branchcache(dict):
>         newbranches = {}
>         getbranchinfo = repo.revbranchcache().branchinfo
>         for r in revgen:
> -            branch, closesbranch = getbranchinfo(r, changelog=cl)
> +            branch, closesbranch = getbranchinfo(r)
>             newbranches.setdefault(branch, []).append(r)
>             if closesbranch:
>                 self._closednodes.add(cl.node(r))
> @@ -407,10 +407,10 @@ class revbranchcache(object):
>         self._rbcrevslen = len(self._repo.changelog)
>         self._rbcrevs = bytearray(self._rbcrevslen * _rbcrecsize)
> 
> -    def branchinfo(self, rev, changelog=None):
> +    def branchinfo(self, rev):
>         """Return branch name and close flag for rev, using and updating
>         persistent cache."""
> -        changelog = changelog or self._repo.changelog
> +        changelog = self._repo.changelog
>         rbcrevidx = rev * _rbcrecsize
> 
>         # avoid negative index, changelog.read(nullrev) is fast without cache
> @@ -419,7 +419,7 @@ class revbranchcache(object):
> 
>         # if requested rev isn't allocated, grow and cache the rev info
>         if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
> -            return self._branchinfo(rev, changelog=changelog)
> +            return self._branchinfo(rev)
> 
>         # fast path: extract data from cache, use it if node is matching
>         reponode = changelog.node(rev)[:_rbcnodelen]
> @@ -447,11 +447,11 @@ class revbranchcache(object):
>             self._rbcrevslen = min(self._rbcrevslen, truncate)
> 
>         # fall back to slow path and make sure it will be written to disk
> -        return self._branchinfo(rev, changelog=changelog)
> +        return self._branchinfo(rev)
> 
> -    def _branchinfo(self, rev, changelog=None):
> +    def _branchinfo(self, rev):
>         """Retrieve branch info from changelog and update _rbcrevs"""
> -        changelog = changelog or self._repo.changelog
> +        changelog = self._repo.changelog
>         b, close = changelog.branchinfo(rev)
>         if b in self._namesreverse:
>             branchidx = self._namesreverse[b]
> @@ -462,7 +462,7 @@ class revbranchcache(object):
>         reponode = changelog.node(rev)
>         if close:
>             branchidx |= _rbccloseflag
> -        self._setcachedata(rev, reponode, branchidx, changelog)
> +        self._setcachedata(rev, reponode, branchidx)
>         return b, close
> 
>     def setdata(self, branch, rev, node, close):
> @@ -485,16 +485,14 @@ class revbranchcache(object):
>         if r'branchinfo' in vars(self):
>             del self.branchinfo
> 
> -    def _setcachedata(self, rev, node, branchidx, changelog=None):
> +    def _setcachedata(self, rev, node, branchidx):
>         """Writes the node's branch data to the in-memory cache data."""
>         if rev == nullrev:
>             return
> -
> -        changelog = changelog or self._repo.changelog
>         rbcrevidx = rev * _rbcrecsize
>         if len(self._rbcrevs) < rbcrevidx + _rbcrecsize:
>             self._rbcrevs.extend('\0' *
> -                                 (len(changelog) * _rbcrecsize -
> +                                 (len(self._repo.changelog) * _rbcrecsize -
>                                   len(self._rbcrevs)))
>         pack_into(_rbcrecfmt, self._rbcrevs, rbcrevidx, node, branchidx)
>         self._rbcrevslen = min(self._rbcrevslen, rev)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list