Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | gh-106572: Convert PyObject_DelAttr() to a function (#106611) | Victor Stinner | 2023-07-11 | 1 | -1/+1 | |
| | | | | | | | | * Convert PyObject_DelAttr() and PyObject_DelAttrString() macros to functions. * Add PyObject_DelAttr() and PyObject_DelAttrString() functions to the stable ABI. * Replace PyObject_SetAttr(obj, name, NULL) with PyObject_DelAttr(obj, name). | |||||
* | GH-100288: Specialize LOAD_ATTR for simple class attributes. (#105990) | Mark Shannon | 2023-07-10 | 1 | -6/+37 | |
| | | | * Add two more specializations of LOAD_ATTR. | |||||
* | GH-106057: Handle recursion errors in inline class calls properly. (GH-106108) | Mark Shannon | 2023-07-07 | 1 | -3/+4 | |
| | ||||||
* | gh-104584: Fix error handling from backedge optimization (#106484) | Guido van Rossum | 2023-07-06 | 1 | -1/+1 | |
| | | | | | | | | | | | | When `_PyOptimizer_BackEdge` returns `NULL`, we should restore `next_instr` (and `stack_pointer`). To accomplish this we should jump to `resume_with_error` instead of just `error`. The problem this causes is subtle -- the only repro I have is in PR gh-106393, at commit d7df54b139bcc47f5ea094bfaa9824f79bc45adc. But the fix is real (as shown later in that PR). While we're at it, also improve the debug output: the offsets at which traces are identified are now measured in bytes, and always show the start offset. This makes it easier to correlate executor calls with optimizer calls, and either with `dis` output. <!-- gh-issue-number: gh-104584 --> * Issue: gh-104584 <!-- /gh-issue-number --> | |||||
* | GH-104584: Fix ENTER_EXECUTOR (GH-106141) | Mark Shannon | 2023-07-03 | 1 | -7/+12 | |
| | | | | | | * Check eval-breaker in ENTER_EXECUTOR. * Make sure that frame->prev_instr is set before entering executor. | |||||
* | gh-106023: Update code using _PyObject_FastCall() (#106257) | Victor Stinner | 2023-06-30 | 1 | -1/+0 | |
| | | | Replace _PyObject_FastCall() calls with PyObject_Vectorcall(). | |||||
* | GH-106008: Make implicit boolean conversions explicit (GH-106003) | Brandt Bucher | 2023-06-29 | 1 | -44/+100 | |
| | ||||||
* | gh-105775: Convert LOAD_CLOSURE to a pseudo-op (#106059) | hms | 2023-06-29 | 1 | -6/+3 | |
| | | | | | | This enables super-instruction formation, removal of checks for uninitialized variables, and frees up an instruction. | |||||
* | gh-104584: Baby steps towards generating and executing traces (#105924) | Guido van Rossum | 2023-06-27 | 1 | -3/+1 | |
| | | | | | Added a new, experimental, tracing optimizer and interpreter (a.k.a. "tier 2"). This currently pessimizes, so don't use yet -- this is infrastructure so we can experiment with optimizing passes. To enable it, pass ``-Xuops`` or set ``PYTHONUOPS=1``. To get debug output, set ``PYTHONUOPSDEBUG=N`` where ``N`` is a debug level (0-4, where 0 is no debug output and 4 is excessively verbose). All of this code is likely to change dramatically before the 3.13 feature freeze. But this is a first step. | |||||
* | GH-91095: Specialize calls to normal Python classes. (GH-99331) | Mark Shannon | 2023-06-22 | 1 | -0/+63 | |
| | ||||||
* | GH-104584: Assorted fixes for the optimizer API. (GH-105683) | Mark Shannon | 2023-06-19 | 1 | -1/+2 | |
| | | | | | | * Add test for long loops * Clear ENTER_EXECUTOR when deopting code objects. | |||||
* | gh-105481: add HAS_JUMP flag to opcode metadata (#105791) | Irit Katriel | 2023-06-14 | 1 | -15/+19 | |
| | ||||||
* | GH-77273: Better bytecodes for f-strings (GH-6132) | Mark Shannon | 2023-06-14 | 1 | -30/+24 | |
| | ||||||
* | GH-100987: Allow objects other than code objects as the "executable" of an ↵ | Mark Shannon | 2023-06-14 | 1 | -15/+14 | |
| | | | | | | | | | | internal frame. (GH-105727) * Add table describing possible executable classes for out-of-process debuggers. * Remove shim code object creation code as it is no longer needed. * Make lltrace a bit more robust w.r.t. non-standard frames. | |||||
* | gh-105481: add flags to each instr in the opcode metadata table, to replace ↵ | Irit Katriel | 2023-06-13 | 1 | -25/+27 | |
| | | | | opcode.hasarg/hasname/hasconst (#105482) | |||||
* | GH-105678: Split MAKE_FUNCTION into MAKE_FUNCTION and SET_FUNCTION_ATTRIBUTE ↵ | Mark Shannon | 2023-06-13 | 1 | -25/+30 | |
| | | | | (GH-105680) | |||||
* | gh-105481: add pseudo-instructions to the bytecodes DSL (#105506) | Irit Katriel | 2023-06-11 | 1 | -0/+47 | |
| | ||||||
* | GH-105229: Remove remaining two-codeunit superinstructions (GH-105326) | Mark Shannon | 2023-06-08 | 1 | -3/+0 | |
| | | | | * Remove LOAD_CONST__LOAD_FAST and LOAD_FAST__LOAD_CONST superinstructions. | |||||
* | GH-104610: Remove the use of `PREDICT` macros. (GH-104651) | Mark Shannon | 2023-06-07 | 1 | -13/+0 | |
| | ||||||
* | GH-105229: Replace some superinstructions with single instruction ↵ | Mark Shannon | 2023-06-05 | 1 | -7/+25 | |
| | | | | equivalent. (GH-105230) | |||||
* | gh-105214: Use named constants for MAKE_FUNCTION oparg (#105215) | Jelle Zijlstra | 2023-06-02 | 1 | -8/+9 | |
| | ||||||
* | GH-104584: Plugin optimizer API (GH-105100) | Mark Shannon | 2023-06-02 | 1 | -3/+29 | |
| | ||||||
* | remove unused #includes of pycore_pymem.h (#105166) | Irit Katriel | 2023-06-01 | 1 | -1/+0 | |
| | ||||||
* | gh-104909: Split BINARY_OP into micro-ops (#104910) | Guido van Rossum | 2023-05-31 | 1 | -46/+68 | |
| | | | Co-authored-by: Brandt Bucher <brandtbucher@gmail.com> | |||||
* | gh-105035: fix super() calls on unusual types (e.g. meta-types) (#105094) | Carl Meyer | 2023-05-30 | 1 | -1/+3 | |
| | ||||||
* | GH-104580: Don't cache eval breaker in interpreter (GH-104581) | Mark Shannon | 2023-05-18 | 1 | -3/+2 | |
| | | | Move eval-breaker to the front of the interpreter state. | |||||
* | GH-103906: Remove immortal refcounting in the interpreter (GH-103909) | Brandt Bucher | 2023-05-16 | 1 | -32/+14 | |
| | ||||||
* | gh-103865: add monitoring support to LOAD_SUPER_ATTR (#103866) | Carl Meyer | 2023-05-16 | 1 | -0/+32 | |
| | ||||||
* | gh-103763: Implement PEP 695 (#103764) | Jelle Zijlstra | 2023-05-16 | 1 | -17/+36 | |
| | | | | | | | | | | | | | | 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-104405: Add missing PEP 523 checks (GH-104406) | Brandt Bucher | 2023-05-12 | 1 | -2/+6 | |
| | ||||||
* | GH-103082: Filter LINE events in VM, to simplify tool implementation. ↵ | Mark Shannon | 2023-05-12 | 1 | -22/+0 | |
| | | | | | | | | (GH-104387) When monitoring LINE events, instrument all instructions that can have a predecessor on a different line. Then check that the a new line has been hit in the instrumentation code. This brings the behavior closer to that of 3.11, simplifying implementation and porting of tools. | |||||
* | gh-104413: Fix refleak when super attribute throws AttributeError (#104414) | Jelle Zijlstra | 2023-05-12 | 1 | -1/+1 | |
| | ||||||
* | gh-87729: improve hit rate of LOAD_SUPER_ATTR specialization (#104270) | Carl Meyer | 2023-05-11 | 1 | -9/+31 | |
| | ||||||
* | gh-87849: fix SEND specialization family definition (GH-104268) | Carl Meyer | 2023-05-11 | 1 | -2/+2 | |
| | ||||||
* | gh-97933: (PEP 709) inline list/dict/set comprehensions (#101441) | Carl Meyer | 2023-05-09 | 1 | -0/+6 | |
| | | | | Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> | |||||
* | gh-98003: Inline call frames for CALL_FUNCTION_EX (GH-98004) | Ken Jin | 2023-04-30 | 1 | -0/+19 | |
| | ||||||
* | gh-87729: specialize LOAD_SUPER_ATTR_METHOD (#103809) | Carl Meyer | 2023-04-25 | 1 | -26/+39 | |
| | ||||||
* | gh-87729: add LOAD_SUPER_ATTR instruction for faster super() (#103497) | Carl Meyer | 2023-04-24 | 1 | -0/+31 | |
| | | | | | 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-103488: Use return-offset, not yield-offset. (GH-103502) | Mark Shannon | 2023-04-13 | 1 | -10/+18 | |
| | | | | * Use return-offset, not yield-offset, so that instruction pointer is correct when sending to a generator or coroutine. | |||||
* | GH-103082: Implementation of PEP 669: Low Impact Monitoring for CPython ↵ | Mark Shannon | 2023-04-12 | 1 | -95/+347 | |
| | | | | | | | | | | (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 | -19/+24 | |
| | ||||||
* | gh-102192: use PyErr_SetHandledException instead of the legacy ↵ | Irit Katriel | 2023-04-01 | 1 | -1/+1 | |
| | | | | PyErr_SetExcInfo (#103157) | |||||
* | Add missing variables to `bytecodes.c` (GH-103153) | Brett Cannon | 2023-03-31 | 1 | -1/+47 | |
| | | | The code works without this change, but it does cause C tooling to complain less about undeclared variables. | |||||
* | GH-89987: Shrink the BINARY_SUBSCR caches (GH-103022) | Brandt Bucher | 2023-03-29 | 1 | -9/+11 | |
| | ||||||
* | GH-100982: Break up COMPARE_AND_BRANCH (GH-102801) | Brandt Bucher | 2023-03-23 | 1 | -59/+34 | |
| | ||||||
* | gh-102859: Remove JUMP_IF_FALSE_OR_POP and JUMP_IF_TRUE_OR_POP (#102870) | Irit Katriel | 2023-03-22 | 1 | -50/+0 | |
| | ||||||
* | GH-101291: Rearrange the size bits in PyLongObject (GH-102464) | Mark Shannon | 2023-03-22 | 1 | -10/+9 | |
| | | | | | | | | | | * Eliminate all remaining uses of Py_SIZE and Py_SET_SIZE on PyLongObject, adding asserts. * Change layout of size/sign bits in longobject to support future addition of immortal ints and tagged medium ints. * Add functions to hide some internals of long object, and for setting sign and digit count. * Replace uses of IS_MEDIUM_VALUE macro with _PyLong_IsCompact(). | |||||
* | gh-102598: Remove obsolete optimization from `FORMAT_VALUE` opcode (#102599) | Nikita Sobolev | 2023-03-21 | 1 | -14/+4 | |
| | ||||||
* | gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives ↵ | Irit Katriel | 2023-03-19 | 1 | -6/+2 | |
| | | | | (#102816) | |||||
* | gh-98831: Use DECREF_INPUTS() more (#102409) | Guido van Rossum | 2023-03-13 | 1 | -49/+31 | |
| |