Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | GH-112354: `END_FOR` instruction to only pop one value. (GH-114247) | Mark Shannon | 2024-01-24 | 1 | -22/+13 |
| | | | | * Compiler emits END_FOR; POP_TOP instead of END_FOR. To support tier 2 side exits in loops. | ||||
* | gh-113102: Fix typo in INSTRUMENTED_RESUME (GH-114349) | Guido van Rossum | 2024-01-22 | 1 | -1/+1 |
| | |||||
* | GH-113860: Get rid of `_PyUOpExecutorObject` (GH-113954) | Brandt Bucher | 2024-01-12 | 1 | -2/+2 |
| | |||||
* | GH-113853: Guarantee forward progress in executors (GH-113854) | Mark Shannon | 2024-01-11 | 1 | -5/+13 |
| | |||||
* | GH-113860: All executors are now defined in terms of micro ops. Convert ↵ | Mark Shannon | 2024-01-10 | 1 | -10/+2 |
| | | | | counter executor to use uops. (GH-113864) | ||||
* | GH-113689: Fix broken handling of invalid executors (GH-113694) | Brandt Bucher | 2024-01-04 | 1 | -1/+2 |
| | |||||
* | GH-113595: Don't enter invalid executor (GH-113596) | Mark Shannon | 2024-01-03 | 1 | -10/+20 |
| | |||||
* | GH-111485: Delete the old generator code. (GH-113321) | Mark Shannon | 2023-12-21 | 1 | -30/+30 |
| | |||||
* | gh-111375: Use `NULL` rather than `None` in the exception stack to indicate ↵ | Carey Metcalfe | 2023-12-21 | 1 | -1/+1 |
| | | | | that an exception was handled (#113302) | ||||
* | GH-111485: Generate instruction and uop metadata (GH-113287) | Mark Shannon | 2023-12-20 | 1 | -0/+19 |
| | |||||
* | GH-111485: Break up instructions with unused cache entries into component ↵ | Mark Shannon | 2023-12-18 | 1 | -0/+71 |
| | | | | micro-ops (GH-113169) | ||||
* | GH-111485: Test the new cases generator (GH-113252) | Mark Shannon | 2023-12-18 | 1 | -15/+15 |
| | |||||
* | GH-111485: Mark some instructions as `TIER_ONE_ONLY` (GH-113155) | Brandt Bucher | 2023-12-15 | 1 | -0/+7 |
| | |||||
* | GH-108866: Guarantee forward progress in executors. (GH-113006) | Mark Shannon | 2023-12-12 | 1 | -7/+5 |
| | |||||
* | GH-111485: Factor out tier 2 code generation from the rest of the ↵ | Mark Shannon | 2023-12-12 | 1 | -1/+4 |
| | | | | interpreter code generator (GH-112968) | ||||
* | GH-111485: Separate out parsing, analysis and code-gen phases of tier 1 code ↵ | Mark Shannon | 2023-12-07 | 1 | -511/+536 |
| | | | | generator (GH-112299) | ||||
* | Rename ...Uop... to ...UOp... (uppercase O) for consistency (#112327) | Guido van Rossum | 2023-11-29 | 1 | -1/+1 |
| | | | | * Rename _PyUopExecute to _PyUOpExecute (uppercase O) for consistency * Also rename _PyUopName and _PyUOp_Replacements, and some output strings | ||||
* | GH-111485: Sort cases in the case generator output (GH-112315) | Mark Shannon | 2023-11-22 | 1 | -4196/+4196 |
| | |||||
* | gh-110319: Assert type_version != 0 before using it (#112226) | Guido van Rossum | 2023-11-18 | 1 | -2/+2 |
| | | | | | | - 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 | 1 | -0/+1 |
| | | | | | | | - 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 | 1 | -8/+8 |
| | |||||
* | gh-111789: Simplify bytecodes.c by using PyDict_GetItemRef() (GH-111978) | Serhiy Storchaka | 2023-11-14 | 1 | -47/+17 |
| | |||||
* | GH-111843: Tier 2 exponential backoff (GH-111850) | Mark Shannon | 2023-11-09 | 1 | -5/+18 |
| | |||||
* | GH-111485: Make BEFORE_WITH a uop (GH-111812) | Brandt Bucher | 2023-11-07 | 1 | -3/+2 |
| | |||||
* | gh-111354: Simplify _PyGen_yf by moving some of its work to the compiler and ↵ | Irit Katriel | 2023-11-03 | 1 | -2/+6 |
| | | | | frame state (#111648) | ||||
* | gh-111654: remove redundant decref in LOAD_FROM_DICT_OR_DEREF (#111655) | AN Long | 2023-11-03 | 1 | -2/+1 |
| | |||||
* | gh-111354: simplify detection of RESUME after YIELD_VALUE at except-depth 1 ↵ | Irit Katriel | 2023-11-02 | 1 | -4/+2 |
| | | | | (#111459) | ||||
* | GH-111485: Silence warnings in Python/executor_cases.c.h (#111619) | Guido van Rossum | 2023-11-01 | 1 | -0/+2 |
| | |||||
* | gh-111520: Integrate the Tier 2 interpreter in the Tier 1 interpreter (#111428) | Guido van Rossum | 2023-11-01 | 1 | -54/+64 |
| | | | | | | | | | | | - 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 | 1 | -18/+12 |
| | |||||
* | GH-111485: Use micro-ops to split specialization code from base action ↵ | Mark Shannon | 2023-11-01 | 1 | -347/+445 |
| | | | | (GH-111561) | ||||
* | GH-111485: Remove some special cases from the code generator and bytecodes.c ↵ | Mark Shannon | 2023-10-31 | 1 | -5/+13 |
| | | | | (GH-111540) | ||||
* | GH-111485: Increment `next_instr` consistently at the start of the ↵ | Mark Shannon | 2023-10-31 | 1 | -285/+807 |
| | | | | instruction. (GH-111486) | ||||
* | gh-111386: Fix `uint32_t` cast in `generated_cases.c.h` (#111387) | Nikita Sobolev | 2023-10-27 | 1 | -1/+1 |
| | |||||
* | gh-111354: define names for RESUME oparg values (#111365) | Irit Katriel | 2023-10-26 | 1 | -1/+1 |
| | |||||
* | gh-109094: replace frame->prev_instr by frame->instr_ptr (#109095) | Irit Katriel | 2023-10-26 | 1 | -40/+67 |
| | |||||
* | GH-109214: _SET_IP before _PUSH_FRAME (but not _POP_FRAME) (GH-111001) | Brandt Bucher | 2023-10-24 | 1 | -32/+19 |
| | |||||
* | gh-109094: remove redundant arg to _PyFrame_PushTrampolineUnchecked (GH-110759) | Irit Katriel | 2023-10-12 | 1 | -1/+1 |
| | |||||
* | GH-109214: Convert _SAVE_CURRENT_IP to _SET_IP in tier 2 trace creation. ↵ | Mark Shannon | 2023-10-12 | 1 | -24/+4 |
| | | | | (GH-110755) | ||||
* | GH-109329: Add tier 2 stats (GH-109913) | Michael Droettboom | 2023-10-04 | 1 | -1/+1 |
| | |||||
* | GH-109369: Merge all eval-breaker flags and monitoring version into one ↵ | Mark Shannon | 2023-10-04 | 1 | -9/+13 |
| | | | | word. (GH-109846) | ||||
* | gh-104909: Split more LOAD_ATTR specializations (GH-110317) | Guido van Rossum | 2023-10-04 | 1 | -151/+200 |
| | | | | | | | | | | | | | | | | | | | * 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 | 1 | -2/+2 |
| | | | | | 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 | 1 | -72/+60 |
| | | | | | | | | | | | | | | | | 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 | 1 | -6/+3 |
| | |||||
* | gh-104909: Split some more insts into ops (#109943) | Guido van Rossum | 2023-09-27 | 1 | -73/+118 |
| | | | | | | | | | | | | | | | | | | | | 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 | 1 | -12/+8 |
| | |||||
* | GH-105848: Replace KW_NAMES + CALL with LOAD_CONST + CALL_KW (GH-109300) | Brandt Bucher | 2023-09-13 | 1 | -54/+119 |
| | |||||
* | gh-106581: Honor 'always_exits' in write_components() (#109338) | Guido van Rossum | 2023-09-12 | 1 | -14/+0 |
| | | | | | | | | | | I must have overlooked this when refactoring the code generator. The Tier 1 interpreter contained a few silly things like ``` goto resume_frame; STACK_SHRINK(1); ``` (and other variations, some where the unconditional `goto` was hidden in a macro). | ||||
* | gh-109216: Fix possible memory leak in `BUILD_MAP` (#109257) | Nikita Sobolev | 2023-09-12 | 1 | -3/+0 |
| |