summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-01-10 15:44:34 (GMT)
committerGitHub <noreply@github.com>2024-01-10 15:44:34 (GMT)
commita0c9cf9456c2ee7a89d9bd859c07afac8cf5e893 (patch)
treed89d0bcbd8850e29b68a262c9427c6e5288d65f7 /Python/bytecodes.c
parent93930eaf0acd64dc0d08d58321d2682cb019bc1a (diff)
downloadcpython-a0c9cf9456c2ee7a89d9bd859c07afac8cf5e893.zip
cpython-a0c9cf9456c2ee7a89d9bd859c07afac8cf5e893.tar.gz
cpython-a0c9cf9456c2ee7a89d9bd859c07afac8cf5e893.tar.bz2
GH-113860: All executors are now defined in terms of micro ops. Convert counter executor to use uops. (GH-113864)
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r--Python/bytecodes.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index e1a6a25..f53ddae 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -2366,16 +2366,8 @@ dummy_func(
_PyExecutorObject *executor = (_PyExecutorObject *)code->co_executors->executors[oparg&255];
if (executor->vm_data.valid) {
Py_INCREF(executor);
- if (executor->execute == _PyUOpExecute) {
- current_executor = (_PyUOpExecutorObject *)executor;
- GOTO_TIER_TWO();
- }
- next_instr = executor->execute(executor, frame, stack_pointer);
- frame = tstate->current_frame;
- if (next_instr == NULL) {
- goto resume_with_error;
- }
- stack_pointer = _PyFrame_GetStackPointer(frame);
+ current_executor = (_PyUOpExecutorObject *)executor;
+ GOTO_TIER_TWO();
}
else {
code->co_executors->executors[oparg & 255] = NULL;
@@ -4066,6 +4058,16 @@ dummy_func(
DEOPT_IF(!current_executor->base.vm_data.valid);
}
+ op(_LOAD_CONST_INLINE_BORROW, (ptr/4 -- value)) {
+ value = ptr;
+ }
+
+ /* Internal -- for testing executors */
+ op(_INTERNAL_INCREMENT_OPT_COUNTER, (opt --)) {
+ _PyCounterOptimizerObject *exe = (_PyCounterOptimizerObject *)opt;
+ exe->count++;
+ }
+
// END BYTECODES //