Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | gh-109039: Branch prediction for Tier 2 interpreter (#109038) | Guido van Rossum | 2023-09-11 | 1 | -0/+12 |
| | | | | | | | | | | | 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. | ||||
* | gh-105481: remove regen-opcode. Generated _PyOpcode_Caches in regen-cases. ↵ | Irit Katriel | 2023-08-23 | 1 | -31/+23 |
| | | | | (#108367) | ||||
* | gh-105481: opcode.h is no longer generated during the build (#108080) | Irit Katriel | 2023-08-17 | 1 | -30/+1 |
| | |||||
* | gh-105481: generate op IDs from bytecode.c instead of hard coding them in ↵ | Irit Katriel | 2023-08-16 | 1 | -208/+10 |
| | | | | opcode.py (#107971) | ||||
* | gh-105481: simplify definition of pseudo ops in Lib/opcode.py (#107561) | Irit Katriel | 2023-08-02 | 1 | -29/+15 |
| | |||||
* | gh-105481: the ENABLE_SPECIALIZATION flag does not need to be generated by ↵ | Irit Katriel | 2023-08-01 | 1 | -3/+0 |
| | | | | the build script, or exposed in opcode.py (#107534) | ||||
* | gh-105481: remove dependency of _inline_cache_entries on opname (#107339) | Irit Katriel | 2023-07-27 | 1 | -3/+3 |
| | |||||
* | gh-105481: do not auto-generate pycore_intrinsics.h (#106913) | Irit Katriel | 2023-07-20 | 1 | -23/+3 |
| | |||||
* | gh-105481: Generate the opcode lists in dis from data extracted from ↵ | Irit Katriel | 2023-07-18 | 1 | -80/+49 |
| | | | | bytecodes.c (#106758) | ||||
* | gh-106789: avoid importing pprint from sysconfig (#106790) | Irit Katriel | 2023-07-17 | 1 | -19/+7 |
| | |||||
* | GH-106008: Make implicit boolean conversions explicit (GH-106003) | Brandt Bucher | 2023-06-29 | 1 | -3/+7 |
| | |||||
* | gh-105775: Convert LOAD_CLOSURE to a pseudo-op (#106059) | hms | 2023-06-29 | 1 | -2/+1 |
| | | | | | | This enables super-instruction formation, removal of checks for uninitialized variables, and frees up an instruction. | ||||
* | GH-91095: Specialize calls to normal Python classes. (GH-99331) | Mark Shannon | 2023-06-22 | 1 | -0/+1 |
| | |||||
* | gh-105481: generate _specializations and _specialized_instructions from ↵ | Irit Katriel | 2023-06-19 | 1 | -90/+6 |
| | | | | bytecodes.c (#105913) | ||||
* | GH-77273: Better bytecodes for f-strings (GH-6132) | Mark Shannon | 2023-06-14 | 1 | -1/+4 |
| | |||||
* | GH-105678: Split MAKE_FUNCTION into MAKE_FUNCTION and SET_FUNCTION_ATTRIBUTE ↵ | Mark Shannon | 2023-06-13 | 1 | -1/+2 |
| | | | | (GH-105680) | ||||
* | GH-105229: Remove remaining two-codeunit superinstructions (GH-105326) | Mark Shannon | 2023-06-08 | 1 | -6/+0 |
| | | | | * Remove LOAD_CONST__LOAD_FAST and LOAD_FAST__LOAD_CONST superinstructions. | ||||
* | GH-105229: Replace some superinstructions with single instruction ↵ | Mark Shannon | 2023-06-05 | 1 | -5/+3 |
| | | | | equivalent. (GH-105230) | ||||
* | GH-104584: Plugin optimizer API (GH-105100) | Mark Shannon | 2023-06-02 | 1 | -0/+6 |
| | |||||
* | gh-103865: add monitoring support to LOAD_SUPER_ATTR (#103866) | Carl Meyer | 2023-05-16 | 1 | -1/+2 |
| | |||||
* | gh-103763: Implement PEP 695 (#103764) | Jelle Zijlstra | 2023-05-16 | 1 | -4/+16 |
| | | | | | | | | | | | | | | 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> | ||||
* | gh-87729: improve hit rate of LOAD_SUPER_ATTR specialization (#104270) | Carl Meyer | 2023-05-11 | 1 | -3/+1 |
| | |||||
* | gh-97933: (PEP 709) inline list/dict/set comprehensions (#101441) | Carl Meyer | 2023-05-09 | 1 | -0/+4 |
| | | | | Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> | ||||
* | GH-103963: Make dis display names of args for intrinsics opcodes (#104029) | Juhi Chandalia | 2023-05-03 | 1 | -0/+15 |
| | |||||
* | gh-87729: specialize LOAD_SUPER_ATTR_METHOD (#103809) | Carl Meyer | 2023-04-25 | 1 | -0/+9 |
| | |||||
* | gh-87729: add LOAD_SUPER_ATTR instruction for faster super() (#103497) | Carl Meyer | 2023-04-24 | 1 | -1/+4 |
| | | | | | 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. | ||||
* | GH-103082: Implementation of PEP 669: Low Impact Monitoring for CPython ↵ | Mark Shannon | 2023-04-12 | 1 | -0/+27 |
| | | | | | | | | | | (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 | ||||
* | GH-88691: Shrink the CALL caches (GH-103230) | Brandt Bucher | 2023-04-05 | 1 | -1/+0 |
| | |||||
* | GH-89987: Shrink the BINARY_SUBSCR caches (GH-103022) | Brandt Bucher | 2023-03-29 | 1 | -2/+0 |
| | |||||
* | GH-100982: Break up COMPARE_AND_BRANCH (GH-102801) | Brandt Bucher | 2023-03-23 | 1 | -9/+4 |
| | |||||
* | gh-102859: Remove JUMP_IF_FALSE_OR_POP and JUMP_IF_TRUE_OR_POP (#102870) | Irit Katriel | 2023-03-22 | 1 | -2/+0 |
| | |||||
* | gh-102674: Remove _specialization_stats from Lib/opcode.py (#102685) | Dong-hee Na | 2023-03-14 | 1 | -8/+0 |
| | | | It's not use except in a test, so move it there instead. | ||||
* | GH-90997: Shrink the LOAD_GLOBAL caches (#102569) | Brandt Bucher | 2023-03-11 | 1 | -1/+1 |
| | |||||
* | gh-101799: implement PREP_RERAISE_STAR as an intrinsic function (#101800) | Irit Katriel | 2023-02-14 | 1 | -1/+1 |
| | |||||
* | GH-87849: Simplify stack effect of SEND and specialize it for generators and ↵ | Mark Shannon | 2023-02-13 | 1 | -1/+7 |
| | | | | coroutines. (GH-101788) | ||||
* | gh-101632: Add the new RETURN_CONST opcode (#101633) | penguin_wwy | 2023-02-07 | 1 | -0/+2 |
| | |||||
* | gh-100712: make it possible to disable specialization (for debugging) (#100713) | Irit Katriel | 2023-01-19 | 1 | -0/+3 |
| | |||||
* | GH-100982: Add `COMPARE_AND_BRANCH` instruction (GH-100983) | Mark Shannon | 2023-01-16 | 1 | -4/+9 |
| | |||||
* | GH-100923: Embed jump mask in `COMPARE_OP` oparg (GH-100924) | Mark Shannon | 2023-01-11 | 1 | -1/+0 |
| | |||||
* | GH-99005: More intrinsics (GH-100774) | Mark Shannon | 2023-01-06 | 1 | -3/+1 |
| | | | * Remove UNARY_POSITIVE, LIST_TO_TUPLE and ASYNC_GEN_WRAP, replacing them with intrinsics. | ||||
* | GH-99005: Add `CALL_INTRINSIC_1` instruction (GH-100771) | Mark Shannon | 2023-01-05 | 1 | -5/+3 |
| | | | | | | | | * Remove PRINT_EXPR instruction * Remove STOPITERATION_ERROR instruction * Remove IMPORT_STAR instruction | ||||
* | GH-100288: Remove LOAD_ATTR_METHOD_WITH_DICT instruction. (GH-100753) | Mark Shannon | 2023-01-05 | 1 | -1/+0 |
| | |||||
* | Revert "gh-100288: Specialise LOAD_ATTR_METHOD for managed dictionaries ↵ | Ken Jin | 2022-12-23 | 1 | -1/+0 |
| | | | | | (GH-100289)" (#100468) This reverts commit c3c7848a48b74a321632202e4bdcf2f465fb1cc6. | ||||
* | gh-100288: Specialise LOAD_ATTR_METHOD for managed dictionaries (GH-100289) | Ken Jin | 2022-12-23 | 1 | -0/+1 |
| | |||||
* | GH-100110: Specialize FOR_ITER for tuples (GH-100109) | Ken Jin | 2022-12-09 | 1 | -0/+1 |
| | | | * Specialize FOR_ITER for tuples | ||||
* | GH-98686: Get rid of BINARY_OP_GENERIC and COMPARE_OP_GENERIC (GH-99399) | Brandt Bucher | 2022-11-17 | 1 | -2/+0 |
| | |||||
* | GH-96421: Insert shim frame on entry to interpreter (GH-96319) | Mark Shannon | 2022-11-10 | 1 | -0/+1 |
| | | | | | | * Adds EXIT_INTERPRETER instruction to exit PyEval_EvalDefault() * Simplifies RETURN_VALUE, YIELD_VALUE and RETURN_GENERATOR instructions as they no longer need to check for entry frames. | ||||
* | GH-98686: Get rid of "adaptive" and "quick" instructions (GH-99182) | Brandt Bucher | 2022-11-09 | 1 | -13/+2 |
| | |||||
* | GH-96793: Specialize FOR_ITER for generators. (GH-98772) | Mark Shannon | 2022-11-07 | 1 | -0/+1 |
| | |||||
* | GH-96793: Implement PEP 479 in bytecode. (GH-99006) | Mark Shannon | 2022-11-03 | 1 | -0/+2 |
| | | | | | * Handle converting StopIteration to RuntimeError in bytecode. * Add custom instruction for converting StopIteration into RuntimeError. |