mirror of
https://github.com/python/cpython.git
synced 2025-08-26 11:45:20 +00:00
GH-131498: Another refactoring of the code generator (GH-131827)
* Rename 'defined' attribute to 'in_local' to more accurately reflect how it is used * Make death of variables explicit even for array variables. * Convert in_memory from boolean to stack offset * Don't apply liveness analyis to optimizer generated code * Add 'out' parameter to stack.pop
This commit is contained in:
parent
ba11f45dd9
commit
c535a132e4
11 changed files with 206 additions and 212 deletions
|
@ -1484,7 +1484,7 @@ dummy_func(
|
|||
(void)counter;
|
||||
}
|
||||
|
||||
op(_UNPACK_SEQUENCE, (seq -- output[oparg], top[0])) {
|
||||
op(_UNPACK_SEQUENCE, (seq -- unused[oparg], top[0])) {
|
||||
PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
|
||||
int res = _PyEval_UnpackIterableStackRef(tstate, seq_o, oparg, -1, top);
|
||||
Py_DECREF(seq_o);
|
||||
|
@ -1533,7 +1533,7 @@ dummy_func(
|
|||
DECREF_INPUTS();
|
||||
}
|
||||
|
||||
inst(UNPACK_EX, (seq -- left[oparg & 0xFF], unused, right[oparg >> 8], top[0])) {
|
||||
inst(UNPACK_EX, (seq -- unused[oparg & 0xFF], unused, unused[oparg >> 8], top[0])) {
|
||||
PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
|
||||
int res = _PyEval_UnpackIterableStackRef(tstate, seq_o, oparg & 0xFF, oparg >> 8, top);
|
||||
Py_DECREF(seq_o);
|
||||
|
|
10
Python/generated_cases.c.h
generated
10
Python/generated_cases.c.h
generated
|
@ -2608,9 +2608,9 @@
|
|||
_PyStackRef *callable;
|
||||
_PyStackRef *self_or_null;
|
||||
_PyStackRef *args;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef kwnames_in;
|
||||
_PyStackRef kwnames_out;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef res;
|
||||
// _SPECIALIZE_CALL_KW
|
||||
{
|
||||
|
@ -2791,9 +2791,9 @@
|
|||
static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
|
||||
_PyStackRef *callable;
|
||||
_PyStackRef *null;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef *self_or_null;
|
||||
_PyStackRef *args;
|
||||
_PyStackRef kwnames;
|
||||
_PyInterpreterFrame *new_frame;
|
||||
/* Skip 1 cache entry */
|
||||
// _CHECK_PEP_523
|
||||
|
@ -2924,9 +2924,9 @@
|
|||
opcode = CALL_KW_NON_PY;
|
||||
static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
|
||||
_PyStackRef *callable;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef *self_or_null;
|
||||
_PyStackRef *args;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef res;
|
||||
/* Skip 1 cache entry */
|
||||
/* Skip 2 cache entries */
|
||||
|
@ -3057,8 +3057,8 @@
|
|||
static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
|
||||
_PyStackRef *callable;
|
||||
_PyStackRef *self_or_null;
|
||||
_PyStackRef kwnames;
|
||||
_PyStackRef *args;
|
||||
_PyStackRef kwnames;
|
||||
_PyInterpreterFrame *new_frame;
|
||||
/* Skip 1 cache entry */
|
||||
// _CHECK_PEP_523
|
||||
|
@ -4682,8 +4682,8 @@
|
|||
PREDICTED_CONTAINS_OP:;
|
||||
_Py_CODEUNIT* const this_instr = next_instr - 2;
|
||||
(void)this_instr;
|
||||
_PyStackRef left;
|
||||
_PyStackRef right;
|
||||
_PyStackRef left;
|
||||
_PyStackRef b;
|
||||
// _SPECIALIZE_CONTAINS_OP
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue