Skip to content

Commit e7480d8

Browse files
committed
Explict use of rb_obj_fields_no_ractor_check
1 parent 925a0f5 commit e7480d8

5 files changed

Lines changed: 14 additions & 14 deletions

File tree

gc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3087,7 +3087,7 @@ rb_gc_mark_children(void *objspace, VALUE obj)
30873087
struct gc_mark_classext_foreach_arg foreach_args;
30883088

30893089
if (rb_obj_exivar_p(obj)) {
3090-
gc_mark_internal(rb_obj_fields(obj, 0));
3090+
gc_mark_internal(rb_obj_fields_no_ractor_check(obj));
30913091
}
30923092

30933093
switch (BUILTIN_TYPE(obj)) {

ractor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1679,7 +1679,7 @@ obj_traverse_replace_i(VALUE obj, struct obj_traverse_replace_data *data)
16791679
} while (0)
16801680

16811681
if (UNLIKELY(rb_obj_exivar_p(obj))) {
1682-
VALUE fields_obj = rb_obj_fields(obj, 0);
1682+
VALUE fields_obj = rb_obj_fields_no_ractor_check(obj);
16831683

16841684
if (UNLIKELY(rb_shape_obj_too_complex_p(obj))) {
16851685
struct obj_traverse_replace_callback_data d = {

variable.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,12 +1227,6 @@ rb_obj_fields(VALUE obj, ID id)
12271227
return fields_obj;
12281228
}
12291229

1230-
VALUE
1231-
rb_obj_fields_no_ractor_check(VALUE obj)
1232-
{
1233-
return rb_obj_fields(obj, 0);
1234-
}
1235-
12361230
void
12371231
rb_free_generic_ivar(VALUE obj)
12381232
{
@@ -1576,7 +1570,7 @@ rb_ivar_delete(VALUE obj, ID id, VALUE undef)
15761570
break;
15771571

15781572
default: {
1579-
VALUE fields_obj = rb_obj_fields(obj, 0);
1573+
VALUE fields_obj = rb_obj_fields(obj, id);
15801574
table = rb_imemo_fields_complex_tbl(fields_obj);
15811575
break;
15821576
}
@@ -2138,7 +2132,7 @@ ivar_defined0(VALUE obj, ID id)
21382132
break;
21392133

21402134
default: {
2141-
VALUE fields_obj = rb_obj_fields(obj, 0);
2135+
VALUE fields_obj = rb_obj_fields_no_ractor_check(obj); // defined? doesn't require ractor checks
21422136
table = rb_imemo_fields_complex_tbl(fields_obj);
21432137
}
21442138
}
@@ -2290,7 +2284,7 @@ rb_copy_generic_ivar(VALUE dest, VALUE obj)
22902284

22912285
shape_id_t src_shape_id = rb_obj_shape_id(obj);
22922286

2293-
VALUE fields_obj = rb_obj_fields(obj, 0);
2287+
VALUE fields_obj = rb_obj_fields_no_ractor_check(obj);
22942288
if (fields_obj) {
22952289
unsigned long src_num_ivs = rb_ivar_count(fields_obj);
22962290
if (!src_num_ivs) {
@@ -2381,7 +2375,7 @@ rb_field_foreach(VALUE obj, rb_ivar_foreach_callback_func *func, st_data_t arg,
23812375
break;
23822376
default:
23832377
{
2384-
VALUE fields_obj = rb_obj_fields(obj, 0);
2378+
VALUE fields_obj = rb_obj_fields_no_ractor_check(obj);
23852379
if (fields_obj) {
23862380
imemo_fields_each(fields_obj, func, arg, ivar_only);
23872381
}
@@ -2436,7 +2430,7 @@ rb_ivar_count(VALUE obj)
24362430

24372431
default:
24382432
{
2439-
VALUE fields_obj = rb_obj_fields(obj, 0);
2433+
VALUE fields_obj = rb_obj_fields_no_ractor_check(obj);
24402434
if (fields_obj) {
24412435
if (rb_shape_obj_too_complex_p(fields_obj)) {
24422436
rb_st_table_size(rb_imemo_fields_complex_tbl(fields_obj));

variable.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
void rb_copy_complex_ivars(VALUE dest, VALUE obj, shape_id_t src_shape_id, st_table *fields_table);
1616
VALUE rb_obj_fields(VALUE obj, ID field_name);
1717

18+
static inline VALUE
19+
rb_obj_fields_no_ractor_check(VALUE obj)
20+
{
21+
return rb_obj_fields(obj, 0);
22+
}
23+
1824
void rb_free_rb_global_tbl(void);
1925
void rb_free_generic_fields_tbl_(void);
2026

vm_insnhelper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1343,7 +1343,7 @@ vm_getivar(VALUE obj, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_call
13431343
break;
13441344

13451345
default: {
1346-
VALUE fields_obj = rb_obj_fields(obj, 0);
1346+
VALUE fields_obj = rb_obj_fields(obj, id);
13471347
table = rb_imemo_fields_complex_tbl(fields_obj);
13481348
break;
13491349
}

0 commit comments

Comments
 (0)