diff --git a/mercurial/revset.py b/mercurial/revset.py
index ada89e5b5b0cbde0e646b0eed86813747a0d2db2_bWVyY3VyaWFsL3JldnNldC5weQ==..a5d7081a4c3457bd2e64ceff0d19657fffa58ee9_bWVyY3VyaWFsL3JldnNldC5weQ== 100644
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -708,7 +708,7 @@
         extra = repo[r].extra()
         return label in extra and (value is None or matcher(extra[label]))
 
-    return baseset([r for r in subset if _matchvalue(r)])
+    return lazyset(subset, lambda r: _matchvalue(r))
 
 def filelog(repo, subset, x):
     """``filelog(pattern)``