Author: Armin Rigo <[email protected]>
Branch: fast-gil
Changeset: r72186:1c5642278f0f
Date: 2014-06-24 12:13 +0200
http://bitbucket.org/pypy/pypy/changeset/1c5642278f0f/
Log: translation fixes
diff --git a/rpython/rlib/rgil.py b/rpython/rlib/rgil.py
--- a/rpython/rlib/rgil.py
+++ b/rpython/rlib/rgil.py
@@ -1,6 +1,7 @@
import py
from rpython.conftest import cdir
from rpython.translator.tool.cbuild import ExternalCompilationInfo
+from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
# these functions manipulate directly the GIL, whose definition does not
# escape the C code itself
@@ -13,6 +14,8 @@
export_symbols = ['RPyGilYieldThread', 'RPyGilRelease',
'RPyGilAcquire', 'RPyFetchFastGil'])
+llexternal = rffi.llexternal
+
gil_yield_thread = llexternal('RPyGilYieldThread', [], lltype.Void,
_nowrapper=True, sandboxsafe=True,
diff --git a/rpython/translator/c/src/thread.h
b/rpython/translator/c/src/thread.h
--- a/rpython/translator/c/src/thread.h
+++ b/rpython/translator/c/src/thread.h
@@ -28,13 +28,19 @@
void RPyGilYieldThread(void);
void RPyGilAcquire(void);
-extern Signed rpy_fastgil;
+#ifdef PYPY_USE_ASMGCC
+# define RPY_FASTGIL_LOCKED(x) (x == 1)
+#else
+# define RPY_FASTGIL_LOCKED(x) (x != 0)
+#endif
+
+extern long rpy_fastgil;
static inline void RPyGilRelease(void) {
- assert(RPY_FASTGIL_HELD(rpy_fastgil));
+ assert(RPY_FASTGIL_LOCKED(rpy_fastgil));
rpy_fastgil = 0;
}
-static inline Signed *RPyFetchFastGil(void) {
+static inline long *RPyFetchFastGil(void) {
return &rpy_fastgil;
}
diff --git a/rpython/translator/c/src/thread_pthread.c
b/rpython/translator/c/src/thread_pthread.c
--- a/rpython/translator/c/src/thread_pthread.c
+++ b/rpython/translator/c/src/thread_pthread.c
@@ -519,13 +519,7 @@
value of 'rpy_fastgil' to 1.
*/
-#ifdef PYPY_USE_ASMGCC
-# define RPY_FASTGIL_LOCKED(x) (x == 1)
-#else
-# define RPY_FASTGIL_LOCKED(x) (x != 0)
-#endif
-
-Signed rpy_fastgil = 1;
+long rpy_fastgil = 1;
static pthread_mutex_t mutex_gil_stealer;
static pthread_mutex_t mutex_gil;
static pthread_once_t mutex_gil_once = PTHREAD_ONCE_INIT;
@@ -558,7 +552,7 @@
{
/* Acquires the GIL. Note: this function saves and restores 'errno'.
*/
- Signed old_fastgil = __sync_lock_test_and_set(&rpy_fastgil, 1);
+ long old_fastgil = __sync_lock_test_and_set(&rpy_fastgil, 1);
if (!RPY_FASTGIL_LOCKED(old_fastgil)) {
/* The fastgil was not previously locked: success.
@@ -606,7 +600,6 @@
if (!RPY_FASTGIL_LOCKED(old_fastgil))
/* yes, got a non-held value! Now we hold it. */
break;
- }
}
/* Otherwise, loop back. */
}
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit