[pypy-svn] pypy refactor-rerase: (cfbolz, arigo)

arigo commits-noreply at bitbucket.org
Fri Feb 25 15:51:13 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: refactor-rerase
Changeset: r42285:5e61e66be07a
Date: 2011-02-25 15:49 +0100
http://bitbucket.org/pypy/pypy/changeset/5e61e66be07a/

Log:	(cfbolz, arigo)

	Use the new interface.

diff --git a/pypy/objspace/std/mapdict.py b/pypy/objspace/std/mapdict.py
--- a/pypy/objspace/std/mapdict.py
+++ b/pypy/objspace/std/mapdict.py
@@ -1,6 +1,7 @@
 import weakref
 from pypy.rlib import jit, objectmodel, debug
 from pypy.rlib.rarithmetic import intmask, r_uint
+from pypy.rlib import rerased
 
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.objspace.std.dictmultiobject import W_DictMultiObject
@@ -490,8 +491,11 @@
 memo_get_subclass_of_correct_size._annspecialcase_ = "specialize:memo"
 _subclass_cache = {}
 
+erase_item, unerase_item = rerased.new_erasing_pair("mapdict storage item")
+erase_list, unerase_list = rerased.new_erasing_pair("mapdict storage list")
+
 def _make_subclass_size_n(supercls, n):
-    from pypy.rlib import unroll, rerased
+    from pypy.rlib import unroll
     rangen = unroll.unrolling_iterable(range(n))
     nmin1 = n - 1
     rangenmin1 = unroll.unrolling_iterable(range(nmin1))
@@ -499,7 +503,7 @@
         def _init_empty(self, map):
             from pypy.rlib.debug import make_sure_not_resized
             for i in rangen:
-                setattr(self, "_value%s" % i, rerased.erase(None))
+                setattr(self, "_value%s" % i, erase_item(None))
             self.map = map
 
         def _has_storage_list(self):
@@ -507,7 +511,7 @@
 
         def _mapdict_get_storage_list(self):
             erased = getattr(self, "_value%s" % nmin1)
-            return rerased.unerase_fixedsizelist(erased, W_Root)
+            return unerase_list(erased)
 
         def _mapdict_read_storage(self, index):
             assert index >= 0
@@ -515,14 +519,14 @@
                 for i in rangenmin1:
                     if index == i:
                         erased = getattr(self, "_value%s" % i)
-                        return rerased.unerase(erased, W_Root)
+                        return unerase_item(erased)
             if self._has_storage_list():
                 return self._mapdict_get_storage_list()[index - nmin1]
             erased = getattr(self, "_value%s" % nmin1)
-            return rerased.unerase(erased, W_Root)
+            return unerase_item(erased)
 
         def _mapdict_write_storage(self, index, value):
-            erased = rerased.erase(value)
+            erased = erase_item(value)
             for i in rangenmin1:
                 if index == i:
                     setattr(self, "_value%s" % i, erased)
@@ -542,27 +546,27 @@
             len_storage = len(storage)
             for i in rangenmin1:
                 if i < len_storage:
-                    erased = rerased.erase(storage[i])
+                    erased = erase_item(storage[i])
                 else:
-                    erased = rerased.erase(None)
+                    erased = erase_item(None)
                 setattr(self, "_value%s" % i, erased)
             has_storage_list = self._has_storage_list()
             if len_storage < n:
                 assert not has_storage_list
-                erased = rerased.erase(None)
+                erased = erase_item(None)
             elif len_storage == n:
                 assert not has_storage_list
-                erased = rerased.erase(storage[nmin1])
+                erased = erase_item(storage[nmin1])
             elif not has_storage_list:
                 # storage is longer than self.map.length() only due to
                 # overallocation
-                erased = rerased.erase(storage[nmin1])
+                erased = erase_item(storage[nmin1])
                 # in theory, we should be ultra-paranoid and check all entries,
                 # but checking just one should catch most problems anyway:
                 assert storage[n] is None
             else:
                 storage_list = storage[nmin1:]
-                erased = rerased.erase_fixedsizelist(storage_list, W_Root)
+                erased = erase_list(storage_list)
             setattr(self, "_value%s" % nmin1, erased)
 
     subcls.__name__ = supercls.__name__ + "Size%s" % n

diff --git a/pypy/objspace/std/test/test_mapdict.py b/pypy/objspace/std/test/test_mapdict.py
--- a/pypy/objspace/std/test/test_mapdict.py
+++ b/pypy/objspace/std/test/test_mapdict.py
@@ -366,7 +366,6 @@
 
 def test_specialized_class():
     from pypy.objspace.std.objectobject import W_ObjectObject
-    from pypy.rlib import rerased
     classes = memo_get_subclass_of_correct_size(space, W_ObjectObject)
     w1 = W_Root()
     w2 = W_Root()
@@ -379,12 +378,12 @@
         obj = objectcls()
         obj.user_setup(space, cls)
         obj.setdictvalue(space, "a", w1)
-        assert rerased.unerase(obj._value0, W_Root) is w1
+        assert unerase_item(obj._value0) is w1
         assert obj.getdictvalue(space, "a") is w1
         assert obj.getdictvalue(space, "b") is None
         assert obj.getdictvalue(space, "c") is None
         obj.setdictvalue(space, "a", w2)
-        assert rerased.unerase(obj._value0, W_Root) is w2
+        assert unerase_item(obj._value0) is w2
         assert obj.getdictvalue(space, "a") == w2
         assert obj.getdictvalue(space, "b") is None
         assert obj.getdictvalue(space, "c") is None
@@ -402,7 +401,7 @@
 
         res = obj.deldictvalue(space, "a")
         assert res
-        assert rerased.unerase(obj._value0, W_Root) is w4
+        assert unerase_item(obj._value0) is w4
         assert obj.getdictvalue(space, "a") is None
         assert obj.getdictvalue(space, "b") is w4
         assert obj.getdictvalue(space, "c") is None


More information about the Pypy-commit mailing list