Files
typthon/Include/internal/pycore_tstate.h
copilot-swe-agent[bot] 3ce4b26be2 Continue fixing Py_ to Ty_ renaming - fix missed patterns
Fixed additional patterns that were missed in the initial renaming:
- PyThreadState → TyThreadState (typedef and all uses)
- PyMem_RawFree → TyMem_RawFree
- Py_buffer → Ty_buffer
- Py_CLEANUP_SUPPORTED → Ty_CLEANUP_SUPPORTED
- PyStatus → TyStatus and PyStatus_NoMemory → TyStatus_NoMemory
- _Py__has_builtin → _Ty__has_builtin
- _Py_SINGLETON → _Ty_SINGLETON
- _Py_CODEUNIT → _Ty_CODEUNIT
- _Py_BackoffCounter → _Ty_BackoffCounter
- _Py_slot_* and _Py_type_* patterns

Build is progressing with fewer errors.

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
2025-12-29 18:23:23 +00:00

85 lines
2.5 KiB
C

#ifndef Ty_INTERNAL_TSTATE_H
#define Ty_INTERNAL_TSTATE_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef Ty_BUILD_CORE
# error "this header requires Ty_BUILD_CORE define"
#endif
#include "pycore_brc.h" // struct _brc_thread_state
#include "pycore_freelist_state.h" // struct _Ty_freelists
#include "pycore_mimalloc.h" // struct _mimalloc_thread_state
#include "pycore_qsbr.h" // struct qsbr
#ifdef Ty_GIL_DISABLED
struct _gc_thread_state {
/* Thread-local allocation count. */
Ty_ssize_t alloc_count;
};
#endif
// Every TyThreadState is actually allocated as a _PyThreadStateImpl. The
// TyThreadState fields are exposed as part of the C API, although most fields
// are intended to be private. The _PyThreadStateImpl fields not exposed.
typedef struct _PyThreadStateImpl {
// semi-public fields are in TyThreadState.
TyThreadState base;
// The reference count field is used to synchronize deallocation of the
// thread state during runtime finalization.
Ty_ssize_t refcount;
// These are addresses, but we need to convert to ints to avoid UB.
uintptr_t c_stack_top;
uintptr_t c_stack_soft_limit;
uintptr_t c_stack_hard_limit;
TyObject *asyncio_running_loop; // Strong reference
TyObject *asyncio_running_task; // Strong reference
/* Head of circular linked-list of all tasks which are instances of `asyncio.Task`
or subclasses of it used in `asyncio.all_tasks`.
*/
struct llist_node asyncio_tasks_head;
struct _qsbr_thread_state *qsbr; // only used by free-threaded build
struct llist_node mem_free_queue; // delayed free queue
#ifdef Ty_GIL_DISABLED
// Stack references for the current thread that exist on the C stack
struct _PyCStackRef *c_stack_refs;
struct _gc_thread_state gc;
struct _mimalloc_thread_state mimalloc;
struct _Ty_freelists freelists;
struct _brc_thread_state brc;
struct {
// The per-thread refcounts
Ty_ssize_t *values;
// Size of the refcounts array.
Ty_ssize_t size;
// If set, don't use per-thread refcounts
int is_finalized;
} refcounts;
// Index to use to retrieve thread-local bytecode for this thread
int32_t tlbc_index;
// When >1, code objects do not immortalize their non-string constants.
int suppress_co_const_immortalization;
#endif
#if defined(Ty_REF_DEBUG) && defined(Ty_GIL_DISABLED)
Ty_ssize_t reftotal; // this thread's total refcount operations
#endif
} _PyThreadStateImpl;
#ifdef __cplusplus
}
#endif
#endif /* !Ty_INTERNAL_TSTATE_H */