Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | gh-111375: Use `NULL` rather than `None` in the exception stack to indicate ↵ | Carey Metcalfe | 2023-12-21 |
| | | | | that an exception was handled (#113302) | ||
* | GH-111485: Generate instruction and uop metadata (GH-113287) | Mark Shannon | 2023-12-20 |
| | |||
* | GH-111485: Mark some instructions as `TIER_ONE_ONLY` (GH-113155) | Brandt Bucher | 2023-12-15 |
| | |||
* | GH-112354: Treat _EXIT_TRACE like an unconditional side exit (GH-113104) | Mark Shannon | 2023-12-14 |
| | |||
* | GH-108866: Guarantee forward progress in executors. (GH-113006) | Mark Shannon | 2023-12-12 |
| | |||
* | GH-111485: Factor out tier 2 code generation from the rest of the ↵ | Mark Shannon | 2023-12-12 |
| | | | | interpreter code generator (GH-112968) | ||
* | GH-111485: Separate out parsing, analysis and code-gen phases of tier 1 code ↵ | Mark Shannon | 2023-12-07 |
| | | | | generator (GH-112299) | ||
* | gh-112519: Make it possible to specify instruction flags for pseudo ↵ | Irit Katriel | 2023-11-30 |
| | | | | instructions in bytecodes.c (#112520) | ||
* | Rename ...Uop... to ...UOp... (uppercase O) for consistency (#112327) | Guido van Rossum | 2023-11-28 |
| | | | | * Rename _PyUopExecute to _PyUOpExecute (uppercase O) for consistency * Also rename _PyUopName and _PyUOp_Replacements, and some output strings | ||
* | gh-106529: Make FOR_ITER a viable uop (#112134) | Guido van Rossum | 2023-11-20 |
| | | | | | | | | | | This uses the new mechanism whereby certain uops are replaced by others during translation, using the `_PyUop_Replacements` table. We further special-case the `_FOR_ITER_TIER_TWO` uop to update the deoptimization target to point just past the corresponding `END_FOR` opcode. Two tiny code cleanups are also part of this PR. | ||
* | gh-110319: Assert type_version != 0 before using it (#112226) | Guido van Rossum | 2023-11-17 |
| | | | | | | - Ensure that `assert(type_version != 0);` always comes *before* using `type_version` Also: - In cases_generator, rename `-v` to from `--verbose` to `--viable` | ||
* | gh-106529: Cleanups split off gh-112134 (#112214) | Guido van Rossum | 2023-11-17 |
| | | | | | | | - Double max trace size to 256 - Add a dependency on executor_cases.c.h for ceval.o - Mark `_SPECIALIZE_UNPACK_SEQUENCE` as `TIER_ONE_ONLY` - Add debug output back showing the optimized trace - Bunch of cleanups to Tools/cases_generator/ | ||
* | GH-111848: Convert remaining jumps to deopts into tier 2 code. (GH-112045) | Mark Shannon | 2023-11-14 |
| | |||
* | gh-111789: Simplify bytecodes.c by using PyDict_GetItemRef() (GH-111978) | Serhiy Storchaka | 2023-11-14 |
| | |||
* | GH-111843: Tier 2 exponential backoff (GH-111850) | Mark Shannon | 2023-11-09 |
| | |||
* | GH-109369: Exit tier 2 if executor is invalid (GH-111657) | Mark Shannon | 2023-11-09 |
| | |||
* | GH-111848: Tidy up tier 2 handling of FOR_ITER specialization by using ↵ | Mark Shannon | 2023-11-08 |
| | | | | DEOPT_IF instead of jumps. (GH-111849) | ||
* | GH-111485: Allow arbitrary annotations on instructions and micro-ops. ↵ | Mark Shannon | 2023-11-07 |
| | | | | (GH-111697) | ||
* | GH-111485: Make BEFORE_WITH a uop (GH-111812) | Brandt Bucher | 2023-11-06 |
| | |||
* | gh-111354: Simplify _PyGen_yf by moving some of its work to the compiler and ↵ | Irit Katriel | 2023-11-03 |
| | | | | frame state (#111648) | ||
* | gh-111654: remove redundant decref in LOAD_FROM_DICT_OR_DEREF (#111655) | AN Long | 2023-11-02 |
| | |||
* | gh-111354: simplify detection of RESUME after YIELD_VALUE at except-depth 1 ↵ | Irit Katriel | 2023-11-02 |
| | | | | (#111459) | ||
* | GH-111485: Silence warnings in Python/executor_cases.c.h (#111619) | Guido van Rossum | 2023-11-01 |
| | |||
* | gh-111520: Integrate the Tier 2 interpreter in the Tier 1 interpreter (#111428) | Guido van Rossum | 2023-11-01 |
| | | | | | | | | | | | - There is no longer a separate Python/executor.c file. - Conventions in Python/bytecodes.c are slightly different -- don't use `goto error`, you must use `GOTO_ERROR(error)` (same for others like `unused_local_error`). - The `TIER_ONE` and `TIER_TWO` symbols are only valid in the generated (.c.h) files. - In Lib/test/support/__init__.py, `Py_C_RECURSION_LIMIT` is imported from `_testcapi`. - On Windows, in debug mode, stack allocation grows from 8MiB to 12MiB. - **Beware!** This changes the env vars to enable uops and their debugging to `PYTHON_UOPS` and `PYTHON_LLTRACE`. | ||
* | GH-111537: Avoid using `this_instr` in asserts. (GH-111600) | Mark Shannon | 2023-11-01 |
| | |||
* | GH-111485: Use micro-ops to split specialization code from base action ↵ | Mark Shannon | 2023-11-01 |
| | | | | (GH-111561) | ||
* | GH-111485: Remove some special cases from the code generator and bytecodes.c ↵ | Mark Shannon | 2023-10-31 |
| | | | | (GH-111540) | ||
* | GH-111485: Increment `next_instr` consistently at the start of the ↵ | Mark Shannon | 2023-10-31 |
| | | | | instruction. (GH-111486) | ||
* | gh-111386: Fix `uint32_t` cast in `generated_cases.c.h` (#111387) | Nikita Sobolev | 2023-10-27 |
| | |||
* | gh-111354: define names for RESUME oparg values (#111365) | Irit Katriel | 2023-10-26 |
| | |||
* | gh-109094: replace frame->prev_instr by frame->instr_ptr (#109095) | Irit Katriel | 2023-10-26 |
| | |||
* | GH-109214: _SET_IP before _PUSH_FRAME (but not _POP_FRAME) (GH-111001) | Brandt Bucher | 2023-10-24 |
| | |||
* | gh-109094: remove redundant arg to _PyFrame_PushTrampolineUnchecked (GH-110759) | Irit Katriel | 2023-10-12 |
| | |||
* | GH-109214: Convert _SAVE_CURRENT_IP to _SET_IP in tier 2 trace creation. ↵ | Mark Shannon | 2023-10-12 |
| | | | | (GH-110755) | ||
* | GH-109329: Add tier 2 stats (GH-109913) | Michael Droettboom | 2023-10-04 |
| | |||
* | GH-109369: Merge all eval-breaker flags and monitoring version into one ↵ | Mark Shannon | 2023-10-04 |
| | | | | word. (GH-109846) | ||
* | gh-104909: Split more LOAD_ATTR specializations (GH-110317) | Guido van Rossum | 2023-10-04 |
| | | | | | | | | | | | | | | | | | | | * Split LOAD_ATTR_MODULE * Split LOAD_ATTR_WITH_HINT * Split _GUARD_TYPE_VERSION out of the latter * Split LOAD_ATTR_CLASS * Split LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES * Fix indent of DEOPT_IF in macros * Split LOAD_ATTR_METHOD_LAZY_DICT * Split LOAD_ATTR_NONDESCRIPTOR_NO_DICT * Fix omission of _CHECK_ATTR_METHOD_LAZY_DICT | ||
* | gh-109979: Unify _GUARD_TYPE_VERSION{,_STORE} (#110301) | Guido van Rossum | 2023-10-03 |
| | | | | | Now the target for `DEOPT_IF()` is auto-filled, we don't need a separate `_GUARD_TYPE_VERSION_STORE` uop. | ||
* | gh-109979: Auto-generate the target for DEOPT_IF() (#110193) | Guido van Rossum | 2023-10-03 |
| | | | | | | | | | | | | | | | | In Python/bytecodes.c, you now write ``` DEOPT_IF(condition); ``` The code generator expands this to ``` DEOPT_IF(condition, opcode); ``` where `opcode` is the name of the unspecialized instruction. This works inside macro expansions too. **CAVEAT:** The entire `DEOPT_IF(condition)` statement must be on a single line. If it isn't, the substitution will fail; an error will be printed by the code generator and the C compiler will report some errors. | ||
* | gh-110020: Fix unused variable warnings in bytecodes.c (GH-110023) | Nikita Sobolev | 2023-09-28 |
| | |||
* | gh-104909: Split some more insts into ops (#109943) | Guido van Rossum | 2023-09-27 |
| | | | | | | | | | | | | | | | | | | | | These are the most popular specializations of `LOAD_ATTR` and `STORE_ATTR` that weren't already viable uops: * Split LOAD_ATTR_METHOD_WITH_VALUES * Split LOAD_ATTR_METHOD_NO_DICT * Split LOAD_ATTR_SLOT * Split STORE_ATTR_SLOT * Split STORE_ATTR_INSTANCE_VALUE Also: * Add `-v` flag to code generator which prints a list of non-viable uops (easter-egg: it can print execution counts -- see source) * Double _Py_UOP_MAX_TRACE_LENGTH to 128 I had dropped one of the DEOPT_IF() calls! :-( | ||
* | GH-104584: Don't call executors from JUMP_BACKWARD (GH-109347) | Brandt Bucher | 2023-09-13 |
| | |||
* | GH-105848: Replace KW_NAMES + CALL with LOAD_CONST + CALL_KW (GH-109300) | Brandt Bucher | 2023-09-13 |
| | |||
* | gh-109216: Fix possible memory leak in `BUILD_MAP` (#109257) | Nikita Sobolev | 2023-09-12 |
| | |||
* | gh-109214: Rename SAVE_IP to _SET_IP, and similar (#109285) | Guido van Rossum | 2023-09-11 |
| | | | | | | | | * Rename SAVE_IP to _SET_IP * Rename EXIT_TRACE to _EXIT_TRACE * Rename SAVE_CURRENT_IP to _SAVE_CURRENT_IP * Rename INSERT to _INSERT (This is for Ken Jin's abstract interpreter) * Rename IS_NONE to _IS_NONE * Rename JUMP_TO_TOP to _JUMP_TO_TOP | ||
* | gh-109039: Branch prediction for Tier 2 interpreter (#109038) | Guido van Rossum | 2023-09-11 |
| | | | | | | | | | | | 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-109118: Fix runtime crash when NameError happens in PEP 695 function ↵ | Jelle Zijlstra | 2023-09-09 |
| | | | | (#109123) | ||
* | GH-108614: Unbreak emscripten build (GH-109132) | Mark Shannon | 2023-09-08 |
| | |||
* | GH-108614: Add `RESUME_CHECK` instruction (GH-108630) | Mark Shannon | 2023-09-07 |
| | |||
* | GH-108614: Remove `TIER_ONE` and `TIER_TWO` from `_PUSH_FRAME` (GH-108725) | Mark Shannon | 2023-09-04 |
| |