Jelle Zijlstra
cd9748409a
gh-104686: Fix tracing for decorated classes ( #104708 )
2023-05-21 16:20:19 -07:00
Mark Shannon
c26d03d5d6
GH-102818: Do not call `PyTraceBack_Here` in sys.settrace trampoline. (GH-104579)
2023-05-19 12:40:48 +01:00
Mark Shannon
45f5aa8fc7
GH-103082: Filter LINE events in VM, to simplify tool implementation. (GH-104387)
...
When monitoring LINE events, instrument all instructions that can have a predecessor on a different line.
Then check that the a new line has been hit in the instrumentation code.
This brings the behavior closer to that of 3.11, simplifying implementation and porting of tools.
2023-05-12 12:21:20 +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
Alex Waygood
401d7a7f00
gh-102515: Remove unused imports in the `Lib/` directory ( #102516 )
2023-03-08 11:45:38 +00: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
Victor Stinner
a8fe4bbd6b
gh-98257: Make _PyEval_SetTrace() reentrant ( #98258 )
...
Make sys.setprofile() and sys.settrace() functions reentrant. They
can no long fail with: RuntimeError("Cannot install a trace function
while another trace function is being installed").
Make _PyEval_SetTrace() and _PyEval_SetProfile() functions reentrant,
rather than detecting and rejecting reentrant calls. Only delete the
reference to function arguments once the new function is fully set,
when a reentrant call is safe. Call also _PySys_Audit() earlier.
2022-10-20 00:31:47 +02:00
Jack Hindmarch
debacd9ad5
gh-92886: Fixing tests that fail when running with optimizations (`-O`) in `test_sys_settrace.py` (GH-93234)
2022-10-18 16:59:05 +01:00
Brandt Bucher
c10e33ac11
GH-96864: Check for error between line and opcode events (GH-96880)
2022-09-19 14:02:24 -07: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
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
Michael Droettboom
582ae86b3f
gh-94814: Improve coverage of _PyCode_CreateLineArray (GH-94852)
...
The case where there are more than (1 << 15) lines was not covered.
I don't know if increasing test coverage requires a blurb -- let me know if it does.
Automerge-Triggered-By: GH:brandtbucher
2022-07-15 10:00:27 -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
Pablo Galindo Salgado
40d81fd63b
gh-94510: Raise on re-entrant calls to sys.setprofile and sys.settrace (GH-94511)
...
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2022-07-05 20:18:47 +02: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
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
22a1db378c
GH-92236: Remove spurious "line" event when starting coroutine or generator. (GH-92722)
2022-05-13 11:24:45 +01:00
Dennis Sweeney
8cf2906828
gh-92311: Add tests for frame_setlineno jumping over listcomps ( #92741 )
2022-05-12 17:43:54 -04:00
Dennis Sweeney
37c6db60f9
gh-91869: Fix tracing of specialized instructions with extended args (GH-91945)
2022-04-27 22:36:34 -06:00
Christian Heimes
deeaac49e2
bpo-40280: Skip socket, fork, subprocess tests on Emscripten (GH-31986)
...
- Add requires_fork and requires_subprocess to more tests
- Skip extension import tests if dlopen is not available
- Don't assume that _testcapi is a shared extension
- Skip a lot of socket tests that don't work on Emscripten
- Skip mmap tests, mmap emulation is incomplete
- venv does not work yet
- Cannot get libc from executable
The "entire" test suite is now passing on Emscripten with EMSDK from git head (91 suites are skipped).
2022-03-22 03:04:36 -07:00
Irit Katriel
3d2ce34716
bpo-46458: emit code for else of a try block immediately after the try body (GH-30751)
2022-01-27 13:40:44 +00:00
Irit Katriel
9c2ebb906d
bpo-46344: Fix trace bug in else of try and try-star blocks (GH-30544)
2022-01-13 12:34:38 +00:00
Mark Shannon
bd04fac7eb
bpo-46331: Do not set line number of instruction storing doc-string. (GH-30518)
2022-01-11 11:28:30 +00:00
Mark Shannon
ec0c392f34
bpo-46314: Remove extra RESUME when compiling a lamdba. (GH-30513)
2022-01-10 12:29:02 +00:00
Irit Katriel
d60457a667
bpo-45292: [PEP-654] add except* (GH-29581)
2021-12-14 16:48:15 +00:00
Irit Katriel
a310fd83a0
bpo-45890: Add tests for tracing try-except-finally blocks (GH-29746)
2021-12-07 10:50:37 +00:00
Mark Shannon
337cb480e9
bpo-45709: Fix tracing when exception is handled. (GH-29638)
2021-11-19 15:16:49 +00:00
Mark Shannon
b854557b49
bpo-44840: Compiler: Move duplication of exit blocks with no line numbers to after CFG optimization. (GH-27656)
2021-08-09 10:18:59 +01:00
Mark Shannon
a86f7dae0a
bpo-44626: Merge basic blocks earlier to enable better handling of exit blocks without line numbers (GH-27138)
2021-07-15 17:46:55 +01:00
Mark Shannon
e5862f79c1
bpo-44616: Mark all clean up instructions at end of named exception block as artificial (GH-27109)
2021-07-14 10:08:38 +01:00
Mark Shannon
da6414f0ac
bpo-44570: Fix line tracing for forwards jumps to duplicated tails (GH-27068)
2021-07-08 19:21:09 +01:00
Mark Shannon
937cebc93b
bpo-44298: Fix line numbers for early exits in with statements. (GH-26513)
2021-06-03 16:45:58 +01:00
Mark Shannon
cb6f3d7163
bpo-43933: Force RETURN_VALUE bytecodes to have line numbers (GH-26054)
2021-05-12 11:25:44 +01:00
Mark Shannon
adcd220556
bpo-40222: "Zero cost" exception handling (GH-25729)
...
"Zero cost" exception handling.
* Uses a lookup table to determine how to handle exceptions.
* Removes SETUP_FINALLY and POP_TOP block instructions, eliminating (most of) the runtime overhead of try statements.
* Reduces the size of the frame object by about 60%.
2021-05-07 15:19:19 +01:00
Mark Shannon
5979e81a21
bpo-43933: Set frame.f_lineno during call to __exit__ (GH-25719)
...
* Set line number of __exit__ call in a with statement to be that of the with keyword.
2021-04-30 14:32:47 +01:00
Mark Shannon
e56d54e447
Mark instructions at end of class scope as artificial. (GH-24222)
2021-01-15 13:52:00 +00:00
Mark Shannon
3bd6035b6b
bpo-42908: Mark cleanup code at end of try-except and with artificial ( #24202 )
...
* Mark bytecodes at end of try-except as artificial.
* Make sure that the CFG is consistent throughout optimiization.
* Extend line-number propagation logic so that implicit returns after 'try-except' or 'with' have the correct line numbers.
* Update importlib
2021-01-13 12:05:43 +00:00
Mark Shannon
127dde5916
bpo-42810: Mark jumps at end of if and try statements as artificial. (GH-24091)
...
* Mark jumps at end of if and try statements as artificial.
* Update importlib
* Add comment explaining the purpose of ADDOP_JUMP_NOLINE.
2021-01-04 18:06:55 +00:00
Mark Shannon
28b75c80dc
bpo-42246: Don't eliminate jumps to jumps, if it will break PEP 626. (GH-23896)
2020-12-23 11:43:10 +00:00
Mark Shannon
f2dbfd7e20
bpo-42634: Mark reraise after except blocks as artificial. (GH-23877)
...
* Mark reraise after except blocks as artificial.
* Update importlib
* Update dis test.
2020-12-21 13:53:50 +00:00
Mark Shannon
5274b682bc
bpo-42645: Make sure that return/break/continue are only traced once when exiting via a finally block. (GH-23780)
...
* Make sure that return/break/continue are only traced once when exiting via a finally block.
* Add test for return in try-finally.
* Update importlib
2020-12-16 13:07:01 +00:00
Mark Shannon
8473cf89bd
bpo-42246: Remove DO_NOT_EMIT_BYTECODE macros, so that while loops and if statements conform to PEP 626. (GH-23743)
2020-12-15 11:07:50 +00:00
Mark Shannon
f5e97b72fe
bpo-42635: Mark JUMP_ABSOLUTE at end of 'for' loop as artificial to avoid spurious line events. (GH-23761)
2020-12-14 11:28:39 +00:00
Mark Shannon
56aa20f9eb
Don't generate spurious line number in try-except-finally. ( #23760 )
2020-12-14 10:19:10 +00:00
Mark Shannon
cc75ab791d
bpo-42246: Eliminate jumps to exit blocks by copying those blocks. ( #23251 )
...
* Compiler: eliminate jumps to short exit blocks by copying.
2020-11-12 19:49:33 +00:00
Mark Shannon
877df851c3
bpo-42246: Partial implementation of PEP 626. (GH-23113)
...
* Implement new line number table format, as defined in PEP 626.
2020-11-12 09:43:29 +00:00
Mark Shannon
17b5be0c0a
bpo-41670: Remove outdated predict macro invocation. (GH-22026)
...
Remove PREDICTion of POP_BLOCK from FOR_ITER.
2020-09-29 10:09:13 +01:00
Mark Shannon
6e8128f02e
bpo-41323: Perform 'peephole' optimizations directly on the CFG. (GH-21517)
...
* Move 'peephole' optimizations into compile.c and perform them directly on the CFG.
2020-07-30 10:03:00 +01:00
Mark Shannon
57697245e1
bpo-40228: More robust frame.setlineno. (GH-19437)
...
More robust frame.setlineno. Makes no assumptions about source->bytecode translation.
2020-04-29 16:49:45 +01:00
Pablo Galindo
4c53e63cc9
bpo-39166: Fix trace of last iteration of async for loops ( #17800 )
2020-01-10 09:24:22 +00:00