diff --git a/mercurial/revset.py b/mercurial/revset.py
index c38e5556d87b0bd3a0d3b3348530ca5b0e8204f6_bWVyY3VyaWFsL3JldnNldC5weQ==..ada89e5b5b0cbde0e646b0eed86813747a0d2db2_bWVyY3VyaWFsL3JldnNldC5weQ== 100644
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -571,7 +571,7 @@
         source = repo[r].extra().get('convert_revision', None)
         return source is not None and (rev is None or source.startswith(rev))
 
-    return baseset([r for r in subset if _matchvalue(r)])
+    return lazyset(subset, lambda r: _matchvalue(r))
 
 def date(repo, subset, x):
     """``date(interval)``