Irit Katriel
2c8f329dc6
gh-131738: optimize builtin any/all/tuple calls with a generator expression arg ( #131737 )
2025-03-28 10:35:20 +00:00
Tomas R.
d07e9ebbe8
gh-131306: Remove unused code related to `BINARY_SUBSCR` ( #131307 )
2025-03-16 16:37:29 +00:00
Sam Gross
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
ab61d3f430
GH-128914: Remove conditional stack effects from `bytecodes.c` and the code generators (GH-128918)
2025-01-20 17:09:23 +00:00
Irit Katriel
3893a92d95
gh-100239: specialize long tail of binary operations ( #128722 )
2025-01-16 15:22:13 +00:00
Irit Katriel
5eee2fe2b0
gh-128891: add specialized opcodes to opcode.opname ( #128892 )
2025-01-15 21:02:32 +00:00
Mark Shannon
c13e7d98fb
GH-118093: Specialize `CALL_KW` (GH-123006)
2024-08-16 17:11:24 +01:00
Jelle Zijlstra
e8e151d471
gh-120780: Show attribute name for LOAD_SPECIAL in dis output ( #120781 )
2024-06-20 07:07:24 -07:00
Victor Stinner
6ae254aaa0
gh-120417: Add #noqa to used imports in the stdlib ( #120421 )
...
Tools such as ruff can ignore "imported but unused" warnings if a
line ends with "# noqa: F401". It avoids the temptation to remove
an import which is used effectively.
2024-06-13 16:14:50 +02:00
Jelle Zijlstra
98e855fcc1
gh-119180: Add LOAD_COMMON_CONSTANT opcode ( #119321 )
...
The PEP 649 implementation will require a way to load NotImplementedError
from the bytecode. @markshannon suggested implementing this by converting
LOAD_ASSERTION_ERROR into a more general mechanism for loading constants.
This PR adds this new opcode. I will work on the rest of the implementation
of the PEP separately.
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2024-05-22 00:46:39 +00:00
Ken Jin
7114cf20c0
gh-116381: Specialize CONTAINS_OP (GH-116385)
...
* Specialize CONTAINS_OP
* 📜 🤖 Added by blurb_it.
* Add PyAPI_FUNC for JIT
---------
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2024-03-07 03:30:11 +08:00
Guido van Rossum
bcce5e2718
gh-109039: Branch prediction for Tier 2 interpreter ( #109038 )
...
This adds a 16-bit inline cache entry to the conditional branch instructions POP_JUMP_IF_{FALSE,TRUE,NONE,NOT_NONE} and their instrumented variants, which is used to keep track of the branch direction.
Each time we encounter these instructions we shift the cache entry left by one and set the bottom bit to whether we jumped.
Then when it's time to translate such a branch to Tier 2 uops, we use the bit count from the cache entry to decided whether to continue translating the "didn't jump" branch or the "jumped" branch.
The counter is initialized to a pattern of alternating ones and zeros to avoid bias.
The .pyc file magic number is updated. There's a new test, some fixes for existing tests, and a few miscellaneous cleanups.
2023-09-11 18:20:24 +00:00
Irit Katriel
72119d16a5
gh-105481: remove regen-opcode. Generated _PyOpcode_Caches in regen-cases. ( #108367 )
2023-08-23 18:39:00 +01:00
Irit Katriel
0b243c2f66
gh-105481: opcode.h is no longer generated during the build ( #108080 )
2023-08-17 17:07:58 +01:00
Irit Katriel
665a4391e1
gh-105481: generate op IDs from bytecode.c instead of hard coding them in opcode.py ( #107971 )
2023-08-16 22:25:18 +00:00
Irit Katriel
dd693d6320
gh-105481: simplify definition of pseudo ops in Lib/opcode.py ( #107561 )
2023-08-02 18:16:57 +01:00
Irit Katriel
6ef8f8ca88
gh-105481: the ENABLE_SPECIALIZATION flag does not need to be generated by the build script, or exposed in opcode.py ( #107534 )
2023-08-01 17:05:00 +00:00
Irit Katriel
d77d973335
gh-105481: remove dependency of _inline_cache_entries on opname ( #107339 )
2023-07-27 14:15:25 +01:00
Irit Katriel
9c81fc2dbe
gh-105481: do not auto-generate pycore_intrinsics.h ( #106913 )
2023-07-20 17:46:04 +01:00
Irit Katriel
40f3f11a77
gh-105481: Generate the opcode lists in dis from data extracted from bytecodes.c ( #106758 )
2023-07-18 19:42:44 +01:00
Irit Katriel
5ecedbd266
gh-106789: avoid importing pprint from sysconfig ( #106790 )
2023-07-17 10:28:33 +01:00
Brandt Bucher
7b2d94d875
GH-106008: Make implicit boolean conversions explicit (GH-106003)
2023-06-29 13:49:54 -07:00
hms
8bff940ad6
gh-105775: Convert LOAD_CLOSURE to a pseudo-op ( #106059 )
...
This enables super-instruction formation,
removal of checks for uninitialized variables,
and frees up an instruction.
2023-06-29 09:34:00 -07:00
Mark Shannon
04492cbc9a
GH-91095: Specialize calls to normal Python classes. (GH-99331)
2023-06-22 09:48:19 +01:00
Irit Katriel
33f0a8578b
gh-105481: generate _specializations and _specialized_instructions from bytecodes.c ( #105913 )
2023-06-19 23:47:04 +01:00
Mark Shannon
1d857da7f0
GH-77273: Better bytecodes for f-strings (GH-6132)
2023-06-14 16:15:08 +01:00
Mark Shannon
09ffa69e2e
GH-105678: Split MAKE_FUNCTION into MAKE_FUNCTION and SET_FUNCTION_ATTRIBUTE (GH-105680)
2023-06-13 09:51:05 +01:00
Mark Shannon
e830289c52
GH-105229: Remove remaining two-codeunit superinstructions (GH-105326)
...
* Remove LOAD_CONST__LOAD_FAST and LOAD_FAST__LOAD_CONST superinstructions.
2023-06-08 12:35:34 +01:00
Mark Shannon
0689340366
GH-105229: Replace some superinstructions with single instruction equivalent. (GH-105230)
2023-06-05 11:07:04 +01:00
Mark Shannon
4bfa01b9d9
GH-104584: Plugin optimizer API (GH-105100)
2023-06-02 11:46:18 +01:00
Carl Meyer
f40890b124
gh-103865: add monitoring support to LOAD_SUPER_ATTR ( #103866 )
2023-05-16 10:29:00 -06:00
Jelle Zijlstra
24d8b88420
gh-103763: Implement PEP 695 ( #103764 )
...
This implements PEP 695, Type Parameter Syntax. It adds support for:
- Generic functions (def func[T](): ...)
- Generic classes (class X[T](): ...)
- Type aliases (type X = ...)
- New scoping when the new syntax is used within a class body
- Compiler and interpreter changes to support the new syntax and scoping rules
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Eric Traut <eric@traut.com>
Co-authored-by: Larry Hastings <larry@hastings.org>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-05-15 20:36:23 -07:00
Carl Meyer
77262458fe
gh-87729: improve hit rate of LOAD_SUPER_ATTR specialization ( #104270 )
2023-05-11 08:08:13 -06:00
Carl Meyer
c3b595e73e
gh-97933: (PEP 709) inline list/dict/set comprehensions ( #101441 )
...
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
2023-05-09 11:02:14 -06:00
Juhi Chandalia
872cbc6132
GH-103963: Make dis display names of args for intrinsics opcodes ( #104029 )
2023-05-02 19:00:17 -07:00
Carl Meyer
ef25febcf2
gh-87729: specialize LOAD_SUPER_ATTR_METHOD ( #103809 )
2023-04-25 17:45:51 +00:00
Carl Meyer
0dc8b50d33
gh-87729: add LOAD_SUPER_ATTR instruction for faster super() ( #103497 )
...
This speeds up `super()` (by around 85%, for a simple one-level
`super().meth()` microbenchmark) by avoiding allocation of a new
single-use `super()` object on each use.
2023-04-24 22:22:14 +00:00
Mark Shannon
411b169281
GH-103082: Implementation of PEP 669: Low Impact Monitoring for CPython (GH-103083)
...
* The majority of the monitoring code is in instrumentation.c
* The new instrumentation bytecodes are in bytecodes.c
* legacy_tracing.c adapts the new API to the old sys.setrace and sys.setprofile APIs
2023-04-12 12:04:55 +01:00
Brandt Bucher
b4978ff872
GH-88691: Shrink the CALL caches (GH-103230)
2023-04-05 14:15:49 -07:00
Brandt Bucher
121057aa36
GH-89987: Shrink the BINARY_SUBSCR caches (GH-103022)
2023-03-29 15:53:30 -07:00
Brandt Bucher
0444ae2487
GH-100982: Break up COMPARE_AND_BRANCH (GH-102801)
2023-03-23 15:25:09 -07:00
Irit Katriel
3468c768ce
gh-102859: Remove JUMP_IF_FALSE_OR_POP and JUMP_IF_TRUE_OR_POP ( #102870 )
2023-03-22 18:10:48 +00:00
Dong-hee Na
d77c48740f
gh-102674: Remove _specialization_stats from Lib/opcode.py ( #102685 )
...
It's not use except in a test, so move it there instead.
2023-03-14 13:20:14 -07:00
Brandt Bucher
08b67fb34f
GH-90997: Shrink the LOAD_GLOBAL caches ( #102569 )
2023-03-10 17:01:16 -08:00
Irit Katriel
81e3aa835c
gh-101799: implement PREP_RERAISE_STAR as an intrinsic function ( #101800 )
2023-02-14 11:54:13 +00:00
Mark Shannon
160f2fe2b9
GH-87849: Simplify stack effect of SEND and specialize it for generators and coroutines. (GH-101788)
2023-02-13 11:24:55 +00:00
penguin_wwy
753fc8a5d6
gh-101632: Add the new RETURN_CONST opcode ( #101633 )
2023-02-07 22:32:21 +00:00
Irit Katriel
e9ccfe4a63
gh-100712: make it possible to disable specialization (for debugging) ( #100713 )
2023-01-19 18:14:55 +00:00
Mark Shannon
7b14c2ef19
GH-100982: Add `COMPARE_AND_BRANCH` instruction (GH-100983)
2023-01-16 12:35:21 +00:00
Mark Shannon
6e4e14d98f
GH-100923: Embed jump mask in `COMPARE_OP` oparg (GH-100924)
2023-01-11 20:40:43 +00:00