cpython/Python
Guido van Rossum 003ba71dcb
gh-104584: Fix error handling from backedge optimization (#106484)
When `_PyOptimizer_BackEdge` returns `NULL`, we should restore `next_instr` (and `stack_pointer`). To accomplish this we should jump to `resume_with_error` instead of just `error`.

The problem this causes is subtle -- the only repro I have is in PR gh-106393, at commit d7df54b139bcc47f5ea094bfaa9824f79bc45adc. But the fix is real (as shown later in that PR).

While we're at it, also improve the debug output: the offsets at which traces are identified are now measured in bytes, and always show the start offset. This makes it easier to correlate executor calls with optimizer calls, and either with `dis` output.

<!-- gh-issue-number: gh-104584 -->
* Issue: gh-104584
<!-- /gh-issue-number -->
2023-07-06 18:39:53 +00:00
..
clinic gh-92536: Argument Clinic no longer emits PyUnicode_READY() (#105208) 2023-06-02 01:31:58 +02:00
deepfreeze gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
_warnings.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
adaptive.md GH-98686: Get rid of "adaptive" and "quick" instructions (GH-99182) 2022-11-09 10:50:09 -08:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
asm_trampoline.S gh-96143: Move the perf trampoline files to the Python directory (#98675) 2022-10-25 23:34:22 +01:00
assemble.c gh-106149: move unconditional jump direction resolution from optimizer to assembler (#106291) 2023-07-01 11:28:07 +01:00
ast.c gh-104656: Rename typeparams AST node to type_params (#104657) 2023-05-21 21:25:09 -07:00
ast_opt.c gh-105148: make _PyASTOptimizeState internal to ast_opt.c (#105149) 2023-05-31 20:21:46 +01:00
ast_unparse.c gh-100227: Move _str_replace_inf to PyInterpreterState (gh-102333) 2023-02-28 14:16:39 -07:00
bltinmodule.c gh-105340: include hidden fast-locals in locals() (#105715) 2023-07-05 17:05:02 -06:00
bootstrap_hash.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
bytecodes.c gh-104584: Fix error handling from backedge optimization (#106484) 2023-07-06 18:39:53 +00:00
ceval.c gh-104584: Fix error handling from backedge optimization (#106484) 2023-07-06 18:39:53 +00:00
ceval_gil.c GH-104584: Fix ENTER_EXECUTOR (GH-106141) 2023-07-03 21:28:27 +01:00
ceval_macros.h GH-104584: Fix ENTER_EXECUTOR (GH-106141) 2023-07-03 21:28:27 +01:00
codecs.c gh-106320: Use _PyInterpreterState_GET() (#106336) 2023-07-02 16:37:37 +00:00
compile.c gh-106320: Remove private _PyInterpreterState functions (#106325) 2023-07-02 01:39:38 +00:00
condvar.h gh-74953: _PyThread_cond_after() uses _PyTime_t (#94056) 2022-06-21 15:45:49 +02:00
context.c gh-94673: Hide Objects in PyTypeObject Behind Accessors (gh-104074) 2023-05-01 20:34:43 -06:00
dtoa.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
dup2.c gh-95174: Handle missing dup() and constants in WASI (GH-95229) 2022-07-26 11:16:51 +02:00
dynamic_annotations.c
dynload_hpux.c bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857) 2021-09-08 14:43:00 +02:00
dynload_shlib.c gh-101758: Clean Up Uses of Import State (gh-101919) 2023-02-15 15:32:31 -07:00
dynload_stub.c
dynload_win.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
emscripten_signal.c bpo-47176: Interrupt handling for wasm32-emscripten builds without pthreads (GH-32209) 2022-04-03 22:58:52 +02:00
errors.c gh-106084: Remove old PyObject call aliases (#106085) 2023-06-26 08:08:12 +02:00
executor_cases.c.h GH-104584: Fix ENTER_EXECUTOR (GH-106141) 2023-07-03 21:28:27 +01:00
fileutils.c gh-80064: Fix is_valid_wide_char() return type (#105099) 2023-05-30 18:36:20 +02:00
flowgraph.c GH-106008: Fix refleak when peepholing None comparisons (#106367) 2023-07-04 11:03:57 +01:00
formatter_unicode.c gh-92536: Remove PyUnicode_READY() calls (#105210) 2023-06-02 01:33:17 +02:00
frame.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
frozen.c gh-100227: Only Use deepfreeze for the Main Interpreter (gh-103794) 2023-04-24 21:48:05 +00:00
frozenmain.c gh-106320: Remove private _PyInterpreterState functions (#106325) 2023-07-02 01:39:38 +00:00
future.c gh-106320: Remove more private _PyUnicode C API functions (#106382) 2023-07-03 22:35:46 +00:00
generated_cases.c.h gh-104584: Fix error handling from backedge optimization (#106484) 2023-07-06 18:39:53 +00:00
getargs.c gh-92536: Remove PyUnicode_READY() calls (#105210) 2023-06-02 01:33:17 +02:00
getcompiler.c closes bpo-43278: remove unnecessary leading '\n' from COMPILER when build with GCC/Clang (GH-24606) 2021-02-25 20:24:21 -08:00
getcopyright.c Update copyright years to 2023. (gh-100848) 2023-01-08 09:13:25 -06:00
getopt.c gh-90300: split --help output into separate options (#30331) 2022-06-01 05:50:01 -04:00
getplatform.c
getversion.c gh-81057: Move Globals in Core Code to _PyRuntimeState (gh-99496) 2022-11-15 09:45:11 -07:00
hamt.c gh-106320: Remove _PyInterpreterState_Get() alias (#106321) 2023-07-01 23:44:07 +00:00
hashtable.c
import.c gh-106320: Remove _PyInterpreterState_Get() alias (#106321) 2023-07-01 23:44:07 +00:00
importdl.c gh-106320: Remove private _PyErr C API functions (#106356) 2023-07-03 10:48:50 +00:00
importdl.h gh-106210 Remove Emscripten import trampoline (#106211) 2023-06-29 17:20:49 -07:00
initconfig.c Document PYTHONSAFEPATH along side -P (#106122) 2023-07-02 22:44:37 -07:00
instrumentation.c gh-106320: Create pycore_modsupport.h header file (#106355) 2023-07-03 09:39:11 +00:00
intrinsics.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
legacy_tracing.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
makeopcodetargets.py gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913) 2023-06-19 23:47:04 +01:00
marshal.c gh-104922: remove PY_SSIZE_T_CLEAN (#106315) 2023-07-02 15:07:46 +09:00
modsupport.c gh-105156: Deprecate the old Py_UNICODE type in C API (#105157) 2023-06-01 08:56:35 +02:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c bpo-35134: Add Include/cpython/longobject.h (GH-29044) 2021-10-19 02:04:52 +02:00
opcode_metadata.h GH-106360: Support very basic superblock introspection (#106422) 2023-07-04 17:23:00 +01:00
opcode_targets.h GH-106008: Make implicit boolean conversions explicit (GH-106003) 2023-06-29 13:49:54 -07:00
optimizer.c gh-104584: Fix error handling from backedge optimization (#106484) 2023-07-06 18:39:53 +00:00
pathconfig.c gh-105145: Remove old functions to config Python init (#105154) 2023-06-01 09:14:02 +02:00
perf_trampoline.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
preconfig.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c bpo-43244: Remove the pyarena.h header (GH-25007) 2021-03-24 02:23:01 +01:00
pyctype.c
pyfpe.c bpo-46315: Add ifdef HAVE_ feature checks for WASI compatibility (GH-30507) 2022-01-13 09:46:04 +01:00
pyhash.c bpo-29410: Change the default hash algorithm to SipHash13. (GH-28752) 2021-10-10 17:29:46 +09:00
pylifecycle.c Remove private _PyCodec_Lookup() function (#106269) 2023-06-30 09:34:01 +00:00
pymath.c bpo-45440: Remove pymath.c fallbacks (GH-28977) 2021-10-15 19:45:34 +02:00
pystate.c gh-106320: Use _PyInterpreterState_GET() (#106336) 2023-07-02 16:37:37 +00:00
pystrcmp.c
pystrhex.c gh-106320: Remove _PyUnicode_TransformDecimalAndSpaceToASCII() (#106398) 2023-07-04 08:59:09 +00:00
pystrtod.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
Python-ast.c gh-106145: Make end_{lineno,col_offset} required on type_param nodes (#106224) 2023-06-30 23:45:08 +00:00
Python-tokenize.c gh-105564: Don't include artificial newlines in the line attribute of tokens (#105565) 2023-06-09 17:01:26 +01:00
pythonrun.c gh-106023: Update code using _PyObject_FastCall() (#106257) 2023-06-30 01:05:01 +00:00
pytime.c gh-106316: Remove pytime.h header file (#106317) 2023-07-01 22:27:18 +00:00
README
specialize.c gh-106320: Fix specialize.c compilation by including pycore_pylifecycle.h (#106434) 2023-07-04 21:42:12 +00:00
stdlib_module_names.h gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913) 2023-06-19 23:47:04 +01:00
structmember.c gh-103509: PEP 697 -- Limited C API for Extending Opaque Types (GH-103511) 2023-05-04 09:56:53 +02:00
suggestions.c gh-106030: Miscellaneous fixes in Python/suggestions.c (GH-106031) 2023-06-23 19:53:27 +03:00
symtable.c gh-104656: Rename typeparams AST node to type_params (#104657) 2023-05-21 21:25:09 -07:00
sysmodule.c gh-106320: Create pycore_modsupport.h header file (#106355) 2023-07-03 09:39:11 +00:00
thread.c gh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (gh-104072) 2023-05-01 19:36:00 -06:00
thread_nt.h gh-81057: Move Threading-Related Globals to _PyRuntimeState (#100084) 2022-12-08 17:50:58 -07:00
thread_pthread.h gh-101538: Add experimental wasi-threads build (#101537) 2023-06-22 11:26:10 -07:00
thread_pthread_stubs.h gh-81057: Move Threading-Related Globals to _PyRuntimeState (#100084) 2022-12-08 17:50:58 -07:00
traceback.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
tracemalloc.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00

Miscellaneous source files for the main Python shared library