diff --git a/contrib/perf.py b/contrib/perf.py
--- a/contrib/perf.py
+++ b/contrib/perf.py
@@ -566,7 +566,7 @@ def perfmanifest(ui, repo, rev, **opts):
     ctx = scmutil.revsingle(repo, rev, rev)
     t = ctx.manifestnode()
     def d():
-        repo.manifest.clearcaches()
+        repo.manifestlog.clearcaches()
         repo.manifestlog[t].read()
     timer(d)
     fm.end()
diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1322,6 +1322,10 @@ class manifestlog(object):
             mancache[node] = m
         return m
 
+    def clearcaches(self):
+        self._dirmancache.clear()
+        self._revlog.clearcaches()
+
 class memmanifestctx(object):
     def __init__(self, repo):
         self._repo = repo
@@ -1593,7 +1597,3 @@ class manifest(manifestrevlog):
             self._dirlogcache[dir] = manifest(self.opener, dir,
                                               self._dirlogcache)
         return self._dirlogcache[dir]
-
-    def clearcaches(self):
-        super(manifest, self).clearcaches()
-        self._mancache.clear()