同步操作将从 OpenHarmony-SIG/python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef Py_CPYTHON_OBJIMPL_H# error "this header file must not be included directly"#endif#ifdef __cplusplusextern "C" {#endif/* This function returns the number of allocated memory blocks, regardless of size */PyAPI_FUNC(Py_ssize_t) _Py_GetAllocatedBlocks(void);/* Macros */#ifdef WITH_PYMALLOCPyAPI_FUNC(int) _PyObject_DebugMallocStats(FILE *out);#endiftypedef struct {/* user context passed as the first argument to the 2 functions */void *ctx;/* allocate an arena of size bytes */void* (*alloc) (void *ctx, size_t size);/* free an arena */void (*free) (void *ctx, void *ptr, size_t size);} PyObjectArenaAllocator;/* Get the arena allocator. */PyAPI_FUNC(void) PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator);/* Set the arena allocator. */PyAPI_FUNC(void) PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator);PyAPI_FUNC(Py_ssize_t) _PyGC_CollectNoFail(void);PyAPI_FUNC(Py_ssize_t) _PyGC_CollectIfEnabled(void);/* Test if an object has a GC head */#define PyObject_IS_GC(o) \(PyType_IS_GC(Py_TYPE(o)) \&& (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))/* GC information is stored BEFORE the object structure. */typedef struct {// Pointer to next object in the list.// 0 means the object is not trackeduintptr_t _gc_next;// Pointer to previous object in the list.// Lowest two bits are used for flags documented later.uintptr_t _gc_prev;} PyGC_Head;#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1)/* True if the object is currently tracked by the GC. */#define _PyObject_GC_IS_TRACKED(o) (_Py_AS_GC(o)->_gc_next != 0)/* True if the object may be tracked by the GC in the future, or already is.This can be useful to implement some optimizations. */#define _PyObject_GC_MAY_BE_TRACKED(obj) \(PyObject_IS_GC(obj) && \(!PyTuple_CheckExact(obj) || _PyObject_GC_IS_TRACKED(obj)))/* Bit flags for _gc_prev *//* Bit 0 is set when tp_finalize is called */#define _PyGC_PREV_MASK_FINALIZED (1)/* Bit 1 is set when the object is in generation which is GCed currently. */#define _PyGC_PREV_MASK_COLLECTING (2)/* The (N-2) most significant bits contain the real address. */#define _PyGC_PREV_SHIFT (2)#define _PyGC_PREV_MASK (((uintptr_t) -1) << _PyGC_PREV_SHIFT)// Lowest bit of _gc_next is used for flags only in GC.// But it is always 0 for normal code.#define _PyGCHead_NEXT(g) ((PyGC_Head*)(g)->_gc_next)#define _PyGCHead_SET_NEXT(g, p) ((g)->_gc_next = (uintptr_t)(p))// Lowest two bits of _gc_prev is used for _PyGC_PREV_MASK_* flags.#define _PyGCHead_PREV(g) ((PyGC_Head*)((g)->_gc_prev & _PyGC_PREV_MASK))#define _PyGCHead_SET_PREV(g, p) do { \assert(((uintptr_t)p & ~_PyGC_PREV_MASK) == 0); \(g)->_gc_prev = ((g)->_gc_prev & ~_PyGC_PREV_MASK) \| ((uintptr_t)(p)); \} while (0)#define _PyGCHead_FINALIZED(g) \(((g)->_gc_prev & _PyGC_PREV_MASK_FINALIZED) != 0)#define _PyGCHead_SET_FINALIZED(g) \((g)->_gc_prev |= _PyGC_PREV_MASK_FINALIZED)#define _PyGC_FINALIZED(o) \_PyGCHead_FINALIZED(_Py_AS_GC(o))#define _PyGC_SET_FINALIZED(o) \_PyGCHead_SET_FINALIZED(_Py_AS_GC(o))PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t size);PyAPI_FUNC(PyObject *) _PyObject_GC_Calloc(size_t size);/* Test if a type supports weak references */#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)#define PyObject_GET_WEAKREFS_LISTPTR(o) \((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))#ifdef __cplusplus}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。