diff options
author | Ken Jin <kenjin@python.org> | 2025-06-24 00:57:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-24 00:57:14 +0800 |
commit | 569fc6870f048cb75469ae3cacb6ebcf5172a10e (patch) | |
tree | 77886385cd62a79bedcbcce9aa622914bc4a9ab5 /Python/bytecodes.c | |
parent | 99712c45ccaab4bbe83eac38d73bab91bf0f4a02 (diff) | |
download | cpython-569fc6870f048cb75469ae3cacb6ebcf5172a10e.tar.gz cpython-569fc6870f048cb75469ae3cacb6ebcf5172a10e.zip |
gh-134584: Specialize POP_TOP by reference and type in JIT (GH-135761)
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r-- | Python/bytecodes.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 307844d38cc..535e552e047 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -344,6 +344,27 @@ dummy_func( PyStackRef_XCLOSE(value); } + op(_POP_TOP_NOP, (value --)) { + assert(PyStackRef_IsNull(value) || (!PyStackRef_RefcountOnObject(value)) || + _Py_IsImmortal((PyStackRef_AsPyObjectBorrow(value)))); + DEAD(value); + } + + op(_POP_TOP_INT, (value --)) { + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } + + op(_POP_TOP_FLOAT, (value --)) { + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); + } + + op(_POP_TOP_UNICODE, (value --)) { + assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc); + } + tier2 op(_POP_TWO, (nos, tos --)) { PyStackRef_CLOSE(tos); PyStackRef_CLOSE(nos); |