mirror of
https://github.com/python/cpython.git
synced 2025-11-02 06:31:29 +00:00
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
This commit is contained in:
parent
dce2d38cb0
commit
411b169281
44 changed files with 6029 additions and 1625 deletions
|
|
@ -83,6 +83,7 @@ def pseudo_op(name, op, real_ops):
|
|||
def_op('INTERPRETER_EXIT', 3)
|
||||
|
||||
def_op('END_FOR', 4)
|
||||
def_op('END_SEND', 5)
|
||||
|
||||
def_op('NOP', 9)
|
||||
|
||||
|
|
@ -91,6 +92,10 @@ def pseudo_op(name, op, real_ops):
|
|||
|
||||
def_op('UNARY_INVERT', 15)
|
||||
|
||||
# We reserve 17 as it is the initial value for the specializing counter
|
||||
# This helps us catch cases where we attempt to execute a cache.
|
||||
def_op('RESERVED', 17)
|
||||
|
||||
def_op('BINARY_SUBSCR', 25)
|
||||
def_op('BINARY_SLICE', 26)
|
||||
def_op('STORE_SLICE', 27)
|
||||
|
|
@ -221,6 +226,28 @@ def pseudo_op(name, op, real_ops):
|
|||
def_op('CALL_INTRINSIC_1', 173)
|
||||
def_op('CALL_INTRINSIC_2', 174)
|
||||
|
||||
# Instrumented instructions
|
||||
MIN_INSTRUMENTED_OPCODE = 238
|
||||
|
||||
def_op('INSTRUMENTED_POP_JUMP_IF_NONE', 238)
|
||||
def_op('INSTRUMENTED_POP_JUMP_IF_NOT_NONE', 239)
|
||||
def_op('INSTRUMENTED_RESUME', 240)
|
||||
def_op('INSTRUMENTED_CALL', 241)
|
||||
def_op('INSTRUMENTED_RETURN_VALUE', 242)
|
||||
def_op('INSTRUMENTED_YIELD_VALUE', 243)
|
||||
def_op('INSTRUMENTED_CALL_FUNCTION_EX', 244)
|
||||
def_op('INSTRUMENTED_JUMP_FORWARD', 245)
|
||||
def_op('INSTRUMENTED_JUMP_BACKWARD', 246)
|
||||
def_op('INSTRUMENTED_RETURN_CONST', 247)
|
||||
def_op('INSTRUMENTED_FOR_ITER', 248)
|
||||
def_op('INSTRUMENTED_POP_JUMP_IF_FALSE', 249)
|
||||
def_op('INSTRUMENTED_POP_JUMP_IF_TRUE', 250)
|
||||
def_op('INSTRUMENTED_END_FOR', 251)
|
||||
def_op('INSTRUMENTED_END_SEND', 252)
|
||||
def_op('INSTRUMENTED_INSTRUCTION', 253)
|
||||
def_op('INSTRUMENTED_LINE', 254)
|
||||
# 255 is reserved
|
||||
|
||||
hasarg.extend([op for op in opmap.values() if op >= HAVE_ARGUMENT])
|
||||
|
||||
MIN_PSEUDO_OPCODE = 256
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue