[pypy-commit] pypy use-file-star-for-file: don't release gil for getc/ungetc

bdkearns noreply at buildbot.pypy.org
Wed Sep 17 01:30:44 CEST 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73567:9e9dbf9b29af
Date: 2014-09-16 16:17 -0400
http://bitbucket.org/pypy/pypy/changeset/9e9dbf9b29af/

Log:	don't release gil for getc/ungetc

diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -87,20 +87,19 @@
 _fclose2 = (c_fclose, c_fclose_nogil)
 _pclose2 = (c_pclose, c_pclose_nogil)
 
-c_flockfile = llexternal('flockfile', [FILEP], lltype.Void)
-c_funlockfile = llexternal('funlockfile', [FILEP], lltype.Void)
-
-c_getc = llexternal('getc', [FILEP], rffi.INT)
-c_getc_unlocked = llexternal('getc_unlocked', [FILEP], rffi.INT)
-c_ungetc = llexternal('ungetc', [rffi.INT, FILEP], rffi.INT)
+c_getc = llexternal('getc', [FILEP], rffi.INT, releasegil=False)
+c_ungetc = llexternal('ungetc', [rffi.INT, FILEP], rffi.INT, releasegil=False)
 
 if MS_WINDOWS:
+    USE_FGETS_IN_GETLINE = True
     c_flockfile = lambda ll_file: None
     c_funlockfile = lambda ll_file: None
-    c_getc_unlocked = c_getc
-    USE_FGETS_IN_GETLINE = True
+    c_getc_unlocked = llexternal('getc', [FILEP], rffi.INT)
 else:
     USE_FGETS_IN_GETLINE = False
+    c_flockfile = llexternal('flockfile', [FILEP], lltype.Void)
+    c_funlockfile = llexternal('funlockfile', [FILEP], lltype.Void)
+    c_getc_unlocked = llexternal('getc_unlocked', [FILEP], rffi.INT)
 
 c_fgets = llexternal('fgets', [rffi.CCHARP, rffi.INT, FILEP], rffi.CCHARP)
 c_fread = llexternal('fread', [rffi.CCHARP, rffi.SIZE_T, rffi.SIZE_T, FILEP],


More information about the pypy-commit mailing list