[pypy-commit] pypy remove-dict-smm: Remove dict from multi-method table.

Manuel Jacob noreply at buildbot.pypy.org
Wed May 15 21:14:48 CEST 2013


Author: Manuel Jacob
Branch: remove-dict-smm
Changeset: r64200:fb15279ae6e2
Date: 2013-05-15 21:12 +0200
http://bitbucket.org/pypy/pypy/changeset/fb15279ae6e2/

Log:	Remove dict from multi-method table.

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
@@ -1,8 +1,8 @@
 from pypy.interpreter import gateway
+from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError, operationerrfmt
 from pypy.interpreter.mixedmodule import MixedModule
 from pypy.interpreter.signature import Signature
-from pypy.objspace.std.model import registerimplementation, W_Object
 from pypy.objspace.std.stdtypedef import StdTypeDef
 
 from rpython.rlib import rerased, jit
@@ -40,7 +40,7 @@
                                     w_dct.length() <= UNROLL_CUTOFF)
 
 
-class W_DictMultiObject(W_Object):
+class W_DictMultiObject(W_Root):
     @staticmethod
     def allocate_and_init_instance(space, w_type=None, module=False,
                                    instance=False, strdict=False, kwargs=False):
@@ -414,9 +414,6 @@
     setdefault = gateway.interp2app(W_DictMultiObject.descr_setdefault),
     update = gateway.interp2app(W_DictMultiObject.descr_update),
     )
-dict_typedef = W_DictMultiObject.typedef
-
-registerimplementation(W_DictMultiObject)
 
 
 class DictStrategy(object):
@@ -1106,7 +1103,7 @@
 # ____________________________________________________________
 # Iteration
 
-class W_BaseDictMultiIterObject(W_Object):
+class W_BaseDictMultiIterObject(W_Root):
     _immutable_fields_ = ["iteratorimplementation"]
 
     ignore_for_isinstance_cache = True
@@ -1203,10 +1200,6 @@
             return space.newtuple([w_key, w_value])
         raise OperationError(space.w_StopIteration, space.w_None)
 
-registerimplementation(W_DictMultiIterKeysObject)
-registerimplementation(W_DictMultiIterValuesObject)
-registerimplementation(W_DictMultiIterItemsObject)
-
 W_DictMultiIterItemsObject.typedef = StdTypeDef(
     "dict_iteritems",
     __iter__ = gateway.interp2app(W_DictMultiIterItemsObject.descr_iter),
@@ -1229,7 +1222,7 @@
 # ____________________________________________________________
 # Views
 
-class W_DictViewObject(W_Object):
+class W_DictViewObject(W_Root):
     def __init__(w_self, space, w_dict):
         w_self.w_dict = w_dict
 
@@ -1276,17 +1269,14 @@
 class W_DictViewItemsObject(W_DictViewObject):
     def descr_iter(self, space):
         return W_DictMultiIterItemsObject(space, self.w_dict.iteritems())
-registerimplementation(W_DictViewItemsObject)
 
 class W_DictViewKeysObject(W_DictViewObject):
     def descr_iter(self, space):
         return W_DictMultiIterKeysObject(space, self.w_dict.iterkeys())
-registerimplementation(W_DictViewKeysObject)
 
 class W_DictViewValuesObject(W_DictViewObject):
     def descr_iter(self, space):
         return W_DictMultiIterValuesObject(space, self.w_dict.itervalues())
-registerimplementation(W_DictViewValuesObject)
 
 W_DictViewItemsObject.typedef = StdTypeDef(
     "dict_items",
diff --git a/pypy/objspace/std/model.py b/pypy/objspace/std/model.py
--- a/pypy/objspace/std/model.py
+++ b/pypy/objspace/std/model.py
@@ -40,7 +40,6 @@
             from pypy.objspace.std.complextype  import complex_typedef
             from pypy.objspace.std.tupletype  import tuple_typedef
             from pypy.objspace.std.listobject   import list_typedef
-            from pypy.objspace.std.dictmultiobject   import dict_typedef
             from pypy.objspace.std.basestringtype import basestring_typedef
             from pypy.objspace.std.stringtype import str_typedef
             from pypy.objspace.std.bytearraytype import bytearray_typedef
@@ -81,6 +80,7 @@
 
         # not-multimethod based types
 
+        self.pythontypes.append(dictmultiobject.W_DictMultiObject.typedef)
         self.pythontypes.append(setobject.W_SetObject.typedef)
         self.pythontypes.append(setobject.W_FrozensetObject.typedef)
 
@@ -92,10 +92,6 @@
             floatobject.W_FloatObject: [],
             tupleobject.W_TupleObject: [],
             listobject.W_ListObject: [],
-            dictmultiobject.W_DictMultiObject: [],
-            dictmultiobject.W_DictMultiIterKeysObject: [],
-            dictmultiobject.W_DictMultiIterValuesObject: [],
-            dictmultiobject.W_DictMultiIterItemsObject: [],
             stringobject.W_StringObject: [],
             bytearrayobject.W_BytearrayObject: [],
             typeobject.W_TypeObject: [],
@@ -108,9 +104,6 @@
             iterobject.W_FastTupleIterObject: [],
             iterobject.W_ReverseSeqIterObject: [],
             unicodeobject.W_UnicodeObject: [],
-            dictmultiobject.W_DictViewKeysObject: [],
-            dictmultiobject.W_DictViewItemsObject: [],
-            dictmultiobject.W_DictViewValuesObject: [],
             pypy.interpreter.pycode.PyCode: [],
             pypy.interpreter.special.Ellipsis: [],
             }


More information about the pypy-commit mailing list