[3.10] bpo-45355: Use sizeof(_Py_CODEUNIT) instead of literal 2 for the size of the code unit (GH-28711). (GH-28718)

(cherry picked from commit 60b9e040c9)
This commit is contained in:
Serhiy Storchaka 2021-10-04 15:01:11 +03:00 committed by GitHub
parent f146ca36f8
commit b5499784ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 7 deletions

View file

@ -46,7 +46,7 @@ PyFrame_GetLineNumber(PyFrameObject *f)
return f->f_lineno; return f->f_lineno;
} }
else { else {
return PyCode_Addr2Line(f->f_code, f->f_lasti*2); return PyCode_Addr2Line(f->f_code, f->f_lasti*sizeof(_Py_CODEUNIT));
} }
} }
@ -68,7 +68,7 @@ frame_getlasti(PyFrameObject *f, void *closure)
if (f->f_lasti < 0) { if (f->f_lasti < 0) {
return PyLong_FromLong(-1); return PyLong_FromLong(-1);
} }
return PyLong_FromLong(f->f_lasti*2); return PyLong_FromLong(f->f_lasti*sizeof(_Py_CODEUNIT));
} }

View file

@ -5490,7 +5490,7 @@ call_trace(Py_tracefunc func, PyObject *obj,
} }
else { else {
initialize_trace_info(trace_info, frame); initialize_trace_info(trace_info, frame);
frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &trace_info->bounds);
} }
result = func(obj, frame, what, arg); result = func(obj, frame, what, arg);
frame->f_lineno = 0; frame->f_lineno = 0;
@ -5530,8 +5530,8 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
then call the trace function if we're tracing source lines. then call the trace function if we're tracing source lines.
*/ */
initialize_trace_info(trace_info, frame); initialize_trace_info(trace_info, frame);
int lastline = _PyCode_CheckLineNumber(instr_prev*2, &trace_info->bounds); int lastline = _PyCode_CheckLineNumber(instr_prev*sizeof(_Py_CODEUNIT), &trace_info->bounds);
int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); int line = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &trace_info->bounds);
if (line != -1 && frame->f_trace_lines) { if (line != -1 && frame->f_trace_lines) {
/* Trace backward edges or if line number has changed */ /* Trace backward edges or if line number has changed */
if (frame->f_lasti < instr_prev || line != lastline) { if (frame->f_lasti < instr_prev || line != lastline) {
@ -6494,7 +6494,7 @@ maybe_dtrace_line(PyFrameObject *frame,
instruction window, reset the window. instruction window, reset the window.
*/ */
initialize_trace_info(trace_info, frame); initialize_trace_info(trace_info, frame);
int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); int line = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &trace_info->bounds);
/* If the last instruction falls at the start of a line or if /* If the last instruction falls at the start of a line or if
it represents a jump backwards, update the frame's line it represents a jump backwards, update the frame's line
number and call the trace function. */ number and call the trace function. */

View file

@ -234,7 +234,7 @@ _PyTraceBack_FromFrame(PyObject *tb_next, PyFrameObject *frame)
assert(tb_next == NULL || PyTraceBack_Check(tb_next)); assert(tb_next == NULL || PyTraceBack_Check(tb_next));
assert(frame != NULL); assert(frame != NULL);
return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_lasti*2, return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_lasti*sizeof(_Py_CODEUNIT),
PyFrame_GetLineNumber(frame)); PyFrame_GetLineNumber(frame));
} }