diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
index fd78276948b486d50e1ba8c36c843aaf0780b6a0_bWVyY3VyaWFsL2RpcnN0YXRlLnB5..0217f75b6e59cc098f99b6238ea50e121bcefd42_bWVyY3VyaWFsL2RpcnN0YXRlLnB5 100644
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -593,8 +593,7 @@
         return path
 
     def clear(self):
-        self._map = dirstatemap(self._ui, self._opener, self._root)
-        self._map.setparents(nullid, nullid)
+        self._map.clear()
         self._lastnormaltime = 0
         self._updatedfiles.clear()
         self._dirty = True
@@ -1210,6 +1209,11 @@
         # for consistent view between _pl() and _read() invocations
         self._pendingmode = None
 
+    def clear(self):
+        self._map = {}
+        self.copymap = {}
+        self.setparents(nullid, nullid)
+
     def iteritems(self):
         return self._map.iteritems()