Mercurial > hg
annotate .arcconfig @ 35501:12a46ad67a3c
smartset: split generatorset classes to avoid cycle
I uncovered a cycle manifesting in a memory leak by running
`hgperfrevset '::tip'`. The cycle was due to generatorset.__init__
assigning a bound method to self.__contains__. Internet sleuthing
revealed that assigning a bound method to an instance attribute
always creates a cycle.
This commit creates two new variants of generatorset for the special
cases of ascending and descending generators. The special
implementations of __contains__ have been extracted to these classes
where they are defined as __contains__.
generatorset now implements __new__ and changes the spawned type to
one of the new classes if needed.
Differential Revision: https://phab.mercurial-scm.org/D1780
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 27 Dec 2017 11:08:32 -0700 |
parents | b2c27d84f05c |
children | ff396501e841 |
rev | line source |
---|---|
33583
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
1 { |
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
2 "conduit_uri": "https://phab.mercurial-scm.org/api", |
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
3 "repository.callsign": "HG", |
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
4 "arc.land.onto.default": "@", |
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
5 "base": "hg:.^" |
b2c27d84f05c
phabricator: include the suggested arc config in the repo
Alex Gaynor <agaynor@mozilla.com>
parents:
diff
changeset
|
6 } |