From fcb55c0037baab6f98f91ee38ce84b6f874f034a Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Thu, 1 Apr 2021 16:00:31 +0100 Subject: bpo-27129: Use instruction offsets, not byte offsets, in bytecode and internally. (GH-25069) * Use instruction offset, rather than bytecode offset. Streamlines interpreter dispatch a bit, and removes most EXTENDED_ARGs for jumps. * Change some uses of PyCode_Addr2Line to PyFrame_GetLineNumber --- Python/traceback.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'Python/traceback.c') diff --git a/Python/traceback.c b/Python/traceback.c index 9363d4eb1b..6c0cdfa7e7 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -233,7 +233,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_lasti, + return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_lasti*2, PyFrame_GetLineNumber(frame)); } @@ -763,8 +763,7 @@ dump_frame(int fd, PyFrameObject *frame) PUTS(fd, "???"); } - /* PyFrame_GetLineNumber() was introduced in Python 2.7.0 and 3.2.0 */ - int lineno = PyCode_Addr2Line(code, frame->f_lasti); + int lineno = PyFrame_GetLineNumber(frame); PUTS(fd, ", line "); if (lineno >= 0) { _Py_DumpDecimal(fd, (size_t)lineno); -- cgit v1.2.1