PyObject * const *fastargs;
Py_ssize_t nargs = PyTuple_GET_SIZE(args);
Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
- PyObject *r = _PyLong_Zero;
+ PyObject *r = NULL;
PyObject *i = NULL;
fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf);
exit:
return return_value;
}
-/*[clinic end generated code: output=193a37aebaaa5f89 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=056cac3226d94967 input=a9049054013a1b77]*/
float_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
- PyObject *x = _PyLong_Zero;
+ PyObject *x = NULL;
if ((type == &PyFloat_Type) &&
!_PyArg_NoKeywords("float", kwargs)) {
exit:
return return_value;
}
-/*[clinic end generated code: output=25fbbe253f44e2df input=a9049054013a1b77]*/
+/*[clinic end generated code: output=bb079c3e130e4ce6 input=a9049054013a1b77]*/
/* Submitted by Jim Hugunin */
#include "Python.h"
+#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_object.h" // _PyObject_Init()
#include "structmember.h" // PyMemberDef
/*[clinic input]
@classmethod
complex.__new__ as complex_new
- real as r: object(c_default="_PyLong_Zero") = 0
+ real as r: object(c_default="NULL") = 0
imag as i: object(c_default="NULL") = 0
Create a complex number from a real part and an optional imaginary part.
static PyObject *
complex_new_impl(PyTypeObject *type, PyObject *r, PyObject *i)
-/*[clinic end generated code: output=b6c7dd577b537dc1 input=6f6b0bedba29bcb5]*/
+/*[clinic end generated code: output=b6c7dd577b537dc1 input=f4c667f2596d4fd1]*/
{
PyObject *tmp;
PyNumberMethods *nbr, *nbi = NULL;
int cr_is_complex = 0;
int ci_is_complex = 0;
+ if (r == NULL) {
+ r = _PyLong_GetZero();
+ }
+
/* Special-case for a single argument when type(arg) is complex. */
if (PyComplex_CheckExact(r) && i == NULL &&
type == &PyComplex_Type) {
/* enumerate object */
#include "Python.h"
+#include "pycore_long.h" // _PyLong_GetOne()
#include "clinic/enumobject.c.h"
}
next_index = en->en_longindex;
assert(next_index != NULL);
- stepped_up = PyNumber_Add(next_index, _PyLong_One);
+ stepped_up = PyNumber_Add(next_index, _PyLong_GetOne());
if (stepped_up == NULL) {
Py_DECREF(next_item);
return NULL;
#include "Python.h"
#include "pycore_dtoa.h" // _Py_dg_dtoa()
#include "pycore_interp.h" // _PyInterpreterState.float_state
+#include "pycore_long.h" // _PyLong_GetOne()
#include "pycore_object.h" // _PyObject_Init()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
Py_DECREF(vv);
vv = temp;
- temp = PyNumber_Or(vv, _PyLong_One);
+ temp = PyNumber_Or(vv, _PyLong_GetOne());
if (temp == NULL)
goto Error;
Py_DECREF(vv);
/*[clinic input]
@classmethod
float.__new__ as float_new
- x: object(c_default="_PyLong_Zero") = 0
+ x: object(c_default="NULL") = 0
/
Convert a string or number to a floating point number, if possible.
static PyObject *
float_new_impl(PyTypeObject *type, PyObject *x)
-/*[clinic end generated code: output=ccf1e8dc460ba6ba input=540ee77c204ff87a]*/
+/*[clinic end generated code: output=ccf1e8dc460ba6ba input=f43661b7de03e9d8]*/
{
- if (type != &PyFloat_Type)
+ if (type != &PyFloat_Type) {
+ if (x == NULL) {
+ x = _PyLong_GetZero();
+ }
return float_subtype_new(type, x); /* Wimp out */
+ }
+
+ if (x == NULL) {
+ return PyFloat_FromDouble(0.0);
+ }
/* If it's a string, but not a string subclass, use
PyFloat_FromString. */
if (PyUnicode_CheckExact(x))
return NULL;
}
- PyObject *x = nargs >= 1 ? args[0] : _PyLong_Zero;
+ PyObject *x = nargs >= 1 ? args[0] : NULL;
return float_new_impl((PyTypeObject *)type, x);
}
#include "Python.h"
#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_tuple.h" // _PyTuple_ITEMS()
#include "structmember.h" // PyMemberDef
if (!stop) {
return NULL;
}
- Py_INCREF(_PyLong_Zero);
- start = _PyLong_Zero;
- Py_INCREF(_PyLong_One);
- step = _PyLong_One;
+ start = _PyLong_GetZero();
+ Py_INCREF(start);
+ step = _PyLong_GetOne();
+ Py_INCREF(step);
break;
case 0:
PyErr_SetString(PyExc_TypeError,
PyObject *tmp1 = NULL, *tmp2 = NULL, *result;
/* holds sub-expression evaluations */
- cmp_result = PyObject_RichCompareBool(step, _PyLong_Zero, Py_GT);
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
+ PyObject *one = _PyLong_GetOne(); // borrowed reference
+
+ cmp_result = PyObject_RichCompareBool(step, zero, Py_GT);
if (cmp_result == -1)
return NULL;
Py_DECREF(step);
if (cmp_result < 0)
return NULL;
- return PyLong_FromLong(0);
+ result = zero;
+ Py_INCREF(result);
+ return result;
}
if ((tmp1 = PyNumber_Subtract(hi, lo)) == NULL)
goto Fail;
- if ((diff = PyNumber_Subtract(tmp1, _PyLong_One)) == NULL)
+ if ((diff = PyNumber_Subtract(tmp1, one)) == NULL)
goto Fail;
if ((tmp2 = PyNumber_FloorDivide(diff, step)) == NULL)
goto Fail;
- if ((result = PyNumber_Add(tmp2, _PyLong_One)) == NULL)
+ if ((result = PyNumber_Add(tmp2, one)) == NULL)
goto Fail;
Py_DECREF(tmp2);
/* PyLong equivalent to:
* return r->start + (i * r->step)
*/
- if (r->step == _PyLong_One) {
+ if (r->step == _PyLong_GetOne()) {
result = PyNumber_Add(r->start, i);
}
else {
static PyObject *
compute_range_item(rangeobject *r, PyObject *arg)
{
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
int cmp_result;
PyObject *i, *result;
* i = arg
* }
*/
- cmp_result = PyObject_RichCompareBool(arg, _PyLong_Zero, Py_LT);
+ cmp_result = PyObject_RichCompareBool(arg, zero, Py_LT);
if (cmp_result == -1) {
return NULL;
}
* <report index out of bounds>
* }
*/
- cmp_result = PyObject_RichCompareBool(i, _PyLong_Zero, Py_LT);
+ cmp_result = PyObject_RichCompareBool(i, zero, Py_LT);
if (cmp_result == 0) {
cmp_result = PyObject_RichCompareBool(i, r->length, Py_GE);
}
static int
range_contains_long(rangeobject *r, PyObject *ob)
{
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
int cmp1, cmp2, cmp3;
PyObject *tmp1 = NULL;
PyObject *tmp2 = NULL;
/* Check if the value can possibly be in the range. */
- cmp1 = PyObject_RichCompareBool(r->step, _PyLong_Zero, Py_GT);
+ cmp1 = PyObject_RichCompareBool(r->step, zero, Py_GT);
if (cmp1 == -1)
goto end;
if (cmp1 == 1) { /* positive steps: start <= ob < stop */
if (tmp2 == NULL)
goto end;
/* result = ((int(ob) - start) % step) == 0 */
- result = PyObject_RichCompareBool(tmp2, _PyLong_Zero, Py_EQ);
+ result = PyObject_RichCompareBool(tmp2, zero, Py_EQ);
end:
Py_XDECREF(tmp1);
Py_XDECREF(tmp2);
/* Return False or error to the caller. */
if (cmp_result != 1)
return cmp_result;
- cmp_result = PyObject_RichCompareBool(r0->length, _PyLong_One, Py_EQ);
+ cmp_result = PyObject_RichCompareBool(r0->length, _PyLong_GetOne(), Py_EQ);
/* Return True or error to the caller. */
if (cmp_result != 0)
return cmp_result;
else {
Py_INCREF(r->start);
PyTuple_SET_ITEM(t, 1, r->start);
- cmp_result = PyObject_RichCompareBool(r->length, _PyLong_One, Py_EQ);
+ cmp_result = PyObject_RichCompareBool(r->length, _PyLong_GetOne(), Py_EQ);
if (cmp_result == -1)
goto end;
if (cmp_result == 1) {
return NULL;
}
- if (r->step == _PyLong_One) {
+ if (r->step == _PyLong_GetOne()) {
return idx;
}
static PyObject *
longrangeiter_setstate(longrangeiterobject *r, PyObject *state)
{
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
int cmp;
/* clip the value */
- cmp = PyObject_RichCompareBool(state, _PyLong_Zero, Py_LT);
+ cmp = PyObject_RichCompareBool(state, zero, Py_LT);
if (cmp < 0)
return NULL;
if (cmp > 0) {
- state = _PyLong_Zero;
+ state = zero;
}
else {
cmp = PyObject_RichCompareBool(r->len, state, Py_LT);
if (PyObject_RichCompareBool(r->index, r->len, Py_LT) != 1)
return NULL;
- new_index = PyNumber_Add(r->index, _PyLong_One);
+ new_index = PyNumber_Add(r->index, _PyLong_GetOne());
if (!new_index)
return NULL;
it->start = r->start;
it->step = r->step;
it->len = r->length;
- it->index = _PyLong_Zero;
+ it->index = _PyLong_GetZero();
Py_INCREF(it->start);
Py_INCREF(it->step);
Py_INCREF(it->len);
it->len = range->length;
Py_INCREF(it->len);
- diff = PyNumber_Subtract(it->len, _PyLong_One);
+ diff = PyNumber_Subtract(it->len, _PyLong_GetOne());
if (!diff)
goto create_failure;
if (!it->step)
goto create_failure;
- it->index = _PyLong_Zero;
+ it->index = _PyLong_GetZero();
Py_INCREF(it->index);
return (PyObject *)it;
#include "Python.h"
#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "structmember.h" // PyMemberDef
/* Convert step to an integer; raise for zero step. */
if (self->step == Py_None) {
- step = _PyLong_One;
+ step = _PyLong_GetOne();
Py_INCREF(step);
step_is_negative = 0;
}
goto error;
}
else {
- lower = _PyLong_Zero;
+ lower = _PyLong_GetZero();
Py_INCREF(lower);
upper = length;
Py_INCREF(upper);
#include "Python.h"
#include "pycore_initconfig.h"
#include "pycore_interp.h" // PyInterpreterState.warnings
+#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_pyerrors.h"
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "frameobject.h" // PyFrame_GetBack()
/* This assumes the line number is zero for now. */
return PyTuple_Pack(5, action_str, Py_None,
- category, modname_obj, _PyLong_Zero);
+ category, modname_obj, _PyLong_GetZero());
}
#endif
int rc;
if (add_zero)
- altkey = PyTuple_Pack(3, text, category, _PyLong_Zero);
+ altkey = PyTuple_Pack(3, text, category, _PyLong_GetZero());
else
altkey = PyTuple_Pack(2, text, category);
*/
#include "Python.h"
+#include "pycore_long.h" // _PyLong_GetZero()
#include "Python-ast.h"
#include "ast.h"
compiler_unit_free(u);
return 0;
}
- res = PyDict_SetItem(u->u_cellvars, name, _PyLong_Zero);
+ res = PyDict_SetItem(u->u_cellvars, name, _PyLong_GetZero());
if (res < 0) {
compiler_unit_free(u);
return 0;
*/
Py_ssize_t i, n = asdl_seq_LEN(s->v.Import.names);
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
for (i = 0; i < n; i++) {
alias_ty alias = (alias_ty)asdl_seq_GET(s->v.Import.names, i);
int r;
- ADDOP_LOAD_CONST(c, _PyLong_Zero);
+ ADDOP_LOAD_CONST(c, zero);
ADDOP_LOAD_CONST(c, Py_None);
ADDOP_NAME(c, IMPORT_NAME, alias->name, names);