summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/bytecodes.c4
-rw-r--r--Python/executor_cases.c.h4
-rw-r--r--Python/optimizer.c5
-rw-r--r--Tools/jit/_stencils.py3
-rw-r--r--Tools/jit/template.c3
5 files changed, 7 insertions, 12 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index a6fb862..c00de88 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -4149,9 +4149,7 @@ dummy_func(
}
op(_JUMP_TO_TOP, (--)) {
-#ifndef _Py_JIT
- next_uop = &current_executor->trace[1];
-#endif
+ JUMP_TO_JUMP_TARGET();
}
tier2 op(_SET_IP, (instr_ptr/4 --)) {
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index cdfffcd..8de0309 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -4302,9 +4302,7 @@
}
case _JUMP_TO_TOP: {
- #ifndef _Py_JIT
- next_uop = &current_executor->trace[1];
- #endif
+ JUMP_TO_JUMP_TARGET();
break;
}
diff --git a/Python/optimizer.c b/Python/optimizer.c
index c9b187d..0d7118c 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -1059,6 +1059,11 @@ prepare_for_execution(_PyUOpInstruction *buffer, int length)
buffer[i].jump_target = 0;
}
}
+ if (opcode == _JUMP_TO_TOP) {
+ assert(buffer[0].opcode == _START_EXECUTOR);
+ buffer[i].format = UOP_FORMAT_JUMP;
+ buffer[i].jump_target = 1;
+ }
}
return next_spare;
}
diff --git a/Tools/jit/_stencils.py b/Tools/jit/_stencils.py
index c7c5ca1..755649d 100644
--- a/Tools/jit/_stencils.py
+++ b/Tools/jit/_stencils.py
@@ -42,8 +42,6 @@ class HoleValue(enum.Enum):
ERROR_TARGET = enum.auto()
# The index of the exit to be jumped through (exposed as _JIT_EXIT_INDEX):
EXIT_INDEX = enum.auto()
- # The base address of the machine code for the first uop (exposed as _JIT_TOP):
- TOP = enum.auto()
# A hardcoded value of zero (used for symbol lookups):
ZERO = enum.auto()
@@ -110,7 +108,6 @@ _HOLE_EXPRS = {
HoleValue.JUMP_TARGET: "instruction_starts[instruction->jump_target]",
HoleValue.ERROR_TARGET: "instruction_starts[instruction->error_target]",
HoleValue.EXIT_INDEX: "instruction->exit_index",
- HoleValue.TOP: "instruction_starts[1]",
HoleValue.ZERO: "",
}
diff --git a/Tools/jit/template.c b/Tools/jit/template.c
index a81e866..813e586 100644
--- a/Tools/jit/template.c
+++ b/Tools/jit/template.c
@@ -105,9 +105,6 @@ _JIT_ENTRY(_PyInterpreterFrame *frame, PyObject **stack_pointer, PyThreadState *
UOP_STAT_INC(uopcode, execution_count);
// The actual instruction definitions (only one will be used):
- if (uopcode == _JUMP_TO_TOP) {
- PATCH_JUMP(_JIT_TOP);
- }
switch (uopcode) {
#include "executor_cases.c.h"
default: