mirror of
https://github.com/python/cpython.git
synced 2026-02-27 17:41:12 +00:00
gh-134584: Eliminate redundant refcounting from TO_BOOL_STR (GH-143417)
Signed-off-by: Manjusaka <me@manjusaka.me>
This commit is contained in:
parent
98e55d70bc
commit
0a5c04a5ce
11 changed files with 138 additions and 82 deletions
|
|
@ -547,23 +547,16 @@ dummy_func(
|
|||
EXIT_IF(!PyUnicode_CheckExact(value_o));
|
||||
}
|
||||
|
||||
op(_TO_BOOL_STR, (value -- res)) {
|
||||
op(_TO_BOOL_STR, (value -- res, v)) {
|
||||
STAT_INC(TO_BOOL, hit);
|
||||
PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
|
||||
if (value_o == &_Py_STR(empty)) {
|
||||
assert(_Py_IsImmortal(value_o));
|
||||
DEAD(value);
|
||||
res = PyStackRef_False;
|
||||
}
|
||||
else {
|
||||
assert(Py_SIZE(value_o));
|
||||
PyStackRef_CLOSE(value);
|
||||
res = PyStackRef_True;
|
||||
}
|
||||
res = value_o == &_Py_STR(empty) ? PyStackRef_False : PyStackRef_True;
|
||||
v = value;
|
||||
DEAD(value);
|
||||
}
|
||||
|
||||
macro(TO_BOOL_STR) =
|
||||
_GUARD_TOS_UNICODE + unused/1 + unused/2 + _TO_BOOL_STR;
|
||||
_GUARD_TOS_UNICODE + unused/1 + unused/2 + _TO_BOOL_STR + _POP_TOP_UNICODE;
|
||||
|
||||
op(_REPLACE_WITH_TRUE, (value -- res, v)) {
|
||||
res = PyStackRef_True;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue