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

serhiy-storchaka webhook-mailer at python.org
Sun Oct 3 14:22:54 EDT 2021


https://github.com/python/cpython/commit/60b9e040c9cf40e69f42c0008e564458aa0379e8
commit: 60b9e040c9cf40e69f42c0008e564458aa0379e8
branch: main
author: Serhiy Storchaka <storchaka at gmail.com>
committer: serhiy-storchaka <storchaka at gmail.com>
date: 2021年10月03日T21:22:42+03:00
summary:
bpo-45355: Use sizeof(_Py_CODEUNIT) instead of literal 2 for the size of the code unit (GH-28711)
files:
M Modules/_tracemalloc.c
M Objects/frameobject.c
M Objects/genobject.c
M Python/ceval.c
M Python/traceback.c
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c
index fc3d7f51ee29a..09d18fb8f278f 100644
--- a/Modules/_tracemalloc.c
+++ b/Modules/_tracemalloc.c
@@ -302,7 +302,7 @@ static void
 tracemalloc_get_frame(InterpreterFrame *pyframe, frame_t *frame)
 {
 frame->filename = unknown_filename;
- int lineno = PyCode_Addr2Line(pyframe->f_code, pyframe->f_lasti*2);
+ int lineno = PyCode_Addr2Line(pyframe->f_code, pyframe->f_lasti*sizeof(_Py_CODEUNIT));
 if (lineno < 0) {
 lineno = 0;
 }
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 00d6888ff2a2a..b743dc72eee79 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -45,7 +45,7 @@ PyFrame_GetLineNumber(PyFrameObject *f)
 return f->f_lineno;
 }
 else {
- return PyCode_Addr2Line(f->f_frame->f_code, f->f_frame->f_lasti*2);
+ return PyCode_Addr2Line(f->f_frame->f_code, f->f_frame->f_lasti*sizeof(_Py_CODEUNIT));
 }
 }
 
@@ -67,7 +67,7 @@ frame_getlasti(PyFrameObject *f, void *closure)
 if (f->f_frame->f_lasti < 0) {
 return PyLong_FromLong(-1);
 }
- return PyLong_FromLong(f->f_frame->f_lasti*2);
+ return PyLong_FromLong(f->f_frame->f_lasti*sizeof(_Py_CODEUNIT));
 }
 
 static PyObject *
diff --git a/Objects/genobject.c b/Objects/genobject.c
index be9238d9b6cfd..8bd6c8d2c4ccc 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -1284,7 +1284,7 @@ compute_cr_origin(int origin_depth)
 PyCodeObject *code = frame->f_code;
 PyObject *frameinfo = Py_BuildValue("OiO",
 code->co_filename,
- PyCode_Addr2Line(frame->f_code, frame->f_lasti*2),
+ PyCode_Addr2Line(frame->f_code, frame->f_lasti*sizeof(_Py_CODEUNIT)),
 code->co_name);
 if (!frameinfo) {
 Py_DECREF(cr_origin);
diff --git a/Python/ceval.c b/Python/ceval.c
index 7f29967eb3272..c951e563cd7a1 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4815,7 +4815,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr
 #endif
 fprintf(stderr,
 "XXX lineno: %d, opcode: %d\n",
- PyCode_Addr2Line(frame->f_code, frame->f_lasti*2),
+ PyCode_Addr2Line(frame->f_code, frame->f_lasti*sizeof(_Py_CODEUNIT)),
 opcode);
 _PyErr_SetString(tstate, PyExc_SystemError, "unknown opcode");
 goto error;
@@ -5996,7 +5996,7 @@ call_trace(Py_tracefunc func, PyObject *obj,
 }
 else {
 initialize_trace_info(&tstate->trace_info, frame);
- f->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*2, &tstate->trace_info.bounds);
+ f->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &tstate->trace_info.bounds);
 }
 result = func(obj, f, what, arg);
 f->f_lineno = 0;
@@ -6035,8 +6035,8 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
 then call the trace function if we're tracing source lines.
 */
 initialize_trace_info(&tstate->trace_info, frame);
- int lastline = _PyCode_CheckLineNumber(instr_prev*2, &tstate->trace_info.bounds);
- int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &tstate->trace_info.bounds);
+ int lastline = _PyCode_CheckLineNumber(instr_prev*sizeof(_Py_CODEUNIT), &tstate->trace_info.bounds);
+ int line = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &tstate->trace_info.bounds);
 PyFrameObject *f = _PyFrame_GetFrameObject(frame);
 if (f == NULL) {
 return -1;
@@ -6978,7 +6978,7 @@ dtrace_function_entry(InterpreterFrame *frame)
 PyCodeObject *code = frame->f_code;
 filename = PyUnicode_AsUTF8(code->co_filename);
 funcname = PyUnicode_AsUTF8(code->co_name);
- lineno = PyCode_Addr2Line(frame->f_code, frame->f_lasti*2);
+ lineno = PyCode_Addr2Line(frame->f_code, frame->f_lasti*sizeof(_Py_CODEUNIT));
 
 PyDTrace_FUNCTION_ENTRY(filename, funcname, lineno);
 }
@@ -6993,7 +6993,7 @@ dtrace_function_return(InterpreterFrame *frame)
 PyCodeObject *code = frame->f_code;
 filename = PyUnicode_AsUTF8(code->co_filename);
 funcname = PyUnicode_AsUTF8(code->co_name);
- lineno = PyCode_Addr2Line(frame->f_code, frame->f_lasti*2);
+ lineno = PyCode_Addr2Line(frame->f_code, frame->f_lasti*sizeof(_Py_CODEUNIT));
 
 PyDTrace_FUNCTION_RETURN(filename, funcname, lineno);
 }
@@ -7010,12 +7010,12 @@ maybe_dtrace_line(InterpreterFrame *frame,
 instruction window, reset the window.
 */
 initialize_trace_info(trace_info, frame);
- int lastline = _PyCode_CheckLineNumber(instr_prev*2, &trace_info->bounds);
- int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds);
+ int lastline = _PyCode_CheckLineNumber(instr_prev*sizeof(_Py_CODEUNIT), &trace_info->bounds);
+ int line = _PyCode_CheckLineNumber(frame->f_lasti*sizeof(_Py_CODEUNIT), &trace_info->bounds);
 if (line != -1) {
 /* Trace backward edges or first instruction of a new line */
 if (frame->f_lasti < instr_prev ||
- (line != lastline && frame->f_lasti*2 == trace_info->bounds.ar_start))
+ (line != lastline && frame->f_lasti*sizeof(_Py_CODEUNIT) == trace_info->bounds.ar_start))
 {
 co_filename = PyUnicode_AsUTF8(frame->f_code->co_filename);
 if (!co_filename) {
diff --git a/Python/traceback.c b/Python/traceback.c
index 76280a35e3a5f..06b40bbbdc9f8 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -240,7 +240,7 @@ _PyTraceBack_FromFrame(PyObject *tb_next, PyFrameObject *frame)
 assert(tb_next == NULL || PyTraceBack_Check(tb_next));
 assert(frame != NULL);
 
- return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_frame->f_lasti*2,
+ return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_frame->f_lasti*sizeof(_Py_CODEUNIT),
 PyFrame_GetLineNumber(frame));
 }
 
@@ -1047,7 +1047,7 @@ dump_frame(int fd, InterpreterFrame *frame)
 PUTS(fd, "???");
 }
 
- int lineno = PyCode_Addr2Line(code, frame->f_lasti*2);
+ int lineno = PyCode_Addr2Line(code, frame->f_lasti*sizeof(_Py_CODEUNIT));
 PUTS(fd, ", line ");
 if (lineno >= 0) {
 _Py_DumpDecimal(fd, (size_t)lineno);


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /