mirror of
https://github.com/johndoe6345789/typthon.git
synced 2026-04-24 13:45:05 +00:00
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>
85 lines
2.5 KiB
C
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 */
|