[pypy-commit] pypy remove-dict-smm: Remove dict.setdefault SMM.

Manuel Jacob noreply at buildbot.pypy.org
Tue May 14 17:20:47 CEST 2013


Author: Manuel Jacob
Branch: remove-dict-smm
Changeset: r64083:41bfd843576c
Date: 2013-05-14 17:03 +0200
http://bitbucket.org/pypy/pypy/changeset/41bfd843576c/

Log:	Remove dict.setdefault SMM.

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
@@ -200,8 +200,10 @@
                                  space.wrap("popitem(): dictionary is empty"))
         return space.newtuple([w_key, w_value])
 
-#    def descr_setdefault(self, space):
-#        """"""
+    @gateway.unwrap_spec(w_default=gateway.WrappedDefault(None))
+    def descr_setdefault(self, space, w_key, w_default):
+        """D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D"""
+        return self.setdefault(w_key, w_default)
 
 #    def descr_update(self, space):
 #        """"""
@@ -995,9 +997,6 @@
         w_res = space.lt(w_leftval, w_rightval)
     return w_res
 
-def dict_setdefault__DictMulti_ANY_ANY(space, w_dict, w_key, w_default):
-    return w_dict.setdefault(w_key, w_default)
-
 
 # ____________________________________________________________
 # Iteration
@@ -1252,7 +1251,7 @@
     get = gateway.interp2app(W_DictMultiObject.descr_get),
     pop = gateway.interp2app(W_DictMultiObject.descr_pop),
     popitem = gateway.interp2app(W_DictMultiObject.descr_popitem),
-    #setdefault = gateway.interp2app(W_DictMultiObject.descr_setdefault),
+    setdefault = gateway.interp2app(W_DictMultiObject.descr_setdefault),
     #update = gateway.interp2app(W_DictMultiObject.descr_update),
     #reversed = gateway.interp2app(W_DictMultiObject.descr_reversed),
     )


More information about the pypy-commit mailing list