60fc42c169
[3.14] gh-135608: Add a null check for attribute promotion to fix a JIT crash (GH-135613) ( #135739 )
...
gh-135608: Add a null check for attribute promotion to fix a JIT crash (GH-135613)
Co-authored-by: devdanzin <[email protected] >
2025-06-20 15:24:25 +08:00
Diego Russo and GitHub
9cc77aaf9d
GH-131798: Split CALL_LEN into several uops (GH-133180)
2025-05-05 14:31:48 -07:00
Nadeshiko Manju and GitHub
614d79231d
gh-131798: JIT - Use sym_new_type instead of sym_new_not_null for _BUILD_STRING, _BUILD_SET (GH-132564)
...
Signed-off-by: Manjusaka <[email protected] >
2025-04-27 20:30:28 +08:00
Tomas R. and GitHub
5e96e4fca8
gh-131798: JIT: Propagate the result in _BINARY_OP_SUBSCR_TUPLE_INT (GH-133003)
2025-04-27 02:47:55 +08:00
4c20f46fa0
gh-131798: JIT: Narrow the return type of _CALL_LEN to int ( #132940 )
...
Reduce unnecessary guards whenever `len()` is called and used
after.
Co-authored-by: Max Bernstein <[email protected] >
2025-04-26 02:57:42 +08:00
Tomas R. and GitHub
08e3389e8c
GH-131798: Split up and optimize CALL_TUPLE_1 in the JIT (GH-132851)
2025-04-24 15:55:03 -07:00
Tomas R. and GitHub
0a387b311e
GH-131798: Split up and optimize CALL_STR_1 in the JIT (GH-132849)
2025-04-24 12:54:46 -07:00
Tomas R. and GitHub
a6a3dbb7db
GH-131798: JIT: Split CALL_TYPE_1 into several uops (GH-132419)
2025-04-22 09:30:38 -07:00
Sam Gross and GitHub
da53660f35
gh-131586: Avoid refcount contention in context managers (gh-131851)
...
This avoid reference count contention in the free threading build
when calling special methods like `__enter__` and `__exit__`.
2025-04-21 15:54:25 -04:00
Brandt Bucher and GitHub
4f7f72ce34
GH-130415: Improve the JIT's unneeded uop removal pass (GH-132333)
2025-04-21 09:58:55 -07:00
Brandt Bucher and GitHub
40ae88988c
GH-131498: Replace single-element arrays with scalars in bytecodes.c (GH-132615)
2025-04-18 07:16:28 -07:00
Nadeshiko Manju and GitHub
b9e88ff4cb
gh-131798: Use sym_new_type instead of sym_new_not_null for _BUILD_LIST, _BUILD_SLICE, and _BUILD_MAP (GH-132434)
...
---------
Signed-off-by: Manjusaka <[email protected] >
2025-04-17 01:17:48 +08:00
Brandt Bucher and GitHub
20926c73b5
GH-131798: Remove JIT guards for dict, frozenset, list, set, and tuple (GH-132289)
2025-04-09 14:32:21 -07:00
d753d8aed7
GH-131798: Narrow the result of _CONTAINS_OP_DICT to bool in the JIT (GH-132269)
...
Co-authored-by: Tomas R. <[email protected] >
2025-04-08 09:12:09 -07:00
Tomas R. and GitHub
71009cb835
GH-131798: Narrow the result type of _BINARY_OP_SUBSCR_STR_INT to str in the JIT (GH-132153)
2025-04-08 08:22:54 -07:00
Tomas R. and GitHub
85bc489b64
GH-131798: Narrow the result of _CONTAINS_OP_SET to bool in the JIT (GH-132057)
2025-04-05 15:56:01 -07:00
Mark Shannon and GitHub
ad053d8d6a
GH-131498: Cases generator: Parse down to C statement level. (GH-131948)
...
* Parse down to statement level in the cases generator
* Add handling for #if macros, treating them much like normal ifs.
2025-04-02 16:31:59 +01:00
Brandt Bucher and GitHub
1a9d4a1fb3
GH-131798: Allow the JIT to remove more int/float/str guards (GH-131800)
2025-04-01 15:10:15 -07:00
mpage and GitHub
053c285f6b
gh-130704: Strength reduce LOAD_FAST{_LOAD_FAST} ( #130708 )
...
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.
2025-04-01 10:18:42 -07:00
Amit Lavon and GitHub
685fd74f81
GH-131798: Remove type checks for _TO_BOOL_STR (GH-131816)
2025-03-30 16:07:25 -07:00
Brandt Bucher and GitHub
972a295fe3
GH-130415: Remove redundant sym_matches_type calls in the JIT optimizer (GH-131778)
2025-03-27 09:12:30 -07:00
Mark Shannon and GitHub
1b8bb1ed0c
GH-131729: Code-gen better liveness analysis (GH-131732)
...
* 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
2025-03-26 15:21:35 +00:00
Savannah Ostrowski and GitHub
b92ee14b80
GH-130415: Optimize constant comparison in JIT builds (GH-131489)
2025-03-21 11:23:12 -07:00
Mark Shannon and GitHub
7ebd71ee14
GH-131498: Remove conditional stack effects (GH-131499)
...
* Adds some missing #includes
2025-03-20 15:39:38 +00:00
Jamie Phan and GitHub
10cdd7f91f
GH-130903: typo in optimizer DSL for _GUARD_BOTH_UNICODE ( #130904 )
...
Typo introduced in gh-118910.
2025-03-06 12:11:08 +01:00
Amit Lavon and GitHub
691354ccb0
GH-130415: Narrow str to "" based on boolean tests (GH-130476)
2025-03-04 13:20:17 -08:00
Klaus117 and GitHub
c989e74446
GH-130415: Narrow int to 0 based on boolean tests (GH-130772)
2025-03-04 12:44:09 -08:00
Brandt Bucher and GitHub
7afa476874
GH-130415: Use boolean guards to narrow types to values in the JIT (GH-130659)
2025-03-02 13:21:34 -08:00
Mark Shannon and GitHub
54965f3fb2
GH-130296: Avoid stack transients in four instructions. (GH-130310)
...
* 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
2025-02-28 18:00:38 +00:00
Irit Katriel and GitHub
a1417b211f
gh-100239: replace BINARY_SUBSCR & family by BINARY_OP with oparg NB_SUBSCR ( #129700 )
2025-02-07 22:39:54 +00:00
Brandt Bucher and GitHub
70e387c990
GH-129709: Clean up tier two (GH-129710)
2025-02-07 09:52:49 -08:00
Mark Shannon and GitHub
808071b994
GH-128682: Make PyStackRef_CLOSE escaping. (GH-129404)
2025-02-03 12:41:32 +00:00
Mark Shannon and GitHub
75b4962157
GH-128914: Remove all but one conditional stack effects (GH-129226)
...
* 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
2025-01-27 16:24:48 +00:00
Sam Gross and GitHub
a10f99375e
Revert "GH-128914: Remove conditional stack effects from bytecodes.c and the code generators (GH-128918)" (GH-129202)
...
The commit introduced a ~2.5-3% regression in the free threading build.
This reverts commit ab61d3f430 .
2025-01-23 09:26:25 +00:00
Mark Shannon and GitHub
ab61d3f430
GH-128914: Remove conditional stack effects from bytecodes.c and the code generators (GH-128918)
2025-01-20 17:09:23 +00:00
Mark Shannon and GitHub
f0f7b978be
GH-128939: Refactor JIT optimize structs (GH-128940)
2025-01-20 15:49:15 +00:00
mpage and GitHub
b5ee0258bf
gh-115999: Specialize LOAD_ATTR for instance and class receivers in free-threaded builds ( #128164 )
...
Finish specialization for LOAD_ATTR in the free-threaded build by adding support for class and instance receivers.
2025-01-14 11:56:11 -08:00
Mark Shannon and GitHub
ddd959987c
GH-128685: Specialize (rather than quicken) LOAD_CONST into LOAD_CONST_[IM]MORTAL (GH-128708)
2025-01-13 10:30:28 +00:00
Brandt Bucher and GitHub
65ae3d5a73
GH-127809: Fix the JIT's understanding of ** (GH-127844)
2025-01-07 17:25:48 -08:00
Yan Yanchii and GitHub
30efede33c
gh-128195: Add _REPLACE_WITH_TRUE to the tier2 optimizer (GH-128203)
...
Add `_REPLACE_WITH_TRUE` to the tier2 optimizer
2024-12-24 05:17:47 +08:00
Donghee Na and GitHub
48c70b8f7d
gh-115999: Enable BINARY_SUBSCR_GETITEM for free-threaded build (gh-127737)
2024-12-19 11:08:17 +09:00
mpage and GitHub
2de048ce79
gh-115999: Specialize loading attributes from modules in free-threaded 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.
2024-12-13 10:17:16 -08:00
6293d00e72
gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846)
...
Co-authored-by: Brandt Bucher <[email protected] >
2024-11-09 11:35:33 +08:00
Mark Shannon and GitHub
faa3272fb8
GH-125837: Split LOAD_CONST into three. (GH-125972)
...
* Add LOAD_CONST_IMMORTAL opcode
* Add LOAD_SMALL_INT opcode
* Remove RETURN_CONST opcode
2024-10-29 11:15:42 +00:00
Brandt Bucher and GitHub
b5b06349eb
GH-125912: Teach the JIT's optimizer about _BINARY_OP_INPLACE_ADD_UNICODE (GH-125935)
2024-10-28 14:37:16 -07:00
mpage and GitHub
f978fb4f8d
gh-115999: Refactor LOAD_GLOBAL specializations to avoid reloading {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.
2024-10-09 15:18:25 +00:00
Mark Shannon and GitHub
da071fa3e8
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.
2024-10-07 14:56:39 +01:00
Ken Jin and GitHub
b84a763dca
gh-120619: Optimize through _Py_FRAME_GENERAL (GH-124518)
...
* Optimize through _Py_FRAME_GENERAL
* refactor
2024-10-03 01:10:51 +08:00
Mark Shannon and GitHub
a4fd7aa4a6
GH-115776: Allow any fixed sized object to have inline values (GH-123192)
2024-08-21 15:52:04 +01:00
Mark Shannon and GitHub
bb1d30336e
GH-118093: Make CALL_ALLOC_AND_ENTER_INIT suitable for tier 2. (GH-123140)
...
* Convert CALL_ALLOC_AND_ENTER_INIT to micro-ops such that tier 2 supports it
* Allow inexact arguments for CALL_ALLOC_AND_ENTER_INIT.
2024-08-20 16:52:58 +01:00