##// END OF EJS Templates
smartset: split generatorset classes to avoid cycle...
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
Gregory Szorc -
r35517:12a46ad6 default
Show More
Name Size Modified Last Commit Author
/ tests / bundles
darcs1.hg Loading ...
hgweb+obs.hg Loading ...
issue4041.hg Loading ...
issue4438-r1.hg Loading ...
issue4438-r2.hg Loading ...
legacy-encoding.hg Loading ...
rebase-revset.hg Loading ...
rebase.hg Loading ...
rebase.sh Loading ...
remote.hg Loading ...
remote.sh Loading ...
rename.sh Loading ...
renames.hg Loading ...
tampered.hg Loading ...
test-invalid-branch-name.hg Loading ...
test-keyword.hg Loading ...
test-manifest.hg Loading ...
test-merge-symlinks.hg Loading ...
test-no-symlinks.hg Loading ...