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
Irit Katriel
ea2ae02607
gh-91276: Make JUMP_IF_TRUE_OR_POP/JUMP_IF_FALSE_OR_POP relative (GH-32215)
2022-04-15 20:19:24 +01:00
L. A. F. Pereira
5f056acdf2
Fill holes in internal compiler structs ( #91458 )
2022-04-13 15:09:20 -07: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
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
997ba5d126
bpo-47172: Compiler enhancements (GH-32200)
...
* Make virtual opcodes negative.
* Make is_jump detect only actual jumps.
* Use is_block_push for the exception block setup opcodes.
2022-04-01 15:50:15 +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
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
Matthew Rahtz
e8e737bcf6
bpo-43224: Implement PEP 646 grammar changes (GH-31018)
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2022-03-26 09:55:35 -07:00
Brandt Bucher
2bde6827ea
bpo-46841: Quicken code in-place (GH-31888)
...
* Moves the bytecode to the end of the corresponding PyCodeObject, and quickens it in-place.
* Removes the almost-always-unused co_varnames, co_freevars, and co_cellvars member caches
* _PyOpcode_Deopt is a new mapping from all opcodes to their un-quickened forms.
* _PyOpcode_InlineCacheEntries is renamed to _PyOpcode_Caches
* _Py_IncrementCountAndMaybeQuicken is renamed to _PyCode_Warmup
* _Py_Quicken is renamed to _PyCode_Quicken
* _co_quickened is renamed to _co_code_adaptive (and is now a read-only memoryview).
* Do not emit unused nonzero opargs anymore in the compiler.
2022-03-21 11:11:17 +00:00
Mark Shannon
3011a097bd
Use low bit of LOAD_GLOBAL's oparg to indicate whether it should push an additional NULL. (GH-31933)
2022-03-17 16:14:57 +00:00
Brandt Bucher
586b24d3be
bpo-46841: Fix error message hacks in `GET_AWAITABLE` (GH-31664)
2022-03-04 12:41:17 +00:00
Shantanu
81d968b7c3
bpo-46831: Update __build_class__ comment ( #31522 )
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2022-03-02 21:32:57 -08:00
Inada Naoki
df9f759755
compiler: Merge except_table and cnotab (GH-31614)
2022-03-01 10:27:20 +09:00
Mark Shannon
4558af5a8f
bpo-46841: Move the cache for `LOAD_GLOBAL` inline. (GH-31575)
2022-02-28 12:56:29 +00:00
Irit Katriel
c579243eb6
bpo-46808: remove NEXT_BLOCK() from compile.c (GH-31448)
2022-02-25 12:17:50 +00:00
Brandt Bucher
0f41aac109
bpo-46841: Use *inline* caching for `BINARY_OP` (GH-31543)
2022-02-25 12:11:34 +00:00
Eric Snow
1f455361ec
bpo-46765: Replace Locally Cached Strings with Statically Initialized Objects (gh-31366)
...
https://bugs.python.org/issue46765
2022-02-22 17:23:51 -07:00
Mark Shannon
59585d6b2e
bpo-46329: Streamline calling sequence a bit. (GH-31465)
...
* Move handling of bound-methods to PRECALL.
* Remove call_shape.postcall_shrink
* Remove call_shape.callable
* Remove call_shape.callable. Change CALL oparg to match PRECALL oparg.
* Move KW_NAMES before PRECALL.
* Update opcode docs in dis.rst
2022-02-21 18:26:47 +00:00
Mark Shannon
cf345e945f
bpo-46329: Change calling sequence (again) (GH-31373)
...
* Change calling sequence: Add PUSH_NULL. Merge PRECALL_FUNCTION and PRECALL_METHOD into PRECALL.
2022-02-18 17:19:08 +00:00
Mark Shannon
3be1a443ca
bpo-46724: Use `JUMP_ABSOLUTE` for all backward jumps. (GH-31326)
...
* Make sure all backward jumps use JUMP_ABSOLUTE.
* Add news.
* Fix up news item.
* Make test use consistent style.
2022-02-15 09:35:16 +00:00