Skip to content

Commit 093578c

Browse files
Separate the tracer out into its own file
1 parent b879dab commit 093578c

File tree

7 files changed

+14171
-15479
lines changed

7 files changed

+14171
-15479
lines changed

Makefile.pre.in

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2139,7 +2139,7 @@ Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
21392139
regen-cases: \
21402140
regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
21412141
regen-generated-cases regen-executor-cases regen-optimizer-cases \
2142-
regen-opcode-metadata regen-uop-metadata
2142+
regen-opcode-metadata regen-uop-metadata regen-tracer-cases
21432143

21442144
.PHONY: regen-opcode-ids
21452145
regen-opcode-ids:
@@ -2185,6 +2185,13 @@ regen-optimizer-cases:
21852185
$(srcdir)/Python/bytecodes.c
21862186
$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
21872187

2188+
.PHONY: regen-tracer-cases
2189+
regen-tracer-cases:
2190+
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tracer_generator.py \
2191+
-o $(srcdir)/Python/generated_tracer_cases.c.h.new $(srcdir)/Python/bytecodes.c
2192+
$(UPDATE_FILE) $(srcdir)/Python/generated_tracer_cases.c.h $(srcdir)/Python/generated_tracer_cases.c.h.new
2193+
2194+
21882195
.PHONY: regen-opcode-metadata
21892196
regen-opcode-metadata:
21902197
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \

Python/bytecodes.c

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2964,13 +2964,6 @@ dummy_func(
29642964
if (!IS_JIT_TRACING() && backoff_counter_triggers(counter) &&
29652965
this_instr->op.code == JUMP_BACKWARD_JIT &&
29662966
next_instr->op.code != ENTER_EXECUTOR) {
2967-
_Py_CODEUNIT *start = this_instr;
2968-
/* Back up over EXTENDED_ARGs so optimizer sees the whole instruction */
2969-
int curr_oparg = oparg;
2970-
while (curr_oparg > 255) {
2971-
curr_oparg >>= 8;
2972-
start--;
2973-
}
29742967
if (tstate->interp->jit_tracer_code_buffer == NULL) {
29752968
tstate->interp->jit_tracer_code_buffer = (_PyUOpInstruction *)_PyObject_VirtualAlloc(UOP_BUFFER_SIZE);
29762969
if (tstate->interp->jit_tracer_code_buffer == NULL) {
@@ -3046,9 +3039,9 @@ dummy_func(
30463039
}
30473040
assert(executor != tstate->interp->cold_executor);
30483041
tstate->jit_exit = NULL;
3049-
if (IS_JIT_TRACING()) {
3050-
RECORD_TRACE_NO_DISPATCH();
3051-
}
3042+
#if TRACING_JIT
3043+
RECORD_TRACE_NO_DISPATCH();
3044+
#endif
30523045
TIER1_TO_TIER2(executor);
30533046
#else
30543047
Py_FatalError("ENTER_EXECUTOR is not supported in this build");

Python/ceval.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,7 @@ add_to_code_trace(PyThreadState *tstate, _PyInterpreterFrame *frame, PyCodeObjec
998998
#if _Py_TAIL_CALL_INTERP
999999
#include "opcode_targets.h"
10001000
#include "generated_cases.c.h"
1001+
#include "generated_tracer_cases.c.h"
10011002
#endif
10021003

10031004
#if (defined(__GNUC__) && __GNUC__ >= 10 && !defined(__clang__)) && defined(__x86_64__)
@@ -1126,6 +1127,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
11261127
#else
11271128
goto start_frame;
11281129
# include "generated_cases.c.h"
1130+
#include "generated_tracer_cases.c.h"
11291131
#endif
11301132

11311133

0 commit comments

Comments
 (0)