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
Brandt Bucher
276d77724f
GH-98686: Quicken everything (GH-98687)
2022-11-02 10:42:57 -07:00
Mark Shannon
22863df7ca
GH-96793: Change `FOR_ITER` to not pop the iterator on exhaustion. (GH-96801)
...
Change FOR_ITER to have the same stack effect regardless of whether it branches or not.
Performance is unchanged as FOR_ITER (and specialized forms jump over the cleanup code).
2022-10-27 11:55:03 +01:00
Ken Jin
7ec2e279fe
gh-95756: Free and NULL-out code caches when needed (GH-98181)
2022-10-11 23:11:46 +08:00
Ken Jin
b399115ef1
gh-95756: Lazily created cached co_* attrs (GH-97791)
2022-10-11 11:26:08 +08:00
Brandt Bucher
0ff8fd6583
GH-97779: Ensure that *all* frame objects are backed by "complete" frames (GH-97845)
2022-10-04 17:30:03 -07:00
Irit Katriel
4c72517cad
gh-93554: Conditional jump opcodes only jump forward (GH-96318)
2022-09-01 21:36:47 +01:00
Mark Shannon
c09fa7542c
GH-96237: Allow non-functions as reference-holder in frames. (GH-96238)
2022-08-25 10:16:55 +01:00
Brandt Bucher
e4d3a96a11
GH-94438: Handle extended arguments and conditional pops in mark_stacks (GH-95110)
2022-07-22 16:28:03 -07:00
Mark Shannon
3f738600f6
GH-94979: Pop the exception stack when jumping out of exception handlers. ( #95003 )
2022-07-19 16:33:18 +01:00
Brandt Bucher
b407312a24
GH-94893: Ignore caches when adding LOAD_FAST_CHECKs (GH-94894)
2022-07-18 09:00:41 -07:00
Mark Shannon
2f8bff6879
GH-94739: Mark stacks of exception handling blocks for setting frame.f_lineno in the debugger. (GH-94958)
2022-07-18 16:06:42 +01:00
Irit Katriel
50b9a7762f
gh-94438: in frameobject's mark_stacks switch, the PUSH_EXC_INFO and POP_EXCEPT cases are no longer reachable (GH-94582)
2022-07-06 07:15:59 +01:00
Mark Shannon
be80db14c4
GH-94438: Account for NULLs on evaluation stack when jumping lines. (GH-94444)
2022-07-01 14:01:14 +01:00
Mark Shannon
544531de23
GH-94262: Don't create frame objects for frames that aren't yet complete. (GH-94371)
2022-07-01 11:08:20 +01:00
Kumar Aditya
5b6e5762ca
GH-91742: Fix pdb crash after jump (GH-94171)
2022-06-23 15:19:13 +01:00
Dennis Sweeney
5fcfdd87c9
GH-91432: Specialize FOR_ITER (GH-91713)
...
* Adds FOR_ITER_LIST and FOR_ITER_RANGE specializations.
* Adds _PyLong_AssignValue() internal function to avoid temporary boxing of ints.
2022-06-21 11:19:26 +01:00
Mark Shannon
45e62a2bc1
GH-93897: Store frame size in code object and de-opt if insufficient space on thread frame stack. (GH-93908)
2022-06-20 12:59:25 +01:00
Ken Jin
d52ffc1d1f
gh-93382: Cache result of `PyCode_GetCode` in codeobject (GH-93383)
...
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Co-authored-by: Dennis Sweeney <36520290+sweeneyde@users.noreply.github.com>
2022-06-04 00:41:18 +08:00
Dennis Sweeney
f425f3bb27
gh-93143: Avoid NULL check in LOAD_FAST based on analysis in the compiler (GH-93144)
2022-05-31 16:32:30 -04:00
Victor Stinner
897f14d38d
gh-89653: PEP 670: Convert PyCell macros to functions ( #92653 )
...
Convert the following macros to static inline functions:
* PyCell_GET()
* PyCell_SET()
Limited C API version 3.12 no longer casts arguments.
Fix also usage of PyCell_SET(): only delete the old value after
setting the new value.
2022-05-11 23:24:48 +02:00
Victor Stinner
64a54e511d
gh-91719: Add pycore_opcode.h internal header file ( #91906 )
...
Move the following API from Include/opcode.h (public C API) to a new
Include/internal/pycore_opcode.h header file (internal C API):
* EXTRA_CASES
* _PyOpcode_Caches
* _PyOpcode_Deopt
* _PyOpcode_Jump
* _PyOpcode_OpName
* _PyOpcode_RelativeJump
2022-04-26 00:14:30 +02:00
Mark Shannon
944fffee89
GH-88116: Use a compact format to represent end line and column offsets. (GH-91666)
...
* Stores all location info in linetable to conform to PEP 626.
* Remove column table from code objects.
* Remove end-line table from code objects.
* Document new location table format
2022-04-21 16:10:37 +01:00
Victor Stinner
aa5c0a9f8d
bpo-40421: Cleanup PyFrame C API (GH-32417)
2022-04-19 09:53:10 +02:00
Pablo Galindo Salgado
37a53fb6bd
gh-91502: Add a new API to check if a frame is an entry frame (GH-91503)
2022-04-13 14:06:56 +01:00
Irit Katriel
dd207a6ac5
bpo-47120: make POP_JUMP_IF_TRUE/FALSE/NONE/NOT_NONE relative (GH-32400)
2022-04-11 10:40:24 +01:00
Mark Shannon
5b4a4b6f09
Add new PyFrame_GetLasti C-API function (GH-32413)
2022-04-08 12:18:57 +01:00
Brandt Bucher
ef6a482b02
bpo-47177: Replace `f_lasti` with `prev_instr` (GH-32208)
2022-04-07 12:31:01 -07:00
Irit Katriel
0aa8d5cbd8
bpo-47120: make JUMP_NO_INTERRUPT relative (GH-32221)
2022-04-05 12:49:08 +01:00
Irit Katriel
32091df41c
bpo-47186: Replace JUMP_IF_NOT_EG_MATCH by CHECK_EG_MATCH + jump (GH-32309)
2022-04-05 12:06:22 +01:00
Irit Katriel
04e07c258f
bpo-47186: Replace JUMP_IF_NOT_EXC_MATCH by CHECK_EXC_MATCH + jump (GH-32231)
2022-04-01 13:59:38 +01:00
Mark Shannon
74b95d86e0
bpo-40421: Add missing getters for frame object attributes to C-API. (GH-32114)
2022-03-31 17:13:25 +01:00
Irit Katriel
a00518d9ad
bpo-47120: Replace the JUMP_ABSOLUTE opcode by the relative JUMP_BACKWARD (GH-32115)
2022-03-31 14:14:15 +01:00