Coverage Report

Created: 2026-09-06 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpython3/Include/cpython/longintrepr.h
Line
Count
Source
1
#ifndef Py_LIMITED_API
2
#ifndef Py_LONGINTREPR_H
3
#define Py_LONGINTREPR_H
4
#ifdef __cplusplus
5
extern "C" {
6
#endif
7
8
9
/* This is published for the benefit of "friends" marshal.c and _decimal.c. */
10
11
/* Parameters of the integer representation.  There are two different
12
   sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit
13
   integer type, and one set for 15-bit digits with each digit stored in an
14
   unsigned short.  The value of PYLONG_BITS_IN_DIGIT, defined either at
15
   configure time or in pyport.h, is used to decide which digit size to use.
16
17
   Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits'
18
   should be an unsigned integer type able to hold all integers up to
19
   PyLong_BASE*PyLong_BASE-1.  x_sub assumes that 'digit' is an unsigned type,
20
   and that overflow is handled by taking the result modulo 2**N for some N >
21
   PyLong_SHIFT.  The majority of the code doesn't care about the precise
22
   value of PyLong_SHIFT, but there are some notable exceptions:
23
24
   - PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8
25
26
   - long_hash() requires that PyLong_SHIFT is *strictly* less than the number
27
     of bits in an unsigned long, as do the PyLong <-> long (or unsigned long)
28
     conversion functions
29
30
   - the Python int <-> size_t/Py_ssize_t conversion functions expect that
31
     PyLong_SHIFT is strictly less than the number of bits in a size_t
32
33
   - the marshal code currently expects that PyLong_SHIFT is a multiple of 15
34
35
   - NSMALLNEGINTS and NSMALLPOSINTS should be small enough to fit in a single
36
     digit; with the current values this forces PyLong_SHIFT >= 9
37
38
  The values 15 and 30 should fit all of the above requirements, on any
39
  platform.
40
*/
41
42
#if PYLONG_BITS_IN_DIGIT == 30
43
typedef uint32_t digit;
44
typedef int32_t sdigit; /* signed variant of digit */
45
typedef uint64_t twodigits;
46
typedef int64_t stwodigits; /* signed variant of twodigits */
47
1.22G
#define PyLong_SHIFT    30
48
4.98M
#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
49
38.9M
#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
50
#elif PYLONG_BITS_IN_DIGIT == 15
51
typedef unsigned short digit;
52
typedef short sdigit; /* signed variant of digit */
53
typedef unsigned long twodigits;
54
typedef long stwodigits; /* signed variant of twodigits */
55
#define PyLong_SHIFT    15
56
#define _PyLong_DECIMAL_SHIFT   4 /* max(e such that 10**e fits in a digit) */
57
#define _PyLong_DECIMAL_BASE    ((digit)10000) /* 10 ** DECIMAL_SHIFT */
58
#else
59
#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
60
#endif
61
714M
#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
62
647M
#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
63
64
/* Long integer representation.
65
66
   Long integers are made up of a number of 30- or 15-bit digits, depending on
67
   the platform. The number of digits (ndigits) is stored in the high bits of
68
   the lv_tag field (lvtag >> _PyLong_NON_SIZE_BITS).
69
70
   The absolute value of a number is equal to
71
        SUM(for i=0 through ndigits-1) ob_digit[i] * 2**(PyLong_SHIFT*i)
72
73
   The sign of the value is stored in the lower 2 bits of lv_tag.
74
75
    - 0: Positive
76
    - 1: Zero
77
    - 2: Negative
78
79
   The third lowest bit of lv_tag is
80
   set to 1 for the small ints.
81
82
   In a normalized number, ob_digit[ndigits-1] (the most significant
83
   digit) is never zero.  Also, in all cases, for all valid i,
84
        0 <= ob_digit[i] <= PyLong_MASK.
85
86
   The allocation function takes care of allocating extra memory
87
   so that ob_digit[0] ... ob_digit[ndigits-1] are actually available.
88
   We always allocate memory for at least one digit, so accessing ob_digit[0]
89
   is always safe. However, in the case ndigits == 0, the contents of
90
   ob_digit[0] may be undefined.
91
*/
92
93
typedef struct _PyLongValue {
94
    uintptr_t lv_tag; /* Number of digits, sign and flags */
95
    digit ob_digit[1];
96
} _PyLongValue;
97
98
struct _longobject {
99
    PyObject_HEAD
100
    _PyLongValue long_value;
101
};
102
103
Py_DEPRECATED(3.14) PyAPI_FUNC(PyLongObject*) _PyLong_New(Py_ssize_t);
104
105
// Return a copy of src.
106
PyAPI_FUNC(PyObject*) _PyLong_Copy(PyLongObject *src);
107
108
Py_DEPRECATED(3.14) PyAPI_FUNC(PyLongObject*) _PyLong_FromDigits(
109
    int negative,
110
    Py_ssize_t digit_count,
111
    digit *digits);
112
113
114
/* Inline some internals for speed. These should be in pycore_long.h
115
 * if user code didn't need them inlined. */
116
117
672M
#define _PyLong_SIGN_MASK 3
118
1.51G
#define _PyLong_NON_SIZE_BITS 3
119
120
121
static inline int
122
1.51G
_PyLong_IsCompact(const PyLongObject* op) {
123
1.51G
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
1.51G
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
1.51G
}
Unexecuted instantiation: exceptions.c:_PyLong_IsCompact
Unexecuted instantiation: genericaliasobject.c:_PyLong_IsCompact
listobject.c:_PyLong_IsCompact
Line
Count
Source
122
59.2k
_PyLong_IsCompact(const PyLongObject* op) {
123
59.2k
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
59.2k
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
59.2k
}
longobject.c:_PyLong_IsCompact
Line
Count
Source
122
874M
_PyLong_IsCompact(const PyLongObject* op) {
123
874M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
874M
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
874M
}
Unexecuted instantiation: dictobject.c:_PyLong_IsCompact
Unexecuted instantiation: moduleobject.c:_PyLong_IsCompact
Unexecuted instantiation: object.c:_PyLong_IsCompact
Unexecuted instantiation: obmalloc.c:_PyLong_IsCompact
Unexecuted instantiation: picklebufobject.c:_PyLong_IsCompact
Unexecuted instantiation: rangeobject.c:_PyLong_IsCompact
Unexecuted instantiation: sentinelobject.c:_PyLong_IsCompact
Unexecuted instantiation: setobject.c:_PyLong_IsCompact
Unexecuted instantiation: sliceobject.c:_PyLong_IsCompact
Unexecuted instantiation: structseq.c:_PyLong_IsCompact
Unexecuted instantiation: templateobject.c:_PyLong_IsCompact
Unexecuted instantiation: tupleobject.c:_PyLong_IsCompact
Unexecuted instantiation: typeobject.c:_PyLong_IsCompact
Unexecuted instantiation: typevarobject.c:_PyLong_IsCompact
Unexecuted instantiation: unicode_formatter.c:_PyLong_IsCompact
Unexecuted instantiation: unicode_writer.c:_PyLong_IsCompact
Unexecuted instantiation: unicodectype.c:_PyLong_IsCompact
Unexecuted instantiation: unicodeobject.c:_PyLong_IsCompact
Unexecuted instantiation: unionobject.c:_PyLong_IsCompact
Unexecuted instantiation: weakrefobject.c:_PyLong_IsCompact
Unexecuted instantiation: _warnings.c:_PyLong_IsCompact
bltinmodule.c:_PyLong_IsCompact
Line
Count
Source
122
98.7k
_PyLong_IsCompact(const PyLongObject* op) {
123
98.7k
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
98.7k
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
98.7k
}
ceval.c:_PyLong_IsCompact
Line
Count
Source
122
582M
_PyLong_IsCompact(const PyLongObject* op) {
123
582M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
582M
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
582M
}
Unexecuted instantiation: codecs.c:_PyLong_IsCompact
Unexecuted instantiation: codegen.c:_PyLong_IsCompact
Unexecuted instantiation: compile.c:_PyLong_IsCompact
Unexecuted instantiation: context.c:_PyLong_IsCompact
Unexecuted instantiation: errors.c:_PyLong_IsCompact
Unexecuted instantiation: flowgraph.c:_PyLong_IsCompact
Unexecuted instantiation: frame.c:_PyLong_IsCompact
Unexecuted instantiation: future.c:_PyLong_IsCompact
Unexecuted instantiation: gc.c:_PyLong_IsCompact
Unexecuted instantiation: gc_gil.c:_PyLong_IsCompact
Unexecuted instantiation: getargs.c:_PyLong_IsCompact
Unexecuted instantiation: ceval_gil.c:_PyLong_IsCompact
Unexecuted instantiation: hamt.c:_PyLong_IsCompact
Unexecuted instantiation: hashtable.c:_PyLong_IsCompact
Unexecuted instantiation: import.c:_PyLong_IsCompact
Unexecuted instantiation: importdl.c:_PyLong_IsCompact
Unexecuted instantiation: initconfig.c:_PyLong_IsCompact
Unexecuted instantiation: instrumentation.c:_PyLong_IsCompact
Unexecuted instantiation: instruction_sequence.c:_PyLong_IsCompact
Unexecuted instantiation: intrinsics.c:_PyLong_IsCompact
Unexecuted instantiation: legacy_tracing.c:_PyLong_IsCompact
Unexecuted instantiation: lock.c:_PyLong_IsCompact
Unexecuted instantiation: marshal.c:_PyLong_IsCompact
Unexecuted instantiation: modsupport.c:_PyLong_IsCompact
Unexecuted instantiation: mysnprintf.c:_PyLong_IsCompact
Unexecuted instantiation: parking_lot.c:_PyLong_IsCompact
Unexecuted instantiation: preconfig.c:_PyLong_IsCompact
Unexecuted instantiation: pyarena.c:_PyLong_IsCompact
Unexecuted instantiation: pyctype.c:_PyLong_IsCompact
Unexecuted instantiation: pyhash.c:_PyLong_IsCompact
Unexecuted instantiation: pylifecycle.c:_PyLong_IsCompact
Unexecuted instantiation: pystate.c:_PyLong_IsCompact
Unexecuted instantiation: pythonrun.c:_PyLong_IsCompact
Unexecuted instantiation: pytime.c:_PyLong_IsCompact
Unexecuted instantiation: qsbr.c:_PyLong_IsCompact
Unexecuted instantiation: bootstrap_hash.c:_PyLong_IsCompact
specialize.c:_PyLong_IsCompact
Line
Count
Source
122
52.8M
_PyLong_IsCompact(const PyLongObject* op) {
123
52.8M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
124
52.8M
    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
125
52.8M
}
Unexecuted instantiation: slots.c:_PyLong_IsCompact
Unexecuted instantiation: slots_generated.c:_PyLong_IsCompact
Unexecuted instantiation: structmember.c:_PyLong_IsCompact
Unexecuted instantiation: symtable.c:_PyLong_IsCompact
Unexecuted instantiation: sysmodule.c:_PyLong_IsCompact
Unexecuted instantiation: thread.c:_PyLong_IsCompact
Unexecuted instantiation: traceback.c:_PyLong_IsCompact
Unexecuted instantiation: tracemalloc.c:_PyLong_IsCompact
Unexecuted instantiation: typecache.c:_PyLong_IsCompact
Unexecuted instantiation: getopt.c:_PyLong_IsCompact
Unexecuted instantiation: pystrcmp.c:_PyLong_IsCompact
Unexecuted instantiation: pystrtod.c:_PyLong_IsCompact
Unexecuted instantiation: dtoa.c:_PyLong_IsCompact
Unexecuted instantiation: fileutils.c:_PyLong_IsCompact
Unexecuted instantiation: suggestions.c:_PyLong_IsCompact
Unexecuted instantiation: perf_trampoline.c:_PyLong_IsCompact
Unexecuted instantiation: perf_jit_trampoline.c:_PyLong_IsCompact
Unexecuted instantiation: jit_unwind.c:_PyLong_IsCompact
Unexecuted instantiation: remote_debugging.c:_PyLong_IsCompact
Unexecuted instantiation: dynload_shlib.c:_PyLong_IsCompact
Unexecuted instantiation: config.c:_PyLong_IsCompact
Unexecuted instantiation: gcmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _asynciomodule.c:_PyLong_IsCompact
Unexecuted instantiation: atexitmodule.c:_PyLong_IsCompact
Unexecuted instantiation: faulthandler.c:_PyLong_IsCompact
Unexecuted instantiation: posixmodule.c:_PyLong_IsCompact
Unexecuted instantiation: signalmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _tracemalloc.c:_PyLong_IsCompact
Unexecuted instantiation: _suggestions.c:_PyLong_IsCompact
Unexecuted instantiation: _datetimemodule.c:_PyLong_IsCompact
Unexecuted instantiation: _codecsmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _collectionsmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _iomodule.c:_PyLong_IsCompact
Unexecuted instantiation: iobase.c:_PyLong_IsCompact
Unexecuted instantiation: fileio.c:_PyLong_IsCompact
Unexecuted instantiation: bytesio.c:_PyLong_IsCompact
Unexecuted instantiation: bufferedio.c:_PyLong_IsCompact
Unexecuted instantiation: textio.c:_PyLong_IsCompact
Unexecuted instantiation: stringio.c:_PyLong_IsCompact
Unexecuted instantiation: itertoolsmodule.c:_PyLong_IsCompact
Unexecuted instantiation: sre.c:_PyLong_IsCompact
Unexecuted instantiation: _sysconfig.c:_PyLong_IsCompact
Unexecuted instantiation: _threadmodule.c:_PyLong_IsCompact
Unexecuted instantiation: timemodule.c:_PyLong_IsCompact
Unexecuted instantiation: _typesmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _typingmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _weakref.c:_PyLong_IsCompact
Unexecuted instantiation: _abc.c:_PyLong_IsCompact
Unexecuted instantiation: _functoolsmodule.c:_PyLong_IsCompact
Unexecuted instantiation: _localemodule.c:_PyLong_IsCompact
Unexecuted instantiation: _opcode.c:_PyLong_IsCompact
Unexecuted instantiation: _operator.c:_PyLong_IsCompact
Unexecuted instantiation: symtablemodule.c:_PyLong_IsCompact
Unexecuted instantiation: pwdmodule.c:_PyLong_IsCompact
Unexecuted instantiation: getpath.c:_PyLong_IsCompact
Unexecuted instantiation: frozen.c:_PyLong_IsCompact
Unexecuted instantiation: getbuildinfo.c:_PyLong_IsCompact
Unexecuted instantiation: peg_api.c:_PyLong_IsCompact
Unexecuted instantiation: reader.c:_PyLong_IsCompact
Unexecuted instantiation: source.c:_PyLong_IsCompact
Unexecuted instantiation: helpers.c:_PyLong_IsCompact
Unexecuted instantiation: myreadline.c:_PyLong_IsCompact
Unexecuted instantiation: abstract.c:_PyLong_IsCompact
Unexecuted instantiation: boolobject.c:_PyLong_IsCompact
Unexecuted instantiation: bytes_methods.c:_PyLong_IsCompact
Unexecuted instantiation: bytearrayobject.c:_PyLong_IsCompact
Unexecuted instantiation: bytesobject.c:_PyLong_IsCompact
Unexecuted instantiation: call.c:_PyLong_IsCompact
Unexecuted instantiation: capsule.c:_PyLong_IsCompact
Unexecuted instantiation: cellobject.c:_PyLong_IsCompact
Unexecuted instantiation: classobject.c:_PyLong_IsCompact
Unexecuted instantiation: codeobject.c:_PyLong_IsCompact
Unexecuted instantiation: complexobject.c:_PyLong_IsCompact
Unexecuted instantiation: descrobject.c:_PyLong_IsCompact
Unexecuted instantiation: enumobject.c:_PyLong_IsCompact
Unexecuted instantiation: genobject.c:_PyLong_IsCompact
Unexecuted instantiation: fileobject.c:_PyLong_IsCompact
Unexecuted instantiation: floatobject.c:_PyLong_IsCompact
Unexecuted instantiation: frameobject.c:_PyLong_IsCompact
Unexecuted instantiation: funcobject.c:_PyLong_IsCompact
Unexecuted instantiation: interpolationobject.c:_PyLong_IsCompact
Unexecuted instantiation: iterobject.c:_PyLong_IsCompact
Unexecuted instantiation: lazyimportobject.c:_PyLong_IsCompact
Unexecuted instantiation: odictobject.c:_PyLong_IsCompact
Unexecuted instantiation: memoryobject.c:_PyLong_IsCompact
Unexecuted instantiation: methodobject.c:_PyLong_IsCompact
Unexecuted instantiation: namespaceobject.c:_PyLong_IsCompact
Unexecuted instantiation: unicode_format.c:_PyLong_IsCompact
Unexecuted instantiation: _contextvars.c:_PyLong_IsCompact
Unexecuted instantiation: Python-ast.c:_PyLong_IsCompact
Unexecuted instantiation: Python-tokenize.c:_PyLong_IsCompact
Unexecuted instantiation: asdl.c:_PyLong_IsCompact
Unexecuted instantiation: assemble.c:_PyLong_IsCompact
Unexecuted instantiation: ast.c:_PyLong_IsCompact
Unexecuted instantiation: ast_preprocess.c:_PyLong_IsCompact
Unexecuted instantiation: ast_unparse.c:_PyLong_IsCompact
Unexecuted instantiation: critical_section.c:_PyLong_IsCompact
Unexecuted instantiation: crossinterp.c:_PyLong_IsCompact
Unexecuted instantiation: getcopyright.c:_PyLong_IsCompact
Unexecuted instantiation: getplatform.c:_PyLong_IsCompact
Unexecuted instantiation: getversion.c:_PyLong_IsCompact
Unexecuted instantiation: optimizer.c:_PyLong_IsCompact
Unexecuted instantiation: pathconfig.c:_PyLong_IsCompact
Unexecuted instantiation: pymath.c:_PyLong_IsCompact
Unexecuted instantiation: pystrhex.c:_PyLong_IsCompact
Unexecuted instantiation: pegen.c:_PyLong_IsCompact
Unexecuted instantiation: pegen_errors.c:_PyLong_IsCompact
Unexecuted instantiation: parser.c:_PyLong_IsCompact
Unexecuted instantiation: buffer.c:_PyLong_IsCompact
Unexecuted instantiation: lexer.c:_PyLong_IsCompact
Unexecuted instantiation: number.c:_PyLong_IsCompact
Unexecuted instantiation: state.c:_PyLong_IsCompact
Unexecuted instantiation: string.c:_PyLong_IsCompact
Unexecuted instantiation: decoder.c:_PyLong_IsCompact
Unexecuted instantiation: getcompiler.c:_PyLong_IsCompact
Unexecuted instantiation: mystrtoul.c:_PyLong_IsCompact
Unexecuted instantiation: token.c:_PyLong_IsCompact
Unexecuted instantiation: action_helpers.c:_PyLong_IsCompact
Unexecuted instantiation: string_parser.c:_PyLong_IsCompact
126
127
#define PyUnstable_Long_IsCompact _PyLong_IsCompact
128
129
static inline Py_ssize_t
130
_PyLong_CompactValue(const PyLongObject *op)
131
672M
{
132
672M
    Py_ssize_t sign;
133
672M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
672M
    assert(PyUnstable_Long_IsCompact(op));
135
672M
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
672M
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
73.0M
        assert(op->long_value.ob_digit[0] == 0);
140
73.0M
    }
141
672M
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
672M
}
Unexecuted instantiation: exceptions.c:_PyLong_CompactValue
Unexecuted instantiation: genericaliasobject.c:_PyLong_CompactValue
listobject.c:_PyLong_CompactValue
Line
Count
Source
131
24.0k
{
132
24.0k
    Py_ssize_t sign;
133
24.0k
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
24.0k
    assert(PyUnstable_Long_IsCompact(op));
135
24.0k
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
24.0k
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
0
        assert(op->long_value.ob_digit[0] == 0);
140
0
    }
141
24.0k
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
24.0k
}
longobject.c:_PyLong_CompactValue
Line
Count
Source
131
523M
{
132
523M
    Py_ssize_t sign;
133
523M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
523M
    assert(PyUnstable_Long_IsCompact(op));
135
523M
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
523M
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
48.1M
        assert(op->long_value.ob_digit[0] == 0);
140
48.1M
    }
141
523M
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
523M
}
Unexecuted instantiation: dictobject.c:_PyLong_CompactValue
Unexecuted instantiation: moduleobject.c:_PyLong_CompactValue
Unexecuted instantiation: object.c:_PyLong_CompactValue
Unexecuted instantiation: obmalloc.c:_PyLong_CompactValue
Unexecuted instantiation: picklebufobject.c:_PyLong_CompactValue
Unexecuted instantiation: rangeobject.c:_PyLong_CompactValue
Unexecuted instantiation: sentinelobject.c:_PyLong_CompactValue
Unexecuted instantiation: setobject.c:_PyLong_CompactValue
Unexecuted instantiation: sliceobject.c:_PyLong_CompactValue
Unexecuted instantiation: structseq.c:_PyLong_CompactValue
Unexecuted instantiation: templateobject.c:_PyLong_CompactValue
Unexecuted instantiation: tupleobject.c:_PyLong_CompactValue
Unexecuted instantiation: typeobject.c:_PyLong_CompactValue
Unexecuted instantiation: typevarobject.c:_PyLong_CompactValue
Unexecuted instantiation: unicode_formatter.c:_PyLong_CompactValue
Unexecuted instantiation: unicode_writer.c:_PyLong_CompactValue
Unexecuted instantiation: unicodectype.c:_PyLong_CompactValue
Unexecuted instantiation: unicodeobject.c:_PyLong_CompactValue
Unexecuted instantiation: unionobject.c:_PyLong_CompactValue
Unexecuted instantiation: weakrefobject.c:_PyLong_CompactValue
Unexecuted instantiation: _warnings.c:_PyLong_CompactValue
bltinmodule.c:_PyLong_CompactValue
Line
Count
Source
131
49.3k
{
132
49.3k
    Py_ssize_t sign;
133
49.3k
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
49.3k
    assert(PyUnstable_Long_IsCompact(op));
135
49.3k
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
49.3k
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
29.2k
        assert(op->long_value.ob_digit[0] == 0);
140
29.2k
    }
141
49.3k
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
49.3k
}
ceval.c:_PyLong_CompactValue
Line
Count
Source
131
121M
{
132
121M
    Py_ssize_t sign;
133
121M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
121M
    assert(PyUnstable_Long_IsCompact(op));
135
121M
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
121M
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
21.4M
        assert(op->long_value.ob_digit[0] == 0);
140
21.4M
    }
141
121M
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
121M
}
Unexecuted instantiation: codecs.c:_PyLong_CompactValue
Unexecuted instantiation: codegen.c:_PyLong_CompactValue
Unexecuted instantiation: compile.c:_PyLong_CompactValue
Unexecuted instantiation: context.c:_PyLong_CompactValue
Unexecuted instantiation: errors.c:_PyLong_CompactValue
Unexecuted instantiation: flowgraph.c:_PyLong_CompactValue
Unexecuted instantiation: frame.c:_PyLong_CompactValue
Unexecuted instantiation: future.c:_PyLong_CompactValue
Unexecuted instantiation: gc.c:_PyLong_CompactValue
Unexecuted instantiation: gc_gil.c:_PyLong_CompactValue
Unexecuted instantiation: getargs.c:_PyLong_CompactValue
Unexecuted instantiation: ceval_gil.c:_PyLong_CompactValue
Unexecuted instantiation: hamt.c:_PyLong_CompactValue
Unexecuted instantiation: hashtable.c:_PyLong_CompactValue
Unexecuted instantiation: import.c:_PyLong_CompactValue
Unexecuted instantiation: importdl.c:_PyLong_CompactValue
Unexecuted instantiation: initconfig.c:_PyLong_CompactValue
Unexecuted instantiation: instrumentation.c:_PyLong_CompactValue
Unexecuted instantiation: instruction_sequence.c:_PyLong_CompactValue
Unexecuted instantiation: intrinsics.c:_PyLong_CompactValue
Unexecuted instantiation: legacy_tracing.c:_PyLong_CompactValue
Unexecuted instantiation: lock.c:_PyLong_CompactValue
Unexecuted instantiation: marshal.c:_PyLong_CompactValue
Unexecuted instantiation: modsupport.c:_PyLong_CompactValue
Unexecuted instantiation: mysnprintf.c:_PyLong_CompactValue
Unexecuted instantiation: parking_lot.c:_PyLong_CompactValue
Unexecuted instantiation: preconfig.c:_PyLong_CompactValue
Unexecuted instantiation: pyarena.c:_PyLong_CompactValue
Unexecuted instantiation: pyctype.c:_PyLong_CompactValue
Unexecuted instantiation: pyhash.c:_PyLong_CompactValue
Unexecuted instantiation: pylifecycle.c:_PyLong_CompactValue
Unexecuted instantiation: pystate.c:_PyLong_CompactValue
Unexecuted instantiation: pythonrun.c:_PyLong_CompactValue
Unexecuted instantiation: pytime.c:_PyLong_CompactValue
Unexecuted instantiation: qsbr.c:_PyLong_CompactValue
Unexecuted instantiation: bootstrap_hash.c:_PyLong_CompactValue
specialize.c:_PyLong_CompactValue
Line
Count
Source
131
26.3M
{
132
26.3M
    Py_ssize_t sign;
133
26.3M
    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
134
26.3M
    assert(PyUnstable_Long_IsCompact(op));
135
26.3M
    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
136
26.3M
    if (sign == 0) {
137
        // gh-147988: Make sure that the digit is zero.
138
        // It helps detecting the usage of uninitialized digits.
139
3.37M
        assert(op->long_value.ob_digit[0] == 0);
140
3.37M
    }
141
26.3M
    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
142
26.3M
}
Unexecuted instantiation: slots.c:_PyLong_CompactValue
Unexecuted instantiation: slots_generated.c:_PyLong_CompactValue
Unexecuted instantiation: structmember.c:_PyLong_CompactValue
Unexecuted instantiation: symtable.c:_PyLong_CompactValue
Unexecuted instantiation: sysmodule.c:_PyLong_CompactValue
Unexecuted instantiation: thread.c:_PyLong_CompactValue
Unexecuted instantiation: traceback.c:_PyLong_CompactValue
Unexecuted instantiation: tracemalloc.c:_PyLong_CompactValue
Unexecuted instantiation: typecache.c:_PyLong_CompactValue
Unexecuted instantiation: getopt.c:_PyLong_CompactValue
Unexecuted instantiation: pystrcmp.c:_PyLong_CompactValue
Unexecuted instantiation: pystrtod.c:_PyLong_CompactValue
Unexecuted instantiation: dtoa.c:_PyLong_CompactValue
Unexecuted instantiation: fileutils.c:_PyLong_CompactValue
Unexecuted instantiation: suggestions.c:_PyLong_CompactValue
Unexecuted instantiation: perf_trampoline.c:_PyLong_CompactValue
Unexecuted instantiation: perf_jit_trampoline.c:_PyLong_CompactValue
Unexecuted instantiation: jit_unwind.c:_PyLong_CompactValue
Unexecuted instantiation: remote_debugging.c:_PyLong_CompactValue
Unexecuted instantiation: dynload_shlib.c:_PyLong_CompactValue
Unexecuted instantiation: config.c:_PyLong_CompactValue
Unexecuted instantiation: gcmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _asynciomodule.c:_PyLong_CompactValue
Unexecuted instantiation: atexitmodule.c:_PyLong_CompactValue
Unexecuted instantiation: faulthandler.c:_PyLong_CompactValue
Unexecuted instantiation: posixmodule.c:_PyLong_CompactValue
Unexecuted instantiation: signalmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _tracemalloc.c:_PyLong_CompactValue
Unexecuted instantiation: _suggestions.c:_PyLong_CompactValue
Unexecuted instantiation: _datetimemodule.c:_PyLong_CompactValue
Unexecuted instantiation: _codecsmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _collectionsmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _iomodule.c:_PyLong_CompactValue
Unexecuted instantiation: iobase.c:_PyLong_CompactValue
Unexecuted instantiation: fileio.c:_PyLong_CompactValue
Unexecuted instantiation: bytesio.c:_PyLong_CompactValue
Unexecuted instantiation: bufferedio.c:_PyLong_CompactValue
Unexecuted instantiation: textio.c:_PyLong_CompactValue
Unexecuted instantiation: stringio.c:_PyLong_CompactValue
Unexecuted instantiation: itertoolsmodule.c:_PyLong_CompactValue
Unexecuted instantiation: sre.c:_PyLong_CompactValue
Unexecuted instantiation: _sysconfig.c:_PyLong_CompactValue
Unexecuted instantiation: _threadmodule.c:_PyLong_CompactValue
Unexecuted instantiation: timemodule.c:_PyLong_CompactValue
Unexecuted instantiation: _typesmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _typingmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _weakref.c:_PyLong_CompactValue
Unexecuted instantiation: _abc.c:_PyLong_CompactValue
Unexecuted instantiation: _functoolsmodule.c:_PyLong_CompactValue
Unexecuted instantiation: _localemodule.c:_PyLong_CompactValue
Unexecuted instantiation: _opcode.c:_PyLong_CompactValue
Unexecuted instantiation: _operator.c:_PyLong_CompactValue
Unexecuted instantiation: symtablemodule.c:_PyLong_CompactValue
Unexecuted instantiation: pwdmodule.c:_PyLong_CompactValue
Unexecuted instantiation: getpath.c:_PyLong_CompactValue
Unexecuted instantiation: frozen.c:_PyLong_CompactValue
Unexecuted instantiation: getbuildinfo.c:_PyLong_CompactValue
Unexecuted instantiation: peg_api.c:_PyLong_CompactValue
Unexecuted instantiation: reader.c:_PyLong_CompactValue
Unexecuted instantiation: source.c:_PyLong_CompactValue
Unexecuted instantiation: helpers.c:_PyLong_CompactValue
Unexecuted instantiation: myreadline.c:_PyLong_CompactValue
Unexecuted instantiation: abstract.c:_PyLong_CompactValue
Unexecuted instantiation: boolobject.c:_PyLong_CompactValue
Unexecuted instantiation: bytes_methods.c:_PyLong_CompactValue
Unexecuted instantiation: bytearrayobject.c:_PyLong_CompactValue
Unexecuted instantiation: bytesobject.c:_PyLong_CompactValue
Unexecuted instantiation: call.c:_PyLong_CompactValue
Unexecuted instantiation: capsule.c:_PyLong_CompactValue
Unexecuted instantiation: cellobject.c:_PyLong_CompactValue
Unexecuted instantiation: classobject.c:_PyLong_CompactValue
Unexecuted instantiation: codeobject.c:_PyLong_CompactValue
Unexecuted instantiation: complexobject.c:_PyLong_CompactValue
Unexecuted instantiation: descrobject.c:_PyLong_CompactValue
Unexecuted instantiation: enumobject.c:_PyLong_CompactValue
Unexecuted instantiation: genobject.c:_PyLong_CompactValue
Unexecuted instantiation: fileobject.c:_PyLong_CompactValue
Unexecuted instantiation: floatobject.c:_PyLong_CompactValue
Unexecuted instantiation: frameobject.c:_PyLong_CompactValue
Unexecuted instantiation: funcobject.c:_PyLong_CompactValue
Unexecuted instantiation: interpolationobject.c:_PyLong_CompactValue
Unexecuted instantiation: iterobject.c:_PyLong_CompactValue
Unexecuted instantiation: lazyimportobject.c:_PyLong_CompactValue
Unexecuted instantiation: odictobject.c:_PyLong_CompactValue
Unexecuted instantiation: memoryobject.c:_PyLong_CompactValue
Unexecuted instantiation: methodobject.c:_PyLong_CompactValue
Unexecuted instantiation: namespaceobject.c:_PyLong_CompactValue
Unexecuted instantiation: unicode_format.c:_PyLong_CompactValue
Unexecuted instantiation: _contextvars.c:_PyLong_CompactValue
Unexecuted instantiation: Python-ast.c:_PyLong_CompactValue
Unexecuted instantiation: Python-tokenize.c:_PyLong_CompactValue
Unexecuted instantiation: asdl.c:_PyLong_CompactValue
Unexecuted instantiation: assemble.c:_PyLong_CompactValue
Unexecuted instantiation: ast.c:_PyLong_CompactValue
Unexecuted instantiation: ast_preprocess.c:_PyLong_CompactValue
Unexecuted instantiation: ast_unparse.c:_PyLong_CompactValue
Unexecuted instantiation: critical_section.c:_PyLong_CompactValue
Unexecuted instantiation: crossinterp.c:_PyLong_CompactValue
Unexecuted instantiation: getcopyright.c:_PyLong_CompactValue
Unexecuted instantiation: getplatform.c:_PyLong_CompactValue
Unexecuted instantiation: getversion.c:_PyLong_CompactValue
Unexecuted instantiation: optimizer.c:_PyLong_CompactValue
Unexecuted instantiation: pathconfig.c:_PyLong_CompactValue
Unexecuted instantiation: pymath.c:_PyLong_CompactValue
Unexecuted instantiation: pystrhex.c:_PyLong_CompactValue
Unexecuted instantiation: pegen.c:_PyLong_CompactValue
Unexecuted instantiation: pegen_errors.c:_PyLong_CompactValue
Unexecuted instantiation: parser.c:_PyLong_CompactValue
Unexecuted instantiation: buffer.c:_PyLong_CompactValue
Unexecuted instantiation: lexer.c:_PyLong_CompactValue
Unexecuted instantiation: number.c:_PyLong_CompactValue
Unexecuted instantiation: state.c:_PyLong_CompactValue
Unexecuted instantiation: string.c:_PyLong_CompactValue
Unexecuted instantiation: decoder.c:_PyLong_CompactValue
Unexecuted instantiation: getcompiler.c:_PyLong_CompactValue
Unexecuted instantiation: mystrtoul.c:_PyLong_CompactValue
Unexecuted instantiation: token.c:_PyLong_CompactValue
Unexecuted instantiation: action_helpers.c:_PyLong_CompactValue
Unexecuted instantiation: string_parser.c:_PyLong_CompactValue
143
144
#define PyUnstable_Long_CompactValue _PyLong_CompactValue
145
146
#ifdef __cplusplus
147
}
148
#endif
149
#endif /* !Py_LONGINTREPR_H */
150
#endif /* Py_LIMITED_API */