diff options
| author | Mark Shannon <mark@hotpy.org> | 2024-03-15 17:16:30 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-15 17:16:30 (GMT) |
| commit | 950667ed0737144666ea8e1ec1a7e9de2e49a628 (patch) | |
| tree | 5203e103d34aa5d2e5f55c3dfff519dd8551ebb4 /Python/generated_cases.c.h | |
| parent | 280de3661b42af9b3fe792764d0b09f403df5223 (diff) | |
| download | cpython-950667ed0737144666ea8e1ec1a7e9de2e49a628.zip cpython-950667ed0737144666ea8e1ec1a7e9de2e49a628.tar.gz cpython-950667ed0737144666ea8e1ec1a7e9de2e49a628.tar.bz2 | |
GH-115802: Reduce the size of _INIT_CALL_PY_EXACT_ARGS. (GH-116856)
Diffstat (limited to 'Python/generated_cases.c.h')
| -rw-r--r-- | Python/generated_cases.c.h | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 82d7b76..2996ee7 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -968,16 +968,14 @@ args = &stack_pointer[-oparg]; self_or_null = stack_pointer[-1 - oparg]; { - int argcount = oparg; - if (self_or_null != NULL) { - args--; - argcount++; - } + int has_self = (self_or_null != NULL); STAT_INC(CALL, hit); PyFunctionObject *func = (PyFunctionObject *)callable; - new_frame = _PyFrame_PushUnchecked(tstate, func, argcount); - for (int i = 0; i < argcount; i++) { - new_frame->localsplus[i] = args[i]; + new_frame = _PyFrame_PushUnchecked(tstate, func, oparg + has_self); + PyObject **first_non_self_local = new_frame->localsplus + has_self; + new_frame->localsplus[0] = self_or_null; + for (int i = 0; i < oparg; i++) { + first_non_self_local[i] = args[i]; } } // _SAVE_RETURN_OFFSET @@ -1759,16 +1757,14 @@ args = &stack_pointer[-oparg]; self_or_null = stack_pointer[-1 - oparg]; { - int argcount = oparg; - if (self_or_null != NULL) { - args--; - argcount++; - } + int has_self = (self_or_null != NULL); STAT_INC(CALL, hit); PyFunctionObject *func = (PyFunctionObject *)callable; - new_frame = _PyFrame_PushUnchecked(tstate, func, argcount); - for (int i = 0; i < argcount; i++) { - new_frame->localsplus[i] = args[i]; + new_frame = _PyFrame_PushUnchecked(tstate, func, oparg + has_self); + PyObject **first_non_self_local = new_frame->localsplus + has_self; + new_frame->localsplus[0] = self_or_null; + for (int i = 0; i < oparg; i++) { + first_non_self_local[i] = args[i]; } } // _SAVE_RETURN_OFFSET |
