https://github.com/python/cpython/commit/f1a0d96f41db9dfa5d7f0b32e72f6f7301a86f91
commit: f1a0d96f41db9dfa5d7f0b32e72f6f7301a86f91
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2024-09-02T14:25:19+02:00
summary:
gh-123091: Use _Py_IsImmortalLoose() (#123511)
Use _Py_IsImmortalLoose() in bytesobject.c, typeobject.c
and ceval.c.
files:
M Include/internal/pycore_opcode_metadata.h
M Include/internal/pycore_uop_metadata.h
M Objects/bytesobject.c
M Objects/typeobject.c
M Python/bytecodes.c
M Python/executor_cases.c.h
M Python/generated_cases.c.h
diff --git a/Include/internal/pycore_opcode_metadata.h
b/Include/internal/pycore_opcode_metadata.h
index 97a8e4a00a9d55..51479afae3833d 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -1208,10 +1208,10 @@ const struct opcode_metadata
_PyOpcode_opcode_metadata[264] = {
[TO_BOOL] = { true, INSTR_FMT_IXC00, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[TO_BOOL_ALWAYS_TRUE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
[TO_BOOL_BOOL] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
- [TO_BOOL_INT] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
+ [TO_BOOL_INT] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG
},
[TO_BOOL_LIST] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
[TO_BOOL_NONE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
- [TO_BOOL_STR] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
+ [TO_BOOL_STR] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG
},
[UNARY_INVERT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[UNARY_NEGATIVE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG
},
[UNARY_NOT] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
diff --git a/Include/internal/pycore_uop_metadata.h
b/Include/internal/pycore_uop_metadata.h
index e2cba4dc0dfc81..4d0ab22e6aa8f3 100644
--- a/Include/internal/pycore_uop_metadata.h
+++ b/Include/internal/pycore_uop_metadata.h
@@ -54,10 +54,10 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_UNARY_NOT] = HAS_PURE_FLAG,
[_TO_BOOL] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_TO_BOOL_BOOL] = HAS_EXIT_FLAG,
- [_TO_BOOL_INT] = HAS_EXIT_FLAG,
+ [_TO_BOOL_INT] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG,
[_TO_BOOL_LIST] = HAS_EXIT_FLAG,
[_TO_BOOL_NONE] = HAS_EXIT_FLAG,
- [_TO_BOOL_STR] = HAS_EXIT_FLAG,
+ [_TO_BOOL_STR] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG,
[_REPLACE_WITH_TRUE] = 0,
[_UNARY_INVERT] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_BOTH_INT] = HAS_EXIT_FLAG,
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index 4a7c21f2f9d94c..ba6636808d90e0 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -46,7 +46,7 @@ Py_LOCAL_INLINE(Py_ssize_t)
_PyBytesWriter_GetSize(_PyBytesWriter *writer,
static inline PyObject* bytes_get_empty(void)
{
PyObject *empty = &EMPTY->ob_base.ob_base;
- assert(_Py_IsImmortal(empty));
+ assert(_Py_IsImmortalLoose(empty));
return empty;
}
@@ -119,7 +119,7 @@ PyBytes_FromStringAndSize(const char *str, Py_ssize_t size)
}
if (size == 1 && str != NULL) {
op = CHARACTER(*str & 255);
- assert(_Py_IsImmortal(op));
+ assert(_Py_IsImmortalLoose(op));
return (PyObject *)op;
}
if (size == 0) {
@@ -155,7 +155,7 @@ PyBytes_FromString(const char *str)
}
else if (size == 1) {
op = CHARACTER(*str & 255);
- assert(_Py_IsImmortal(op));
+ assert(_Py_IsImmortalLoose(op));
return (PyObject *)op;
}
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index d9c6b992bc747c..78f6931dc1d289 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -485,7 +485,7 @@ set_tp_bases(PyTypeObject *self, PyObject *bases, int
initial)
assert(PyTuple_GET_SIZE(bases) == 1);
assert(PyTuple_GET_ITEM(bases, 0) == (PyObject *)self->tp_base);
assert(self->tp_base->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
- assert(_Py_IsImmortal(self->tp_base));
+ assert(_Py_IsImmortalLoose(self->tp_base));
}
_Py_SetImmortal(bases);
}
@@ -502,7 +502,7 @@ clear_tp_bases(PyTypeObject *self, int final)
Py_CLEAR(self->tp_bases);
}
else {
- assert(_Py_IsImmortal(self->tp_bases));
+ assert(_Py_IsImmortalLoose(self->tp_bases));
_Py_ClearImmortal(self->tp_bases);
}
}
@@ -567,7 +567,7 @@ clear_tp_mro(PyTypeObject *self, int final)
Py_CLEAR(self->tp_mro);
}
else {
- assert(_Py_IsImmortal(self->tp_mro));
+ assert(_Py_IsImmortalLoose(self->tp_mro));
_Py_ClearImmortal(self->tp_mro);
}
}
@@ -5869,7 +5869,7 @@ fini_static_type(PyInterpreterState *interp, PyTypeObject
*type,
int isbuiltin, int final)
{
assert(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
- assert(_Py_IsImmortal((PyObject *)type));
+ assert(_Py_IsImmortalLoose((PyObject *)type));
type_dealloc_common(type);
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 01e88a34d10b6a..c4cc8127bafbb4 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -374,7 +374,7 @@ dummy_func(
EXIT_IF(!PyLong_CheckExact(value_o));
STAT_INC(TO_BOOL, hit);
if (_PyLong_IsZero((PyLongObject *)value_o)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
@@ -403,7 +403,7 @@ dummy_func(
EXIT_IF(!PyUnicode_CheckExact(value_o));
STAT_INC(TO_BOOL, hit);
if (value_o == &_Py_STR(empty)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 0de5c8a0408d8c..d4be7904a50c10 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -390,7 +390,7 @@
}
STAT_INC(TO_BOOL, hit);
if (_PyLong_IsZero((PyLongObject *)value_o)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
@@ -443,7 +443,7 @@
}
STAT_INC(TO_BOOL, hit);
if (value_o == &_Py_STR(empty)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index 9a751011678ed4..65dfb990cc2820 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -7330,7 +7330,7 @@
DEOPT_IF(!PyLong_CheckExact(value_o), TO_BOOL);
STAT_INC(TO_BOOL, hit);
if (_PyLong_IsZero((PyLongObject *)value_o)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
@@ -7392,7 +7392,7 @@
DEOPT_IF(!PyUnicode_CheckExact(value_o), TO_BOOL);
STAT_INC(TO_BOOL, hit);
if (value_o == &_Py_STR(empty)) {
- assert(_Py_IsImmortal(value_o));
+ assert(_Py_IsImmortalLoose(value_o));
res = PyStackRef_False;
}
else {
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]