Diego Russo
c7b7ca2cd5
GH-126910: Add gdb support for unwinding JIT frames ( #146071 )
...
Co-authored-by: Pablo Galindo Salgado <pablogsal@gmail.com>
2026-05-02 13:42:03 +00:00
Hai Zhu
be968c7210
gh-148571: [JIT] Preserve family-head recorder layouts for specialized opcode families (GH-148730)
...
* Records the same objects for each member of family before execution
* Records derived values when recording the trace
* This makes sure that specialization, or deoptimization, does not cause invalid values to be recorded
2026-04-28 13:41:16 +01:00
Mark Shannon
276f474c9a
GH-146073: Add fitness to executor dumps. (GH-148959)
2026-04-27 17:34:09 +01:00
Hai Zhu
618b726d68
gh-146073: Add fitness/exit quality mechanism for JIT trace frontend (GH-148089)
...
* Replaces ad-hoc logic for ending traces with a simple inequality: `fitness < exit_quality`
* Fitness starts high and is reduced for branches, backward edges, calls and trace length
* Exit quality reflect how good a spot that instruction is to end a trace. Closing a loop is very, specializable instructions are very low and the others in between.
2026-04-24 10:37:01 +01:00
Mark Shannon
600f4dbd54
GH-145668: Add FOR_ITER specialization for virtual iterators. Specialize GET_ITER. (GH-147967)
...
* Add FOR_ITER_VIRTUAL to specialize FOR_ITER for virtual iterators
* Add GET_ITER_SELF to specialize GET_ITER for iterators (including generators)
* Add GET_ITER_VIRTUAL to specialize GET_ITER for iterables as virtual iterators
* Add new (internal) _tp_iteritem function slot to PyTypeObject
* Put limited RESUME at start of genexpr for free-threading. Fix up exception handling in genexpr
2026-04-16 15:22:22 +01:00
Hai Zhu
5ce0fe8b6c
gh-148378: Allow multiple consecutive recording ops per macro op (GH-148496)
2026-04-14 19:26:53 +08:00
Ken Jin
328da67b2c
gh-146073: Revert "gh-146073: Add fitness/exit quality mechanism for JIT trace frontend (GH-147966)" ( #148082 )
...
This reverts commit 198b04b75f .
2026-04-04 11:56:40 +00:00
Hai Zhu
198b04b75f
gh-146073: Add fitness/exit quality mechanism for JIT trace frontend (GH-147966)
2026-04-03 23:54:30 +08:00
Hai Zhu
6fe91a9e80
gh-144888: JIT executor bloom filter wide-type optimization and function Inlining (GH-146114)
2026-03-19 00:58:14 +08:00
Ken Jin
966fc81531
gh-146058: Fix _GUARD_CODE_VERSION_* (GH-146060)
2026-03-18 01:19:44 +08:00
Ken Jin
3d0824aef2
gh-127958: Trace from RESUME in the JIT (GH-145905)
2026-03-17 00:18:59 +08:00
Hai Zhu
81ef1b7317
gh-144888: Replace bloom filter linked lists with continuous arrays to optimize executor invalidating performance (GH-145873)
2026-03-16 15:58:18 +00:00
Hai Zhu
66eafc9ea7
gh-144681: Fix JIT trace builder assertion failure when conditional branch jump target coincides with fallthrough target (GH-144742)
2026-03-10 12:12:48 +08:00
Mark Shannon
27c49707df
GH-144688: Fix refleaks in JIT when optimization fails (GH-145420)
2026-03-09 15:21:33 +00:00
Hai Zhu
fd01372d4e
gh-145064: Fix JIT assertion failure during CALL_ALLOC_AND_ENTER_INIT side exit (GH-145100)
2026-02-22 18:46:03 +00:00
Chris Eibl
5944a539b9
Fix warnings on main (GH-145104)
2026-02-22 19:02:15 +08:00
Mark Shannon
3f37b94c73
GH-144651: Optimize the new uops added when recording values during tracing. (GH-144948)
...
* Handle dependencies in the optimizer, not the tracer
* Strengthen some checks to avoid relying on optimizer for correctness
2026-02-19 11:52:57 +00:00
Chris Eibl
caac966b00
fix warnings in jit builds (GH-144817)
2026-02-14 17:39:10 +00:00
Chris Eibl
14cbd0e6af
remove unused _PyFunction_LookupByVersion (GH-144814)
2026-02-14 14:09:01 +00:00
Mark Shannon
b53fc7caa6
GH-144179: Use recorded values to make optimizer more robust (GH-144437)
...
* Add three new symbol kinds
* Do not smuggle code object in _PUSH_FRAME operand
* Fix small bug in predicate analysis
2026-02-05 08:58:41 +00:00
Mark Shannon
141fd8b894
GH-144179: Add value recording to JIT tracing front-end (GH-144303)
2026-02-02 16:57:04 +00:00
AN Long
db61f622c6
Fix unused variable 'COLORS' warning in optimizer.c ( #144373 )
2026-02-01 04:01:45 +00:00
Yongtao Huang
6f579147e3
Misc: remove duplicate instr_frame assignment in _PyJit_TryInitializeTracing (GH-144155)
...
Remove duplicate instr_frame assignment in optimizer
2026-01-24 09:37:45 +00:00
Mark Shannon
d77aaa7311
GH-139109: Partial reworking of JIT data structures (GH-144105)
...
* Halve size of buffers by reusing combined trace + optimizer buffers for TOS caching
* Add simple buffer struct for more maintainable handling of buffers
* Decouple JIT structs from thread state struct
* Ensure terminator is added to trace, when optimizer gives up
2026-01-22 10:55:49 +00:00
Donghee Na
27a7160b8b
gh-141504: Move PYTHON_UOPS_OPTIMIZE to policy object (GH-144082)
2026-01-20 18:47:38 +00:00
Hai Zhu
b4b73245d8
gh-143421: Use new buffer to save optimized uops (GH-143682)
2026-01-17 15:52:16 +00:00
Donghee Na
794f758cd8
gh-141504: Refactor policy object into a single opt_config (gh-143644)
2026-01-15 09:53:00 +09:00
Mohammad Miadh Angkad
499706b843
GH-143842: Make optimizer color table static (GH-143846)
2026-01-14 20:37:13 +00:00
Ken Jin
e370c8db52
gh-143123: Protect against recursive tracer calls/finalization (GH-143126)
...
* Stronger check for recursive traces
* Add a stop_tracing field
* Stop early when tracing exceptions
2026-01-14 12:23:14 +00:00
Mark Shannon
6db952eae9
GH-143613: Add colours and some more edges to executor visualization graph (GH-143809)
2026-01-14 11:34:58 +00:00
Hai Zhu
94dbce1397
gh-138050: Use cold flag instead of warm flag in MAKE_WARM (GH-143827)
2026-01-14 10:27:33 +00:00
Nadeshiko Manju
e2f0160026
gh-143604: Hold strong reference to executor during JIT tracing (GH-143646)
...
Co-authored-by: Ken Jin <kenjin4096@gmail.com>
2026-01-10 11:15:48 +00:00
Ken Jin
e0fb278064
gh-143421: Allocate all JIT state in one go (GH-143626)
2026-01-09 19:00:49 +00:00
Ken Jin
b852236b26
gh-143421: Lazily allocate tracer code and opt buffers (GH-143597)
2026-01-09 16:56:19 +00:00
Hai Zhu
aeb3403563
gh-143421: Move JitOptContext from stack allocation to per-thread heap allocation (GH-143536)
...
* move JitOptContext to _PyThreadStateImpl
* make _PyUOpInstruction buffer a part of _PyThreadStateImpl
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
2026-01-08 19:38:21 +00:00
Donghee Na
12283f6373
gh-141504: Factor out tracing and optimization heuristics into a single object (gh-143381)
2026-01-03 15:22:14 +00:00
Ken Jin
6cb245d260
gh-143183: Link trace to side exits, rather than stop (GH-143268)
2025-12-29 15:10:42 +00:00
Ken Jin
daa9aa4c0a
gh-143183: Rewind stop tracing to previous target (GH-143187)
...
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
2025-12-28 22:12:31 +00:00
Ken Jin
cf6758ff9e
gh-143092: Make CALL_LIST_APPEND and BINARY_OP_INPLACE_ADD_UNICODE normal instructions (GH-143124)
...
These super instructions need many special cases in the interpreter, specializer, and JIT. It's best we convert them to normal instructions.
2025-12-24 22:03:00 +00:00
Mark Shannon
20aeb3a463
GH-143026: Fix assertion error in executor management. (GH-143104)
2025-12-23 17:19:34 +00:00
Ken Jin
665d2807a0
gh-139109: Add terminator to JIT code when halting due to invalid dependencies ( #143033 )
...
* Add terminator to JIT code when halting due to invalid dependencies
* 📜 🤖 Added by blurb_it.
---------
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2025-12-22 20:54:47 +00:00
Chris Eibl
700e9fad70
GH-142513: fix missing return in executor_clear (GH-143073)
...
fix missing return in executor_clear
2025-12-22 17:10:52 +00:00
Ken Jin
9ded3dd4e9
gh-142476: Fix Windows crashing with JIT (GH-143021)
...
Fix Windows crashing with JIT
2025-12-22 14:57:13 +00:00
Shamil
e2a7db7175
gh-142476: fix memory leak when creating JIT executors (GH-142492)
2025-12-19 19:07:11 +00:00
Mark Shannon
e4058d7cb1
GH-142513: Reimplement executor management (GH-142931)
...
* Invalidating an executor does not cause arbitrary code to run
* Executors are only freed at safe points
2025-12-18 16:43:44 +00:00
Ken Jin
fba4584ffc
gh-142849: Fix segfault in executor_to_gv (GH-142885)
...
Fix segfault in `executor_to_gv`
2025-12-17 17:05:21 +00:00
Ken Jin
89729f2ef7
gh-142543: Mark tracer functions as Py_NO_INLINE (GH-142846)
2025-12-17 00:12:32 +00:00
Mark Shannon
92d4aeafd5
GH-142629: JIT: Fix out of bounds memory read in lltrace (GH-142821)
...
JIT: Fix out of bounds memory read in lltrace
2025-12-16 19:57:15 +00:00
Mark Shannon
469f191a85
GH-135379: Top of stack caching for the JIT. (GH-135465)
...
Uses three registers to cache values at the top of the evaluation stack
This significantly reduces memory traffic for smaller, more common uops.
2025-12-11 10:32:52 +00:00
Ken Jin
97e19014dd
gh-137007: Track executor before any possible deallocations (GH-137016)
2025-12-11 05:09:56 +08:00