Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | gh-116968: Reimplement Tier 2 counters (#117144) | Guido van Rossum | 2024-04-04 | 1 | -56/+45 |
| | | | | | | | | | | | | Introduce a unified 16-bit backoff counter type (``_Py_BackoffCounter``), shared between the Tier 1 adaptive specializer and the Tier 2 optimizer. The API used for adaptive specialization counters is changed but the behavior is (supposed to be) identical. The behavior of the Tier 2 counters is changed: - There are no longer dynamic thresholds (we never varied these). - All counters now use the same exponential backoff. - The counter for ``JUMP_BACKWARD`` starts counting down from 16. - The ``temperature`` in side exits starts counting down from 64. | ||||
* | gh-116168: Remove extra `_CHECK_STACK_SPACE` uops (#117242) | Peter Lazorchak | 2024-04-03 | 1 | -0/+6 |
| | | | This merges all `_CHECK_STACK_SPACE` uops in a trace into a single `_CHECK_STACK_SPACE_OPERAND` uop that checks whether there is enough stack space for all calls included in the entire trace. | ||||
* | GH-115776: Embed the values array into the object, for "normal" Python ↵ | Mark Shannon | 2024-04-02 | 1 | -28/+24 |
| | | | | objects. (GH-116115) | ||||
* | gh-117323: Make `cell` thread-safe in free-threaded builds (#117330) | Sam Gross | 2024-03-29 | 1 | -12/+8 |
| | | | Use critical sections to lock around accesses to cell contents. The critical sections are no-ops in the default (with GIL) build. | ||||
* | GH-116422: Tier2 hot/cold splitting (GH-116813) | Mark Shannon | 2024-03-26 | 1 | -59/+80 |
| | | | | | Splits the "cold" path, deopts and exits, from the "hot" path, reducing the size of most jitted instructions, at the cost of slower exits. | ||||
* | GH-115802: Reduce the size of _INIT_CALL_PY_EXACT_ARGS. (GH-116856) | Mark Shannon | 2024-03-15 | 1 | -8/+6 |
| | |||||
* | gh-116735: Use `MISSING` for `CALL` event if argument is absent (GH-116737) | Tian Gao | 2024-03-15 | 1 | -1/+1 |
| | |||||
* | GH-116422: Modify a few uops so that they can be supported by tier 2 with ↵ | Mark Shannon | 2024-03-15 | 1 | -19/+15 |
| | | | | hot/cold splitting (GH-116832) | ||||
* | GH-116422: Factor out eval breaker checks at end of calls into its own ↵ | Mark Shannon | 2024-03-14 | 1 | -26/+74 |
| | | | | micro-op. (GH-116817) | ||||
* | gh-116760: Fix pystats for trace attempts (GH-116761) | Michael Droettboom | 2024-03-13 | 1 | -1/+0 |
| | | | | | | | | There are now at least two bytecodes that may attempt to optimize, JUMP_BACK, and more recently, COLD_EXIT. Only the JUMP_BACK was counting the attempt in the stats. This moves that counter to uop_optimize itself so it should always happen no matter where it is called from. | ||||
* | gh-116626: Emit `CALL` events for all `INSTRUMENTED_CALL_FUNCTION_EX` ↵ | Tian Gao | 2024-03-13 | 1 | -14/+15 |
| | | | | (GH-116627) | ||||
* | GH-116468: Use constants instead of `oparg` in stack effects when `oparg` is ↵ | Mark Shannon | 2024-03-11 | 1 | -17/+13 |
| | | | | 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 | -28/+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 | -1/+63 |
| | | | | | | | | | | | * 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 | -6/+2 |
| | | | | (GH-116410) | ||||
* | GH-115685: Split `_TO_BOOL_ALWAYS_TRUE` into micro-ops (GH-116352) | Mark Shannon | 2024-03-05 | 1 | -6/+7 |
| | |||||
* | gh-116098: Revert "gh-107674: Improve performance of `sys.settrace` ↵ | Tian Gao | 2024-03-01 | 1 | -17/+16 |
| | | | | | | | (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/+5 |
| | |||||
* | 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 | -16/+17 |
| | |||||
* | gh-115778: Add `tierN` annotation for instruction definitions (#115815) | Kirill Podoprigora | 2024-02-23 | 1 | -83/+35 |
| | | | | | 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 | -1/+2 |
| | | | | | * gh-115733: Fix crash involving exhausted iterator * Add blurb | ||||
* | gh-112175: Add `eval_breaker` to `PyThreadState` (#115194) | Brett Simmers | 2024-02-20 | 1 | -4/+3 |
| | | | | | | | | | | | 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 | -9/+12 |
| | |||||
* | GH-115457: Support splitting and replication of micro ops. (GH-115558) | Mark Shannon | 2024-02-20 | 1 | -7/+9 |
| | |||||
* | GH-112354: Initial implementation of warm up on exits and trace-stitching ↵ | Mark Shannon | 2024-02-20 | 1 | -33/+89 |
| | | | | (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 | -3/+5 |
| | |||||
* | GH-113710: Improve `_SET_IP` and `_CHECK_VALIDITY` (GH-115248) | Mark Shannon | 2024-02-13 | 1 | -3/+7 |
| | |||||
* | GH-113710: Backedge counter improvements. (GH-115166) | Mark Shannon | 2024-02-13 | 1 | -13/+16 |
| | |||||
* | gh-114058: Foundations of the Tier2 redundancy eliminator (GH-115085) | Ken Jin | 2024-02-13 | 1 | -23/+23 |
| | | | | | | | --------- 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-114695: Add `sys._clear_internal_caches` (GH-115152) | Brandt Bucher | 2024-02-12 | 1 | -17/+6 |
| | |||||
* | GH-113710: Add a "globals to constants" pass (GH-114592) | Mark Shannon | 2024-02-02 | 1 | -0/+24 |
| | | | Converts specializations of `LOAD_GLOBAL` into constants during tier 2 optimization. | ||||
* | Update outdated comment in ``Python/bytecodes.c`` (#114522) | Kirill Podoprigora | 2024-01-24 | 1 | -2/+2 |
| | |||||
* | GH-112354: `END_FOR` instruction to only pop one value. (GH-114247) | Mark Shannon | 2024-01-24 | 1 | -12/+12 |
| | | | | * Compiler emits END_FOR; POP_TOP instead of END_FOR. To support tier 2 side exits in loops. | ||||
* | GH-113710: Add a tier 2 peephole optimization pass. (GH-114487) | Mark Shannon | 2024-01-24 | 1 | -0/+4 |
| | | | | | * Convert _LOAD_CONST to inline versions * Remove PEP 523 checks | ||||
* | gh-113102: Fix typo in INSTRUMENTED_RESUME (GH-114349) | Guido van Rossum | 2024-01-22 | 1 | -1/+1 |
| | |||||
* | GH-112354: `_GUARD_IS_TRUE_POP` side-exits to target the next instruction, ↵ | Mark Shannon | 2024-01-15 | 1 | -5/+14 |
| | | | | not themselves. (GH-114078) | ||||
* | gh-113710: Add types to the interpreter DSL (#113711) | Ken Jin | 2024-01-12 | 1 | -31/+26 |
| | | | | 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 | -4/+4 |
| | |||||
* | 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/+12 |
| | | | | 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 | -9/+19 |
| | |||||
* | 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 | -32/+40 |
| | |||||
* | GH-111485: Mark some instructions as `TIER_ONE_ONLY` (GH-113155) | Brandt Bucher | 2023-12-15 | 1 | -0/+7 |
| |