diff options
author | Brandt Bucher <brandtbucher@microsoft.com> | 2024-07-26 16:40:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-26 16:40:15 (GMT) |
commit | 64857d849f3079a73367525ce93fd7a463b83908 (patch) | |
tree | 97a3081807cf1697141db03a1fdd6976e2ffc407 /Python/bytecodes.c | |
parent | db2d8b6db1b56c2bd3802b86f9b76da33e8898d7 (diff) | |
download | cpython-64857d849f3079a73367525ce93fd7a463b83908.zip cpython-64857d849f3079a73367525ce93fd7a463b83908.tar.gz cpython-64857d849f3079a73367525ce93fd7a463b83908.tar.bz2 |
GH-122294: Burn in the addresses of side exits (GH-122295)
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r-- | Python/bytecodes.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 871e2db..d74f2aa 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -4609,8 +4609,8 @@ dummy_func( #endif } - tier2 op(_EXIT_TRACE, (--)) { - _PyExitData *exit = ¤t_executor->exits[oparg]; + tier2 op(_EXIT_TRACE, (exit_p/4 --)) { + _PyExitData *exit = (_PyExitData *)exit_p; PyCodeObject *code = _PyFrame_GetCode(frame); _Py_CODEUNIT *target = _PyCode_CODE(code) + exit->target; #if defined(Py_DEBUG) && !defined(_Py_JIT) @@ -4619,7 +4619,7 @@ dummy_func( printf("SIDE EXIT: [UOp "); _PyUOpPrint(&next_uop[-1]); printf(", exit %u, temp %d, target %d -> %s]\n", - oparg, exit->temperature.as_counter, + exit - current_executor->exits, exit->temperature.as_counter, (int)(target - _PyCode_CODE(code)), _PyOpcode_OpName[target->op.code]); } @@ -4698,9 +4698,9 @@ dummy_func( exe->count++; } - tier2 op(_DYNAMIC_EXIT, (--)) { + tier2 op(_DYNAMIC_EXIT, (exit_p/4 --)) { tstate->previous_executor = (PyObject *)current_executor; - _PyExitData *exit = (_PyExitData *)¤t_executor->exits[oparg]; + _PyExitData *exit = (_PyExitData *)exit_p; _Py_CODEUNIT *target = frame->instr_ptr; #if defined(Py_DEBUG) && !defined(_Py_JIT) OPT_HIST(trace_uop_execution_counter, trace_run_length_hist); @@ -4708,7 +4708,7 @@ dummy_func( printf("DYNAMIC EXIT: [UOp "); _PyUOpPrint(&next_uop[-1]); printf(", exit %u, temp %d, target %d -> %s]\n", - oparg, exit->temperature.as_counter, + exit - current_executor->exits, exit->temperature.as_counter, (int)(target - _PyCode_CODE(_PyFrame_GetCode(frame))), _PyOpcode_OpName[target->op.code]); } |