aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/optimizer_bytecodes.c
Commit message (Collapse)AuthorAge
* GH-131798: Split up and optimize CALL_ISINSTANCE (GH-133339)Tomas R.2025-05-08
|
* gh-133273: Keep instruction definitions in `bytecodes.c` and ↵Tomas R.2025-05-09
| | | | `optimizer_bytecodes.c` in sync (GH-133320)
* GH-131798: Split CALL_LEN into several uops (GH-133180)Diego Russo2025-05-05
|
* gh-131798: JIT - Use `sym_new_type` instead of `sym_new_not_null` for ↵Nadeshiko Manju2025-04-27
| | | | | | _BUILD_STRING, _BUILD_SET (GH-132564) Signed-off-by: Manjusaka <me@manjusaka.me>
* gh-131798: JIT: Propagate the result in `_BINARY_OP_SUBSCR_TUPLE_INT` ↵Tomas R.2025-04-27
| | | | (GH-133003)
* gh-131798: JIT: Narrow the return type of _CALL_LEN to int (#132940)Diego Russo2025-04-26
| | | | | | Reduce unnecessary guards whenever `len()` is called and used after. Co-authored-by: Max Bernstein <tekknolagi@gmail.com>
* GH-131798: Split up and optimize CALL_TUPLE_1 in the JIT (GH-132851)Tomas R.2025-04-24
|
* GH-131798: Split up and optimize CALL_STR_1 in the JIT (GH-132849)Tomas R.2025-04-24
|
* GH-131798: JIT: Split CALL_TYPE_1 into several uops (GH-132419)Tomas R.2025-04-22
|
* gh-131586: Avoid refcount contention in context managers (gh-131851)Sam Gross2025-04-21
| | | | | This avoid reference count contention in the free threading build when calling special methods like `__enter__` and `__exit__`.
* GH-130415: Improve the JIT's unneeded uop removal pass (GH-132333)Brandt Bucher2025-04-21
|
* GH-131498: Replace single-element arrays with scalars in bytecodes.c (GH-132615)Brandt Bucher2025-04-18
|
* gh-131798: Use `sym_new_type` instead of `sym_new_not_null` for ↵Nadeshiko Manju2025-04-17
| | | | | | | `_BUILD_LIST`, `_BUILD_SLICE`, and `_BUILD_MAP` (GH-132434) --------- Signed-off-by: Manjusaka <me@manjusaka.me>
* GH-131798: Remove JIT guards for dict, frozenset, list, set, and tuple ↵Brandt Bucher2025-04-09
| | | | (GH-132289)
* GH-131798: Narrow the result of _CONTAINS_OP_DICT to bool in the JIT (GH-132269)Nadeshiko Manju2025-04-08
| | | | Co-authored-by: Tomas R. <tomas.roun8@gmail.com>
* GH-131798: Narrow the result type of _BINARY_OP_SUBSCR_STR_INT to str in the ↵Tomas R.2025-04-08
| | | | JIT (GH-132153)
* GH-131798: Narrow the result of _CONTAINS_OP_SET to bool in the JIT (GH-132057)Tomas R.2025-04-05
|
* GH-131498: Cases generator: Parse down to C statement level. (GH-131948)Mark Shannon2025-04-02
| | | | | * Parse down to statement level in the cases generator * Add handling for #if macros, treating them much like normal ifs.
* GH-131798: Allow the JIT to remove more int/float/str guards (GH-131800)Brandt Bucher2025-04-01
|
* gh-130704: Strength reduce `LOAD_FAST{_LOAD_FAST}` (#130708)mpage2025-04-01
| | | 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-131798: Remove type checks for _TO_BOOL_STR (GH-131816)Amit Lavon2025-03-30
|
* GH-130415: Remove redundant sym_matches_type calls in the JIT optimizer ↵Brandt Bucher2025-03-27
| | | | (GH-131778)
* GH-131729: Code-gen better liveness analysis (GH-131732)Mark Shannon2025-03-26
| | | | | | | | | | | | * 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 analysis to optimizer generated code * Fix RETURN_VALUE in optimizer
* GH-130415: Optimize constant comparison in JIT builds (GH-131489)Savannah Ostrowski2025-03-21
|
* GH-131498: Remove conditional stack effects (GH-131499)Mark Shannon2025-03-20
| | | * Adds some missing #includes
* GH-130903: typo in optimizer DSL for _GUARD_BOTH_UNICODE (#130904)Jamie Phan2025-03-06
| | | Typo introduced in gh-118910.
* GH-130415: Narrow str to "" based on boolean tests (GH-130476)Amit Lavon2025-03-04
|
* GH-130415: Narrow int to 0 based on boolean tests (GH-130772)Klaus1172025-03-04
|
* GH-130415: Use boolean guards to narrow types to values in the JIT (GH-130659)Brandt Bucher2025-03-02
|
* GH-130296: Avoid stack transients in four instructions. (GH-130310)Mark Shannon2025-02-28
| | | | | | | | | * Combine _GUARD_GLOBALS_VERSION_PUSH_KEYS and _LOAD_GLOBAL_MODULE_FROM_KEYS into _LOAD_GLOBAL_MODULE * Combine _GUARD_BUILTINS_VERSION_PUSH_KEYS and _LOAD_GLOBAL_BUILTINS_FROM_KEYS into _LOAD_GLOBAL_BUILTINS * Combine _CHECK_ATTR_MODULE_PUSH_KEYS and _LOAD_ATTR_MODULE_FROM_KEYS into _LOAD_ATTR_MODULE * Remove stack transient in LOAD_ATTR_WITH_HINT
* gh-100239: replace BINARY_SUBSCR & family by BINARY_OP with oparg NB_SUBSCR ↵Irit Katriel2025-02-07
| | | | (#129700)
* GH-129709: Clean up tier two (GH-129710)Brandt Bucher2025-02-07
|
* GH-128682: Make `PyStackRef_CLOSE` escaping. (GH-129404)Mark Shannon2025-02-03
|
* GH-128914: Remove all but one conditional stack effects (GH-129226)Mark Shannon2025-01-27
| | | | | | | | | | | | | * Remove all 'if (0)' and 'if (1)' conditional stack effects * Use array instead of conditional for BUILD_SLICE args * Refactor LOAD_GLOBAL to use a common conditional uop * Remove conditional stack effects from LOAD_ATTR specializations * Replace conditional stack effects in LOAD_ATTR with a 0 or 1 sized array. * Remove conditional stack effects from CALL_FUNCTION_EX
* Revert "GH-128914: Remove conditional stack effects from `bytecodes.c` and ↵Sam Gross2025-01-23
| | | | | | | the code generators (GH-128918)" (GH-129202) The commit introduced a ~2.5-3% regression in the free threading build. This reverts commit ab61d3f4303d14a413bc9ae6557c730ffdf7579e.
* GH-128914: Remove conditional stack effects from `bytecodes.c` and the code ↵Mark Shannon2025-01-20
| | | | generators (GH-128918)
* GH-128939: Refactor JIT optimize structs (GH-128940)Mark Shannon2025-01-20
|
* gh-115999: Specialize `LOAD_ATTR` for instance and class receivers in ↵mpage2025-01-14
| | | | | | | free-threaded builds (#128164) Finish specialization for LOAD_ATTR in the free-threaded build by adding support for class and instance receivers.
* GH-128685: Specialize (rather than quicken) LOAD_CONST into ↵Mark Shannon2025-01-13
| | | | LOAD_CONST_[IM]MORTAL (GH-128708)
* GH-127809: Fix the JIT's understanding of ** (GH-127844)Brandt Bucher2025-01-07
|
* gh-128195: Add `_REPLACE_WITH_TRUE` to the tier2 optimizer (GH-128203)Yan Yanchii2024-12-24
| | | Add `_REPLACE_WITH_TRUE` to the tier2 optimizer
* gh-115999: Enable BINARY_SUBSCR_GETITEM for free-threaded build (gh-127737)Donghee Na2024-12-19
|
* gh-115999: Specialize loading attributes from modules in free-threaded ↵mpage2024-12-13
| | | | | | | | | builds (#127711) We use the same approach that was used for specialization of LOAD_GLOBAL in free-threaded builds: _CHECK_ATTR_MODULE is renamed to _CHECK_ATTR_MODULE_PUSH_KEYS; it pushes the keys object for the following _LOAD_ATTR_MODULE_FROM_KEYS (nee _LOAD_ATTR_MODULE). This arrangement avoids having to recheck the keys version. _LOAD_ATTR_MODULE is renamed to _LOAD_ATTR_MODULE_FROM_KEYS; it loads the value from the keys object pushed by the preceding _CHECK_ATTR_MODULE_PUSH_KEYS at the cached index.
* gh-120619: Strength reduce function guards, support 2-operand uop forms ↵Ken Jin2024-11-09
| | | | | (GH-124846) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
* GH-125837: Split `LOAD_CONST` into three. (GH-125972)Mark Shannon2024-10-29
| | | | | | | | * Add LOAD_CONST_IMMORTAL opcode * Add LOAD_SMALL_INT opcode * Remove RETURN_CONST opcode
* GH-125912: Teach the JIT's optimizer about _BINARY_OP_INPLACE_ADD_UNICODE ↵Brandt Bucher2024-10-28
| | | | (GH-125935)
* gh-115999: Refactor `LOAD_GLOBAL` specializations to avoid reloading ↵mpage2024-10-09
| | | | | | | | | | | | | | | | | | {globals, builtins} keys (gh-124953) Each of the `LOAD_GLOBAL` specializations is implemented roughly as: 1. Load keys version. 2. Load cached keys version. 3. Deopt if (1) and (2) don't match. 4. Load keys. 5. Load cached index into keys. 6. Load object from (4) at offset from (5). This is not thread-safe in free-threaded builds; the keys object may be replaced in between steps (3) and (4). This change refactors the specializations to avoid reloading the keys object and instead pass the keys object from guards to be consumed by downstream uops.
* GH-119866: Spill the stack around escaping calls. (GH-124392)Mark Shannon2024-10-07
| | | | | | | * 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.
* gh-120619: Optimize through `_Py_FRAME_GENERAL` (GH-124518)Ken Jin2024-10-03
| | | | | * Optimize through _Py_FRAME_GENERAL * refactor
* GH-115776: Allow any fixed sized object to have inline values (GH-123192)Mark Shannon2024-08-21
|