Skip to content

Commit e6dde7c

Browse files
committed
Rename BRANCH_NOT_TAKEN to BRANCH_LEFT. Rename BRANCH_TAKEN to BRANCH_RIGHT
1 parent 538da38 commit e6dde7c

File tree

5 files changed

+76
-69
lines changed

5 files changed

+76
-69
lines changed

Include/cpython/monitoring.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#define PY_MONITORING_EVENT_LINE 5
1414
#define PY_MONITORING_EVENT_INSTRUCTION 6
1515
#define PY_MONITORING_EVENT_JUMP 7
16-
#define PY_MONITORING_EVENT_BRANCH_TAKEN 8
17-
#define PY_MONITORING_EVENT_BRANCH_NOT_TAKEN 9
16+
#define PY_MONITORING_EVENT_BRANCH_RIGHT 8
17+
#define PY_MONITORING_EVENT_BRANCH_LEFT 9
1818
#define PY_MONITORING_EVENT_STOP_ITERATION 10
1919

2020
#define PY_MONITORING_IS_INSTRUMENTED_EVENT(ev) \

Lib/test/test_monitoring.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,13 +1447,13 @@ class BranchRecorder(JumpRecorder):
14471447

14481448
class BranchTakenRecorder(JumpRecorder):
14491449

1450-
event_type = E.BRANCH_TAKEN
1451-
name = "branch taken"
1450+
event_type = E.BRANCH_RIGHT
1451+
name = "branch right"
14521452

14531453
class BranchNotTakenRecorder(JumpRecorder):
14541454

1455-
event_type = E.BRANCH_NOT_TAKEN
1456-
name = "branch not taken"
1455+
event_type = E.BRANCH_LEFT
1456+
name = "branch left"
14571457

14581458

14591459
class JumpOffsetRecorder:
@@ -1469,13 +1469,13 @@ def __call__(self, code, from_, to):
14691469

14701470
class BranchTakenOffsetRecorder(JumpOffsetRecorder):
14711471

1472-
event_type = E.BRANCH_TAKEN
1473-
name = "branch taken"
1472+
event_type = E.BRANCH_RIGHT
1473+
name = "branch right"
14741474

14751475
class BranchNotTakenOffsetRecorder(JumpOffsetRecorder):
14761476

1477-
event_type = E.BRANCH_NOT_TAKEN
1478-
name = "branch not taken"
1477+
event_type = E.BRANCH_LEFT
1478+
name = "branch left"
14791479

14801480

14811481
class JumpOffsetRecorder:
@@ -1500,7 +1500,7 @@ class BranchOffsetRecorder(JumpOffsetRecorder):
15001500
FLOW_AND_LINE_RECORDERS = JumpRecorder, BranchRecorder, LineRecorder, ExceptionRecorder, ReturnRecorder
15011501
BRANCH_OFFSET_RECORDERS = BranchOffsetRecorder,
15021502
BRANCHES_RECORDERS = BranchTakenRecorder, BranchNotTakenRecorder
1503-
BRANCH_TAKEN_OFFSET_RECORDERS = BranchTakenOffsetRecorder, BranchNotTakenOffsetRecorder
1503+
BRANCH_RIGHT_OFFSET_RECORDERS = BranchTakenOffsetRecorder, BranchNotTakenOffsetRecorder
15041504

15051505
class TestBranchAndJumpEvents(CheckEvents):
15061506
maxDiff = None
@@ -1551,24 +1551,24 @@ def whilefunc(n=0):
15511551
('line', 'get_events', 11)])
15521552

15531553
self.check_events(func, recorders = BRANCHES_RECORDERS, expected = [
1554-
('branch not taken', 'func', 2, 2),
1555-
('branch taken', 'func', 3, 6),
1556-
('branch not taken', 'func', 2, 2),
1557-
('branch not taken', 'func', 3, 4),
1558-
('branch taken', 'func', 2, 7)])
1554+
('branch left', 'func', 2, 2),
1555+
('branch right', 'func', 3, 6),
1556+
('branch left', 'func', 2, 2),
1557+
('branch left', 'func', 3, 4),
1558+
('branch right', 'func', 2, 7)])
15591559

15601560
self.check_events(whilefunc, recorders = BRANCHES_RECORDERS, expected = [
1561-
('branch not taken', 'whilefunc', 1, 2),
1562-
('branch not taken', 'whilefunc', 1, 2),
1563-
('branch not taken', 'whilefunc', 1, 2),
1564-
('branch taken', 'whilefunc', 1, 3)])
1565-
1566-
self.check_events(func, recorders = BRANCH_TAKEN_OFFSET_RECORDERS, expected = [
1567-
('branch not taken', 'func', 28, 34),
1568-
('branch taken', 'func', 46, 60),
1569-
('branch not taken', 'func', 28, 34),
1570-
('branch not taken', 'func', 46, 52),
1571-
('branch taken', 'func', 28, 72)])
1561+
('branch left', 'whilefunc', 1, 2),
1562+
('branch left', 'whilefunc', 1, 2),
1563+
('branch left', 'whilefunc', 1, 2),
1564+
('branch right', 'whilefunc', 1, 3)])
1565+
1566+
self.check_events(func, recorders = BRANCH_RIGHT_OFFSET_RECORDERS, expected = [
1567+
('branch left', 'func', 28, 34),
1568+
('branch right', 'func', 46, 60),
1569+
('branch left', 'func', 28, 34),
1570+
('branch left', 'func', 46, 52),
1571+
('branch right', 'func', 28, 72)])
15721572

15731573
def test_except_star(self):
15741574

@@ -1866,7 +1866,7 @@ def test_local(self):
18661866
self.assertEqual(sys.monitoring.get_local_events(TEST_TOOL, code), E.PY_START)
18671867
sys.monitoring.set_local_events(TEST_TOOL, code, 0)
18681868
sys.monitoring.set_local_events(TEST_TOOL, code, E.BRANCH)
1869-
self.assertEqual(sys.monitoring.get_local_events(TEST_TOOL, code), E.BRANCH_NOT_TAKEN | E.BRANCH_TAKEN)
1869+
self.assertEqual(sys.monitoring.get_local_events(TEST_TOOL, code), E.BRANCH_LEFT | E.BRANCH_RIGHT)
18701870
sys.monitoring.set_local_events(TEST_TOOL, code, 0)
18711871
sys.monitoring.set_local_events(TEST_TOOL2, code, E.PY_START)
18721872
self.assertEqual(sys.monitoring.get_local_events(TEST_TOOL2, code), E.PY_START)
@@ -2069,8 +2069,8 @@ def setUp(self):
20692069
( 1, E.PY_RETURN, capi.fire_event_py_return, 20),
20702070
( 2, E.CALL, capi.fire_event_call, callable, 40),
20712071
( 1, E.JUMP, capi.fire_event_jump, 60),
2072-
( 1, E.BRANCH_TAKEN, capi.fire_event_branch_taken, 70),
2073-
( 1, E.BRANCH_NOT_TAKEN, capi.fire_event_branch_not_taken, 80),
2072+
( 1, E.BRANCH_RIGHT, capi.fire_event_branch_taken, 70),
2073+
( 1, E.BRANCH_LEFT, capi.fire_event_branch_not_taken, 80),
20742074
( 1, E.PY_THROW, capi.fire_event_py_throw, ValueError(1)),
20752075
( 1, E.RAISE, capi.fire_event_raise, ValueError(2)),
20762076
( 1, E.EXCEPTION_HANDLED, capi.fire_event_exception_handled, ValueError(5)),

Python/bytecodes.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2795,7 +2795,7 @@ dummy_func(
27952795
PyStackRef_CLOSE(iter_stackref);
27962796
/* Skip END_FOR and POP_TOP */
27972797
_Py_CODEUNIT *target = next_instr + oparg + 2;
2798-
INSTRUMENTED_JUMP(this_instr, target, PY_MONITORING_EVENT_BRANCH_TAKEN);
2798+
INSTRUMENTED_JUMP(this_instr, target, PY_MONITORING_EVENT_BRANCH_RIGHT);
27992799
}
28002800
}
28012801

@@ -4401,7 +4401,7 @@ dummy_func(
44014401
}
44024402

44034403
inst(INSTRUMENTED_NOT_TAKEN, ( -- )) {
4404-
INSTRUMENTED_JUMP(this_instr, next_instr, PY_MONITORING_EVENT_BRANCH_NOT_TAKEN);
4404+
INSTRUMENTED_JUMP(this_instr, next_instr, PY_MONITORING_EVENT_BRANCH_LEFT);
44054405
}
44064406

44074407
macro(INSTRUMENTED_JUMP_BACKWARD) =
@@ -4417,7 +4417,7 @@ dummy_func(
44174417
this_instr[1].cache = (this_instr[1].cache << 1) | jump;
44184418
#endif
44194419
if (jump) {
4420-
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_TAKEN);
4420+
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
44214421
}
44224422
}
44234423

@@ -4429,7 +4429,7 @@ dummy_func(
44294429
this_instr[1].cache = (this_instr[1].cache << 1) | jump;
44304430
#endif
44314431
if (jump) {
4432-
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_TAKEN);
4432+
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
44334433
}
44344434
}
44354435

@@ -4440,7 +4440,7 @@ dummy_func(
44404440
this_instr[1].cache = (this_instr[1].cache << 1) | jump;
44414441
#endif
44424442
if (jump) {
4443-
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_TAKEN);
4443+
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
44444444
}
44454445
else {
44464446
PyStackRef_CLOSE(value_stackref);
@@ -4455,7 +4455,7 @@ dummy_func(
44554455
#endif
44564456
if (jump) {
44574457
PyStackRef_CLOSE(value_stackref);
4458-
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_TAKEN);
4458+
INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
44594459
}
44604460
}
44614461

Python/generated_cases.c.h

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/instrumentation.c

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,24 @@ static const int8_t EVENT_FOR_OPCODE[256] = {
7373
[INSTRUMENTED_YIELD_VALUE] = PY_MONITORING_EVENT_PY_YIELD,
7474
[JUMP_FORWARD] = PY_MONITORING_EVENT_JUMP,
7575
[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,
8080
[INSTRUMENTED_JUMP_FORWARD] = PY_MONITORING_EVENT_JUMP,
8181
[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,
8888
[END_FOR] = PY_MONITORING_EVENT_STOP_ITERATION,
8989
[INSTRUMENTED_END_FOR] = PY_MONITORING_EVENT_STOP_ITERATION,
9090
[END_SEND] = PY_MONITORING_EVENT_STOP_ITERATION,
9191
[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,
9494
};
9595

9696
static const uint8_t DE_INSTRUMENT[256] = {
@@ -1048,8 +1048,8 @@ static const char *const event_names [] = {
10481048
[PY_MONITORING_EVENT_INSTRUCTION] = "INSTRUCTION",
10491049
[PY_MONITORING_EVENT_JUMP] = "JUMP",
10501050
[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",
10531053
[PY_MONITORING_EVENT_C_RETURN] = "C_RETURN",
10541054
[PY_MONITORING_EVENT_PY_THROW] = "PY_THROW",
10551055
[PY_MONITORING_EVENT_RAISE] = "RAISE",
@@ -1077,8 +1077,8 @@ call_instrumentation_vector(
10771077
/* Offset visible to user should be the offset in bytes, as that is the
10781078
* convention for APIs involving code offsets. */
10791079
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);
10821082
bytes_offset -= 4;
10831083
}
10841084
PyObject *offset_obj = PyLong_FromLong(bytes_offset);
@@ -1161,8 +1161,8 @@ _Py_call_instrumentation_jump(
11611161
_PyInterpreterFrame *frame, _Py_CODEUNIT *instr, _Py_CODEUNIT *target)
11621162
{
11631163
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);
11661166
// Set the instruction pointer to the source of the jump
11671167
frame->instr_ptr = instr;
11681168
PyCodeObject *code = _PyFrame_GetCode(frame);
@@ -2190,7 +2190,7 @@ monitoring_set_events_impl(PyObject *module, int tool_id, int event_set)
21902190
event_set &= ~C_RETURN_EVENTS;
21912191
if (event_set & (1 << PY_MONITORING_EVENT_BRANCH)) {
21922192
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);
21942194
}
21952195
if (_PyMonitoring_SetEvents(tool_id, event_set)) {
21962196
return NULL;
@@ -2266,7 +2266,7 @@ monitoring_set_local_events_impl(PyObject *module, int tool_id,
22662266
event_set &= ~C_RETURN_EVENTS;
22672267
if (event_set & (1 << PY_MONITORING_EVENT_BRANCH)) {
22682268
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);
22702270
}
22712271
if (event_set < 0 || event_set >= (1 << _PY_MONITORING_LOCAL_EVENTS)) {
22722272
PyErr_Format(PyExc_ValueError, "invalid local event set 0x%x", event_set);
@@ -2403,6 +2403,13 @@ PyObject *_Py_CreateMonitoringObject(void)
24032403
goto error;
24042404
}
24052405
}
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+
}
24062413
err = PyObject_SetAttrString(events, "NO_EVENTS", _PyLong_GetZero());
24072414
if (err) goto error;
24082415
PyObject *val = PyLong_FromLong(PY_MONITORING_DEBUGGER_ID);
@@ -2594,7 +2601,7 @@ _PyMonitoring_FireBranchEvent(PyMonitoringState *state, PyObject *codelike, int3
25942601
assert(state->active);
25952602
PyObject *args[4] = { NULL, NULL, NULL, target_offset };
25962603
return capi_call_instrumentation(state, codelike, offset, args, 3,
2597-
PY_MONITORING_EVENT_BRANCH_TAKEN);
2604+
PY_MONITORING_EVENT_BRANCH_RIGHT);
25982605
}
25992606

26002607
int
@@ -2604,7 +2611,7 @@ _PyMonitoring_FireBranchTakenEvent(PyMonitoringState *state, PyObject *codelike,
26042611
assert(state->active);
26052612
PyObject *args[4] = { NULL, NULL, NULL, target_offset };
26062613
return capi_call_instrumentation(state, codelike, offset, args, 3,
2607-
PY_MONITORING_EVENT_BRANCH_TAKEN);
2614+
PY_MONITORING_EVENT_BRANCH_RIGHT);
26082615
}
26092616

26102617
int
@@ -2614,7 +2621,7 @@ _PyMonitoring_FireBranchNotTakenEvent(PyMonitoringState *state, PyObject *codeli
26142621
assert(state->active);
26152622
PyObject *args[4] = { NULL, NULL, NULL, target_offset };
26162623
return capi_call_instrumentation(state, codelike, offset, args, 3,
2617-
PY_MONITORING_EVENT_BRANCH_NOT_TAKEN);
2624+
PY_MONITORING_EVENT_BRANCH_LEFT);
26182625
}
26192626

26202627
int
@@ -2812,7 +2819,7 @@ branch_handler(
28122819
return res;
28132820
}
28142821
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;
28162823
LOCK_CODE(code);
28172824
remove_tools(code, offset, other_event, 1 << self->tool_id);
28182825
UNLOCK_CODE();
@@ -2864,8 +2871,8 @@ _PyMonitoring_RegisterCallback(int tool_id, int event_id, PyObject *obj)
28642871
return NULL;
28652872
}
28662873
}
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);
28692876
}
28702877
else {
28712878
res = exchange_callables(tool_id, event_id, Py_XNewRef(obj));
@@ -2919,7 +2926,7 @@ branchesiter_next(branchesiterator *bi)
29192926
_Py_CODEUNIT inst = _Py_GetBaseCodeUnit(bi->bi_code, offset);
29202927
int next_offset = offset + _PyInstruction_GetLength(bi->bi_code, offset);
29212928
int event = EVENT_FOR_OPCODE[inst.op.code];
2922-
if (event == PY_MONITORING_EVENT_BRANCH_TAKEN) {
2929+
if (event == PY_MONITORING_EVENT_BRANCH_RIGHT) {
29232930
/* Skip NOT_TAKEN */
29242931
int not_taken = next_offset + 1;
29252932
bi->bi_offset = not_taken;

0 commit comments

Comments
 (0)