[pypy-commit] pypy default: merge heads

arigo noreply at buildbot.pypy.org
Sun Nov 11 10:09:32 CET 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r58825:3a1564fee4e4
Date: 2012-11-11 10:09 +0100
http://bitbucket.org/pypy/pypy/changeset/3a1564fee4e4/

Log:	merge heads

diff --git a/pypy/jit/backend/llsupport/llmodel.py b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -312,7 +312,7 @@
         ofs = arraydescr.lendescr.offset
         return rffi.cast(rffi.CArrayPtr(lltype.Signed), array)[ofs/WORD]
 
-    @specialize.argtype(2)
+    @specialize.argtype(1)
     def bh_getarrayitem_gc_i(self, gcref, itemindex, arraydescr):
         ofs, size, sign = self.unpack_arraydescr_size(arraydescr)
         # --- start of GC unsafe code (no GC operation!) ---
@@ -341,7 +341,7 @@
         # --- end of GC unsafe code ---
         return pval
 
-    @specialize.argtype(2)
+    @specialize.argtype(1)
     def bh_getarrayitem_gc_f(self, gcref, itemindex, arraydescr):
         ofs = self.unpack_arraydescr(arraydescr)
         # --- start of GC unsafe code (no GC operation!) ---
@@ -351,7 +351,7 @@
         # --- end of GC unsafe code ---
         return fval
 
-    @specialize.argtype(2)
+    @specialize.argtype(1)
     def bh_setarrayitem_gc_i(self, gcref, itemindex, newvalue, arraydescr):
         ofs, size, sign = self.unpack_arraydescr_size(arraydescr)
         # --- start of GC unsafe code (no GC operation!) ---
@@ -374,7 +374,7 @@
         items[itemindex] = self.cast_gcref_to_int(newvalue)
         # --- end of GC unsafe code ---
 
-    @specialize.argtype(2)
+    @specialize.argtype(1)
     def bh_setarrayitem_gc_f(self, gcref, itemindex, newvalue, arraydescr):
         ofs = self.unpack_arraydescr(arraydescr)
         # --- start of GC unsafe code (no GC operation!) ---
diff --git a/pypy/rlib/rgc.py b/pypy/rlib/rgc.py
--- a/pypy/rlib/rgc.py
+++ b/pypy/rlib/rgc.py
@@ -313,21 +313,21 @@
     return True
 has_gcflag_extra._subopnum = 1
 
-_gcflag_extras = []
+_gcflag_extras = set()
 
 def get_gcflag_extra(gcref):
     "NOT_RPYTHON"
     assert gcref   # not NULL!
-    return gcref in _gcflag_extras    # XXX slow
+    return gcref in _gcflag_extras
 get_gcflag_extra._subopnum = 2
 
 def toggle_gcflag_extra(gcref):
     "NOT_RPYTHON"
     assert gcref   # not NULL!
     try:
-        _gcflag_extras.remove(gcref)  # XXX slow
-    except ValueError:
-        _gcflag_extras.append(gcref)
+        _gcflag_extras.remove(gcref)
+    except KeyError:
+        _gcflag_extras.add(gcref)
 toggle_gcflag_extra._subopnum = 3
 
 def assert_no_more_gcflags():


More information about the pypy-commit mailing list