[pypy-commit] pypy gc-minimark-pinning: fix more usages

fijal noreply at buildbot.pypy.org
Wed May 9 23:15:03 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc-minimark-pinning
Changeset: r54999:de5922dc19fa
Date: 2012-05-09 23:14 +0200
http://bitbucket.org/pypy/pypy/changeset/de5922dc19fa/

Log:	fix more usages

diff --git a/pypy/module/bz2/interp_bz2.py b/pypy/module/bz2/interp_bz2.py
--- a/pypy/module/bz2/interp_bz2.py
+++ b/pypy/module/bz2/interp_bz2.py
@@ -195,7 +195,7 @@
         self._allocate_chunk(initial_size)
 
     def _allocate_chunk(self, size):
-        self.raw_buf, self.gc_buf = rffi.alloc_buffer(size)
+        self.raw_buf, self.gc_buf, self.is_pinned = rffi.alloc_buffer(size)
         self.current_size = size
         self.bzs.c_next_out = self.raw_buf
         rffi.setintfield(self.bzs, 'c_avail_out', size)
@@ -204,7 +204,8 @@
         assert 0 <= chunksize <= self.current_size
         raw_buf = self.raw_buf
         gc_buf = self.gc_buf
-        s = rffi.str_from_buffer(raw_buf, gc_buf, self.current_size, chunksize)
+        s = rffi.str_from_buffer(raw_buf, gc_buf, self.current_size, chunksize,
+                                 self.is_pinned)
         rffi.keep_buffer_alive_until_here(raw_buf, gc_buf)
         self.current_size = 0
         return s
diff --git a/pypy/rlib/rsocket.py b/pypy/rlib/rsocket.py
--- a/pypy/rlib/rsocket.py
+++ b/pypy/rlib/rsocket.py
@@ -934,13 +934,10 @@
         if timeout == 1:
             raise SocketTimeout
         elif timeout == 0:
-            raw_buf, gc_buf = rffi.alloc_buffer(buffersize)
-            try:
-                read_bytes = _c.socketrecv(self.fd, raw_buf, buffersize, flags)
+            with rffi.scoped_alloc_buffer(buffersize) as buf:
+                read_bytes = _c.socketrecv(self.fd, buf.raw, buffersize, flags)
                 if read_bytes >= 0:
-                    return rffi.str_from_buffer(raw_buf, gc_buf, buffersize, read_bytes)
-            finally:
-                rffi.keep_buffer_alive_until_here(raw_buf, gc_buf)
+                    return buf.str(read_bytes)
         raise self.error_handler()
 
     def recvinto(self, rwbuffer, nbytes, flags=0):
@@ -956,11 +953,11 @@
         if timeout == 1:
             raise SocketTimeout
         elif timeout == 0:
-            raw_buf, gc_buf = rffi.alloc_buffer(buffersize)
-            try:
+            with rffi.scoped_alloc_buffer(buffersize) as buf:
                 address, addr_p, addrlen_p = self._addrbuf()
                 try:
-                    read_bytes = _c.recvfrom(self.fd, raw_buf, buffersize, flags,
+                    read_bytes = _c.recvfrom(self.fd, buf.raw,
+                                             buffersize, flags,
                                              addr_p, addrlen_p)
                     addrlen = rffi.cast(lltype.Signed, addrlen_p[0])
                 finally:
@@ -971,10 +968,7 @@
                         address.addrlen = addrlen
                     else:
                         address = None
-                    data = rffi.str_from_buffer(raw_buf, gc_buf, buffersize, read_bytes)
-                    return (data, address)
-            finally:
-                rffi.keep_buffer_alive_until_here(raw_buf, gc_buf)
+                    return (buf.str(read_bytes), address)
         raise self.error_handler()
 
     def recvfrom_into(self, rwbuffer, nbytes, flags=0):


More information about the pypy-commit mailing list