Eric Snow
ed57b36c32
bpo-45953: Statically allocate the main interpreter (and initial thread state). (gh-29883)
...
Previously, the main interpreter was allocated on the heap during runtime initialization. Here we instead embed it into _PyRuntimeState, which means it is statically allocated as part of the _PyRuntime global. The same goes for the initial thread state (of each interpreter, including the main one). Consequently there are fewer allocations during runtime/interpreter init, fewer possible failures, and better memory locality.
FYI, this also helps efforts to consolidate globals, which in turns helps work on subinterpreter isolation.
https://bugs.python.org/issue45953
2022-01-12 16:28:46 -07:00
Yury Selivanov
be578e0c06
bpo-46347: Yet another fix in the erorr path of PyEval_EvalCodeEx ( #30554 )
2022-01-11 16:35:19 -08:00
Yury Selivanov
20b5791ce9
bpo-46347: Fix PyEval_EvalCodeEx to correctly cleanup in error paths ( #30551 )
2022-01-11 15:37:09 -08:00
Yury Selivanov
607d8a838f
bpo-46347: Fix memory leak in PyEval_EvalCodeEx. ( #30546 )
...
First introduced in 0332e569c1
2022-01-11 14:25:28 -08:00
Mark Shannon
e028ae99ec
bpo-45923: Handle call events in bytecode (GH-30364)
...
* Add a RESUME instruction to handle "call" events.
2022-01-06 13:09:25 +00:00
penguin_wwy
3db762db72
bpo-46031: add POP_JUMP_IF_NOT_NONE and POP_JUMP_IF_NONE (GH-30019)
2022-01-06 11:38:35 +00:00
Brandt Bucher
332e6b9725
bpo-45256: Don't track the exact depth of each `InterpreterFrame` (GH-30372)
2022-01-05 11:30:26 +00:00
Brandt Bucher
31e43cbe5f
bpo-46009: Remove GEN_START (GH-30367)
2022-01-04 11:38:32 -08:00
Irit Katriel
a94461d718
bpo-46202: Remove opcode POP_EXCEPT_AND_RERAISE (GH-30302)
...
* bpo-46202: remove opcode POP_EXCEPT_AND_RERAISE
* do not assume that an exception group is truthy
2022-01-04 10:37:12 +00:00
Irit Katriel
65e7c1f90e
bpo-46219, 46221: simplify except* implementation following exc_info changes. Move helpers to exceptions.c. Do not assume that exception groups are truthy. (GH-30289)
2022-01-02 23:22:42 +00:00
Mark Shannon
efd6236d36
bpo-46072: Add top level stats struct (GH-30169)
2021-12-17 14:48:01 +00:00
Irit Katriel
396b58345f
bpo-45711: Remove type and traceback from exc_info (GH-30122)
...
* Do not PUSH/POP traceback or type to the stack as part of exc_info
* Remove exc_traceback and exc_type from _PyErr_StackItem
* Add to what's new, because this change breaks things like Cython
2021-12-17 14:46:22 +00:00
Mark Shannon
342b93f9f2
bpo-46072: Add --with-pystats configure option to simplify gathering of VM stats (GH-30116)
...
* Simplify specialization stats collection macros.
* Add --enable-pystats option to configure.
* Update specialization summary script to handle larger number of kinds
2021-12-15 15:32:32 +00:00
Mark Shannon
3a60bfef49
bpo-44525: Specialize for calls to type and other builtin classes with 1 argument. (GH-29942)
2021-12-15 15:03:42 +00:00
Mark Shannon
0b50a4f0cd
bpo-46039: Split yield from in two (GH-30035)
...
* Split YIELD_FROM opcode into SEND and JUMP_ABSOLUTE.
* Remove YIELD_FROM opcode.
2021-12-15 10:30:09 +00:00
Mark Shannon
9f8f45144b
bpo-44525: Split calls into PRECALL and CALL (GH-30011)
...
* Add 3 new opcodes for calls: PRECALL_METHOD, CALL_NO_KW, CALL_KW.
* Update specialization to handle new CALL opcodes.
* Specialize call to method descriptors.
* Remove old CALL opcodes: CALL_FUNCTION, CALL_METHOD, CALL_METHOD_KW, CALL_FUNCTION_KW.
2021-12-14 18:22:44 +00:00
Irit Katriel
d60457a667
bpo-45292: [PEP-654] add except* (GH-29581)
2021-12-14 16:48:15 +00:00
Mark Shannon
69806b9516
bpo-46009: Do not exhaust generator when send() method raises (GH-29986)
2021-12-08 12:09:26 +00:00
Eric Snow
313f92a57b
bpo-46008: Move thread-related interpreter state into a sub-struct. (gh-29971)
...
This parallels _PyRuntimeState.interpreters. Doing this helps make it more clear what part of PyInterpreterState relates to its threads.
https://bugs.python.org/issue46008
2021-12-07 14:03:47 -07:00
Eric Snow
8262c96bcc
bpo-46008: Return void from _PyEval_InitState(). (gh-29970)
...
This falls into the category of keep-allocation-and-initialization separate. It also allows us to use _PyEval_InitState() safely in functions that return void.
https://bugs.python.org/issue46008
2021-12-07 14:02:17 -07:00
Mark Shannon
064e53d19a
Fix leak when an exception is raised during generator creation. (GH-29960)
2021-12-07 18:05:48 +00:00
Mark Shannon
8319114fee
bpo-45947: Place dict and values pointer at fixed (negative) offset just before GC header. (GH-29879)
...
* Place __dict__ immediately before GC header for plain Python objects.
* Fix up lazy dict creation logic to use managed dict pointers.
* Manage values pointer, placing them directly before managed dict pointers.
* Convert hint-based load/store attr specialization target managed dict classes.
* Specialize LOAD_METHOD for managed dict objects.
* Remove unsafe _PyObject_GC_Calloc function.
* Remove unsafe _PyObject_GC_Malloc() function.
* Add comment explaning use of Py_TPFLAGS_MANAGED_DICT.
2021-12-07 16:02:53 +00:00
Mark Shannon
299483c95d
bpo-45963: Make space for the InterpreterFrame of a generator in that generator. (GH-29891)
...
* Make generator, coroutine and async gen structs all the same size.
* Store interpreter frame in generator (and coroutine). Reduces the number of allocations neeeded for a generator from two to one.
2021-12-06 10:13:49 +00:00
Dennis Sweeney
03768c4d13
bpo-45885: Specialize COMPARE_OP (GH-29734)
...
* Add COMPARE_OP_ADAPTIVE adaptive instruction.
* Add COMPARE_OP_FLOAT_JUMP, COMPARE_OP_INT_JUMP and COMPARE_OP_STR_JUMP specialized instructions.
* Introduce and use _PyUnicode_Equal
2021-12-03 11:29:12 +00:00
Mark Shannon
49444fb807
bpo-45753: Interpreter internal tweaks (GH-29575)
...
* Split exit paths into exceptional and non-exceptional.
* Move exit tracing code to individual bytecodes.
* Wrap all trace entry and exit events in macros to make them clearer and easier to enhance.
* Move return sequence into RETURN_VALUE, YIELD_VALUE and YIELD_FROM. Distinguish between normal trace events and dtrace events.
2021-12-01 12:09:36 +00:00
Irit Katriel
8a45ca542a
bpo-45711: Change exc_info related APIs to derive type and traceback from the exception instance (GH-29780)
2021-11-30 22:37:04 +00:00
Mark Shannon
60929576e4
bpo-45786: Allocate space for frame in frame object. (GH-29729)
2021-11-29 12:34:59 +00:00
Irit Katriel
c456dfafe9
bpo-45711: use exc_value instead of exc_type to determine if exc_info is valid. Add more assertions. (GH-29627)
2021-11-25 09:41:28 +00:00
Mark Shannon
135cabd328
bpo-44525: Copy free variables in bytecode to allow calls to inner functions to be specialized (GH-29595)
...
* Make internal APIs that take PyFrameConstructor take a PyFunctionObject instead.
* Add reference to function to frame, borrow references to builtins and globals.
* Add COPY_FREE_VARS instruction to allow specialization of calls to inner functions.
2021-11-23 09:53:24 +00:00
Irit Katriel
4d6c0c0cce
bpo-45871: Refactor except matcher validation into a separate function so that it can be reused. Add missing unit test. (GH-29711)
2021-11-22 16:56:23 +00:00
Mark Shannon
337cb480e9
bpo-45709: Fix tracing when exception is handled. (GH-29638)
2021-11-19 15:16:49 +00:00
Dennis Sweeney
036fead695
bpo-45609: Specialize STORE_SUBSCR (GH-29242)
...
* Specialize STORE_SUBSCR for list[int], and dict[object]
* Adds _PyDict_SetItem_Take2 which consumes references to the key and values.
2021-11-19 10:30:37 +00:00
Mark Shannon
21fa7a3e8f
bpo-45829: Specialize BINARY_SUBSCR for __getitem__ implemented in Python. (GH-29592)
2021-11-18 11:02:14 +00:00
Dong-hee Na
345ba3f080
bpo-45510: Specialize BINARY_SUBTRACT (GH-29523)
2021-11-18 09:19:58 +00:00
Brandt Bucher
6a84d61c55
bpo-45636: Simplify BINARY_OP (GH-29565)
2021-11-16 05:53:57 -08:00
Mark Shannon
b931077375
bpo-45753: Make recursion checks more efficient. (GH-29524)
...
* Uses recursion remaining, instead of recursion depth to speed up check against recursion limit.
2021-11-16 11:01:57 +00:00
Brandt Bucher
ec382fac0d
bpo-45636: Remove the old %-formatting fast-path (GH-29532)
2021-11-15 08:58:23 -08:00
Irit Katriel
de3db1448b
bpo-45711: assert that the type of exc_info is redundant (GH-29518)
2021-11-12 21:37:26 +00:00
Brandt Bucher
9178f533ff
bpo-45636: Merge all numeric operators (GH-29482)
2021-11-10 22:56:22 -08:00
Irit Katriel
4cdeee5978
bpo-45711: remove unnecessary DUP_TOP and POP in exception handling (GH-29495)
2021-11-10 18:08:28 +00:00
Mark Shannon
7f61d9d848
bpo-45256: Rationalize code around Python-to-Python calls a bit. (GH-29235)
2021-10-28 16:14:59 +01:00
Ken Jin
0a1a36b74b
bpo-44525: Add recursive checks for `CALL_FUNCTION_BUILTIN_O` (GH-29271)
2021-10-28 16:02:34 +01:00
Mark Shannon
f291404a80
bpo-45637: Store the frame pointer in the cframe (GH-29267)
...
* Rename 'frame' to 'current_frame'
2021-10-28 13:59:11 +01:00
Mark Shannon
4776b07d17
Don't make a call at the C level when calling bound-methods from Python code. (GH-29238)
2021-10-27 15:26:22 +01:00
Brandt Bucher
82a662e521
bpo-44511: Improve the bytecode for class and mapping patterns (GH-26922)
...
* Refactor mapping patterns and speed up class patterns.
* Simplify MATCH_KEYS and MATCH_CLASS.
* Add COPY opcode.
2021-10-27 10:45:35 +01:00
Mark Shannon
bc85eb7a4f
bpo-45527: Don't count cache hits, just misses. (GH-29092)
2021-10-20 20:53:48 +02:00
Mark Shannon
8863a0fcc5
bpo-44525: Specialize simple Python calls. (GH-29033)
2021-10-20 16:08:28 +01:00
Ken Jin
3163e68c34
bpo-44525: Specialize ``CALL_FUNCTION`` for C function calls (GH-26934)
2021-10-20 00:16:36 +01:00
Ken Jin
6e35b096ac
Record cache hits for BINARY_SUBSCR specializations (GH-29060)
2021-10-19 17:25:31 +01:00
Victor Stinner
034f607906
bpo-43760: Rename _PyThreadState_DisableTracing() (GH-29032)
...
* Rename _PyThreadState_DisableTracing()
to _PyThreadState_PauseTracing()
* Rename _PyThreadState_ResetTracing()
to _PyThreadState_ResumeTracing()
2021-10-18 18:40:43 +02:00