Author: Lukas Diekmann <lukas.diekm...@uni-duesseldorf.de>
Branch: set-strategies
Changeset: r49206:8592d5651c05
Date: 2011-10-10 11:10 +0200
http://bitbucket.org/pypy/pypy/changeset/8592d5651c05/

Log:    frozenset does not need to be copied

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -28,7 +28,6 @@
     def __init__(w_self, space, w_iterable=None):
         """Initialize the set by taking ownership of 'setdata'."""
         w_self.space = space #XXX less memory without this indirection?
-        #XXX in case of ObjectStrategy we can reuse the setdata object
         set_strategy_and_setdata(space, w_self, w_iterable)
 
     def __repr__(w_self):
@@ -314,10 +313,12 @@
         w_set.switch_to_empty_strategy()
 
     def copy(self, w_set):
-        #XXX do not copy FrozenDict
-        d = self.cast_from_void_star(w_set.sstorage)
         strategy = w_set.strategy
-        storage = self.cast_to_void_star(d.copy())
+        if isinstance(w_set, W_FrozensetObject):
+            storage = w_set.sstorage
+        else:
+            d = self.cast_from_void_star(w_set.sstorage)
+            storage = self.cast_to_void_star(d.copy())
         clone = w_set.from_storage_and_strategy(storage, strategy)
         return clone
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to