[Python-checkins] r71224 - in python/branches/py3k: Modules/_io/bufferedio.c Modules/_sqlite/connection.c Modules/_sqlite/module.c Objects/object.c

georg.brandl python-checkins at python.org
Sun Apr 5 13:47:36 CEST 2009


Author: georg.brandl
Date: Sun Apr 5 13:47:34 2009
New Revision: 71224
Log:
Merge revision 71222 from trunk: #5615: make it possible to configure --without-threads again.
Modified:
 python/branches/py3k/ (props changed)
 python/branches/py3k/Modules/_io/bufferedio.c
 python/branches/py3k/Modules/_sqlite/connection.c
 python/branches/py3k/Modules/_sqlite/module.c
 python/branches/py3k/Objects/object.c
Modified: python/branches/py3k/Modules/_io/bufferedio.c
==============================================================================
--- python/branches/py3k/Modules/_io/bufferedio.c	(original)
+++ python/branches/py3k/Modules/_io/bufferedio.c	Sun Apr 5 13:47:34 2009
@@ -204,7 +204,9 @@
 isn't ready for writing. */
 Py_off_t write_end;
 
+#ifdef WITH_THREAD
 PyThread_type_lock lock;
+#endif
 
 Py_ssize_t buffer_size;
 Py_ssize_t buffer_mask;
@@ -239,6 +241,7 @@
 
 /* These macros protect the BufferedObject against concurrent operations. */
 
+#ifdef WITH_THREAD
 #define ENTER_BUFFERED(self) \
 Py_BEGIN_ALLOW_THREADS \
 PyThread_acquire_lock(self->lock, 1); \
@@ -246,6 +249,10 @@
 
 #define LEAVE_BUFFERED(self) \
 PyThread_release_lock(self->lock);
+#else
+#define ENTER_BUFFERED(self)
+#define LEAVE_BUFFERED(self)
+#endif
 
 #define CHECK_INITIALIZED(self) \
 if (self->ok <= 0) { \
@@ -305,10 +312,12 @@
 PyMem_Free(self->buffer);
 self->buffer = NULL;
 }
+#ifdef WITH_THREAD
 if (self->lock) {
 PyThread_free_lock(self->lock);
 self->lock = NULL;
 }
+#endif
 Py_CLEAR(self->dict);
 Py_TYPE(self)->tp_free((PyObject *)self);
 }
@@ -565,11 +574,13 @@
 PyErr_NoMemory();
 return -1;
 }
+#ifdef WITH_THREAD
 self->lock = PyThread_allocate_lock();
 if (self->lock == NULL) {
 PyErr_SetString(PyExc_RuntimeError, "can't allocate read lock");
 return -1;
 }
+#endif
 /* Find out whether buffer_size is a power of 2 */
 /* XXX is this optimization useful? */
 for (n = self->buffer_size - 1; n & 1; n >>= 1)
Modified: python/branches/py3k/Modules/_sqlite/connection.c
==============================================================================
--- python/branches/py3k/Modules/_sqlite/connection.c	(original)
+++ python/branches/py3k/Modules/_sqlite/connection.c	Sun Apr 5 13:47:34 2009
@@ -124,8 +124,9 @@
 self->detect_types = detect_types;
 self->timeout = timeout;
 (void)sqlite3_busy_timeout(self->db, (int)(timeout*1000));
-
+#ifdef WITH_THREAD
 self->thread_ident = PyThread_get_thread_ident();
+#endif
 self->check_same_thread = check_same_thread;
 
 self->function_pinboard = PyDict_New();
@@ -510,9 +511,11 @@
 PyObject* py_func;
 PyObject* py_retval = NULL;
 
+#ifdef WITH_THREAD
 PyGILState_STATE threadstate;
 
 threadstate = PyGILState_Ensure();
+#endif
 
 py_func = (PyObject*)sqlite3_user_data(context);
 
@@ -534,7 +537,9 @@
 _sqlite3_result_error(context, "user-defined function raised exception", -1);
 }
 
+#ifdef WITH_THREAD
 PyGILState_Release(threadstate);
+#endif
 }
 
 static void _pysqlite_step_callback(sqlite3_context *context, int argc, sqlite3_value** params)
@@ -545,9 +550,11 @@
 PyObject** aggregate_instance;
 PyObject* stepmethod = NULL;
 
+#ifdef WITH_THREAD
 PyGILState_STATE threadstate;
 
 threadstate = PyGILState_Ensure();
+#endif
 
 aggregate_class = (PyObject*)sqlite3_user_data(context);
 
@@ -594,7 +601,9 @@
 Py_XDECREF(stepmethod);
 Py_XDECREF(function_result);
 
+#ifdef WITH_THREAD
 PyGILState_Release(threadstate);
+#endif
 }
 
 void _pysqlite_final_callback(sqlite3_context* context)
@@ -603,9 +612,11 @@
 PyObject** aggregate_instance;
 PyObject* aggregate_class;
 
+#ifdef WITH_THREAD
 PyGILState_STATE threadstate;
 
 threadstate = PyGILState_Ensure();
+#endif
 
 aggregate_class = (PyObject*)sqlite3_user_data(context);
 
@@ -633,7 +644,9 @@
 Py_XDECREF(*aggregate_instance);
 Py_XDECREF(function_result);
 
+#ifdef WITH_THREAD
 PyGILState_Release(threadstate);
+#endif
 }
 
 void _pysqlite_drop_unused_statement_references(pysqlite_Connection* self)
@@ -728,9 +741,11 @@
 {
 PyObject *ret;
 int rc;
+#ifdef WITH_THREAD
 PyGILState_STATE gilstate;
 
 gilstate = PyGILState_Ensure();
+#endif
 ret = PyObject_CallFunction((PyObject*)user_arg, "issss", action, arg1, arg2, dbname, access_attempt_source);
 
 if (!ret) {
@@ -750,7 +765,9 @@
 Py_DECREF(ret);
 }
 
+#ifdef WITH_THREAD
 PyGILState_Release(gilstate);
+#endif
 return rc;
 }
 
@@ -758,9 +775,11 @@
 {
 int rc;
 PyObject *ret;
+#ifdef WITH_THREAD
 PyGILState_STATE gilstate;
 
 gilstate = PyGILState_Ensure();
+#endif
 ret = PyObject_CallFunction((PyObject*)user_arg, "");
 
 if (!ret) {
@@ -777,7 +796,9 @@
 Py_DECREF(ret);
 }
 
+#ifdef WITH_THREAD
 PyGILState_Release(gilstate);
+#endif
 return rc;
 }
 
@@ -832,6 +853,7 @@
 
 int pysqlite_check_thread(pysqlite_Connection* self)
 {
+#ifdef WITH_THREAD
 if (self->check_same_thread) {
 if (PyThread_get_thread_ident() != self->thread_ident) {
 PyErr_Format(pysqlite_ProgrammingError,
@@ -842,7 +864,7 @@
 }
 
 }
-
+#endif
 return 1;
 }
 
@@ -1067,12 +1089,14 @@
 PyObject* callback = (PyObject*)context;
 PyObject* string1 = 0;
 PyObject* string2 = 0;
+#ifdef WITH_THREAD
 PyGILState_STATE gilstate;
-
+#endif
 PyObject* retval = NULL;
 int result = 0;
-
+#ifdef WITH_THREAD
 gilstate = PyGILState_Ensure();
+#endif
 
 if (PyErr_Occurred()) {
 goto finally;
@@ -1101,9 +1125,9 @@
 Py_XDECREF(string1);
 Py_XDECREF(string2);
 Py_XDECREF(retval);
-
+#ifdef WITH_THREAD
 PyGILState_Release(gilstate);
-
+#endif
 return result;
 }
 
Modified: python/branches/py3k/Modules/_sqlite/module.c
==============================================================================
--- python/branches/py3k/Modules/_sqlite/module.c	(original)
+++ python/branches/py3k/Modules/_sqlite/module.c	Sun Apr 5 13:47:34 2009
@@ -459,7 +459,9 @@
 * threads have already been initialized.
 * (see pybsddb-users mailing list post on 2002年08月07日)
 */
+#ifdef WITH_THREAD
 PyEval_InitThreads();
+#endif
 
 error:
 if (PyErr_Occurred())
Modified: python/branches/py3k/Objects/object.c
==============================================================================
--- python/branches/py3k/Objects/object.c	(original)
+++ python/branches/py3k/Objects/object.c	Sun Apr 5 13:47:34 2009
@@ -349,11 +349,17 @@
 	if (op == NULL)
 		fprintf(stderr, "NULL\n");
 	else {
+#ifdef WITH_THREAD
 		PyGILState_STATE gil;
+#endif
 		fprintf(stderr, "object : ");
+#ifdef WITH_THREAD
 		gil = PyGILState_Ensure();
+#endif
 		(void)PyObject_Print(op, stderr, 0);
+#ifdef WITH_THREAD
 		PyGILState_Release(gil);
+#endif
 		/* XXX(twouters) cast refcount to long until %zd is
 		 universally available */
 		fprintf(stderr, "\n"


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /