mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
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`.
This commit is contained in:
parent
665a4391e1
commit
dc8fdf5fd5
14 changed files with 412 additions and 116 deletions
28
Python/abstract_interp_cases.c.h
generated
28
Python/abstract_interp_cases.c.h
generated
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue