Mark Shannon
616b745b89
GH-115709: Invalidate executors when a local variable is changed via frame.f_locals ( #118639 )
...
Also fix unrelated assert in debug Tier2/JIT builds.
2024-05-06 21:21:06 +00:00
Tian Gao
7528b84e94
gh-118609: Add proper error check for framelocalsproxy ( #118615 )
2024-05-06 08:46:15 -07:00
Tian Gao
afbe5bf9c8
gh-74929: Make containment checks more efficient in `FrameLocalsProxy` ( #118624 )
...
Properly implement the `sq_contains` slot for frame locals proxy containment checks.
2024-05-06 20:16:48 +10:00
Tian Gao
b4f8eb0de2
gh-118605: Fix reference leak in FrameLocalsProxy ( #118607 )
...
Also add some error checks.
2024-05-05 21:31:35 +00:00
Tian Gao
5dd36732c8
gh-74929: Remove undesirable DECREF in PEP 667 implementation ( #118583 )
...
With tests.
2024-05-05 03:06:42 +00:00
Tian Gao
b034f14a4b
gh-74929: Implement PEP 667 (GH-115153)
2024-05-04 12:12:10 +01:00
Tian Gao
375c94c75d
gh-107674: Lazy load line number to improve performance of tracing (GH-118127)
2024-04-29 09:54:52 +01:00
Mark Shannon
f180b31e76
GH-118095: Handle `RETURN_GENERATOR` in tier 2 (GH-118180)
2024-04-25 11:32:47 +01:00
Bogdan Romanyuk
a8e93d3dca
gh-115756: make PyCode_GetFirstFree an unstable API (GH-115781)
2024-03-19 09:20:38 +00:00
Albert Zeyer
78c254582b
gh-113939: Frame clear, clear locals ( #113940 )
2024-01-31 19:14:44 +00:00
Carey Metcalfe
a2dd0e7038
gh-111375: Use `NULL` rather than `None` in the exception stack to indicate that an exception was handled ( #113302 )
2023-12-21 01:46:41 +00:00
Irit Katriel
13405ecffd
gh-79932: raise exception if frame.clear() is called on a suspended frame ( #111792 )
2023-11-07 08:49:30 +00:00
Irit Katriel
c5063fd62a
simplify code to pop exception in frame_setlineno ( #111702 )
2023-11-06 15:45:33 +00:00
Tian Gao
e0afed7e27
gh-103615: Use local events for opcode tracing (GH-109472)
...
* Use local monitoring for opcode trace
* Remove f_opcode_trace_set
* Add test for setting f_trace_opcodes after settrace
2023-11-03 16:39:50 +00:00
Irit Katriel
d49aba5a7a
gh-111354: Simplify _PyGen_yf by moving some of its work to the compiler and frame state ( #111648 )
2023-11-03 10:01:36 +00:00
Irit Katriel
67a91f78e4
gh-109094: replace frame->prev_instr by frame->instr_ptr ( #109095 )
2023-10-26 13:43:10 +00:00
Savannah Ostrowski
6640f1d8d2
GH-94438: Restore ability to jump over None tests (GH-111237)
2023-10-23 23:13:16 -07:00
Brandt Bucher
22e65eecaa
GH-105848: Replace KW_NAMES + CALL with LOAD_CONST + CALL_KW (GH-109300)
2023-09-13 10:25:45 -07:00
Carl Meyer
f2584eade3
gh-108732: include comprehension locals in frame.f_locals ( #109026 )
...
Co-authored-by: Radislav Chugunov <52372310+chgnrdv@users.noreply.github.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2023-09-07 08:56:43 -06:00
Irit Katriel
39376cb93d
gh-108991: replace _PyFrame_GetState by two simpler functions ( #108992 )
2023-09-06 12:54:59 +01:00
Irit Katriel
72119d16a5
gh-105481: remove regen-opcode. Generated _PyOpcode_Caches in regen-cases. ( #108367 )
2023-08-23 18:39:00 +01:00
Irit Katriel
665a4391e1
gh-105481: generate op IDs from bytecode.c instead of hard coding them in opcode.py ( #107971 )
2023-08-16 22:25:18 +00:00
Anders Kaseorg
557b05c7a5
gh-106092: Fix use-after-free crash in frame_dealloc ( #106875 )
...
It was possible for the trashcan to delay the deallocation of a
PyFrameObject until after its corresponding _PyInterpreterFrame has
already been freed. So frame_dealloc needs to avoid dereferencing the
f_frame pointer unless it first checks that the pointer still points
to the interpreter frame within the frame object.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2023-08-01 10:32:18 +01:00
Victor Stinner
1a3faba9f1
gh-106869: Use new PyMemberDef constant names ( #106871 )
...
* Remove '#include "structmember.h"'.
* If needed, add <stddef.h> to get offsetof() function.
* Update Parser/asdl_c.py to regenerate Python/Python-ast.c.
* Replace:
* T_SHORT => Py_T_SHORT
* T_INT => Py_T_INT
* T_LONG => Py_T_LONG
* T_FLOAT => Py_T_FLOAT
* T_DOUBLE => Py_T_DOUBLE
* T_STRING => Py_T_STRING
* T_OBJECT => _Py_T_OBJECT
* T_CHAR => Py_T_CHAR
* T_BYTE => Py_T_BYTE
* T_UBYTE => Py_T_UBYTE
* T_USHORT => Py_T_USHORT
* T_UINT => Py_T_UINT
* T_ULONG => Py_T_ULONG
* T_STRING_INPLACE => Py_T_STRING_INPLACE
* T_BOOL => Py_T_BOOL
* T_OBJECT_EX => Py_T_OBJECT_EX
* T_LONGLONG => Py_T_LONGLONG
* T_ULONGLONG => Py_T_ULONGLONG
* T_PYSSIZET => Py_T_PYSSIZET
* T_NONE => _Py_T_NONE
* READONLY => Py_READONLY
* PY_AUDIT_READ => Py_AUDIT_READ
* READ_RESTRICTED => Py_AUDIT_READ
* PY_WRITE_RESTRICTED => _Py_WRITE_RESTRICTED
* RESTRICTED => (READ_RESTRICTED | _Py_WRITE_RESTRICTED)
2023-07-25 15:28:30 +02:00
Carl Meyer
104d7b760f
gh-105340: include hidden fast-locals in locals() ( #105715 )
...
* gh-105340: include hidden fast-locals in locals()
2023-07-05 17:05:02 -06:00
Md Sadman Chowdhury
822db860ea
Fix duplicate word typos in comments ( #106225 )
2023-07-01 12:47:14 -07:00
Mark Shannon
7199584ac8
GH-100987: Allow objects other than code objects as the "executable" of an 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.
2023-06-14 13:46:37 +01:00
Mark Shannon
4bfa01b9d9
GH-104584: Plugin optimizer API (GH-105100)
2023-06-02 11:46:18 +01:00
Mark Shannon
45f5aa8fc7
GH-103082: Filter LINE events in VM, to simplify tool implementation. (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.
2023-05-12 12:21:20 +01:00
Carl Meyer
c3b595e73e
gh-97933: (PEP 709) inline list/dict/set comprehensions ( #101441 )
...
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
2023-05-09 11:02:14 -06:00
Mark Shannon
a0df9ee8fc
GH-96803: Add three C-API functions to make _PyInterpreterFrame less opaque for users of PEP 523. (GH-96849)
2023-05-05 17:53:07 +01:00
Mark Shannon
411b169281
GH-103082: Implementation of PEP 669: Low Impact Monitoring for CPython (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
2023-04-12 12:04:55 +01:00
Brandt Bucher
0444ae2487
GH-100982: Break up COMPARE_AND_BRANCH (GH-102801)
2023-03-23 15:25:09 -07:00
Irit Katriel
3468c768ce
gh-102859: Remove JUMP_IF_FALSE_OR_POP and JUMP_IF_TRUE_OR_POP ( #102870 )
2023-03-22 18:10:48 +00:00
Irit Katriel
11a2c6ce51
gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Objects/) ( #102218 )
2023-03-08 17:03:18 +00:00
Steve Dower
a99eb5cd99
gh-101907: Stop using `_Py_OPCODE` and `_Py_OPARG` macros (GH-101912)
...
* gh-101907: Removes use of non-standard C++ extension from Include/cpython/code.h
* Make cases_generator correct on Windows
2023-02-20 14:56:48 +00:00
Mark Shannon
160f2fe2b9
GH-87849: Simplify stack effect of SEND and specialize it for generators and coroutines. (GH-101788)
2023-02-13 11:24:55 +00:00
penguin_wwy
753fc8a5d6
gh-101632: Add the new RETURN_CONST opcode ( #101633 )
2023-02-07 22:32:21 +00:00
Mark Shannon
7b14c2ef19
GH-100982: Add `COMPARE_AND_BRANCH` instruction (GH-100983)
2023-01-16 12:35:21 +00:00
Brandt Bucher
61762b9387
GH-100126: Skip incomplete frames in more places (GH-100613)
2023-01-09 12:20:04 -08:00
Irit Katriel
15c44789bb
gh-100758: Refactor initialisation of frame headers into a single function (_PyFrame_Initialize) (GH-100759)
2023-01-06 14:55:56 +00:00
Mark Shannon
15aecf8dd7
GH-100719: Remove the `co_nplaincellvars` field from code objects. (GH-100721)
2023-01-04 15:41:39 +00:00
Irit Katriel
c31e356a10
gh-100720: refactor calculation of number of frame slots for a code object into the new function _PyFrame_NumSlotsForCodeObject ( #100722 )
2023-01-04 13:37:06 +00:00
Bill Fisher
88d565f32a
gh-99110: Initialize `frame->previous` in init_frame to fix segmentation fault when accessing `frame.f_back` ( #100182 )
2022-12-23 20:15:53 +05:30
Brandt Bucher
aa8b58cb33
Remove old comment (GH-99489)
2022-11-16 13:43:31 -08:00
Victor Stinner
6788303f5c
gh-91248: Optimize PyFrame_GetVar() ( #99252 )
...
PyFrame_GetVar() no longer creates a temporary dictionary to get a
variable.
2022-11-13 15:37:03 +01:00
Victor Stinner
584e55bd34
gh-99300: Use Py_NewRef() in Objects/ directory ( #99335 )
...
Replace Py_INCREF() and Py_XINCREF() with Py_NewRef() and
Py_XNewRef() in C files of the Objects/ directory.
2022-11-10 22:22:02 +01:00
Mark Shannon
1e197e63e2
GH-96421: Insert shim frame on entry to interpreter (GH-96319)
...
* Adds EXIT_INTERPRETER instruction to exit PyEval_EvalDefault()
* Simplifies RETURN_VALUE, YIELD_VALUE and RETURN_GENERATOR instructions as they no longer need to check for entry frames.
2022-11-10 12:34:57 +00:00
Victor Stinner
4d5fcca273
gh-91248: Add PyFrame_GetVar() function ( #95712 )
...
Add PyFrame_GetVar() and PyFrame_GetVarString() functions to get a
frame variable by its name.
Move PyFrameObject C API tests from test_capi to test_frame.
2022-11-08 17:40:27 +01:00
Brandt Bucher
c7065ce019
GH-93143: Don't turn LOAD_FAST into LOAD_FAST_CHECK (GH-99075)
2022-11-08 07:50:46 -08:00