Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
monitoring.h270 linesDownload Raw Back to cpython
1#ifndef Py_CPYTHON_MONITORING_H2#  error "this header file must not be included directly"3#endif4 5/* Local events.6 * These require bytecode instrumentation */7 8#define PY_MONITORING_EVENT_PY_START 09#define PY_MONITORING_EVENT_PY_RESUME 110#define PY_MONITORING_EVENT_PY_RETURN 211#define PY_MONITORING_EVENT_PY_YIELD 312#define PY_MONITORING_EVENT_CALL 413#define PY_MONITORING_EVENT_LINE 514#define PY_MONITORING_EVENT_INSTRUCTION 615#define PY_MONITORING_EVENT_JUMP 716#define PY_MONITORING_EVENT_BRANCH_LEFT 817#define PY_MONITORING_EVENT_BRANCH_RIGHT 918#define PY_MONITORING_EVENT_STOP_ITERATION 1019 20#define PY_MONITORING_IS_INSTRUMENTED_EVENT(ev) \21    ((ev) < _PY_MONITORING_LOCAL_EVENTS)22 23/* Other events, mainly exceptions */24 25#define PY_MONITORING_EVENT_RAISE 1126#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 1227#define PY_MONITORING_EVENT_PY_UNWIND 1328#define PY_MONITORING_EVENT_PY_THROW 1429#define PY_MONITORING_EVENT_RERAISE 1530 31 32/* Ancillary events */33 34#define PY_MONITORING_EVENT_C_RETURN 1635#define PY_MONITORING_EVENT_C_RAISE 1736#define PY_MONITORING_EVENT_BRANCH 1837 38 39typedef struct _PyMonitoringState {40    uint8_t active;41    uint8_t opaque;42} PyMonitoringState;43 44 45PyAPI_FUNC(int)46PyMonitoring_EnterScope(PyMonitoringState *state_array, uint64_t *version,47                         const uint8_t *event_types, Py_ssize_t length);48 49PyAPI_FUNC(int)50PyMonitoring_ExitScope(void);51 52 53PyAPI_FUNC(int)54_PyMonitoring_FirePyStartEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);55 56PyAPI_FUNC(int)57_PyMonitoring_FirePyResumeEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);58 59PyAPI_FUNC(int)60_PyMonitoring_FirePyReturnEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,61                                PyObject *retval);62 63PyAPI_FUNC(int)64_PyMonitoring_FirePyYieldEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,65                               PyObject *retval);66 67PyAPI_FUNC(int)68_PyMonitoring_FireCallEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,69                            PyObject* callable, PyObject *arg0);70 71PyAPI_FUNC(int)72_PyMonitoring_FireLineEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,73                            int lineno);74 75PyAPI_FUNC(int)76_PyMonitoring_FireJumpEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,77                            PyObject *target_offset);78 79Py_DEPRECATED(3.14) PyAPI_FUNC(int)80_PyMonitoring_FireBranchEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,81                              PyObject *target_offset);82 83PyAPI_FUNC(int)84_PyMonitoring_FireBranchRightEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,85                              PyObject *target_offset);86 87PyAPI_FUNC(int)88_PyMonitoring_FireBranchLeftEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,89                              PyObject *target_offset);90 91PyAPI_FUNC(int)92_PyMonitoring_FireCReturnEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,93                               PyObject *retval);94 95PyAPI_FUNC(int)96_PyMonitoring_FirePyThrowEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);97 98PyAPI_FUNC(int)99_PyMonitoring_FireRaiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);100 101PyAPI_FUNC(int)102_PyMonitoring_FireReraiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);103 104PyAPI_FUNC(int)105_PyMonitoring_FireExceptionHandledEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);106 107PyAPI_FUNC(int)108_PyMonitoring_FireCRaiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);109 110PyAPI_FUNC(int)111_PyMonitoring_FirePyUnwindEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset);112 113PyAPI_FUNC(int)114_PyMonitoring_FireStopIterationEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset, PyObject *value);115 116 117#define _PYMONITORING_IF_ACTIVE(STATE, X)  \118    if ((STATE)->active) { \119        return (X); \120    } \121    else { \122        return 0; \123    }124 125static inline int126PyMonitoring_FirePyStartEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)127{128    _PYMONITORING_IF_ACTIVE(129        state,130        _PyMonitoring_FirePyStartEvent(state, codelike, offset));131}132 133static inline int134PyMonitoring_FirePyResumeEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)135{136    _PYMONITORING_IF_ACTIVE(137        state,138        _PyMonitoring_FirePyResumeEvent(state, codelike, offset));139}140 141static inline int142PyMonitoring_FirePyReturnEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,143                               PyObject *retval)144{145    _PYMONITORING_IF_ACTIVE(146        state,147        _PyMonitoring_FirePyReturnEvent(state, codelike, offset, retval));148}149 150static inline int151PyMonitoring_FirePyYieldEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,152                              PyObject *retval)153{154    _PYMONITORING_IF_ACTIVE(155        state,156        _PyMonitoring_FirePyYieldEvent(state, codelike, offset, retval));157}158 159static inline int160PyMonitoring_FireCallEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,161                           PyObject* callable, PyObject *arg0)162{163    _PYMONITORING_IF_ACTIVE(164        state,165        _PyMonitoring_FireCallEvent(state, codelike, offset, callable, arg0));166}167 168static inline int169PyMonitoring_FireLineEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,170                           int lineno)171{172    _PYMONITORING_IF_ACTIVE(173        state,174        _PyMonitoring_FireLineEvent(state, codelike, offset, lineno));175}176 177static inline int178PyMonitoring_FireJumpEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,179                           PyObject *target_offset)180{181    _PYMONITORING_IF_ACTIVE(182        state,183        _PyMonitoring_FireJumpEvent(state, codelike, offset, target_offset));184}185 186static inline int187PyMonitoring_FireBranchRightEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,188                             PyObject *target_offset)189{190    _PYMONITORING_IF_ACTIVE(191        state,192        _PyMonitoring_FireBranchRightEvent(state, codelike, offset, target_offset));193}194 195static inline int196PyMonitoring_FireBranchLeftEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,197                             PyObject *target_offset)198{199    _PYMONITORING_IF_ACTIVE(200        state,201        _PyMonitoring_FireBranchLeftEvent(state, codelike, offset, target_offset));202}203 204static inline int205PyMonitoring_FireCReturnEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset,206                              PyObject *retval)207{208    _PYMONITORING_IF_ACTIVE(209        state,210        _PyMonitoring_FireCReturnEvent(state, codelike, offset, retval));211}212 213static inline int214PyMonitoring_FirePyThrowEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)215{216    _PYMONITORING_IF_ACTIVE(217        state,218        _PyMonitoring_FirePyThrowEvent(state, codelike, offset));219}220 221static inline int222PyMonitoring_FireRaiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)223{224    _PYMONITORING_IF_ACTIVE(225        state,226        _PyMonitoring_FireRaiseEvent(state, codelike, offset));227}228 229static inline int230PyMonitoring_FireReraiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)231{232    _PYMONITORING_IF_ACTIVE(233        state,234        _PyMonitoring_FireReraiseEvent(state, codelike, offset));235}236 237static inline int238PyMonitoring_FireExceptionHandledEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)239{240    _PYMONITORING_IF_ACTIVE(241        state,242        _PyMonitoring_FireExceptionHandledEvent(state, codelike, offset));243}244 245static inline int246PyMonitoring_FireCRaiseEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)247{248    _PYMONITORING_IF_ACTIVE(249        state,250        _PyMonitoring_FireCRaiseEvent(state, codelike, offset));251}252 253static inline int254PyMonitoring_FirePyUnwindEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset)255{256    _PYMONITORING_IF_ACTIVE(257        state,258        _PyMonitoring_FirePyUnwindEvent(state, codelike, offset));259}260 261static inline int262PyMonitoring_FireStopIterationEvent(PyMonitoringState *state, PyObject *codelike, int32_t offset, PyObject *value)263{264    _PYMONITORING_IF_ACTIVE(265        state,266        _PyMonitoring_FireStopIterationEvent(state, codelike, offset, value));267}268 269#undef _PYMONITORING_IF_ACTIVE270 
codekingpro/portable-devtools · Team Ai