Skip to content

Commit 33aea27

Browse files
committed
Extract check_event_support helper to reduce duplication in vm_trace.c
Five rb_tracearg_* functions repeated the same event validation pattern. Extract it into a check_event_support() helper.
1 parent cee3d5f commit 33aea27

1 file changed

Lines changed: 13 additions & 30 deletions

File tree

vm_trace.c

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,15 +1117,18 @@ rb_tracearg_self(rb_trace_arg_t *trace_arg)
11171117
return trace_arg->self;
11181118
}
11191119

1120-
VALUE
1121-
rb_tracearg_return_value(rb_trace_arg_t *trace_arg)
1120+
static void
1121+
check_event_support(rb_trace_arg_t *trace_arg, rb_event_flag_t supported)
11221122
{
1123-
if (trace_arg->event & (RUBY_EVENT_RETURN | RUBY_EVENT_C_RETURN | RUBY_EVENT_B_RETURN)) {
1124-
/* ok */
1125-
}
1126-
else {
1123+
if (!(trace_arg->event & supported)) {
11271124
rb_raise(rb_eRuntimeError, "not supported by this event");
11281125
}
1126+
}
1127+
1128+
VALUE
1129+
rb_tracearg_return_value(rb_trace_arg_t *trace_arg)
1130+
{
1131+
check_event_support(trace_arg, RUBY_EVENT_RETURN | RUBY_EVENT_C_RETURN | RUBY_EVENT_B_RETURN);
11291132
if (UNDEF_P(trace_arg->data)) {
11301133
rb_bug("rb_tracearg_return_value: unreachable");
11311134
}
@@ -1135,12 +1138,7 @@ rb_tracearg_return_value(rb_trace_arg_t *trace_arg)
11351138
VALUE
11361139
rb_tracearg_raised_exception(rb_trace_arg_t *trace_arg)
11371140
{
1138-
if (trace_arg->event & (RUBY_EVENT_RAISE | RUBY_EVENT_RESCUE)) {
1139-
/* ok */
1140-
}
1141-
else {
1142-
rb_raise(rb_eRuntimeError, "not supported by this event");
1143-
}
1141+
check_event_support(trace_arg, RUBY_EVENT_RAISE | RUBY_EVENT_RESCUE);
11441142
if (UNDEF_P(trace_arg->data)) {
11451143
rb_bug("rb_tracearg_raised_exception: unreachable");
11461144
}
@@ -1152,12 +1150,7 @@ rb_tracearg_eval_script(rb_trace_arg_t *trace_arg)
11521150
{
11531151
VALUE data = trace_arg->data;
11541152

1155-
if (trace_arg->event & (RUBY_EVENT_SCRIPT_COMPILED)) {
1156-
/* ok */
1157-
}
1158-
else {
1159-
rb_raise(rb_eRuntimeError, "not supported by this event");
1160-
}
1153+
check_event_support(trace_arg, RUBY_EVENT_SCRIPT_COMPILED);
11611154
if (UNDEF_P(data)) {
11621155
rb_bug("rb_tracearg_eval_script: unreachable");
11631156
}
@@ -1176,12 +1169,7 @@ rb_tracearg_instruction_sequence(rb_trace_arg_t *trace_arg)
11761169
{
11771170
VALUE data = trace_arg->data;
11781171

1179-
if (trace_arg->event & (RUBY_EVENT_SCRIPT_COMPILED)) {
1180-
/* ok */
1181-
}
1182-
else {
1183-
rb_raise(rb_eRuntimeError, "not supported by this event");
1184-
}
1172+
check_event_support(trace_arg, RUBY_EVENT_SCRIPT_COMPILED);
11851173
if (UNDEF_P(data)) {
11861174
rb_bug("rb_tracearg_instruction_sequence: unreachable");
11871175
}
@@ -1201,12 +1189,7 @@ rb_tracearg_instruction_sequence(rb_trace_arg_t *trace_arg)
12011189
VALUE
12021190
rb_tracearg_object(rb_trace_arg_t *trace_arg)
12031191
{
1204-
if (trace_arg->event & (RUBY_INTERNAL_EVENT_NEWOBJ | RUBY_INTERNAL_EVENT_FREEOBJ)) {
1205-
/* ok */
1206-
}
1207-
else {
1208-
rb_raise(rb_eRuntimeError, "not supported by this event");
1209-
}
1192+
check_event_support(trace_arg, RUBY_INTERNAL_EVENT_NEWOBJ | RUBY_INTERNAL_EVENT_FREEOBJ);
12101193
if (UNDEF_P(trace_arg->data)) {
12111194
rb_bug("rb_tracearg_object: unreachable");
12121195
}

0 commit comments

Comments
 (0)