[pypy-commit] pypy default: Add space.newset(), similar to space.newdict() and tons of others.
arigo
noreply at buildbot.pypy.org
Sat Jun 25 18:08:31 CEST 2011
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r45117:8fd5eac4e205
Date: 2011-06-25 18:13 +0200
http://bitbucket.org/pypy/pypy/changeset/8fd5eac4e205/
Log: Add space.newset(), similar to space.newdict() and tons of others.
diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -1091,12 +1091,10 @@
@jit.unroll_safe
def BUILD_SET(self, itemcount, next_instr):
- w_set = self.space.call_function(self.space.w_set)
- if itemcount:
- w_add = self.space.getattr(w_set, self.space.wrap("add"))
- for i in range(itemcount):
- w_item = self.popvalue()
- self.space.call_function(w_add, w_item)
+ w_set = self.space.newset()
+ for i in range(itemcount):
+ w_item = self.popvalue()
+ self.space.call_method(w_set, 'add', w_item)
self.pushvalue(w_set)
def STORE_MAP(self, oparg, next_instr):
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -311,6 +311,10 @@
classofinstance=classofinstance,
strdict=strdict)
+ def newset(self):
+ from pypy.objspace.std.setobject import newset
+ return W_SetObject(self, newset(self))
+
def newslice(self, w_start, w_end, w_step):
return W_SliceObject(w_start, w_end, w_step)
diff --git a/pypy/objspace/std/test/test_setobject.py b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -50,6 +50,10 @@
u = self.space.wrap(set('simsalabim'))
assert self.space.eq_w(s,u)
+ def test_space_newset(self):
+ s = self.space.newset()
+ assert self.space.str_w(self.space.repr(s)) == 'set([])'
+
class AppTestAppSetTest:
def test_subtype(self):
class subset(set):pass
More information about the pypy-commit
mailing list