summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
Commit message (Collapse)AuthorAgeFilesLines
...
* GH-135379: Specialize int operations for compact ints only (GH-135668)Mark Shannon2025-06-191-16/+27
|
* gh-134584: Decref elimination for float ops in the JIT (GH-134588)Ken Jin2025-06-171-0/+46
| | | This PR adds a PyJitRef API to the JIT's optimizer that mimics the _PyStackRef API. This allows it to track references and their stack lifetimes properly. Thus opening up the doorway to refcount elimination in the JIT.
* GH-135379: Support limited scalar replacement for replicated uops in the JIT ↵Mark Shannon2025-06-171-4/+2
| | | | | | code generator. (GH-135563) * Use it to support efficient specializations of COPY and SWAP in the JIT.
* gh-135474: Specialize arithmetic only on compact ints (GH-135479)Ken Jin2025-06-141-3/+6
| | | | Specialize arithmetic only on compact ints. This also makes int operations non-escaping in the JIT and in tier 1.
* GH-135379: Remove types from stack items in code generator. (GH-135384)Mark Shannon2025-06-111-30/+33
| | | | * Make casts explicit in the instruction definitions
* GH-132554: Fix tier2 `FOR_ITER` implementation and optimizations (GH-135137)Mark Shannon2025-06-051-74/+23
|
* GH-134879: Fix `INSTRUMENT_FOR_ITER` for list/tuple (#134897)Mark Shannon2025-05-301-1/+1
| | | Fix INSTRUMENT_FOR_ITER for list/tuple
* GH-132554: "Virtual" iterators (GH-132555)Mark Shannon2025-05-271-157/+143
| | | | | | * FOR_ITER now pushes either the iterator and NULL or leaves the iterable and pushes tagged zero * NEXT_ITER uses the tagged int as the index into the sequence or, if TOS is NULL, iterates as before.
* GH-131798: Optimize away isinstance calls in the JIT (GH-134369)Tomas R.2025-05-221-3/+39
|
* GH-131798: Optimize cached class attributes and methods in the JIT (GH-134403)Brandt Bucher2025-05-221-0/+12
|
* GH-131798: Narrow types more aggressively in the JIT (GH-134373)Brandt Bucher2025-05-201-0/+5
|
* GH-134282: Always borrow references LOAD_CONST (GH-134284)Mark Shannon2025-05-201-56/+7
|
* GH-131798: Add _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW (GH-134268)Tomas R.2025-05-191-0/+9
|
* GH-131798: Split CALL_LIST_APPEND into several uops (GH-134240)Diego Russo2025-05-191-6/+21
|
* GH-131798: Split up and optimize CALL_ISINSTANCE (GH-133339)Tomas R.2025-05-081-14/+24
|
* Revert "gh-133395: add option for extension modules to specialize ↵Irit Katriel2025-05-061-13/+2
| | | | BINARY_OP/SUBSCR, apply to arrays (#133396)" (#133498)
* GH-131798: Split CALL_LEN into several uops (GH-133180)Diego Russo2025-05-051-15/+17
|
* gh-133395: add option for extension modules to specialize BINARY_OP/SUBSCR, ↵Irit Katriel2025-05-051-2/+13
| | | | apply to arrays (#133396)
* GH-133231: Changes to executor management to support proposed `sys._jit` ↵Mark Shannon2025-05-041-10/+24
| | | | | | | | module (GH-133287) * Track the current executor, not the previous one, on the thread-state. * Batch executors for deallocation to avoid having to constantly incref executors; this is an ad-hoc form of deferred reference counting.
* gh-132744: Check recursion limit in CALL_PY_GENERAL (GH-132746)Ken Jin2025-05-021-0/+7
|
* gh-133258: Fix crash in test_index (GH-133262)Irit Katriel2025-05-011-3/+2
|
* Remove duplicate includes: Python/{bytecodes,ceval,optimizer_analysis}.c ↵Adam Turner2025-05-011-2/+1
| | | | (#132622)
* gh-100239: specialize BINARY_OP/SUBSCR for list-slice (#132626)Irit Katriel2025-05-011-0/+24
|
* GH-125515: Remove two unused error branches. (#133181)Russell Keith-Magee2025-04-301-12/+0
| | | Remove two unused error branches in the generated bytecode handling.
* gh-132661: Implement PEP 750 (#132662)Lysandros Nikolaou2025-04-301-0/+36
| | | | | | | | | | | | | Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Wingy <git@wingysam.xyz> Co-authored-by: Koudai Aono <koxudaxi@gmail.com> Co-authored-by: Dave Peck <davepeck@gmail.com> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> Co-authored-by: Paul Everitt <pauleveritt@me.com> Co-authored-by: sobolevn <mail@sobolevn.me>
* Get rid of ERROR_IF's "label" parameter (GH-132654)Brandt Bucher2025-04-301-125/+125
|
* GH-132508: Use tagged integers on the evaluation stack for the last ↵Mark Shannon2025-04-291-16/+4
| | | | instruction offset (GH-132545)
* GH-132554: Add stats for GET_ITER (GH-132592)Mark Shannon2025-04-291-0/+3
| | | | | | | * Add stats for GET_ITER * Look for common iterable types, not iterator types * Add stats for self iter and fix naming in summary
* gh-130907: Treat all module-level annotations as conditional (#131550)Jelle Zijlstra2025-04-281-0/+4
|
* GH-131798: Split up and optimize CALL_TUPLE_1 in the JIT (GH-132851)Tomas R.2025-04-241-3/+9
|
* GH-131798: Split up and optimize CALL_STR_1 in the JIT (GH-132849)Tomas R.2025-04-241-3/+9
|
* GH-131798: JIT: Split CALL_TYPE_1 into several uops (GH-132419)Tomas R.2025-04-221-3/+18
|
* gh-131586: Avoid refcount contention in context managers (gh-131851)Sam Gross2025-04-211-13/+18
| | | | | This avoid reference count contention in the free threading build when calling special methods like `__enter__` and `__exit__`.
* gh-128398: improve error messages when incorrectly using `with` and `async ↵Bénédikt Tran2025-04-191-3/+6
| | | | | | | with` (#132218) Improve the error message with a suggestion when an object supporting the synchronous (resp. asynchronous) context manager protocol is entered using `async with` (resp. `with`) instead of `with` (resp. `async with`).
* GH-131498: Replace single-element arrays with scalars in bytecodes.c (GH-132615)Brandt Bucher2025-04-181-139/+133
|
* gh-132097: use a macro for semantically casting function pointers (#132406)Bénédikt Tran2025-04-181-6/+4
|
* GH-131498: Cases generator: Allow input and 'peek' variables to be modified ↵Mark Shannon2025-04-141-17/+10
| | | | (GH-132506)
* GH-131798: Remove JIT guards for dict, frozenset, list, set, and tuple ↵Brandt Bucher2025-04-091-28/+81
| | | | (GH-132289)
* gh-131998: Fix `NULL` dereference when using an unbound method descriptor in ↵Peter Bierma2025-04-081-0/+4
| | | | | | | | a specialized code path (#132000) Co-authored-by: sobolevn <mail@sobolevn.me> Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Mark Shannon <mark@hotpy.org>
* gh-132011: Fix crash on invalid `CALL_LIST_APPEND` deoptimization (#132018)sobolevn2025-04-061-1/+1
| | | | Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
* GH-131498: Cases generator: manage stacks automatically (GH-132074)Mark Shannon2025-04-041-30/+37
|
* GH-131498: Cases generator: Parse down to C statement level. (GH-131948)Mark Shannon2025-04-021-3/+5
| | | | | * Parse down to statement level in the cases generator * Add handling for #if macros, treating them much like normal ifs.
* GH-131726: Split up _CHECK_VALIDITY_AND_SET_IP (GH-131810)Brandt Bucher2025-04-011-5/+0
|
* GH-131798: Allow the JIT to remove more int/float/str guards (GH-131800)Brandt Bucher2025-04-011-44/+42
|
* gh-130704: Strength reduce `LOAD_FAST{_LOAD_FAST}` (#130708)mpage2025-04-011-9/+19
| | | Optimize `LOAD_FAST` opcodes into faster versions that load borrowed references onto the operand stack when we can prove that the lifetime of the local outlives the lifetime of the temporary that is loaded onto the stack.
* GH-131498: Another refactoring of the code generator (GH-131827)Mark Shannon2025-03-311-2/+2
| | | | | | | | | | | | * Rename 'defined' attribute to 'in_local' to more accurately reflect how it is used * Make death of variables explicit even for array variables. * Convert in_memory from boolean to stack offset * Don't apply liveness analyis to optimizer generated code * Add 'out' parameter to stack.pop
* GH-131798: Remove type checks for _TO_BOOL_STR (GH-131816)Amit Lavon2025-03-301-1/+8
|
* gh-130373: Avoid locking in _LOAD_ATTR_WITH_HINT (#130372)Dino Viehland2025-03-281-13/+15
| | | Avoid locking in _LOAD_ATTR_WITH_HINT
* gh-131738: optimize builtin any/all/tuple calls with a generator expression ↵Irit Katriel2025-03-281-10/+2
| | | | arg (#131737)
* gh-123358: Use `_PyStackRef` in `LOAD_DEREF` (gh-130064)Sam Gross2025-03-261-3/+2
| | | | | | | | | | | | Concurrent accesses from multiple threads to the same `cell` object did not scale well in the free-threaded build. Use `_PyStackRef` and optimistically avoid locking to improve scaling. With the locks around cell reads gone, some of the free threading tests were prone to starvation: the readers were able to run in a tight loop and the writer threads weren't scheduled frequently enough to make timely progress. Adjust the tests to avoid this. Co-authored-by: Donghee Na <donghee.na@python.org>