[pypy-commit] pypy py3k: Undo 5364600: dict.pop() was implemented independently in trunk.

amauryfa noreply at buildbot.pypy.org
Wed Jan 23 23:41:52 CET 2013


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r60408:05813142f683
Date: 2013-01-23 23:28 +0100
http://bitbucket.org/pypy/pypy/changeset/05813142f683/

Log:	Undo 5364600: dict.pop() was implemented independently in trunk.

diff --git a/rpython/annotator/unaryop.py b/rpython/annotator/unaryop.py
--- a/rpython/annotator/unaryop.py
+++ b/rpython/annotator/unaryop.py
@@ -398,7 +398,6 @@
         return dct.dictdef.read_value()
 
     method_setdefault = method_get
-    method_pop = method_get
 
     def method_copy(dct):
         return SomeDict(dct.dictdef)
diff --git a/rpython/rtyper/lltypesystem/rdict.py b/rpython/rtyper/lltypesystem/rdict.py
--- a/rpython/rtyper/lltypesystem/rdict.py
+++ b/rpython/rtyper/lltypesystem/rdict.py
@@ -274,13 +274,6 @@
         v_res = hop.gendirectcall(ll_setdefault, v_dict, v_key, v_default)
         return self.recast_value(hop.llops, v_res)
 
-    def rtype_method_pop(self, hop):
-        v_dict, v_key, v_default = hop.inputargs(self, self.key_repr,
-                                                 self.value_repr)
-        hop.exception_cannot_occur()
-        v_res = hop.gendirectcall(ll_dict_pop, v_dict, v_key, v_default)
-        return self.recast_value(hop.llops, v_res)
-
     def rtype_method_copy(self, hop):
         v_dict, = hop.inputargs(self)
         hop.exception_cannot_occur()
@@ -518,15 +511,6 @@
         raise KeyError
     _ll_dict_del(d, i)
 
-def ll_dict_pop(d, key, default):
-    i = ll_dict_lookup(d, key, d.keyhash(key))
-    if not i & HIGHEST_BIT:
-        value = ll_get_value(d, i)
-        _ll_dict_del(d, i)
-        return value
-    else:
-        return default
-
 @jit.look_inside_iff(lambda d, i: jit.isvirtual(d) and jit.isconstant(i))
 def _ll_dict_del(d, i):
     d.entries.mark_deleted(i)
diff --git a/rpython/rtyper/ootypesystem/rdict.py b/rpython/rtyper/ootypesystem/rdict.py
--- a/rpython/rtyper/ootypesystem/rdict.py
+++ b/rpython/rtyper/ootypesystem/rdict.py
@@ -100,13 +100,6 @@
         v_res = hop.gendirectcall(ll_dict_setdefault, v_dict, v_key, v_default)
         return self.recast_value(hop.llops, v_res)
 
-    def rtype_method_pop(self, hop):
-        v_dict, v_key, v_default = hop.inputargs(self, self.key_repr,
-                                                 self.value_repr)
-        hop.exception_cannot_occur()
-        v_res = hop.gendirectcall(ll_dict_pop, v_dict, v_key, v_default)
-        return self.recast_value(hop.llops, v_res)
-
     def rtype_method_copy(self, hop):
         v_dict, = hop.inputargs(self)
         cDICT = hop.inputconst(ootype.Void, self.lowleveltype)
@@ -346,14 +339,6 @@
         d.ll_set(key, default)
         return default
 
-def ll_dict_pop(d, key, default):
-    if d.ll_contains(key):
-        value = d.ll_get(key)
-        d.ll_remove(key)
-        return value
-    else:
-        return default
-
 def _make_ll_keys_values_items(kind):
     def ll_dict_kvi(LIST, d):
         length = d.ll_length()
diff --git a/rpython/rtyper/test/test_rdict.py b/rpython/rtyper/test/test_rdict.py
--- a/rpython/rtyper/test/test_rdict.py
+++ b/rpython/rtyper/test/test_rdict.py
@@ -181,16 +181,6 @@
         res = self.interpret(func, ())
         assert res == 422
 
-    def test_dict_pop(self):
-        def func():
-            dic = {}
-            x1 = dic.pop('hi', 42)
-            dic['blah'] = 1
-            x2 = dic.pop('blah', 2)
-            return len(dic) * 100 + x1 * 10 + x2
-        res = self.interpret(func, ())
-        assert res == 421
-
     def test_dict_setdefault(self):
         def f():
             d = {}


More information about the pypy-commit mailing list