[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