Inada Naoki
2566b74b26
gh-81283: compiler: remove indent from docstring ( #106411 )
...
Co-authored-by: Éric <merwok@netwok.org>
2023-07-15 19:33:32 +09:00
Irit Katriel
6a70edf24c
gh-105481: expose opcode metadata via the _opcode module ( #106688 )
2023-07-14 18:41:52 +01:00
Irit Katriel
2ca008e2b7
gh-105481: move Python/opcode_metadata.h to Include/internal/pycore_opcode_metadata.h ( #106673 )
2023-07-12 11:30:25 +01:00
Victor Stinner
8571b271e7
gh-106320: Remove private _PyInterpreterState functions ( #106325 )
...
Remove private _PyThreadState and _PyInterpreterState C API
functions: move them to the internal C API (pycore_pystate.h and
pycore_interp.h). Don't export most of these functions anymore, but
still export functions used by tests.
Remove _PyThreadState_Prealloc() and _PyThreadState_Init() from the C
API, but keep it in the stable API.
2023-07-02 01:39:38 +00:00
Brandt Bucher
7b2d94d875
GH-106008: Make implicit boolean conversions explicit (GH-106003)
2023-06-29 13:49:54 -07:00
hms
8bff940ad6
gh-105775: Convert LOAD_CLOSURE to a pseudo-op ( #106059 )
...
This enables super-instruction formation,
removal of checks for uninitialized variables,
and frees up an instruction.
2023-06-29 09:34:00 -07:00
Irit Katriel
5290881009
gh-106149: move jump target resolution from optimizer to assembler ( #106150 )
2023-06-27 20:24:58 +01:00
Mark Shannon
04492cbc9a
GH-91095: Specialize calls to normal Python classes. (GH-99331)
2023-06-22 09:48:19 +01:00
Crowthebird
28187a9c4f
gh-105908: fix `barry_as_FLUFL` future import ( #105909 )
2023-06-19 22:50:57 +01:00
Irit Katriel
14d01262da
gh-105481: remove HAS_ARG, HAS_CONST, IS_JUMP_OPCODE, IS_PSEUDO_OPCODE and replace by their new versions ( #105865 )
2023-06-17 17:00:16 +01:00
Irit Katriel
d1b0297d3e
gh-105481: add HAS_JUMP flag to opcode metadata ( #105791 )
2023-06-14 23:14:22 +00:00
Mark Shannon
1d857da7f0
GH-77273: Better bytecodes for f-strings (GH-6132)
2023-06-14 16:15:08 +01:00
Irit Katriel
be2779c0cb
gh-105481: add flags to each instr in the opcode metadata table, to replace opcode.hasarg/hasname/hasconst ( #105482 )
2023-06-13 21:42:03 +01:00
Mark Shannon
09ffa69e2e
GH-105678: Split MAKE_FUNCTION into MAKE_FUNCTION and SET_FUNCTION_ATTRIBUTE (GH-105680)
2023-06-13 09:51:05 +01:00
Irit Katriel
58f5227d7c
gh-105481: add pseudo-instructions to the bytecodes DSL ( #105506 )
2023-06-11 22:31:59 +01:00
Erlend E. Aasland
6c832ddcf2
gh-105375: Improve error handling in compiler_enter_scope() ( #105494 )
2023-06-09 18:55:53 +02:00
Dong-hee Na
058b960535
gh-103906: Remove immortal refcounting in compile/marshal.c (gh-103922)
2023-06-05 22:38:36 +09:00
Jelle Zijlstra
69d1245685
gh-105164: Detect annotations inside match blocks ( #105177 )
2023-06-05 06:07:17 -07:00
Irit Katriel
94a1eea511
gh-103277: remove unused macros ( #105247 )
2023-06-03 05:12:07 -06:00
Jelle Zijlstra
44bb03f856
gh-105214: Use named constants for MAKE_FUNCTION oparg ( #105215 )
2023-06-02 14:10:45 +00:00
Irit Katriel
76b9c0cfaa
remove unused #includes of pycore_pymem.h ( #105166 )
2023-06-01 12:12:53 +01:00
Irit Katriel
f990bb8b2d
gh-105148: make _PyASTOptimizeState internal to ast_opt.c ( #105149 )
2023-05-31 20:21:46 +01:00
Jelle Zijlstra
a5f244d627
gh-104656: Rename typeparams AST node to type_params ( #104657 )
2023-05-21 21:25:09 -07:00
Jelle Zijlstra
cd9748409a
gh-104686: Fix tracing for decorated classes ( #104708 )
2023-05-21 16:20:19 -07:00
Carl Meyer
70c7796477
gh-104619: never leak comprehension locals to outer locals() ( #104637 )
2023-05-18 18:50:24 -07:00
Carl Meyer
86e6f16ccb
gh-104602: ensure all cellvars are known up front ( #104603 )
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2023-05-19 00:07:35 +00:00
Carl Meyer
0589c6a4d3
gh-104615: don't make unsafe swaps in apply_static_swaps ( #104620 )
2023-05-18 21:22:03 +00:00
Jelle Zijlstra
662aede68b
gh-104374: Remove access to class scopes for inlined comprehensions ( #104528 )
...
Co-authored-by: Carl Meyer <carl@oddbird.net>
2023-05-18 05:22:17 +00:00
Carl Meyer
f40890b124
gh-103865: add monitoring support to LOAD_SUPER_ATTR ( #103866 )
2023-05-16 10:29:00 -06:00
Jelle Zijlstra
24d8b88420
gh-103763: Implement PEP 695 ( #103764 )
...
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>
2023-05-15 20:36:23 -07:00
Irit Katriel
8a3702f0c7
gh-104482: Fix error handling bugs in ast.c ( #104483 )
2023-05-15 21:53:55 +01:00
Carl Meyer
ac66cc17f2
gh-104377: fix cell in comprehension that is free in outer scope ( #104394 )
2023-05-11 16:48:21 -07: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
Irit Katriel
ca95edf177
gh-104240: return code unit metadata from codegen ( #104300 )
2023-05-09 14:33:40 +01:00
Irit Katriel
2c2dc61e8d
gh-104240: make _PyCompile_CodeGen support different compilation modes ( #104241 )
2023-05-07 18:47:28 +01:00
Irit Katriel
80b714835d
gh-87092: Expose assembler to unit tests ( #103988 )
2023-05-01 22:29:30 +01:00
Irit Katriel
fbf3596c3e
gh-87092: change assembler to use instruction sequence instead of CFG ( #103933 )
2023-04-29 12:06:04 +01:00
Carl Meyer
0dc8b50d33
gh-87729: add LOAD_SUPER_ATTR instruction for faster super() ( #103497 )
...
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.
2023-04-24 22:22:14 +00:00
Shantanu
ae25855045
gh-103492: Clarify SyntaxWarning with literal comparison ( #103493 )
2023-04-24 15:42:57 -06:00
Irit Katriel
1c01f8d797
gh-101517: fix line number propagation in code generated for except* ( #103550 )
2023-04-24 21:58:51 +01:00
Irit Katriel
6751a4af95
gh-87092: fix a few cases of incorrect error handling in compiler ( #103456 )
...
gh-87092: fix a few cases of incorrect error handling
2023-04-24 19:30:49 +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
Irit Katriel
9db2db4fa4
gh-87092: fix refleak in peepholer test harness ( #103448 )
2023-04-11 21:08:29 +01:00
Irit Katriel
33822d037a
gh-87092: move assembler related code from compile.c to assemble.c ( #103277 )
2023-04-11 11:15:09 +01:00
Irit Katriel
80163e17d3
gh-87092: move CFG related code from compile.c to flowgraph.c ( #103021 )
2023-03-31 18:17:59 +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
8d015fa000
gh-102860: improve performance of compiler's instr_sequence_to_cfg ( #102861 )
2023-03-21 19:13:49 +00:00
Irit Katriel
634cb61909
gh-87092: refactor assemble() to a number of separate functions, which do not need the compiler struct ( #102562 )
2023-03-13 15:59:20 +00:00
Irit Katriel
54060ae91d
gh-87092: compiler's CFG construction moved to after codegen stage ( #102320 )
2023-03-07 18:16:32 +00:00
Irit Katriel
71db5dbcd7
gh-102371: move _Py_Mangle from compile.c to symtable.c ( #102372 )
2023-03-02 18:38:22 +00:00
Irit Katriel
4c87537efb
gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Python/) ( #102193 )
2023-02-28 11:50:52 +00:00
Irit Katriel
9f799ab020
gh-87092: Make jump target label equal to the offset of the target in the instructions sequence ( #102093 )
2023-02-28 11:29:32 +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
penguin_wwy
df7ccf6138
gh-101928: fix crash in compiler on multi-line lambda in function call ( #101933 )
2023-02-16 11:31:41 +00:00
Irit Katriel
81e3aa835c
gh-101799: implement PREP_RERAISE_STAR as an intrinsic function ( #101800 )
2023-02-14 11:54:13 +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
Guido van Rossum
65b7b6bd23
gh-98831: Use opcode metadata for stack_effect() ( #101704 )
...
* Write output and metadata in a single run
This halves the time to run the cases generator
(most of the time goes into parsing the input).
* Declare or define opcode metadata based on NEED_OPCODE_TABLES
* Use generated metadata for stack_effect()
* compile.o depends on opcode_metadata.h
* Return -1 from _PyOpcode_num_popped/pushed for unknown opcode
2023-02-08 16:23:19 -08:00
penguin_wwy
753fc8a5d6
gh-101632: Add the new RETURN_CONST opcode ( #101633 )
2023-02-07 22:32:21 +00:00
Irit Katriel
b91b42d236
gh-98831: rewrite PUSH_EXC_INFO and conditional jumps in the instruction definition DSL ( #101481 )
2023-02-01 19:38:06 +00:00
Irit Katriel
af7b2db384
gh-99955: use SUCCESS/ERROR return values in optimizer and assembler. Use RETURN_IF_ERROR where appropriate. Fix a couple of bugs. ( #101412 )
2023-01-31 00:06:19 +00:00
Dong-hee Na
e867c1b753
gh-101400: Fix incorrect lineno in exception message on continue/break which are not in a loop ( #101413 )
2023-01-30 23:33:54 +00:00
Irit Katriel
19f90d6b97
gh-98831: add variable stack effect support to cases generator ( #101309 )
2023-01-25 20:41:03 +00:00
Mark Shannon
f02fa64bf2
GH-100762: Don't call `gen.throw()` in `gen.close()`, unless necessary. (GH-101013)
...
* Store exception stack depth in YIELD_VALUE's oparg and use it avoid expensive gen.throw() in gen.close() where possible.
2023-01-24 17:25:37 +00:00
Ikko Eltociear Ashimine
4510fbb216
Fix typo in comment in compile.c ( #101194 )
2023-01-20 18:34:36 +00:00
Irit Katriel
9ec9b203ea
gh-101169: reduce the implementation of except* by one bytecode instruction ( #101170 )
2023-01-19 23:30:49 +00:00
Mark Shannon
7b14c2ef19
GH-100982: Add `COMPARE_AND_BRANCH` instruction (GH-100983)
2023-01-16 12:35:21 +00:00
Mark Shannon
6e4e14d98f
GH-100923: Embed jump mask in `COMPARE_OP` oparg (GH-100924)
2023-01-11 20:40:43 +00:00
Carl Meyer
7116030a25
gh-88696: clean up dead argument to compiler_make_closure (GH-100806)
2023-01-07 12:20:48 +00:00
Mark Shannon
78068126a1
GH-99005: More intrinsics (GH-100774)
...
* Remove UNARY_POSITIVE, LIST_TO_TUPLE and ASYNC_GEN_WRAP, replacing them with intrinsics.
2023-01-06 14:47:57 +00:00
Guido van Rossum
14b7f00fdf
GH-98831: Update generate_cases.py: register inst, opcode_metadata.h ( #100735 )
...
(These aren't used yet, but may be coming soon,
and it's easier to keep this tool the same between branches.)
Added a sanity check for all this to compile.c.
Co-authored-by: Irit Katriel <iritkatriel@yahoo.com>
2023-01-05 13:01:07 -08:00
Mark Shannon
28187141cc
GH-99005: Add `CALL_INTRINSIC_1` instruction (GH-100771)
...
* Remove PRINT_EXPR instruction
* Remove STOPITERATION_ERROR instruction
* Remove IMPORT_STAR instruction
2023-01-05 16:05:51 +00:00
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
Irit Katriel
bde06e1b83
gh-92228: disable the compiler's 'small exit block inlining' optimization for blocks that have a line number (GH-94592)
...
Inlining of code that corresponds to source code lines, can make it hard to distinguish later between code which is only reachable from except handlers, and that which is reachable in normal control flow. This caused problems with the debugger's jump feature.
This PR turns off the inlining optimisation for code which has line numbers. We still inline things like the implicit "return None".
2022-07-06 23:38:36 -07:00
Irit Katriel
324d01944d
gh-94485: Set line number of module's RESUME instruction to 0, as specified by PEP 626 (GH-94552)
...
Co-authored-by: Mark Shannon <mark@hotpy.org>
2022-07-05 14:38:44 +02:00
Irit Katriel
c57aad777a
gh-94216: add pseudo instructions to the dis/opcodes modules (GH-94241)
2022-07-01 15:33:35 +01:00
Mark Shannon
b152bf448b
GH-94329: Don't raise on excessive stack consumption (GH-94421)
2022-06-30 15:27:14 +01:00
Irit Katriel
be82d26570
gh-94332: make it safe to call assemble_free when assemble_init has not been called (GH-94389)
2022-06-30 12:26:29 +01:00
Mark Shannon
c0453a40fa
GH-94163: Add BINARY_SLICE and STORE_SLICE instructions. (GH-94168)
2022-06-27 12:24:23 +01:00
Irit Katriel
889772fb56
GH-93678: refactor compiler so that optimizer does not need the assembler and compiler structs (GH-93842)
2022-06-21 09:22:17 +01:00
Irit Katriel
af15cc534c
GH-93678: reduce boilerplate and code repetition in the compiler (GH-93682)
2022-06-14 13:40:09 +01:00
Ken Jin
b083450f88
GH-93429: Merge `LOAD_METHOD` back into `LOAD_ATTR` (GH-93430)
2022-06-14 11:36:22 +01:00
Mark Shannon
2bf74753c1
GH-93662: Make sure that column offsets are correct in multi-line method calls. (GH-93673)
2022-06-14 11:08:12 +01:00
Irit Katriel
cf730b595e
GH-93621: reorder code in with/async-with exception exit path to reduce the size of the exception table (GH-93622)
2022-06-10 17:53:34 +01:00
Irit Katriel
1713ff09d6
GH-93444: remove redundant fields from basicblock: b_nofallthrough, b_exit, b_return (GH-93445)
2022-06-03 22:43:22 +01:00
Irit Katriel
94b1586ca5
gh-93356: Lay out exception handling code at end of code unit (GH-92769)
2022-06-02 14:13:43 +01: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
Irit Katriel
ace6607aa3
gh-93008: refactor compiler functions that add instructions to take only a basicblock* (not the whole compiler) (GH-93009)
2022-05-29 17:13:29 +01:00
Kumar Aditya
cb04a09d2d
GH-93207: Remove HAVE_STDARG_PROTOTYPES configure check for stdarg.h ( #93215 )
2022-05-27 13:30:45 +02:00
Dennis Sweeney
ddc4a782d3
gh-93223: More aggressive Jump-To-Jump elimination (GH-93229)
2022-05-27 11:17:59 +01:00
Dennis Sweeney
a458be3263
gh-93061: Mark as artificial: backwards jump after async for (GH-93062)
2022-05-23 13:58:41 +01:00
Mark Shannon
3fd8610002
GH-89914: Make the oparg of the YIELD_VALUE instruction equal the stack depth. (GH-92960)
2022-05-19 17:49:29 +01:00
Mark Shannon
e48ac9c100
GH-90690: Remove `PRECALL` instruction (GH-92925)
2022-05-19 11:05:26 +01:00
Irit Katriel
8781a041a0
gh-92782: unify the style of CFG traversal algorithms in the compiler (GH-92784)
2022-05-17 13:00:11 +01:00
zikcheng
dc091204f9
gh-92632: Make function starunpack_helper run faster when encounters starred argument. (GH-92655)
2022-05-11 15:09:40 +09:00
Irit Katriel
7c6b7ade8d
gh-92619: Fix bug where the compiler duplicates exit blocks unnecessarily (GH-92620)
2022-05-10 13:36:08 +01:00
Dennis Sweeney
37c6db60f9
gh-91869: Fix tracing of specialized instructions with extended args (GH-91945)
2022-04-27 22:36:34 -06: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
Kumar Aditya
ab0d35d70d
bpo-46712: share more global strings in deepfreeze (gh-32152)
...
(for gh-90868)
2022-04-19 11:41:36 -06:00
Irit Katriel
304f5b63e9
Fix an out of date comment in compile.c (GH-91615)
2022-04-16 20:40:02 +01:00