mirror of
https://github.com/python/cpython.git
synced 2025-10-02 21:25:24 +00:00
[3.12] GH-101291: Avoid using macros with casts in low-level long API. (GH-104742) (#104759)
(cherry picked from commit e295d86056
)
Co-authored-by: Mark Shannon <mark@hotpy.org>
This commit is contained in:
parent
905d419cac
commit
e43fbbd928
1 changed files with 3 additions and 2 deletions
|
@ -104,9 +104,10 @@ _PyLong_FromDigits(int negative, Py_ssize_t digit_count, digit *digits);
|
|||
#define _PyLong_SIGN_MASK 3
|
||||
#define _PyLong_NON_SIZE_BITS 3
|
||||
|
||||
|
||||
static inline int
|
||||
_PyLong_IsCompact(const PyLongObject* op) {
|
||||
assert(PyLong_Check(op));
|
||||
assert(PyType_HasFeature((op)->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
|
||||
return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
|
||||
}
|
||||
|
||||
|
@ -115,7 +116,7 @@ _PyLong_IsCompact(const PyLongObject* op) {
|
|||
static inline Py_ssize_t
|
||||
_PyLong_CompactValue(const PyLongObject *op)
|
||||
{
|
||||
assert(PyLong_Check(op));
|
||||
assert(PyType_HasFeature((op)->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
|
||||
assert(PyUnstable_Long_IsCompact(op));
|
||||
Py_ssize_t sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
|
||||
return sign * (Py_ssize_t)op->long_value.ob_digit[0];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue