@@ -73,24 +73,24 @@ static const int8_t EVENT_FOR_OPCODE[256] = {
73
73
[INSTRUMENTED_YIELD_VALUE ] = PY_MONITORING_EVENT_PY_YIELD ,
74
74
[JUMP_FORWARD ] = PY_MONITORING_EVENT_JUMP ,
75
75
[JUMP_BACKWARD ] = PY_MONITORING_EVENT_JUMP ,
76
- [POP_JUMP_IF_FALSE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
77
- [POP_JUMP_IF_TRUE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
78
- [POP_JUMP_IF_NONE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
79
- [POP_JUMP_IF_NOT_NONE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
76
+ [POP_JUMP_IF_FALSE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
77
+ [POP_JUMP_IF_TRUE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
78
+ [POP_JUMP_IF_NONE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
79
+ [POP_JUMP_IF_NOT_NONE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
80
80
[INSTRUMENTED_JUMP_FORWARD ] = PY_MONITORING_EVENT_JUMP ,
81
81
[INSTRUMENTED_JUMP_BACKWARD ] = PY_MONITORING_EVENT_JUMP ,
82
- [INSTRUMENTED_POP_JUMP_IF_FALSE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
83
- [INSTRUMENTED_POP_JUMP_IF_TRUE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
84
- [INSTRUMENTED_POP_JUMP_IF_NONE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
85
- [INSTRUMENTED_POP_JUMP_IF_NOT_NONE ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
86
- [FOR_ITER ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
87
- [INSTRUMENTED_FOR_ITER ] = PY_MONITORING_EVENT_BRANCH_TAKEN ,
82
+ [INSTRUMENTED_POP_JUMP_IF_FALSE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
83
+ [INSTRUMENTED_POP_JUMP_IF_TRUE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
84
+ [INSTRUMENTED_POP_JUMP_IF_NONE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
85
+ [INSTRUMENTED_POP_JUMP_IF_NOT_NONE ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
86
+ [FOR_ITER ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
87
+ [INSTRUMENTED_FOR_ITER ] = PY_MONITORING_EVENT_BRANCH_RIGHT ,
88
88
[END_FOR ] = PY_MONITORING_EVENT_STOP_ITERATION ,
89
89
[INSTRUMENTED_END_FOR ] = PY_MONITORING_EVENT_STOP_ITERATION ,
90
90
[END_SEND ] = PY_MONITORING_EVENT_STOP_ITERATION ,
91
91
[INSTRUMENTED_END_SEND ] = PY_MONITORING_EVENT_STOP_ITERATION ,
92
- [NOT_TAKEN ] = PY_MONITORING_EVENT_BRANCH_NOT_TAKEN ,
93
- [INSTRUMENTED_NOT_TAKEN ] = PY_MONITORING_EVENT_BRANCH_NOT_TAKEN ,
92
+ [NOT_TAKEN ] = PY_MONITORING_EVENT_BRANCH_LEFT ,
93
+ [INSTRUMENTED_NOT_TAKEN ] = PY_MONITORING_EVENT_BRANCH_LEFT ,
94
94
};
95
95
96
96
static const uint8_t DE_INSTRUMENT [256 ] = {
@@ -1048,8 +1048,8 @@ static const char *const event_names [] = {
1048
1048
[PY_MONITORING_EVENT_INSTRUCTION ] = "INSTRUCTION" ,
1049
1049
[PY_MONITORING_EVENT_JUMP ] = "JUMP" ,
1050
1050
[PY_MONITORING_EVENT_BRANCH ] = "BRANCH" ,
1051
- [PY_MONITORING_EVENT_BRANCH_TAKEN ] = "BRANCH_TAKEN " ,
1052
- [PY_MONITORING_EVENT_BRANCH_NOT_TAKEN ] = "BRANCH_NOT_TAKEN " ,
1051
+ [PY_MONITORING_EVENT_BRANCH_RIGHT ] = "BRANCH_RIGHT " ,
1052
+ [PY_MONITORING_EVENT_BRANCH_LEFT ] = "BRANCH_LEFT " ,
1053
1053
[PY_MONITORING_EVENT_C_RETURN ] = "C_RETURN" ,
1054
1054
[PY_MONITORING_EVENT_PY_THROW ] = "PY_THROW" ,
1055
1055
[PY_MONITORING_EVENT_RAISE ] = "RAISE" ,
@@ -1077,8 +1077,8 @@ call_instrumentation_vector(
1077
1077
/* Offset visible to user should be the offset in bytes, as that is the
1078
1078
* convention for APIs involving code offsets. */
1079
1079
int bytes_offset = offset * (int )sizeof (_Py_CODEUNIT );
1080
- if (event == PY_MONITORING_EVENT_BRANCH_NOT_TAKEN ) {
1081
- assert (EVENT_FOR_OPCODE [_Py_GetBaseCodeUnit (code , offset - 2 ).op .code ] == PY_MONITORING_EVENT_BRANCH_TAKEN );
1080
+ if (event == PY_MONITORING_EVENT_BRANCH_LEFT ) {
1081
+ assert (EVENT_FOR_OPCODE [_Py_GetBaseCodeUnit (code , offset - 2 ).op .code ] == PY_MONITORING_EVENT_BRANCH_RIGHT );
1082
1082
bytes_offset -= 4 ;
1083
1083
}
1084
1084
PyObject * offset_obj = PyLong_FromLong (bytes_offset );
@@ -1161,8 +1161,8 @@ _Py_call_instrumentation_jump(
1161
1161
_PyInterpreterFrame * frame , _Py_CODEUNIT * instr , _Py_CODEUNIT * target )
1162
1162
{
1163
1163
assert (event == PY_MONITORING_EVENT_JUMP ||
1164
- event == PY_MONITORING_EVENT_BRANCH_TAKEN ||
1165
- event == PY_MONITORING_EVENT_BRANCH_NOT_TAKEN );
1164
+ event == PY_MONITORING_EVENT_BRANCH_RIGHT ||
1165
+ event == PY_MONITORING_EVENT_BRANCH_LEFT );
1166
1166
// Set the instruction pointer to the source of the jump
1167
1167
frame -> instr_ptr = instr ;
1168
1168
PyCodeObject * code = _PyFrame_GetCode (frame );
@@ -2190,7 +2190,7 @@ monitoring_set_events_impl(PyObject *module, int tool_id, int event_set)
2190
2190
event_set &= ~C_RETURN_EVENTS ;
2191
2191
if (event_set & (1 << PY_MONITORING_EVENT_BRANCH )) {
2192
2192
event_set &= ~(1 << PY_MONITORING_EVENT_BRANCH );
2193
- event_set |= (1 << PY_MONITORING_EVENT_BRANCH_TAKEN ) | (1 << PY_MONITORING_EVENT_BRANCH_NOT_TAKEN );
2193
+ event_set |= (1 << PY_MONITORING_EVENT_BRANCH_RIGHT ) | (1 << PY_MONITORING_EVENT_BRANCH_LEFT );
2194
2194
}
2195
2195
if (_PyMonitoring_SetEvents (tool_id , event_set )) {
2196
2196
return NULL ;
@@ -2266,7 +2266,7 @@ monitoring_set_local_events_impl(PyObject *module, int tool_id,
2266
2266
event_set &= ~C_RETURN_EVENTS ;
2267
2267
if (event_set & (1 << PY_MONITORING_EVENT_BRANCH )) {
2268
2268
event_set &= ~(1 << PY_MONITORING_EVENT_BRANCH );
2269
- event_set |= (1 << PY_MONITORING_EVENT_BRANCH_TAKEN ) | (1 << PY_MONITORING_EVENT_BRANCH_NOT_TAKEN );
2269
+ event_set |= (1 << PY_MONITORING_EVENT_BRANCH_RIGHT ) | (1 << PY_MONITORING_EVENT_BRANCH_LEFT );
2270
2270
}
2271
2271
if (event_set < 0 || event_set >= (1 << _PY_MONITORING_LOCAL_EVENTS )) {
2272
2272
PyErr_Format (PyExc_ValueError , "invalid local event set 0x%x" , event_set );
@@ -2403,6 +2403,13 @@ PyObject *_Py_CreateMonitoringObject(void)
2403
2403
goto error ;
2404
2404
}
2405
2405
}
2406
+ /* TO DO -- Remove these pseudonyms */
2407
+ if (add_power2_constant (events , "BRANCH_TAKEN" , PY_MONITORING_EVENT_BRANCH_RIGHT )) {
2408
+ goto error ;
2409
+ }
2410
+ if (add_power2_constant (events , "BRANCH_NOT_TAKEN" , PY_MONITORING_EVENT_BRANCH_LEFT )) {
2411
+ goto error ;
2412
+ }
2406
2413
err = PyObject_SetAttrString (events , "NO_EVENTS" , _PyLong_GetZero ());
2407
2414
if (err ) goto error ;
2408
2415
PyObject * val = PyLong_FromLong (PY_MONITORING_DEBUGGER_ID );
@@ -2594,7 +2601,7 @@ _PyMonitoring_FireBranchEvent(PyMonitoringState *state, PyObject *codelike, int3
2594
2601
assert (state -> active );
2595
2602
PyObject * args [4 ] = { NULL , NULL , NULL , target_offset };
2596
2603
return capi_call_instrumentation (state , codelike , offset , args , 3 ,
2597
- PY_MONITORING_EVENT_BRANCH_TAKEN );
2604
+ PY_MONITORING_EVENT_BRANCH_RIGHT );
2598
2605
}
2599
2606
2600
2607
int
@@ -2604,7 +2611,7 @@ _PyMonitoring_FireBranchTakenEvent(PyMonitoringState *state, PyObject *codelike,
2604
2611
assert (state -> active );
2605
2612
PyObject * args [4 ] = { NULL , NULL , NULL , target_offset };
2606
2613
return capi_call_instrumentation (state , codelike , offset , args , 3 ,
2607
- PY_MONITORING_EVENT_BRANCH_TAKEN );
2614
+ PY_MONITORING_EVENT_BRANCH_RIGHT );
2608
2615
}
2609
2616
2610
2617
int
@@ -2614,7 +2621,7 @@ _PyMonitoring_FireBranchNotTakenEvent(PyMonitoringState *state, PyObject *codeli
2614
2621
assert (state -> active );
2615
2622
PyObject * args [4 ] = { NULL , NULL , NULL , target_offset };
2616
2623
return capi_call_instrumentation (state , codelike , offset , args , 3 ,
2617
- PY_MONITORING_EVENT_BRANCH_NOT_TAKEN );
2624
+ PY_MONITORING_EVENT_BRANCH_LEFT );
2618
2625
}
2619
2626
2620
2627
int
@@ -2812,7 +2819,7 @@ branch_handler(
2812
2819
return res ;
2813
2820
}
2814
2821
int other_event = self -> taken ?
2815
- PY_MONITORING_EVENT_BRANCH_NOT_TAKEN : PY_MONITORING_EVENT_BRANCH_TAKEN ;
2822
+ PY_MONITORING_EVENT_BRANCH_LEFT : PY_MONITORING_EVENT_BRANCH_RIGHT ;
2816
2823
LOCK_CODE (code );
2817
2824
remove_tools (code , offset , other_event , 1 << self -> tool_id );
2818
2825
UNLOCK_CODE ();
@@ -2864,8 +2871,8 @@ _PyMonitoring_RegisterCallback(int tool_id, int event_id, PyObject *obj)
2864
2871
return NULL ;
2865
2872
}
2866
2873
}
2867
- Py_XDECREF (exchange_callables (tool_id , PY_MONITORING_EVENT_BRANCH_TAKEN , taken ));
2868
- res = exchange_callables (tool_id , PY_MONITORING_EVENT_BRANCH_NOT_TAKEN , not_taken );
2874
+ Py_XDECREF (exchange_callables (tool_id , PY_MONITORING_EVENT_BRANCH_RIGHT , taken ));
2875
+ res = exchange_callables (tool_id , PY_MONITORING_EVENT_BRANCH_LEFT , not_taken );
2869
2876
}
2870
2877
else {
2871
2878
res = exchange_callables (tool_id , event_id , Py_XNewRef (obj ));
@@ -2919,7 +2926,7 @@ branchesiter_next(branchesiterator *bi)
2919
2926
_Py_CODEUNIT inst = _Py_GetBaseCodeUnit (bi -> bi_code , offset );
2920
2927
int next_offset = offset + _PyInstruction_GetLength (bi -> bi_code , offset );
2921
2928
int event = EVENT_FOR_OPCODE [inst .op .code ];
2922
- if (event == PY_MONITORING_EVENT_BRANCH_TAKEN ) {
2929
+ if (event == PY_MONITORING_EVENT_BRANCH_RIGHT ) {
2923
2930
/* Skip NOT_TAKEN */
2924
2931
int not_taken = next_offset + 1 ;
2925
2932
bi -> bi_offset = not_taken ;
0 commit comments