Author: Antonio Cuni <[email protected]>
Branch: identity-dict-strategy
Changeset: r45774:e7d4a83227a4
Date: 2011-07-20 12:33 +0200
http://bitbucket.org/pypy/pypy/changeset/e7d4a83227a4/

Log:    store the dict as a tuple (version, d)

diff --git a/pypy/objspace/std/dictmultiobject.py 
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -3,6 +3,7 @@
 from pypy.objspace.std.model import registerimplementation, W_Object
 from pypy.objspace.std.register_all import register_all
 from pypy.objspace.std.settype import set_typedef as settypedef
+from pypy.objspace.std import identitydict
 from pypy.interpreter import gateway
 from pypy.interpreter.argument import Signature
 from pypy.interpreter.error import OperationError, operationerrfmt
@@ -423,9 +424,9 @@
     semantics.
     """
 
-    erase, unerase = rerased.new_erasing_pair("identitydict")
-    erase = staticmethod(erase)
-    unerase = staticmethod(unerase)
+    _erase_tuple, _unerase_tuple = rerased.new_erasing_pair("identitydict")
+    _erase_tuple = staticmethod(_erase_tuple)
+    _unerase_tuple = staticmethod(_unerase_tuple)
 
     def wrap(self, unwrapped):
         return unwrapped
@@ -433,13 +434,25 @@
     def unwrap(self, wrapped):
         return wrapped
 
+    def erase(self, d):
+        current_version = identitydict.get_global_version(self.space)
+        return self._erase_tuple((current_version, d))
+
+    def unerase(self, dstorage):
+        version, d = self._unerase_tuple(dstorage)
+        return d
+
+    def get_current_version(self, dstorage):
+        version, d = self._unerase_tuple(dstorage)
+        return version
+
+    def get_empty_storage(self):
+        return self.erase({})
+
     def is_correct_type(self, w_obj):
         w_type = self.space.type(w_obj)
         return w_type.compares_by_identity()
 
-    def get_empty_storage(self):
-        return self.erase({})
-
     def _never_equal_to(self, w_lookup_type):
         return False
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to