From patchwork Wed Apr 8 13:09:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: changelog: inline revlog.__contains__ in case it is used in hot loop From: Yuya Nishihara X-Patchwork-Id: 8561 Message-Id: <8931fb2127b03c349947.1428498598@mimosa> To: mercurial-devel@selenic.com Cc: Pierre-Yves David Date: Wed, 08 Apr 2015 22:09:58 +0900 # HG changeset patch # User Yuya Nishihara # Date 1428154259 -32400 # Sat Apr 04 22:30:59 2015 +0900 # Node ID 8931fb2127b03c349947c25997841dd6cd8e519a # Parent b9a2b5018024213aeacd235426740152991066e1 changelog: inline revlog.__contains__ in case it is used in hot loop Currently __contains__ is called only by "rev()" revset, but "x in cl" is a function that is likely to be used in hot loop. revlog.__contains__ is simple enough to duplicate to changelog, so just inline it. diff --git a/mercurial/changelog.py b/mercurial/changelog.py --- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -145,7 +145,7 @@ class changelog(revlog.revlog): def __contains__(self, rev): """filtered version of revlog.__contains__""" - return (revlog.revlog.__contains__(self, rev) + return (0 <= rev < len(self) and rev not in self.filteredrevs) def __iter__(self):