Irit Katriel
52017dbe16
gh-100747: some compiler macros use c instead of C to access the compiler ( #100748 )
2023-01-04 20:19:20 +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
Brandt Bucher
09edde95f4
GH-99554: Trim trailing whitespace (GH-100435)
...
Automerge-Triggered-By: GH:brandtbucher
2022-12-22 12:13:51 -08:00
Brandt Bucher
3c033a2e6f
GH-99554: Pack location tables more effectively (GH-99556)
2022-12-21 16:41:18 -08:00
Mark Shannon
6997e77bdf
GH-100222: Redefine _Py_CODEUNIT as a union to clarify structure of code unit. (GH-100223)
2022-12-14 11:12:53 +00:00
Irit Katriel
985a71032b
gh-99955: undef ERROR and SUCCESS before redefining (fixes sanitizer warning) ( #100215 )
2022-12-13 13:55:10 +00:00
Irit Katriel
e4ea33b178
gh-99955: standardize return values of functions in compiler's code-gen ( #100010 )
2022-12-12 14:22:15 +00:00
Irit Katriel
ab02262cd0
gh-99955: standardize return values of functions in assembler and optimizer. ( #99956 )
2022-12-02 17:43:10 +00:00
Irit Katriel
18a6967544
GH-99877)
2022-11-30 16:16:54 +00:00
Irit Katriel
ac12e3941f
gh-87092: move all localsplus preparation into separate function called from assembler stage (GH-99869)
2022-11-30 12:37:30 +00:00
Irit Katriel
ae185fdcca
gh-99708: fix bug where compiler crashes on if expression with an empty body block (GH-99732)
2022-11-24 10:59:07 +00:00
Victor Stinner
135ec7cefb
gh-99537: Use Py_SETREF() function in C code ( #99657 )
...
Fix potential race condition in code patterns:
* Replace "Py_DECREF(var); var = new;" with "Py_SETREF(var, new);"
* Replace "Py_XDECREF(var); var = new;" with "Py_XSETREF(var, new);"
* Replace "Py_CLEAR(var); var = new;" with "Py_XSETREF(var, new);"
Other changes:
* Replace "old = var; var = new; Py_DECREF(var)"
with "Py_SETREF(var, new);"
* Replace "old = var; var = new; Py_XDECREF(var)"
with "Py_XSETREF(var, new);"
* And remove the "old" variable.
2022-11-22 13:39:11 +01:00
Victor Stinner
8211cf5d28
gh-99300: Replace Py_INCREF() with Py_NewRef() ( #99530 )
...
Replace Py_INCREF() and Py_XINCREF() using a cast with Py_NewRef()
and Py_XNewRef().
2022-11-16 18:34:24 +01:00
Irit Katriel
a3ac9232f8
gh-87092: expose the compiler's codegen to python for unit tests (GH-99111)
2022-11-14 13:56:40 +00:00
Irit Katriel
fb844e1931
gh-98762: Fix locations of match sub-patterns (GH-98775)
2022-11-12 18:42:17 +00:00
Irit Katriel
3dd6ee2c00
gh-99254: remove all unused consts from code objects (GH-99255)
2022-11-11 10:53:43 +00: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
231d83b724
gh-99300: Use Py_NewRef() in Python/ directory ( #99317 )
...
Replace Py_INCREF() and Py_XINCREF() with Py_NewRef() and
Py_XNewRef() in C files of the Python/ directory.
Update Parser/asdl_c.py to regenerate Python/Python-ast.c.
2022-11-10 11:23:36 +01:00
Brandt Bucher
c7f5708714
GH-98686: Get rid of "adaptive" and "quick" instructions (GH-99182)
2022-11-09 10:50:09 -08:00
Mark Shannon
f4adb97506
GH-96793: Implement PEP 479 in bytecode. (GH-99006)
...
* Handle converting StopIteration to RuntimeError in bytecode.
* Add custom instruction for converting StopIteration into RuntimeError.
2022-11-03 11:38:51 +00:00
Irit Katriel
df84b7b0bc
gh-87092: remove unused SET_LOC/UNSET_LOC macros (GH-98914)
2022-11-02 15:52:11 +00:00
Irit Katriel
6d683d8525
gh-87092: do not allocate PyFutureFeatures dynamically (GH-98913)
2022-11-02 15:13:07 +00:00
Irit Katriel
39448adc9d
gh-98811: use full source location to simplify __future__ imports error checking. This also fixes an incorrect error offset. (GH-98812)
2022-10-31 13:08:03 +00: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
Irit Katriel
a1a8828e42
gh-98461: Fix location of RETURN_VALUE in async generator bytecode. compiler_jump_if no longer needs a pointer to the loc. (GH-98494)
2022-10-25 12:26:26 +01:00
Dennis Sweeney
39bc70e267
gh-97912: Avoid quadratic behavior when adding LOAD_FAST_CHECK (GH-97952)
...
* The compiler analyzes the usage of the first 64 local variables all at once using bit masks.
* Local variables beyond the first 64 are only partially analyzed, achieving linear time.
2022-10-20 18:27:41 -04:00
Irit Katriel
4ec9ed8fde
gh-98461: Fix source location in comprehensions bytecode (GH-98464)
2022-10-20 16:58:37 +01:00
Irit Katriel
9be05df399
gh-98398: Fix source locations for 'assert' bytecode (GH-98405)
2022-10-19 10:48:50 +01:00
Irit Katriel
c051d55ddb
gh-98390: Fix source locations of boolean sub-expressions (GH-98396)
2022-10-18 17:18:38 +01:00
Irit Katriel
6da1a2e993
gh-93691: Compiler's code-gen passes location around instead of holding it on the global compiler state (GH-98001)
2022-10-17 14:28:51 +01:00
Irit Katriel
c529b45122
gh-87092: bring compiler code closer to a preprocessing-opt-assembler organisation (GH-97644)
2022-10-05 08:52:35 +01:00
Brandt Bucher
dfc73b5724
GH-95921: Fix positions for some chained comparisons (GH-96968)
2022-09-20 12:22:24 -07:00
Irit Katriel
98e785d364
gh-87092: in compiler, move the detection of exception handlers before the CFG optimization stage (GH-96935)
2022-09-20 13:14:07 +01:00
Irit Katriel
6d7a0e0dd7
gh-87092: reduce redundancy and repetition in compiler's optimization stage (GH-96713)
2022-09-13 13:03:41 +01:00
Irit Katriel
0cd992c000
gh-88057: in compile.c, assertion that stackdepth is alway >=0 is missing in one place (GH-96513)
2022-09-07 14:01:57 +01:00
Irit Katriel
4c72517cad
gh-93554: Conditional jump opcodes only jump forward (GH-96318)
2022-09-01 21:36:47 +01:00
Irit Katriel
894cafd9a5
gh-93678: apply remove_redundant_jumps in optimize_cfg (GH-96274)
2022-09-01 11:03:52 +01:00
Irit Katriel
fba3b67af4
gh-87092: use basicblock_last_instr consistently in the compiler (GH-96243)
2022-08-24 16:58:42 +01:00
Irit Katriel
420f39f457
gh-93678: add _testinternalcapi.optimize_cfg() and test utils for compiler optimization unit tests (GH-96007)
2022-08-24 11:02:53 +01:00
Brandt Bucher
5bfb3c372b
GH-90997: Wrap yield from/await in a virtual try/except StopIteration (GH-96010)
2022-08-19 12:33:44 -07:00
Irit Katriel
41757bfabd
gh-95922: compiler's eliminate_empty_basic_blocks ignores the last block of the compilation unit (GH-95924)
2022-08-12 16:35:09 +01:00
Irit Katriel
9533b40cce
gh-87092: compiler's codegen stage uses int jump target labels, and the target pointer is only calculated just before optimization stage (GH-95655)
2022-08-11 17:40:49 +01:00
Irit Katriel
000c3874bf
gh-87092: create a 'jump target label' abstraction so that the compiler's codegen stage does not work directly with basic blocks (GH-95398)
2022-08-04 14:59:32 +01:00
Irit Katriel
75c0c1b993
gh-93678: extract 'struct cfg_builder' from the compiler so that the CFG can be manipulated directly (GH-95107)
2022-07-26 14:36:30 +01:00
Brandt Bucher
900bfc53cb
GH-94036: Fix more attribute location quirks (GH-95028)
2022-07-22 13:13:16 -07:00
Brandt Bucher
e402b26b7f
GH-95113: Don't use EXTENDED_ARG_QUICK in unquickened code (GH-95121)
2022-07-22 11:04:20 -07:00
Brandt Bucher
742d4614e1
GH-91409: Don't overwrite valid locations with NOP locations (GH-95067)
2022-07-20 14:27:31 -07:00
Kumar Aditya
7476154886
GH-94851: fix immortal objects refcounting in compiler (gh-95040)
2022-07-20 18:53:27 +09:00
Irit Katriel
ea11c17742
gh-93678: move normalize_basic_block and extend_block call into optimize_cfg (GH-95002)
2022-07-19 17:48:56 +01:00
Brandt Bucher
264b3ddfd5
GH-94694: Fix column offsets for multi-line method lookups (GH-94697)
2022-07-09 17:22:23 -07:00