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]
