]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
GH-119866: Spill the stack around escaping calls. (GH-124392)
authorMark Shannon <mark@hotpy.org>
Mon, 7 Oct 2024 13:56:39 +0000 (14:56 +0100)
committerGitHub <noreply@github.com>
Mon, 7 Oct 2024 13:56:39 +0000 (14:56 +0100)
commitda071fa3e8e01e0cacf13d632aae0835a2203eb2
treeebd70c16c871dee470785be5aed0bccbb1e3cbaf
parentcda3b5a576412a8671bbe4c68bb792ec14f1a4b1
GH-119866: Spill the stack around escaping calls. (GH-124392)

* Spill the evaluation around escaping calls in the generated interpreter and JIT.

* The code generator tracks live, cached values so they can be saved to memory when needed.

* Spills the stack pointer around escaping calls, so that the exact stack is visible to the cycle GC.
25 files changed:
Include/internal/pycore_ceval.h
Include/internal/pycore_opcode_metadata.h
Include/internal/pycore_uop_ids.h
Include/internal/pycore_uop_metadata.h
Include/opcode_ids.h
Lib/_opcode_metadata.py
Lib/test/test_asyncio/test_streams.py
Lib/test/test_generated_cases.py
Lib/test/test_monitoring.py
Python/bytecodes.c
Python/ceval.c
Python/ceval_macros.h
Python/executor_cases.c.h
Python/generated_cases.c.h
Python/opcode_targets.h
Python/optimizer_bytecodes.c
Python/optimizer_cases.c.h
Tools/cases_generator/analyzer.py
Tools/cases_generator/cwriter.py
Tools/cases_generator/generators_common.py
Tools/cases_generator/lexer.py
Tools/cases_generator/optimizer_generator.py
Tools/cases_generator/stack.py
Tools/cases_generator/tier1_generator.py
Tools/cases_generator/tier2_generator.py