Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | GH-116422: Factor out eval breaker checks at end of calls into its own ↵ | Mark Shannon | 2024-03-14 | 1 | -15/+5 | |
| | | | | micro-op. (GH-116817) | |||||
* | GH-116468: Use constants instead of `oparg` in stack effects when `oparg` is ↵ | Mark Shannon | 2024-03-11 | 1 | -34/+30 | |
| | | | | known to be a constant. (GH-116469) | |||||
* | GH-113710: Fix optimization of globals using `_CHECK_FUNCTION` (GH-116460) | Mark Shannon | 2024-03-08 | 1 | -2/+3 | |
| | ||||||
* | gh-116381: Remove bad specializations, add fail stats (GH-116464) | Ken Jin | 2024-03-07 | 1 | -55/+4 | |
| | | | * Remove bad specializations, add fail stats | |||||
* | gh-116437: Use new C API PyDict_Pop() to simplify the code (GH-116438) | Serhiy Storchaka | 2024-03-07 | 1 | -7/+7 | |
| | ||||||
* | gh-116381: Specialize CONTAINS_OP (GH-116385) | Ken Jin | 2024-03-06 | 1 | -0/+90 | |
| | | | | | | | | | | | * 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> | |||||
* | GH-113710: Tier 2 optimizer: check the function instead of checking globals. ↵ | Mark Shannon | 2024-03-06 | 1 | -9/+3 | |
| | | | | (GH-116410) | |||||
* | GH-115685: Split `_TO_BOOL_ALWAYS_TRUE` into micro-ops (GH-116352) | Mark Shannon | 2024-03-05 | 1 | -6/+1 | |
| | ||||||
* | gh-116098: Revert "gh-107674: Improve performance of `sys.settrace` ↵ | Tian Gao | 2024-03-01 | 1 | -1/+1 | |
| | | | | | | | (GH-114986)" (GH-116178) Revert "gh-107674: Improve performance of `sys.settrace` (GH-114986)" This reverts commit 0a61e237009bf6b833e13ac635299ee063377699. | |||||
* | gh-115685: Type/values propagate for TO_BOOL in tier 2 (GH-115686) | Ken Jin | 2024-02-29 | 1 | -0/+11 | |
| | ||||||
* | GH-115802: JIT "small" code for Windows (GH-115964) | Brandt Bucher | 2024-02-29 | 1 | -4/+4 | |
| | ||||||
* | gh-107674: Improve performance of `sys.settrace` (GH-114986) | Tian Gao | 2024-02-28 | 1 | -1/+1 | |
| | ||||||
* | gh-115778: Add `tierN` annotation for instruction definitions (#115815) | Kirill Podoprigora | 2024-02-23 | 1 | -13/+0 | |
| | | | | | This replaces the old `TIER_{ONE,TWO}_ONLY` macros. Note that `specialized` implies `tier1`. Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> | |||||
* | GH-115651: Convert `LOAD_MODULE_ATTR` into `LOAD_INLINE_CONST` when the ↵ | Mark Shannon | 2024-02-22 | 1 | -2/+2 | |
| | | | | module is itself a constant. (GH-115711) | |||||
* | gh-115733: Fix crash involving exhausted list iterator (#115740) | Sam Gross | 2024-02-20 | 1 | -0/+1 | |
| | | | | | * gh-115733: Fix crash involving exhausted iterator * Add blurb | |||||
* | gh-112175: Add `eval_breaker` to `PyThreadState` (#115194) | Brett Simmers | 2024-02-20 | 1 | -1/+1 | |
| | | | | | | | | | | | This change adds an `eval_breaker` field to `PyThreadState`. The primary motivation is for performance in free-threaded builds: with thread-local eval breakers, we can stop a specific thread (e.g., for an async exception) without interrupting other threads. The source of truth for the global instrumentation version is stored in the `instrumentation_version` field in PyInterpreterState. Threads usually read the version from their local `eval_breaker`, where it continues to be colocated with the eval breaker bits. | |||||
* | gh-115687: Split up guards from COMPARE_OP (GH-115688) | Ken Jin | 2024-02-20 | 1 | -6/+0 | |
| | ||||||
* | GH-115457: Support splitting and replication of micro ops. (GH-115558) | Mark Shannon | 2024-02-20 | 1 | -22/+383 | |
| | ||||||
* | GH-112354: Initial implementation of warm up on exits and trace-stitching ↵ | Mark Shannon | 2024-02-20 | 1 | -21/+75 | |
| | | | | (GH-114142) | |||||
* | gh-114626: add PyCFunctionFast and PyCFunctionFastWithKeywords (GH-114627) | David Hewitt | 2024-02-15 | 1 | -7/+7 | |
| | | | Co-authored-by: Petr Viktorin <encukou@gmail.com> | |||||
* | gh-112087: Make __sizeof__ and listiter_{len, next} to be threadsafe (gh-114843) | Donghee Na | 2024-02-14 | 1 | -2/+1 | |
| | ||||||
* | GH-113710: Improve `_SET_IP` and `_CHECK_VALIDITY` (GH-115248) | Mark Shannon | 2024-02-13 | 1 | -3/+10 | |
| | ||||||
* | gh-114058: Foundations of the Tier2 redundancy eliminator (GH-115085) | Ken Jin | 2024-02-13 | 1 | -1/+1 | |
| | | | | | | | --------- Co-authored-by: Mark Shannon <9448417+markshannon@users.noreply.github.com> Co-authored-by: Jules <57632293+JuliaPoo@users.noreply.github.com> Co-authored-by: Guido van Rossum <gvanrossum@users.noreply.github.com> | |||||
* | GH-113710: Add a "globals to constants" pass (GH-114592) | Mark Shannon | 2024-02-02 | 1 | -0/+42 | |
| | | | Converts specializations of `LOAD_GLOBAL` into constants during tier 2 optimization. | |||||
* | GH-113710: Add a tier 2 peephole optimization pass. (GH-114487) | Mark Shannon | 2024-01-24 | 1 | -0/+9 | |
| | | | | | * Convert _LOAD_CONST to inline versions * Remove PEP 523 checks | |||||
* | GH-112354: `_GUARD_IS_TRUE_POP` side-exits to target the next instruction, ↵ | Mark Shannon | 2024-01-15 | 1 | -6/+9 | |
| | | | | not themselves. (GH-114078) | |||||
* | gh-113710: Add types to the interpreter DSL (#113711) | Ken Jin | 2024-01-12 | 1 | -10/+0 | |
| | | | | Co-authored-by: Jules <57632293+JuliaPoo@users.noreply.github.com> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> | |||||
* | GH-113860: Get rid of `_PyUOpExecutorObject` (GH-113954) | Brandt Bucher | 2024-01-12 | 1 | -1/+1 | |
| | ||||||
* | GH-113860: All executors are now defined in terms of micro ops. Convert ↵ | Mark Shannon | 2024-01-10 | 1 | -0/+18 | |
| | | | | counter executor to use uops. (GH-113864) | |||||
* | GH-111485: Delete the old generator code. (GH-113321) | Mark Shannon | 2023-12-21 | 1 | -22/+22 | |
| | ||||||
* | 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: Test the new cases generator (GH-113252) | Mark Shannon | 2023-12-18 | 1 | -13/+13 | |
| | ||||||
* | GH-111485: Mark some instructions as `TIER_ONE_ONLY` (GH-113155) | Brandt Bucher | 2023-12-15 | 1 | -139/+0 | |
| | ||||||
* | GH-112354: Treat _EXIT_TRACE like an unconditional side exit (GH-113104) | Mark Shannon | 2023-12-14 | 1 | -1/+1 | |
| | ||||||
* | Fix whitespace in generated code | Mark Shannon | 2023-12-13 | 1 | -6/+6 | |
| | ||||||
* | GH-111485: Factor out tier 2 code generation from the rest of the ↵ | Mark Shannon | 2023-12-12 | 1 | -730/+886 | |
| | | | | 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 | -1/+1 | |
| | | | | generator (GH-112299) | |||||
* | gh-112287: Speed up Tier 2 (uop) interpreter a little (#112286) | Guido van Rossum | 2023-11-20 | 1 | -22/+113 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the Tier 2 interpreter a little faster. I calculated by about 3%, though I hesitate to claim an exact number. This starts by doubling the trace size limit (to 512), making it more likely that loops fit in a trace. The rest of the approach is to only load `oparg` and `operand` in cases that use them. The code generator know when these are used. For `oparg`, it will conditionally emit ``` oparg = CURRENT_OPARG(); ``` at the top of the case block. (The `oparg` variable may be referenced multiple times by the instructions code block, so it must be in a variable.) For `operand`, it will use `CURRENT_OPERAND()` directly instead of referencing the `operand` variable, which no longer exists. (There is only one place where this will be used.) | |||||
* | gh-106529: Make FOR_ITER a viable uop (#112134) | Guido van Rossum | 2023-11-20 | 1 | -0/+25 | |
| | | | | | | | | | | 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-111848: Convert remaining jumps to deopts into tier 2 code. (GH-112045) | Mark Shannon | 2023-11-14 | 1 | -8/+23 | |
| | ||||||
* | gh-111789: Simplify bytecodes.c by using PyDict_GetItemRef() (GH-111978) | Serhiy Storchaka | 2023-11-14 | 1 | -47/+17 | |
| | ||||||
* | GH-111520: Add back the operand local (GH-111813) | Brandt Bucher | 2023-11-14 | 1 | -22/+22 | |
| | ||||||
* | GH-109369: Exit tier 2 if executor is invalid (GH-111657) | Mark Shannon | 2023-11-09 | 1 | -0/+6 | |
| | ||||||
* | GH-111848: Tidy up tier 2 handling of FOR_ITER specialization by using ↵ | Mark Shannon | 2023-11-08 | 1 | -35/+8 | |
| | | | | DEOPT_IF instead of jumps. (GH-111849) | |||||
* | GH-111485: Allow arbitrary annotations on instructions and micro-ops. ↵ | Mark Shannon | 2023-11-07 | 1 | -18/+0 | |
| | | | | (GH-111697) | |||||
* | GH-111485: Make BEFORE_WITH a uop (GH-111812) | Brandt Bucher | 2023-11-07 | 1 | -1/+44 | |
| | ||||||
* | gh-111654: remove redundant decref in LOAD_FROM_DICT_OR_DEREF (#111655) | AN Long | 2023-11-03 | 1 | -2/+1 | |
| | ||||||
* | 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 | -157/+162 | |
| | | | | | | | | | | | - 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-111485: Use micro-ops to split specialization code from base action ↵ | Mark Shannon | 2023-11-01 | 1 | -90/+17 | |
| | | | | (GH-111561) |