https://github.com/python/cpython/commit/46f5cbca4c37c57f718d3de0d7f7ddfc44298535
commit: 46f5cbca4c37c57f718d3de0d7f7ddfc44298535
branch: main
author: Jason Fried <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2024-09-26T05:26:23Z
summary:

gh-119333: get interp from tstate for PyContext watchers(#124444)

Co-authored-by: Kumar Aditya <[email protected]>

files:
M Include/cpython/context.h
M Python/context.c

diff --git a/Include/cpython/context.h b/Include/cpython/context.h
index a509f4eaba3d77..ec72966e82c6f9 100644
--- a/Include/cpython/context.h
+++ b/Include/cpython/context.h
@@ -33,10 +33,9 @@ typedef enum {
 } PyContextEvent;
 
 /*
- * A Callback to clue in non-python contexts impls about a
- * change in the active python context.
+ * Callback to be invoked when a context object is entered or exited.
  *
- * The callback is invoked with the event and a reference to =
+ * The callback is invoked with the event and a reference to
  * the context after its entered and before its exited.
  *
  * if the callback returns with an exception set, it must return -1. Otherwise
diff --git a/Python/context.c b/Python/context.c
index e52efbb6516d5c..ddb03555f9e402 100644
--- a/Python/context.c
+++ b/Python/context.c
@@ -112,10 +112,10 @@ context_event_name(PyContextEvent event) {
     Py_UNREACHABLE();
 }
 
-static void notify_context_watchers(PyContextEvent event, PyContext *ctx)
+static void notify_context_watchers(PyContextEvent event, PyContext *ctx, 
PyThreadState *ts)
 {
     assert(Py_REFCNT(ctx) > 0);
-    PyInterpreterState *interp = _PyInterpreterState_GET();
+    PyInterpreterState *interp = ts->interp;
     assert(interp->_initialized);
     uint8_t bits = interp->active_context_watchers;
     int i = 0;
@@ -192,7 +192,7 @@ _PyContext_Enter(PyThreadState *ts, PyObject *octx)
     ts->context = Py_NewRef(ctx);
     ts->context_ver++;
 
-    notify_context_watchers(Py_CONTEXT_EVENT_ENTER, ctx);
+    notify_context_watchers(Py_CONTEXT_EVENT_ENTER, ctx, ts);
     return 0;
 }
 
@@ -226,7 +226,7 @@ _PyContext_Exit(PyThreadState *ts, PyObject *octx)
         return -1;
     }
 
-    notify_context_watchers(Py_CONTEXT_EVENT_EXIT, ctx);
+    notify_context_watchers(Py_CONTEXT_EVENT_EXIT, ctx, ts);
     Py_SETREF(ts->context, (PyObject *)ctx->ctx_prev);
     ts->context_ver++;
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to