mirror of https://github.com/python/cpython
replace Py_(u)intptr_t with the c99 standard types
This commit is contained in:
parent
3c397e4c39
commit
ca47063998
|
@ -61,7 +61,7 @@ typedef enum _Py_memory_order {
|
||||||
} _Py_memory_order;
|
} _Py_memory_order;
|
||||||
|
|
||||||
typedef struct _Py_atomic_address {
|
typedef struct _Py_atomic_address {
|
||||||
Py_uintptr_t _value;
|
uintptr_t _value;
|
||||||
} _Py_atomic_address;
|
} _Py_atomic_address;
|
||||||
|
|
||||||
typedef struct _Py_atomic_int {
|
typedef struct _Py_atomic_int {
|
||||||
|
@ -98,7 +98,7 @@ typedef enum _Py_memory_order {
|
||||||
} _Py_memory_order;
|
} _Py_memory_order;
|
||||||
|
|
||||||
typedef struct _Py_atomic_address {
|
typedef struct _Py_atomic_address {
|
||||||
Py_uintptr_t _value;
|
uintptr_t _value;
|
||||||
} _Py_atomic_address;
|
} _Py_atomic_address;
|
||||||
|
|
||||||
typedef struct _Py_atomic_int {
|
typedef struct _Py_atomic_int {
|
||||||
|
|
|
@ -79,12 +79,12 @@
|
||||||
#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
|
#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
|
||||||
(size_t)((a) - 1)) & ~(size_t)((a) - 1))
|
(size_t)((a) - 1)) & ~(size_t)((a) - 1))
|
||||||
/* Round pointer "p" down to the closest "a"-aligned address <= "p". */
|
/* Round pointer "p" down to the closest "a"-aligned address <= "p". */
|
||||||
#define _Py_ALIGN_DOWN(p, a) ((void *)((Py_uintptr_t)(p) & ~(Py_uintptr_t)((a) - 1)))
|
#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1)))
|
||||||
/* Round pointer "p" up to the closest "a"-aligned address >= "p". */
|
/* Round pointer "p" up to the closest "a"-aligned address >= "p". */
|
||||||
#define _Py_ALIGN_UP(p, a) ((void *)(((Py_uintptr_t)(p) + \
|
#define _Py_ALIGN_UP(p, a) ((void *)(((uintptr_t)(p) + \
|
||||||
(Py_uintptr_t)((a) - 1)) & ~(Py_uintptr_t)((a) - 1)))
|
(uintptr_t)((a) - 1)) & ~(uintptr_t)((a) - 1)))
|
||||||
/* Check if pointer "p" is aligned to "a"-bytes boundary. */
|
/* Check if pointer "p" is aligned to "a"-bytes boundary. */
|
||||||
#define _Py_IS_ALIGNED(p, a) (!((Py_uintptr_t)(p) & (Py_uintptr_t)((a) - 1)))
|
#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define Py_UNUSED(name) _unused_ ## name __attribute__((unused))
|
#define Py_UNUSED(name) _unused_ ## name __attribute__((unused))
|
||||||
|
|
|
@ -37,7 +37,7 @@ typedef unsigned int _PyTraceMalloc_domain_t;
|
||||||
If memory block is already tracked, update the existing trace. */
|
If memory block is already tracked, update the existing trace. */
|
||||||
PyAPI_FUNC(int) _PyTraceMalloc_Track(
|
PyAPI_FUNC(int) _PyTraceMalloc_Track(
|
||||||
_PyTraceMalloc_domain_t domain,
|
_PyTraceMalloc_domain_t domain,
|
||||||
Py_uintptr_t ptr,
|
uintptr_t ptr,
|
||||||
size_t size);
|
size_t size);
|
||||||
|
|
||||||
/* Untrack an allocated memory block in the tracemalloc module.
|
/* Untrack an allocated memory block in the tracemalloc module.
|
||||||
|
@ -46,7 +46,7 @@ PyAPI_FUNC(int) _PyTraceMalloc_Track(
|
||||||
Return -2 if tracemalloc is disabled, otherwise return 0. */
|
Return -2 if tracemalloc is disabled, otherwise return 0. */
|
||||||
PyAPI_FUNC(int) _PyTraceMalloc_Untrack(
|
PyAPI_FUNC(int) _PyTraceMalloc_Untrack(
|
||||||
_PyTraceMalloc_domain_t domain,
|
_PyTraceMalloc_domain_t domain,
|
||||||
Py_uintptr_t ptr);
|
uintptr_t ptr);
|
||||||
|
|
||||||
/* Get the traceback where a memory block was allocated.
|
/* Get the traceback where a memory block was allocated.
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ PyAPI_FUNC(int) _PyTraceMalloc_Untrack(
|
||||||
Raise an exception and return NULL on error. */
|
Raise an exception and return NULL on error. */
|
||||||
PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
|
PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
|
||||||
_PyTraceMalloc_domain_t domain,
|
_PyTraceMalloc_domain_t domain,
|
||||||
Py_uintptr_t ptr);
|
uintptr_t ptr);
|
||||||
#endif /* !Py_LIMITED_API */
|
#endif /* !Py_LIMITED_API */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,9 +57,9 @@ do { memory -= size; printf("%8d - %s\n", memory, comment); } while (0)
|
||||||
that all use of text and tail as object pointers must be wrapped in
|
that all use of text and tail as object pointers must be wrapped in
|
||||||
JOIN_OBJ. see comments in the ElementObject definition for more
|
JOIN_OBJ. see comments in the ElementObject definition for more
|
||||||
info. */
|
info. */
|
||||||
#define JOIN_GET(p) ((Py_uintptr_t) (p) & 1)
|
#define JOIN_GET(p) ((uintptr_t) (p) & 1)
|
||||||
#define JOIN_SET(p, flag) ((void*) ((Py_uintptr_t) (JOIN_OBJ(p)) | (flag)))
|
#define JOIN_SET(p, flag) ((void*) ((uintptr_t) (JOIN_OBJ(p)) | (flag)))
|
||||||
#define JOIN_OBJ(p) ((PyObject*) ((Py_uintptr_t) (p) & ~(Py_uintptr_t)1))
|
#define JOIN_OBJ(p) ((PyObject*) ((uintptr_t) (p) & ~(uintptr_t)1))
|
||||||
|
|
||||||
/* Py_CLEAR for a PyObject* that uses a join flag. Pass the pointer by
|
/* Py_CLEAR for a PyObject* that uses a join flag. Pass the pointer by
|
||||||
* reference since this function sets it to NULL.
|
* reference since this function sets it to NULL.
|
||||||
|
@ -797,7 +797,7 @@ _elementtree_Element___deepcopy__(ElementObject *self, PyObject *memo)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add object to memo dictionary (so deepcopy won't visit it again) */
|
/* add object to memo dictionary (so deepcopy won't visit it again) */
|
||||||
id = PyLong_FromSsize_t((Py_uintptr_t) self);
|
id = PyLong_FromSsize_t((uintptr_t) self);
|
||||||
if (!id)
|
if (!id)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|
|
@ -1582,7 +1582,7 @@ _sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
|
||||||
skip = *code; \
|
skip = *code; \
|
||||||
VTRACE(("%lu (skip to %p)\n", \
|
VTRACE(("%lu (skip to %p)\n", \
|
||||||
(unsigned long)skip, code+skip)); \
|
(unsigned long)skip, code+skip)); \
|
||||||
if (skip-adj > (Py_uintptr_t)(end - code)) \
|
if (skip-adj > (uintptr_t)(end - code)) \
|
||||||
FAIL; \
|
FAIL; \
|
||||||
code++; \
|
code++; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -1616,7 +1616,7 @@ _validate_charset(SRE_CODE *code, SRE_CODE *end)
|
||||||
|
|
||||||
case SRE_OP_CHARSET:
|
case SRE_OP_CHARSET:
|
||||||
offset = 256/SRE_CODE_BITS; /* 256-bit bitmap */
|
offset = 256/SRE_CODE_BITS; /* 256-bit bitmap */
|
||||||
if (offset > (Py_uintptr_t)(end - code))
|
if (offset > (uintptr_t)(end - code))
|
||||||
FAIL;
|
FAIL;
|
||||||
code += offset;
|
code += offset;
|
||||||
break;
|
break;
|
||||||
|
@ -1624,7 +1624,7 @@ _validate_charset(SRE_CODE *code, SRE_CODE *end)
|
||||||
case SRE_OP_BIGCHARSET:
|
case SRE_OP_BIGCHARSET:
|
||||||
GET_ARG; /* Number of blocks */
|
GET_ARG; /* Number of blocks */
|
||||||
offset = 256/sizeof(SRE_CODE); /* 256-byte table */
|
offset = 256/sizeof(SRE_CODE); /* 256-byte table */
|
||||||
if (offset > (Py_uintptr_t)(end - code))
|
if (offset > (uintptr_t)(end - code))
|
||||||
FAIL;
|
FAIL;
|
||||||
/* Make sure that each byte points to a valid block */
|
/* Make sure that each byte points to a valid block */
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
|
@ -1633,7 +1633,7 @@ _validate_charset(SRE_CODE *code, SRE_CODE *end)
|
||||||
}
|
}
|
||||||
code += offset;
|
code += offset;
|
||||||
offset = arg * (256/SRE_CODE_BITS); /* 256-bit bitmap times arg */
|
offset = arg * (256/SRE_CODE_BITS); /* 256-bit bitmap times arg */
|
||||||
if (offset > (Py_uintptr_t)(end - code))
|
if (offset > (uintptr_t)(end - code))
|
||||||
FAIL;
|
FAIL;
|
||||||
code += offset;
|
code += offset;
|
||||||
break;
|
break;
|
||||||
|
@ -1784,11 +1784,11 @@ _validate_inner(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
|
||||||
GET_ARG; prefix_len = arg;
|
GET_ARG; prefix_len = arg;
|
||||||
GET_ARG;
|
GET_ARG;
|
||||||
/* Here comes the prefix string */
|
/* Here comes the prefix string */
|
||||||
if (prefix_len > (Py_uintptr_t)(newcode - code))
|
if (prefix_len > (uintptr_t)(newcode - code))
|
||||||
FAIL;
|
FAIL;
|
||||||
code += prefix_len;
|
code += prefix_len;
|
||||||
/* And here comes the overlap table */
|
/* And here comes the overlap table */
|
||||||
if (prefix_len > (Py_uintptr_t)(newcode - code))
|
if (prefix_len > (uintptr_t)(newcode - code))
|
||||||
FAIL;
|
FAIL;
|
||||||
/* Each overlap value should be < prefix_len */
|
/* Each overlap value should be < prefix_len */
|
||||||
for (i = 0; i < prefix_len; i++) {
|
for (i = 0; i < prefix_len; i++) {
|
||||||
|
@ -1917,7 +1917,7 @@ _validate_inner(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
|
||||||
to allow arbitrary jumps anywhere in the code; so we just look
|
to allow arbitrary jumps anywhere in the code; so we just look
|
||||||
for a JUMP opcode preceding our skip target.
|
for a JUMP opcode preceding our skip target.
|
||||||
*/
|
*/
|
||||||
if (skip >= 3 && skip-3 < (Py_uintptr_t)(end - code) &&
|
if (skip >= 3 && skip-3 < (uintptr_t)(end - code) &&
|
||||||
code[skip-3] == SRE_OP_JUMP)
|
code[skip-3] == SRE_OP_JUMP)
|
||||||
{
|
{
|
||||||
VTRACE(("both then and else parts present\n"));
|
VTRACE(("both then and else parts present\n"));
|
||||||
|
|
|
@ -113,10 +113,10 @@ test_sizeof_c_types(PyObject *self)
|
||||||
CHECK_SIZEOF(Py_ssize_t, sizeof(void *));
|
CHECK_SIZEOF(Py_ssize_t, sizeof(void *));
|
||||||
CHECK_SIGNNESS(Py_ssize_t, 1);
|
CHECK_SIGNNESS(Py_ssize_t, 1);
|
||||||
|
|
||||||
CHECK_SIZEOF(Py_uintptr_t, sizeof(void *));
|
CHECK_SIZEOF(uintptr_t, sizeof(void *));
|
||||||
CHECK_SIGNNESS(Py_uintptr_t, 0);
|
CHECK_SIGNNESS(uintptr_t, 0);
|
||||||
CHECK_SIZEOF(Py_intptr_t, sizeof(void *));
|
CHECK_SIZEOF(intptr_t, sizeof(void *));
|
||||||
CHECK_SIGNNESS(Py_intptr_t, 1);
|
CHECK_SIGNNESS(intptr_t, 1);
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -3861,11 +3861,11 @@ tracemalloc_track(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
if (release_gil) {
|
if (release_gil) {
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
res = _PyTraceMalloc_Track(domain, (Py_uintptr_t)ptr, size);
|
res = _PyTraceMalloc_Track(domain, (uintptr_t)ptr, size);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
res = _PyTraceMalloc_Track(domain, (Py_uintptr_t)ptr, size);
|
res = _PyTraceMalloc_Track(domain, (uintptr_t)ptr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
|
@ -3890,7 +3890,7 @@ tracemalloc_untrack(PyObject *self, PyObject *args)
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
res = _PyTraceMalloc_Untrack(domain, (Py_uintptr_t)ptr);
|
res = _PyTraceMalloc_Untrack(domain, (uintptr_t)ptr);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
PyErr_SetString(PyExc_RuntimeError, "_PyTraceMalloc_Track error");
|
PyErr_SetString(PyExc_RuntimeError, "_PyTraceMalloc_Track error");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -3912,7 +3912,7 @@ tracemalloc_get_traceback(PyObject *self, PyObject *args)
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return _PyTraceMalloc_GetTraceback(domain, (Py_uintptr_t)ptr);
|
return _PyTraceMalloc_GetTraceback(domain, (uintptr_t)ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ typedef struct
|
||||||
__attribute__((packed))
|
__attribute__((packed))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
Py_uintptr_t ptr;
|
uintptr_t ptr;
|
||||||
_PyTraceMalloc_domain_t domain;
|
_PyTraceMalloc_domain_t domain;
|
||||||
} pointer_t;
|
} pointer_t;
|
||||||
|
|
||||||
|
@ -523,7 +523,7 @@ static int
|
||||||
tracemalloc_use_domain_cb(_Py_hashtable_t *old_traces,
|
tracemalloc_use_domain_cb(_Py_hashtable_t *old_traces,
|
||||||
_Py_hashtable_entry_t *entry, void *user_data)
|
_Py_hashtable_entry_t *entry, void *user_data)
|
||||||
{
|
{
|
||||||
Py_uintptr_t ptr;
|
uintptr_t ptr;
|
||||||
pointer_t key;
|
pointer_t key;
|
||||||
_Py_hashtable_t *new_traces = (_Py_hashtable_t *)user_data;
|
_Py_hashtable_t *new_traces = (_Py_hashtable_t *)user_data;
|
||||||
const void *pdata = _Py_HASHTABLE_ENTRY_PDATA(old_traces, entry);
|
const void *pdata = _Py_HASHTABLE_ENTRY_PDATA(old_traces, entry);
|
||||||
|
@ -538,7 +538,7 @@ tracemalloc_use_domain_cb(_Py_hashtable_t *old_traces,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Convert tracemalloc_traces from compact key (Py_uintptr_t) to pointer_t key.
|
/* Convert tracemalloc_traces from compact key (uintptr_t) to pointer_t key.
|
||||||
* Return 0 on success, -1 on error. */
|
* Return 0 on success, -1 on error. */
|
||||||
static int
|
static int
|
||||||
tracemalloc_use_domain(void)
|
tracemalloc_use_domain(void)
|
||||||
|
@ -572,7 +572,7 @@ tracemalloc_use_domain(void)
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tracemalloc_remove_trace(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
tracemalloc_remove_trace(_PyTraceMalloc_domain_t domain, uintptr_t ptr)
|
||||||
{
|
{
|
||||||
trace_t trace;
|
trace_t trace;
|
||||||
int removed;
|
int removed;
|
||||||
|
@ -595,11 +595,11 @@ tracemalloc_remove_trace(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define REMOVE_TRACE(ptr) \
|
#define REMOVE_TRACE(ptr) \
|
||||||
tracemalloc_remove_trace(DEFAULT_DOMAIN, (Py_uintptr_t)(ptr))
|
tracemalloc_remove_trace(DEFAULT_DOMAIN, (uintptr_t)(ptr))
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
tracemalloc_add_trace(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr,
|
tracemalloc_add_trace(_PyTraceMalloc_domain_t domain, uintptr_t ptr,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
pointer_t key = {ptr, domain};
|
pointer_t key = {ptr, domain};
|
||||||
|
@ -617,7 +617,7 @@ tracemalloc_add_trace(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr,
|
||||||
|
|
||||||
if (!tracemalloc_config.use_domain && domain != DEFAULT_DOMAIN) {
|
if (!tracemalloc_config.use_domain && domain != DEFAULT_DOMAIN) {
|
||||||
/* first trace using a non-zero domain whereas traces use compact
|
/* first trace using a non-zero domain whereas traces use compact
|
||||||
(Py_uintptr_t) keys: switch to pointer_t keys. */
|
(uintptr_t) keys: switch to pointer_t keys. */
|
||||||
if (tracemalloc_use_domain() < 0) {
|
if (tracemalloc_use_domain() < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -663,7 +663,7 @@ tracemalloc_add_trace(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr,
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ADD_TRACE(ptr, size) \
|
#define ADD_TRACE(ptr, size) \
|
||||||
tracemalloc_add_trace(DEFAULT_DOMAIN, (Py_uintptr_t)(ptr), size)
|
tracemalloc_add_trace(DEFAULT_DOMAIN, (uintptr_t)(ptr), size)
|
||||||
|
|
||||||
|
|
||||||
static void*
|
static void*
|
||||||
|
@ -1023,7 +1023,7 @@ tracemalloc_init(void)
|
||||||
hashtable_compare_pointer_t);
|
hashtable_compare_pointer_t);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tracemalloc_traces = hashtable_new(sizeof(Py_uintptr_t),
|
tracemalloc_traces = hashtable_new(sizeof(uintptr_t),
|
||||||
sizeof(trace_t),
|
sizeof(trace_t),
|
||||||
_Py_hashtable_hash_ptr,
|
_Py_hashtable_hash_ptr,
|
||||||
_Py_hashtable_compare_direct);
|
_Py_hashtable_compare_direct);
|
||||||
|
@ -1414,7 +1414,7 @@ finally:
|
||||||
|
|
||||||
|
|
||||||
static traceback_t*
|
static traceback_t*
|
||||||
tracemalloc_get_traceback(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
tracemalloc_get_traceback(_PyTraceMalloc_domain_t domain, uintptr_t ptr)
|
||||||
{
|
{
|
||||||
trace_t trace;
|
trace_t trace;
|
||||||
int found;
|
int found;
|
||||||
|
@ -1461,7 +1461,7 @@ py_tracemalloc_get_object_traceback(PyObject *self, PyObject *obj)
|
||||||
else
|
else
|
||||||
ptr = (void *)obj;
|
ptr = (void *)obj;
|
||||||
|
|
||||||
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (Py_uintptr_t)ptr);
|
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (uintptr_t)ptr);
|
||||||
if (traceback == NULL)
|
if (traceback == NULL)
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
|
||||||
|
@ -1489,7 +1489,7 @@ _PyMem_DumpTraceback(int fd, const void *ptr)
|
||||||
traceback_t *traceback;
|
traceback_t *traceback;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (Py_uintptr_t)ptr);
|
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (uintptr_t)ptr);
|
||||||
if (traceback == NULL)
|
if (traceback == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1762,7 +1762,7 @@ _PyTraceMalloc_Fini(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
_PyTraceMalloc_Track(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr,
|
_PyTraceMalloc_Track(_PyTraceMalloc_domain_t domain, uintptr_t ptr,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
@ -1791,7 +1791,7 @@ _PyTraceMalloc_Track(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr,
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
_PyTraceMalloc_Untrack(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
_PyTraceMalloc_Untrack(_PyTraceMalloc_domain_t domain, uintptr_t ptr)
|
||||||
{
|
{
|
||||||
if (!tracemalloc_config.tracing) {
|
if (!tracemalloc_config.tracing) {
|
||||||
/* tracemalloc is not tracing: do nothing */
|
/* tracemalloc is not tracing: do nothing */
|
||||||
|
@ -1807,7 +1807,7 @@ _PyTraceMalloc_Untrack(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
||||||
|
|
||||||
|
|
||||||
PyObject*
|
PyObject*
|
||||||
_PyTraceMalloc_GetTraceback(_PyTraceMalloc_domain_t domain, Py_uintptr_t ptr)
|
_PyTraceMalloc_GetTraceback(_PyTraceMalloc_domain_t domain, uintptr_t ptr)
|
||||||
{
|
{
|
||||||
traceback_t *traceback;
|
traceback_t *traceback;
|
||||||
|
|
||||||
|
|
|
@ -1072,12 +1072,12 @@ faulthandler_fatal_error_py(PyObject *self, PyObject *args)
|
||||||
# pragma intel optimization_level 0
|
# pragma intel optimization_level 0
|
||||||
#endif
|
#endif
|
||||||
static
|
static
|
||||||
Py_uintptr_t
|
uintptr_t
|
||||||
stack_overflow(Py_uintptr_t min_sp, Py_uintptr_t max_sp, size_t *depth)
|
stack_overflow(uintptr_t min_sp, uintptr_t max_sp, size_t *depth)
|
||||||
{
|
{
|
||||||
/* allocate 4096 bytes on the stack at each call */
|
/* allocate 4096 bytes on the stack at each call */
|
||||||
unsigned char buffer[4096];
|
unsigned char buffer[4096];
|
||||||
Py_uintptr_t sp = (Py_uintptr_t)&buffer;
|
uintptr_t sp = (uintptr_t)&buffer;
|
||||||
*depth += 1;
|
*depth += 1;
|
||||||
if (sp < min_sp || max_sp < sp)
|
if (sp < min_sp || max_sp < sp)
|
||||||
return sp;
|
return sp;
|
||||||
|
@ -1090,8 +1090,8 @@ static PyObject *
|
||||||
faulthandler_stack_overflow(PyObject *self)
|
faulthandler_stack_overflow(PyObject *self)
|
||||||
{
|
{
|
||||||
size_t depth, size;
|
size_t depth, size;
|
||||||
Py_uintptr_t sp = (Py_uintptr_t)&depth;
|
uintptr_t sp = (uintptr_t)&depth;
|
||||||
Py_uintptr_t stop;
|
uintptr_t stop;
|
||||||
|
|
||||||
faulthandler_suppress_crash_report();
|
faulthandler_suppress_crash_report();
|
||||||
depth = 0;
|
depth = 0;
|
||||||
|
|
|
@ -2492,8 +2492,8 @@ class id_t_converter(CConverter):
|
||||||
type = 'id_t'
|
type = 'id_t'
|
||||||
format_unit = '" _Py_PARSE_PID "'
|
format_unit = '" _Py_PARSE_PID "'
|
||||||
|
|
||||||
class Py_intptr_t_converter(CConverter):
|
class intptr_t_converter(CConverter):
|
||||||
type = 'Py_intptr_t'
|
type = 'intptr_t'
|
||||||
format_unit = '" _Py_PARSE_INTPTR "'
|
format_unit = '" _Py_PARSE_INTPTR "'
|
||||||
|
|
||||||
class Py_off_t_converter(CConverter):
|
class Py_off_t_converter(CConverter):
|
||||||
|
@ -5244,7 +5244,7 @@ os_spawnv_impl(PyObject *module, int mode, PyObject *path, PyObject *argv)
|
||||||
char **argvlist;
|
char **argvlist;
|
||||||
int i;
|
int i;
|
||||||
Py_ssize_t argc;
|
Py_ssize_t argc;
|
||||||
Py_intptr_t spawnval;
|
intptr_t spawnval;
|
||||||
PyObject *(*getitem)(PyObject *, Py_ssize_t);
|
PyObject *(*getitem)(PyObject *, Py_ssize_t);
|
||||||
|
|
||||||
/* spawnv has three arguments: (mode, path, argv), where
|
/* spawnv has three arguments: (mode, path, argv), where
|
||||||
|
@ -5323,7 +5323,7 @@ os_spawnve_impl(PyObject *module, int mode, PyObject *path, PyObject *argv,
|
||||||
char **envlist;
|
char **envlist;
|
||||||
PyObject *res = NULL;
|
PyObject *res = NULL;
|
||||||
Py_ssize_t argc, i, envc;
|
Py_ssize_t argc, i, envc;
|
||||||
Py_intptr_t spawnval;
|
intptr_t spawnval;
|
||||||
PyObject *(*getitem)(PyObject *, Py_ssize_t);
|
PyObject *(*getitem)(PyObject *, Py_ssize_t);
|
||||||
Py_ssize_t lastarg = 0;
|
Py_ssize_t lastarg = 0;
|
||||||
|
|
||||||
|
@ -7078,7 +7078,7 @@ os_waitpid_impl(PyObject *module, pid_t pid, int options)
|
||||||
/* MS C has a variant of waitpid() that's usable for most purposes. */
|
/* MS C has a variant of waitpid() that's usable for most purposes. */
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
os.waitpid
|
os.waitpid
|
||||||
pid: Py_intptr_t
|
pid: intptr_t
|
||||||
options: int
|
options: int
|
||||||
/
|
/
|
||||||
|
|
||||||
|
@ -7091,11 +7091,11 @@ The options argument is ignored on Windows.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
os_waitpid_impl(PyObject *module, Py_intptr_t pid, int options)
|
os_waitpid_impl(PyObject *module, intptr_t pid, int options)
|
||||||
/*[clinic end generated code: output=15f1ce005a346b09 input=444c8f51cca5b862]*/
|
/*[clinic end generated code: output=15f1ce005a346b09 input=444c8f51cca5b862]*/
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
Py_intptr_t res;
|
intptr_t res;
|
||||||
int async_err = 0;
|
int async_err = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -8559,8 +8559,8 @@ os_pipe_impl(PyObject *module)
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
ok = CreatePipe(&read, &write, &attr, 0);
|
ok = CreatePipe(&read, &write, &attr, 0);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
fds[0] = _open_osfhandle((Py_intptr_t)read, _O_RDONLY);
|
fds[0] = _open_osfhandle((intptr_t)read, _O_RDONLY);
|
||||||
fds[1] = _open_osfhandle((Py_intptr_t)write, _O_WRONLY);
|
fds[1] = _open_osfhandle((intptr_t)write, _O_WRONLY);
|
||||||
if (fds[0] == -1 || fds[1] == -1) {
|
if (fds[0] == -1 || fds[1] == -1) {
|
||||||
CloseHandle(read);
|
CloseHandle(read);
|
||||||
CloseHandle(write);
|
CloseHandle(write);
|
||||||
|
@ -11375,14 +11375,14 @@ os_set_inheritable_impl(PyObject *module, int fd, int inheritable)
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
os.get_handle_inheritable -> bool
|
os.get_handle_inheritable -> bool
|
||||||
handle: Py_intptr_t
|
handle: intptr_t
|
||||||
/
|
/
|
||||||
|
|
||||||
Get the close-on-exe flag of the specified file descriptor.
|
Get the close-on-exe flag of the specified file descriptor.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
os_get_handle_inheritable_impl(PyObject *module, Py_intptr_t handle)
|
os_get_handle_inheritable_impl(PyObject *module, intptr_t handle)
|
||||||
/*[clinic end generated code: output=9e5389b0aa0916ce input=5f7759443aae3dc5]*/
|
/*[clinic end generated code: output=9e5389b0aa0916ce input=5f7759443aae3dc5]*/
|
||||||
{
|
{
|
||||||
DWORD flags;
|
DWORD flags;
|
||||||
|
@ -11398,7 +11398,7 @@ os_get_handle_inheritable_impl(PyObject *module, Py_intptr_t handle)
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
os.set_handle_inheritable
|
os.set_handle_inheritable
|
||||||
handle: Py_intptr_t
|
handle: intptr_t
|
||||||
inheritable: bool
|
inheritable: bool
|
||||||
/
|
/
|
||||||
|
|
||||||
|
@ -11406,7 +11406,7 @@ Set the inheritable flag of the specified handle.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
os_set_handle_inheritable_impl(PyObject *module, Py_intptr_t handle,
|
os_set_handle_inheritable_impl(PyObject *module, intptr_t handle,
|
||||||
int inheritable)
|
int inheritable)
|
||||||
/*[clinic end generated code: output=b1e67bfa3213d745 input=e64b2b2730469def]*/
|
/*[clinic end generated code: output=b1e67bfa3213d745 input=e64b2b2730469def]*/
|
||||||
{
|
{
|
||||||
|
|
|
@ -1797,7 +1797,7 @@ static PyTypeObject kqueue_queue_Type;
|
||||||
*/
|
*/
|
||||||
#if !defined(__OpenBSD__)
|
#if !defined(__OpenBSD__)
|
||||||
# define IDENT_TYPE T_UINTPTRT
|
# define IDENT_TYPE T_UINTPTRT
|
||||||
# define IDENT_CAST Py_intptr_t
|
# define IDENT_CAST intptr_t
|
||||||
# define DATA_TYPE T_INTPTRT
|
# define DATA_TYPE T_INTPTRT
|
||||||
# define DATA_FMT_UNIT INTPTRT_FMT_UNIT
|
# define DATA_FMT_UNIT INTPTRT_FMT_UNIT
|
||||||
# define IDENT_AsType PyLong_AsUintptr_t
|
# define IDENT_AsType PyLong_AsUintptr_t
|
||||||
|
@ -1876,7 +1876,7 @@ static PyObject *
|
||||||
kqueue_event_richcompare(kqueue_event_Object *s, kqueue_event_Object *o,
|
kqueue_event_richcompare(kqueue_event_Object *s, kqueue_event_Object *o,
|
||||||
int op)
|
int op)
|
||||||
{
|
{
|
||||||
Py_intptr_t result = 0;
|
intptr_t result = 0;
|
||||||
|
|
||||||
if (!kqueue_event_Check(o)) {
|
if (!kqueue_event_Check(o)) {
|
||||||
if (op == Py_EQ || op == Py_NE) {
|
if (op == Py_EQ || op == Py_NE) {
|
||||||
|
|
|
@ -198,7 +198,7 @@ static int
|
||||||
report_wakeup_write_error(void *data)
|
report_wakeup_write_error(void *data)
|
||||||
{
|
{
|
||||||
int save_errno = errno;
|
int save_errno = errno;
|
||||||
errno = (int) (Py_intptr_t) data;
|
errno = (int) (intptr_t) data;
|
||||||
PyErr_SetFromErrno(PyExc_OSError);
|
PyErr_SetFromErrno(PyExc_OSError);
|
||||||
PySys_WriteStderr("Exception ignored when trying to write to the "
|
PySys_WriteStderr("Exception ignored when trying to write to the "
|
||||||
"signal wakeup fd:\n");
|
"signal wakeup fd:\n");
|
||||||
|
@ -277,7 +277,7 @@ trip_signal(int sig_num)
|
||||||
|
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
Py_AddPendingCall(report_wakeup_write_error,
|
Py_AddPendingCall(report_wakeup_write_error,
|
||||||
(void *)(Py_intptr_t)errno);
|
(void *)(intptr_t)errno);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -529,7 +529,7 @@ entrance:
|
||||||
if (ctx->pattern[0] == SRE_OP_INFO) {
|
if (ctx->pattern[0] == SRE_OP_INFO) {
|
||||||
/* optimization info block */
|
/* optimization info block */
|
||||||
/* <INFO> <1=skip> <2=flags> <3=min> ... */
|
/* <INFO> <1=skip> <2=flags> <3=min> ... */
|
||||||
if (ctx->pattern[3] && (Py_uintptr_t)(end - ctx->ptr) < ctx->pattern[3]) {
|
if (ctx->pattern[3] && (uintptr_t)(end - ctx->ptr) < ctx->pattern[3]) {
|
||||||
TRACE(("reject (got %" PY_FORMAT_SIZE_T "d chars, "
|
TRACE(("reject (got %" PY_FORMAT_SIZE_T "d chars, "
|
||||||
"need %" PY_FORMAT_SIZE_T "d)\n",
|
"need %" PY_FORMAT_SIZE_T "d)\n",
|
||||||
end - ctx->ptr, (Py_ssize_t) ctx->pattern[3]));
|
end - ctx->ptr, (Py_ssize_t) ctx->pattern[3]));
|
||||||
|
|
|
@ -1019,7 +1019,7 @@ wrapper_dealloc(wrapperobject *wp)
|
||||||
static PyObject *
|
static PyObject *
|
||||||
wrapper_richcompare(PyObject *a, PyObject *b, int op)
|
wrapper_richcompare(PyObject *a, PyObject *b, int op)
|
||||||
{
|
{
|
||||||
Py_intptr_t result;
|
intptr_t result;
|
||||||
PyObject *v;
|
PyObject *v;
|
||||||
PyWrapperDescrObject *a_descr, *b_descr;
|
PyWrapperDescrObject *a_descr, *b_descr;
|
||||||
|
|
||||||
|
|
|
@ -989,13 +989,13 @@ PyObject *
|
||||||
PyLong_FromVoidPtr(void *p)
|
PyLong_FromVoidPtr(void *p)
|
||||||
{
|
{
|
||||||
#if SIZEOF_VOID_P <= SIZEOF_LONG
|
#if SIZEOF_VOID_P <= SIZEOF_LONG
|
||||||
return PyLong_FromUnsignedLong((unsigned long)(Py_uintptr_t)p);
|
return PyLong_FromUnsignedLong((unsigned long)(uintptr_t)p);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
|
#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
|
||||||
# error "PyLong_FromVoidPtr: sizeof(long long) < sizeof(void*)"
|
# error "PyLong_FromVoidPtr: sizeof(long long) < sizeof(void*)"
|
||||||
#endif
|
#endif
|
||||||
return PyLong_FromUnsignedLongLong((unsigned long long)(Py_uintptr_t)p);
|
return PyLong_FromUnsignedLongLong((unsigned long long)(uintptr_t)p);
|
||||||
#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
|
#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ extern void _PyMem_DumpTraceback(int fd, const void *ptr);
|
||||||
#define uint unsigned int /* assuming >= 16 bits */
|
#define uint unsigned int /* assuming >= 16 bits */
|
||||||
|
|
||||||
#undef uptr
|
#undef uptr
|
||||||
#define uptr Py_uintptr_t
|
#define uptr uintptr_t
|
||||||
|
|
||||||
/* Forward declaration */
|
/* Forward declaration */
|
||||||
static void* _PyMem_DebugRawMalloc(void *ctx, size_t size);
|
static void* _PyMem_DebugRawMalloc(void *ctx, size_t size);
|
||||||
|
|
|
@ -33,12 +33,12 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*[python input]
|
/*[python input]
|
||||||
class Py_intptr_t_converter(CConverter):
|
class intptr_t_converter(CConverter):
|
||||||
type = 'Py_intptr_t'
|
type = 'intptr_t'
|
||||||
format_unit = '"_Py_PARSE_INTPTR"'
|
format_unit = '"_Py_PARSE_INTPTR"'
|
||||||
|
|
||||||
class handle_return_converter(long_return_converter):
|
class handle_return_converter(long_return_converter):
|
||||||
type = 'Py_intptr_t'
|
type = 'intptr_t'
|
||||||
cast = '(void *)'
|
cast = '(void *)'
|
||||||
conversion_fn = 'PyLong_FromVoidPtr'
|
conversion_fn = 'PyLong_FromVoidPtr'
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ msvcrt_setmode_impl(PyObject *module, int fd, int flags)
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
msvcrt.open_osfhandle -> long
|
msvcrt.open_osfhandle -> long
|
||||||
|
|
||||||
handle: Py_intptr_t
|
handle: intptr_t
|
||||||
flags: int
|
flags: int
|
||||||
/
|
/
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ to os.fdopen() to create a file object.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static long
|
static long
|
||||||
msvcrt_open_osfhandle_impl(PyObject *module, Py_intptr_t handle, int flags)
|
msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags)
|
||||||
/*[clinic end generated code: output=bf65e422243a39f9 input=4d8516ed32db8f65]*/
|
/*[clinic end generated code: output=bf65e422243a39f9 input=4d8516ed32db8f65]*/
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -183,11 +183,11 @@ Return the file handle for the file descriptor fd.
|
||||||
Raises IOError if fd is not recognized.
|
Raises IOError if fd is not recognized.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static Py_intptr_t
|
static intptr_t
|
||||||
msvcrt_get_osfhandle_impl(PyObject *module, int fd)
|
msvcrt_get_osfhandle_impl(PyObject *module, int fd)
|
||||||
/*[clinic end generated code: output=eac47643338c0baa input=c7d18d02c8017ec1]*/
|
/*[clinic end generated code: output=eac47643338c0baa input=c7d18d02c8017ec1]*/
|
||||||
{
|
{
|
||||||
Py_intptr_t handle = -1;
|
intptr_t handle = -1;
|
||||||
|
|
||||||
if (!_PyVerify_fd(fd)) {
|
if (!_PyVerify_fd(fd)) {
|
||||||
PyErr_SetFromErrno(PyExc_IOError);
|
PyErr_SetFromErrno(PyExc_IOError);
|
||||||
|
|
|
@ -63,7 +63,7 @@ addstate(dfa *d)
|
||||||
s->s_upper = 0;
|
s->s_upper = 0;
|
||||||
s->s_accel = NULL;
|
s->s_accel = NULL;
|
||||||
s->s_accept = 0;
|
s->s_accept = 0;
|
||||||
return Py_SAFE_DOWNCAST(s - d->d_state, Py_intptr_t, int);
|
return Py_SAFE_DOWNCAST(s - d->d_state, intptr_t, int);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -105,7 +105,7 @@ addlabel(labellist *ll, int type, const char *str)
|
||||||
if (Py_DebugFlag)
|
if (Py_DebugFlag)
|
||||||
printf("Label @ %8p, %d: %s\n", ll, ll->ll_nlabels,
|
printf("Label @ %8p, %d: %s\n", ll, ll->ll_nlabels,
|
||||||
PyGrammar_LabelRepr(lb));
|
PyGrammar_LabelRepr(lb));
|
||||||
return Py_SAFE_DOWNCAST(lb - ll->ll_label, Py_intptr_t, int);
|
return Py_SAFE_DOWNCAST(lb - ll->ll_label, intptr_t, int);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Same, but rather dies than adds */
|
/* Same, but rather dies than adds */
|
||||||
|
|
|
@ -255,7 +255,7 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
|
||||||
#endif
|
#endif
|
||||||
if (a >= tok->line_start)
|
if (a >= tok->line_start)
|
||||||
col_offset = Py_SAFE_DOWNCAST(a - tok->line_start,
|
col_offset = Py_SAFE_DOWNCAST(a - tok->line_start,
|
||||||
Py_intptr_t, int);
|
intptr_t, int);
|
||||||
else
|
else
|
||||||
col_offset = -1;
|
col_offset = -1;
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ static void drop_gil(PyThreadState *tstate)
|
||||||
/* Sub-interpreter support: threads might have been switched
|
/* Sub-interpreter support: threads might have been switched
|
||||||
under our feet using PyThreadState_Swap(). Fix the GIL last
|
under our feet using PyThreadState_Swap(). Fix the GIL last
|
||||||
holder variable so that our heuristics work. */
|
holder variable so that our heuristics work. */
|
||||||
_Py_atomic_store_relaxed(&gil_last_holder, (Py_uintptr_t)tstate);
|
_Py_atomic_store_relaxed(&gil_last_holder, (uintptr_t)tstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
MUTEX_LOCK(gil_mutex);
|
MUTEX_LOCK(gil_mutex);
|
||||||
|
@ -240,7 +240,7 @@ _ready:
|
||||||
_Py_ANNOTATE_RWLOCK_ACQUIRED(&gil_locked, /*is_write=*/1);
|
_Py_ANNOTATE_RWLOCK_ACQUIRED(&gil_locked, /*is_write=*/1);
|
||||||
|
|
||||||
if (tstate != (PyThreadState*)_Py_atomic_load_relaxed(&gil_last_holder)) {
|
if (tstate != (PyThreadState*)_Py_atomic_load_relaxed(&gil_last_holder)) {
|
||||||
_Py_atomic_store_relaxed(&gil_last_holder, (Py_uintptr_t)tstate);
|
_Py_atomic_store_relaxed(&gil_last_holder, (uintptr_t)tstate);
|
||||||
++gil_switch_number;
|
++gil_switch_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -476,9 +476,9 @@ compiler_unit_check(struct compiler_unit *u)
|
||||||
{
|
{
|
||||||
basicblock *block;
|
basicblock *block;
|
||||||
for (block = u->u_blocks; block != NULL; block = block->b_list) {
|
for (block = u->u_blocks; block != NULL; block = block->b_list) {
|
||||||
assert((Py_uintptr_t)block != 0xcbcbcbcbU);
|
assert((uintptr_t)block != 0xcbcbcbcbU);
|
||||||
assert((Py_uintptr_t)block != 0xfbfbfbfbU);
|
assert((uintptr_t)block != 0xfbfbfbfbU);
|
||||||
assert((Py_uintptr_t)block != 0xdbdbdbdbU);
|
assert((uintptr_t)block != 0xdbdbdbdbU);
|
||||||
if (block->b_instr != NULL) {
|
if (block->b_instr != NULL) {
|
||||||
assert(block->b_ialloc > 0);
|
assert(block->b_ialloc > 0);
|
||||||
assert(block->b_iused > 0);
|
assert(block->b_iused > 0);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#define GET_TSTATE() \
|
#define GET_TSTATE() \
|
||||||
((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
|
((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
|
||||||
#define SET_TSTATE(value) \
|
#define SET_TSTATE(value) \
|
||||||
_Py_atomic_store_relaxed(&_PyThreadState_Current, (Py_uintptr_t)(value))
|
_Py_atomic_store_relaxed(&_PyThreadState_Current, (uintptr_t)(value))
|
||||||
#define GET_INTERP_STATE() \
|
#define GET_INTERP_STATE() \
|
||||||
(GET_TSTATE()->interp)
|
(GET_TSTATE()->interp)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue