Skip to content

Commit dd89a08

Browse files
committed
Add RUBY_TYPED_CONCURRENT_FREE_SAFE flag
Add this flag to all internal types. Internal extension types are skipped for now.
1 parent 40c2aa7 commit dd89a08

41 files changed

Lines changed: 87 additions & 78 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

array.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6863,7 +6863,7 @@ static const rb_data_type_t ary_sample_memo_type = {
68636863
.function = {
68646864
.dfree = (RUBY_DATA_FUNC)st_free_table,
68656865
},
6866-
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
6866+
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
68676867
};
68686868

68696869
static VALUE

ast.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static const rb_data_type_t rb_node_type = {
4545
"AST/node",
4646
{node_gc_mark, RUBY_TYPED_DEFAULT_FREE, node_memsize,},
4747
0, 0,
48-
RUBY_TYPED_FREE_IMMEDIATELY,
48+
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
4949
};
5050

5151
struct ASTLocationData {
@@ -70,7 +70,7 @@ static const rb_data_type_t rb_location_type = {
7070
"AST/location",
7171
{location_gc_mark, RUBY_TYPED_DEFAULT_FREE, location_memsize,},
7272
0, 0,
73-
RUBY_TYPED_FREE_IMMEDIATELY,
73+
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
7474
};
7575

7676

box.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ static const rb_data_type_t rb_box_data_type = {
296296
box_entry_memsize,
297297
rb_box_gc_update_references,
298298
},
299-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
299+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
300300
};
301301

302302
static const rb_data_type_t rb_root_box_data_type = {
@@ -307,7 +307,7 @@ static const rb_data_type_t rb_root_box_data_type = {
307307
box_entry_memsize,
308308
rb_box_gc_update_references,
309309
},
310-
&rb_box_data_type, 0, RUBY_TYPED_FREE_IMMEDIATELY // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
310+
&rb_box_data_type, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
311311
};
312312

313313
VALUE
@@ -748,7 +748,7 @@ box_ext_cleanup_free(void *p)
748748
static const rb_data_type_t box_ext_cleanup_type = {
749749
"box_ext_cleanup",
750750
{box_ext_cleanup_mark, box_ext_cleanup_free},
751-
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
751+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE,
752752
};
753753

754754
void

compile.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12312,7 +12312,7 @@ static const rb_data_type_t labels_wrapper_type = {
1231212312
.dmark = (RUBY_DATA_FUNC)rb_mark_set,
1231312313
.dfree = (RUBY_DATA_FUNC)st_free_table,
1231412314
},
12315-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
12315+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_CONCURRENT_FREE_SAFE,
1231612316
};
1231712317

1231812318
void
@@ -12573,7 +12573,7 @@ static const rb_data_type_t pinned_list_type = {
1257312573
RUBY_DEFAULT_FREE,
1257412574
NULL, // No external memory to report,
1257512575
},
12576-
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
12576+
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
1257712577
};
1257812578

1257912579
static VALUE
@@ -14722,7 +14722,7 @@ ibf_dump_memsize(const void *ptr)
1472214722
static const rb_data_type_t ibf_dump_type = {
1472314723
"ibf_dump",
1472414724
{ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},
14725-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
14725+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
1472614726
};
1472714727

1472814728
static void
@@ -14959,7 +14959,7 @@ ibf_loader_memsize(const void *ptr)
1495914959
static const rb_data_type_t ibf_load_type = {
1496014960
"ibf_loader",
1496114961
{ibf_loader_mark, ibf_loader_free, ibf_loader_memsize,},
14962-
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
14962+
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
1496314963
};
1496414964

1496514965
const rb_iseq_t *

concurrent_set.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ static const rb_data_type_t concurrent_set_type = {
9191
.dsize = concurrent_set_size,
9292
},
9393
/* Hack: NOT WB_PROTECTED on purpose (see above) */
94-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
94+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
9595
};
9696

9797
VALUE

cont.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
12891289
static const rb_data_type_t cont_data_type = {
12901290
"continuation",
12911291
{cont_mark, cont_free, cont_memsize, cont_compact},
1292-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
1292+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
12931293
};
12941294

12951295
static inline void
@@ -2029,8 +2029,8 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
20292029

20302030
static const rb_data_type_t fiber_data_type = {
20312031
"fiber",
2032-
{fiber_mark, fiber_free, fiber_memsize, fiber_compact,},
2033-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
2032+
{fiber_mark, fiber_free, fiber_memsize, fiber_compact},
2033+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
20342034
};
20352035

20362036
static VALUE
@@ -3450,7 +3450,7 @@ fiber_pool_memsize(const void *ptr)
34503450
static const rb_data_type_t FiberPoolDataType = {
34513451
"fiber_pool",
34523452
{NULL, fiber_pool_free, fiber_pool_memsize,},
3453-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
3453+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_CONCURRENT_FREE_SAFE
34543454
};
34553455

34563456
static VALUE

dir.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ static const rb_data_type_t dir_data_type = {
531531
dir_free,
532532
NULL, // Nothing allocated externally, so don't need a memsize function
533533
},
534-
0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
534+
0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
535535
};
536536

537537
static VALUE dir_close(VALUE);

encoding.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static int filesystem_encindex = ENCINDEX_ASCII_8BIT;
122122
static const rb_data_type_t encoding_data_type = {
123123
"encoding",
124124
{0, 0, 0,},
125-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
125+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_CONCURRENT_FREE_SAFE
126126
};
127127

128128
#define is_data_encoding(obj) (RTYPEDDATA_P(obj) && RTYPEDDATA_TYPE(obj) == &encoding_data_type)

enumerator.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ static const rb_data_type_t enumerator_data_type = {
265265
NULL, // Nothing allocated externally, so don't need a memsize function
266266
NULL,
267267
},
268-
0, NULL, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
268+
0, NULL, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
269269
};
270270

271271
static struct enumerator *
@@ -296,7 +296,7 @@ static const rb_data_type_t proc_entry_data_type = {
296296
NULL, // Nothing allocated externally, so don't need a memsize function
297297
proc_entry_mark_and_move,
298298
},
299-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
299+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
300300
};
301301

302302
static struct proc_entry *
@@ -1305,7 +1305,7 @@ static const rb_data_type_t yielder_data_type = {
13051305
NULL,
13061306
yielder_mark_and_move,
13071307
},
1308-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
1308+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
13091309
};
13101310

13111311
static struct yielder *
@@ -1429,7 +1429,7 @@ static const rb_data_type_t generator_data_type = {
14291429
NULL,
14301430
generator_mark_and_move,
14311431
},
1432-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
1432+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
14331433
};
14341434

14351435
static struct generator *
@@ -2914,7 +2914,7 @@ static const rb_data_type_t producer_data_type = {
29142914
producer_memsize,
29152915
producer_mark_and_move,
29162916
},
2917-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
2917+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
29182918
};
29192919

29202920
static struct producer *
@@ -3132,7 +3132,7 @@ static const rb_data_type_t enum_chain_data_type = {
31323132
enum_chain_memsize,
31333133
enum_chain_mark_and_move,
31343134
},
3135-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
3135+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_CONCURRENT_FREE_SAFE
31363136
};
31373137

31383138
static struct enum_chain *
@@ -3447,7 +3447,7 @@ static const rb_data_type_t enum_product_data_type = {
34473447
enum_product_memsize,
34483448
enum_product_mark_and_move,
34493449
},
3450-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
3450+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_CONCURRENT_FREE_SAFE
34513451
};
34523452

34533453
static struct enum_product *
@@ -3777,7 +3777,7 @@ static const rb_data_type_t arith_seq_data_type = {
37773777
NULL,
37783778
},
37793779
.parent = &enumerator_data_type,
3780-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
3780+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
37813781
};
37823782

37833783
static VALUE

error.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2539,7 +2539,7 @@ static const rb_data_type_t name_err_mesg_data_type = {
25392539
NULL, // No external memory to report,
25402540
name_err_mesg_mark_and_move,
25412541
},
2542-
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
2542+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_CONCURRENT_FREE_SAFE
25432543
};
25442544

25452545
/* :nodoc: */

0 commit comments

Comments
 (0)