diff options
author | Guido van Rossum <guido@python.org> | 2023-08-16 16:26:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-16 16:26:43 -0700 |
commit | dc8fdf5fd5f572e87152883f15f35c354fa4b4bf (patch) | |
tree | 8b4c01a4f29113416bda04ebecc1da7126400bb5 /Python/abstract_interp_cases.c.h | |
parent | 665a4391e10167dad1c854fb604c86f336fcd331 (diff) | |
download | cpython-dc8fdf5fd5f572e87152883f15f35c354fa4b4bf.tar.gz cpython-dc8fdf5fd5f572e87152883f15f35c354fa4b4bf.zip |
gh-106581: Split `CALL_PY_EXACT_ARGS` into uops (#107760)
* Split `CALL_PY_EXACT_ARGS` into uops
This is only the first step for doing `CALL` in Tier 2.
The next step involves tracing into the called code object and back.
After that we'll have to do the remaining `CALL` specialization.
Finally we'll have to deal with `KW_NAMES`.
Note: this moves setting `frame->return_offset` directly in front of
`DISPATCH_INLINED()`, to make it easier to move it into `_PUSH_FRAME`.
Diffstat (limited to 'Python/abstract_interp_cases.c.h')
-rw-r--r-- | Python/abstract_interp_cases.c.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Python/abstract_interp_cases.c.h b/Python/abstract_interp_cases.c.h index 6bfcf534646..eef071119bc 100644 --- a/Python/abstract_interp_cases.c.h +++ b/Python/abstract_interp_cases.c.h @@ -612,6 +612,30 @@ break; } + case _CHECK_PEP_523: { + break; + } + + case _CHECK_FUNCTION_EXACT_ARGS: { + break; + } + + case _CHECK_STACK_SPACE: { + break; + } + + case _INIT_CALL_PY_EXACT_ARGS: { + STACK_SHRINK(oparg); + STACK_SHRINK(1); + PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true); + break; + } + + case _PUSH_FRAME: { + PARTITIONNODE_OVERWRITE((_Py_PARTITIONNODE_t *)PARTITIONNODE_NULLROOT, PEEK(-(-1)), true); + break; + } + case CALL_NO_KW_TYPE_1: { STACK_SHRINK(oparg); STACK_SHRINK(1); @@ -751,6 +775,10 @@ break; } + case SAVE_CURRENT_IP: { + break; + } + case EXIT_TRACE: { break; } |