mirror of
https://github.com/ruby/ruby.git
synced 2026-10-28 16:36:20 +08:00
Mark most TypedData types as THREAD_SAFE_FREE
Set RUBY_TYPED_THREAD_SAFE_FREE on TypedData types whose dfree function is trivially safe, and only frees its own memory Types not yet marked as THREAD_SAFE_FREE: - id2ref_tbl_type: sets the process-global id2ref_tbl to NULL. - mutex_data_type: unlinks itself from another thread's keeping_mutexes list. - autoload_data_type: deletes nodes from a shared intrusive list. - autoload_const_type: deletes itself from a shared list. - rb_cont_data_type: mutates the shared fiber pool and the global first_jit_cont list. - rb_fiber_data_type: delegates to cont_free. - FiberPoolDataType: mutates shared fiber pool free-lists. - ractor_data_type: reconfigures global VM event-hook flags and call caches. - exported_object_registry: frees a global table under the VM lock. - rb_box_data_type (Box::Entry): unlinks classext from other live class and module objects. - box_ext_cleanup_type: dereferences another String object and calls unlink. - monitor_data_type: uses the default free, so the flag has no effect. Co-authored-by: Luke Gruber <luke.gruber@shopify.com>
This commit is contained in:
1 parent
7a40f85f82
commit
daffaaee73
39 files changed
+69
-69
Notes:
git
2026-06-23 20:30:56 +00:00
No files matched your search
@@ -6920,7 +6920,7 @@ static const rb_data_type_t ary_sample_memo_type = {
|
||||
.function = {
|
||||
.dfree = (RUBY_DATA_FUNC)st_free_table,
|
||||
},
|
||||
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
|
||||
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
@@ -45,7 +45,7 @@ static const rb_data_type_t rb_node_type = {
|
||||
"AST/node",
|
||||
{node_gc_mark, RUBY_TYPED_DEFAULT_FREE, node_memsize,},
|
||||
0, 0,
|
||||
RUBY_TYPED_FREE_IMMEDIATELY,
|
||||
RUBY_TYPED_THREAD_SAFE_FREE,
|
||||
};
|
||||
|
||||
struct ASTLocationData {
|
||||
@@ -70,7 +70,7 @@ static const rb_data_type_t rb_location_type = {
|
||||
"AST/location",
|
||||
{location_gc_mark, RUBY_TYPED_DEFAULT_FREE, location_memsize,},
|
||||
0, 0,
|
||||
RUBY_TYPED_FREE_IMMEDIATELY,
|
||||
RUBY_TYPED_THREAD_SAFE_FREE,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -339,7 +339,7 @@ static const rb_data_type_t rb_master_box_data_type = {
|
||||
box_entry_memsize,
|
||||
rb_box_gc_update_references,
|
||||
},
|
||||
&rb_box_data_type, 0, RUBY_TYPED_FREE_IMMEDIATELY // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
|
||||
&rb_box_data_type, 0, RUBY_TYPED_THREAD_SAFE_FREE // TODO: enable RUBY_TYPED_WB_PROTECTED when inserting write barriers
|
||||
};
|
||||
|
||||
VALUE
|
||||
|
||||
@@ -12376,7 +12376,7 @@ static const rb_data_type_t labels_wrapper_type = {
|
||||
.dmark = (RUBY_DATA_FUNC)rb_mark_set,
|
||||
.dfree = (RUBY_DATA_FUNC)st_free_table,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
void
|
||||
@@ -12637,7 +12637,7 @@ static const rb_data_type_t pinned_list_type = {
|
||||
RUBY_DEFAULT_FREE,
|
||||
NULL, // No external memory to report,
|
||||
},
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -14821,7 +14821,7 @@ ibf_dump_memsize(const void *ptr)
|
||||
static const rb_data_type_t ibf_dump_type = {
|
||||
"ibf_dump",
|
||||
{ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -15058,7 +15058,7 @@ ibf_loader_memsize(const void *ptr)
|
||||
static const rb_data_type_t ibf_load_type = {
|
||||
"ibf_loader",
|
||||
{ibf_loader_mark, ibf_loader_free, ibf_loader_memsize,},
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
const rb_iseq_t *
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ static const rb_data_type_t concurrent_set_type = {
|
||||
.dsize = concurrent_set_size,
|
||||
},
|
||||
/* Hack: NOT WB_PROTECTED on purpose (see above) */
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
VALUE
|
||||
|
||||
@@ -545,7 +545,7 @@ static const rb_data_type_t dir_data_type = {
|
||||
dir_free,
|
||||
NULL, // Nothing allocated externally, so don't need a memsize function
|
||||
},
|
||||
0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE dir_close(VALUE);
|
||||
|
||||
+1
-1
@@ -123,7 +123,7 @@ static rb_atomic_t locale_alias_registered;
|
||||
static const rb_data_type_t encoding_data_type = {
|
||||
"encoding",
|
||||
{0, 0, 0,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
#define is_encoding_type(obj) (RTYPEDDATA_TYPE(obj) == &encoding_data_type)
|
||||
|
||||
+8
-8
@@ -280,7 +280,7 @@ static const rb_data_type_t enumerator_data_type = {
|
||||
NULL, // Nothing allocated externally, so don't need a memsize function
|
||||
NULL,
|
||||
},
|
||||
0, NULL, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
0, NULL, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static struct enumerator *
|
||||
@@ -311,7 +311,7 @@ static const rb_data_type_t proc_entry_data_type = {
|
||||
NULL, // Nothing allocated externally, so don't need a memsize function
|
||||
proc_entry_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static struct proc_entry *
|
||||
@@ -1332,7 +1332,7 @@ static const rb_data_type_t yielder_data_type = {
|
||||
NULL,
|
||||
yielder_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static struct yielder *
|
||||
@@ -1456,7 +1456,7 @@ static const rb_data_type_t generator_data_type = {
|
||||
NULL,
|
||||
generator_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static struct generator *
|
||||
@@ -2987,7 +2987,7 @@ static const rb_data_type_t producer_data_type = {
|
||||
producer_memsize,
|
||||
producer_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static struct producer *
|
||||
@@ -3205,7 +3205,7 @@ static const rb_data_type_t enum_chain_data_type = {
|
||||
enum_chain_memsize,
|
||||
enum_chain_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static struct enum_chain *
|
||||
@@ -3520,7 +3520,7 @@ static const rb_data_type_t enum_product_data_type = {
|
||||
enum_product_memsize,
|
||||
enum_product_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static struct enum_product *
|
||||
@@ -3858,7 +3858,7 @@ static const rb_data_type_t arith_seq_data_type = {
|
||||
NULL,
|
||||
},
|
||||
.parent = &enumerator_data_type,
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
@@ -2533,7 +2533,7 @@ static const rb_data_type_t name_err_mesg_data_type = {
|
||||
NULL, // No external memory to report,
|
||||
name_err_mesg_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
/* :nodoc: */
|
||||
|
||||
@@ -1291,7 +1291,7 @@ addrinfo_memsize(const void *ptr)
|
||||
static const rb_data_type_t addrinfo_type = {
|
||||
"socket/addrinfo",
|
||||
{addrinfo_mark, addrinfo_free, addrinfo_memsize,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_WB_PROTECTED,
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
@@ -548,7 +548,7 @@ static const rb_data_type_t stat_data_type = {
|
||||
RUBY_TYPED_DEFAULT_FREE,
|
||||
NULL, // No external memory to report
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
struct rb_stat {
|
||||
|
||||
@@ -6941,7 +6941,7 @@ static const rb_data_type_t env_data_type = {
|
||||
NULL,
|
||||
NULL,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -349,7 +349,7 @@ const rb_data_type_t rb_managed_id_table_type = {
|
||||
.dfree = managed_id_table_free,
|
||||
.dsize = managed_id_table_memsize,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static inline struct rb_id_table *
|
||||
@@ -478,7 +478,7 @@ const rb_data_type_t rb_marked_id_table_type = {
|
||||
.dcompact = marked_id_table_compact,
|
||||
},
|
||||
.parent = &rb_managed_id_table_type,
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
VALUE
|
||||
|
||||
@@ -10036,7 +10036,7 @@ argf_memsize(const void *ptr)
|
||||
static const rb_data_type_t argf_type = {
|
||||
"ARGF",
|
||||
{argf_mark_and_move, RUBY_TYPED_DEFAULT_FREE, argf_memsize, argf_mark_and_move},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
||||
+1
-1
@@ -332,7 +332,7 @@ static const rb_data_type_t rb_io_buffer_type = {
|
||||
.dcompact = rb_io_buffer_type_compact,
|
||||
},
|
||||
.data = NULL,
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static struct rb_io_buffer *
|
||||
|
||||
@@ -1607,7 +1607,7 @@ static const rb_data_type_t iseqw_data_type = {
|
||||
iseqw_memsize,
|
||||
iseqw_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE|RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -2863,7 +2863,7 @@ iseq_inspect(const rb_iseq_t *iseq)
|
||||
static const rb_data_type_t tmp_set = {
|
||||
"tmpset",
|
||||
{(void (*)(void *))rb_mark_set, (void (*)(void *))st_free_table, 0, 0,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -3347,7 +3347,7 @@ cdhash_each(VALUE key, VALUE value, VALUE ary)
|
||||
static const rb_data_type_t label_wrapper = {
|
||||
"label_wrapper",
|
||||
{(void (*)(void *))rb_mark_tbl, (void (*)(void *))st_free_table, 0, 0,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
#define DECL_ID(name) \
|
||||
|
||||
@@ -237,7 +237,7 @@ memsize_dump_arg(const void *ptr)
|
||||
static const rb_data_type_t dump_arg_data = {
|
||||
"dump_arg",
|
||||
{mark_dump_arg, free_dump_arg, memsize_dump_arg,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -1301,7 +1301,7 @@ memsize_load_arg(const void *ptr)
|
||||
static const rb_data_type_t load_arg_data = {
|
||||
"load_arg",
|
||||
{mark_load_arg, free_load_arg, memsize_load_arg,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
#define r_entry(v, arg) r_entry0((v), (arg)->data->num_entries, (arg))
|
||||
@@ -2638,7 +2638,7 @@ static const rb_data_type_t marshal_compat_type = {
|
||||
.dsize = marshal_compat_table_memsize,
|
||||
.dcompact = marshal_compat_table_mark_and_move,
|
||||
},
|
||||
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY,
|
||||
.flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE,
|
||||
};
|
||||
|
||||
static st_table *
|
||||
|
||||
+1
-1
@@ -125,7 +125,7 @@ static const rb_data_type_t memory_view_entry_data_type = {
|
||||
0,
|
||||
0,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
/* Register memory view functions for the given class */
|
||||
|
||||
@@ -106,7 +106,7 @@ const rb_data_type_t ruby_proc_data_type = {
|
||||
proc_memsize,
|
||||
proc_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
#define proc_data_type ruby_proc_data_type
|
||||
@@ -285,7 +285,7 @@ const rb_data_type_t ruby_binding_data_type = {
|
||||
binding_memsize,
|
||||
binding_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
VALUE
|
||||
@@ -1812,7 +1812,7 @@ static const rb_data_type_t method_data_type = {
|
||||
NULL, // No external memory to report,
|
||||
bm_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
|
||||
};
|
||||
|
||||
VALUE
|
||||
|
||||
@@ -597,7 +597,7 @@ static const rb_data_type_t rb_process_status_type = {
|
||||
.dfree = RUBY_DEFAULT_FREE,
|
||||
.dsize = NULL,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -1740,7 +1740,7 @@ memsize_exec_arg(const void *ptr)
|
||||
static const rb_data_type_t exec_arg_data_type = {
|
||||
"exec_arg",
|
||||
{mark_exec_arg, RUBY_TYPED_DEFAULT_FREE, memsize_exec_arg},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
@@ -2472,7 +2472,7 @@ static const rb_data_type_t cross_ractor_require_data_type = {
|
||||
NULL, // memsize
|
||||
NULL, // compact
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_DECL_MARKING | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ static const rb_data_type_t ractor_port_data_type = {
|
||||
NULL, // memsize
|
||||
NULL, // update
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static st_data_t
|
||||
@@ -1255,7 +1255,7 @@ static const rb_data_type_t ractor_selector_data_type = {
|
||||
ractor_selector_memsize,
|
||||
NULL, // update
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
static struct ractor_selector *
|
||||
|
||||
@@ -272,7 +272,7 @@ const rb_data_type_t rb_random_data_type = {
|
||||
random_free,
|
||||
random_memsize,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
#define random_mt_mark rb_random_mark
|
||||
@@ -293,7 +293,7 @@ static const rb_data_type_t random_mt_type = {
|
||||
},
|
||||
&rb_random_data_type,
|
||||
(void *)&random_mt_if,
|
||||
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static rb_random_t *
|
||||
|
||||
+2
-2
@@ -508,7 +508,7 @@ static const rb_data_type_t ruby_parser_data_type = {
|
||||
parser_free,
|
||||
parser_memsize,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
#ifdef UNIVERSAL_PARSER
|
||||
@@ -736,7 +736,7 @@ static const rb_data_type_t ast_data_type = {
|
||||
ast_free,
|
||||
NULL, // No dsize() because this object does not appear in ObjectSpace.
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+1
-1
@@ -90,7 +90,7 @@ static const rb_data_type_t blocking_operation_data_type = {
|
||||
RUBY_DEFAULT_FREE,
|
||||
blocking_operation_memsize,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -201,7 +201,7 @@ static const rb_data_type_t set_data_type = {
|
||||
.dsize = set_size,
|
||||
.dcompact = set_update_references,
|
||||
},
|
||||
.flags = RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE
|
||||
.flags = RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE
|
||||
};
|
||||
|
||||
static inline set_table *
|
||||
|
||||
@@ -365,7 +365,7 @@ static const rb_data_type_t shape_tree_type = {
|
||||
.dsize = shape_tree_memsize,
|
||||
.dcompact = shape_tree_mark_and_move,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -7883,7 +7883,7 @@ mapping_buffer_free(void *p)
|
||||
static const rb_data_type_t mapping_buffer_type = {
|
||||
"mapping_buffer",
|
||||
{0, mapping_buffer_free,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
@@ -209,7 +209,7 @@ static const rb_data_type_t sym_id_entry_list_type = {
|
||||
sym_id_entry_list_memsize,
|
||||
sym_id_entry_list_compact,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static int
|
||||
|
||||
@@ -5081,7 +5081,7 @@ static const rb_data_type_t thgroup_data_type = {
|
||||
RUBY_TYPED_DEFAULT_FREE,
|
||||
NULL, // No external memory to report
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -5250,7 +5250,7 @@ thread_shield_mark(void *ptr)
|
||||
static const rb_data_type_t thread_shield_data_type = {
|
||||
"thread_shield",
|
||||
{thread_shield_mark, 0, 0,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+3
-3
@@ -728,7 +728,7 @@ static const rb_data_type_t queue_data_type = {
|
||||
.dsize = queue_memsize,
|
||||
.dcompact = queue_mark_and_move,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -834,7 +834,7 @@ static const rb_data_type_t szqueue_data_type = {
|
||||
.dcompact = szqueue_mark_and_move,
|
||||
},
|
||||
.parent = &queue_data_type,
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
@@ -1174,7 +1174,7 @@ condvar_memsize(const void *ptr)
|
||||
static const rb_data_type_t cv_data_type = {
|
||||
"condvar",
|
||||
{0, RUBY_TYPED_DEFAULT_FREE, condvar_memsize,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE|RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
static struct rb_condvar *
|
||||
|
||||
@@ -1909,7 +1909,7 @@ static const rb_data_type_t time_data_type = {
|
||||
.dsize = NULL,
|
||||
.dcompact = time_mark_and_move,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+1
-1
@@ -3019,7 +3019,7 @@ econv_memsize(const void *ptr)
|
||||
static const rb_data_type_t econv_data_type = {
|
||||
"econv",
|
||||
{0, econv_free, econv_memsize,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+1
-1
@@ -2676,7 +2676,7 @@ autoload_table_compact(void *ptr)
|
||||
static const rb_data_type_t autoload_table_type = {
|
||||
"autoload_table",
|
||||
{autoload_table_mark, autoload_table_free, autoload_table_memsize, autoload_table_compact,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
#define check_autoload_table(av) \
|
||||
|
||||
@@ -3561,7 +3561,7 @@ vm_memsize(const void *ptr)
|
||||
const rb_data_type_t ruby_vm_data_type = {
|
||||
"VM",
|
||||
{0, 0, vm_memsize,},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
#define vm_data_type ruby_vm_data_type
|
||||
@@ -3924,7 +3924,7 @@ const rb_data_type_t ruby_threadptr_data_type = {
|
||||
thread_memsize,
|
||||
thread_compact,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE
|
||||
};
|
||||
|
||||
VALUE
|
||||
@@ -4751,7 +4751,7 @@ static const rb_data_type_t pin_array_list_type = {
|
||||
.dsize = pin_array_list_memsize,
|
||||
.dcompact = pin_array_list_update_references,
|
||||
},
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
+2
-2
@@ -158,7 +158,7 @@ static const rb_data_type_t location_data_type = {
|
||||
NULL, // No external memory to report,
|
||||
location_ref_update,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
int
|
||||
@@ -568,7 +568,7 @@ static const rb_data_type_t backtrace_data_type = {
|
||||
/* Cannot set the RUBY_TYPED_EMBEDDABLE flag because the loc of frame_info
|
||||
* points elements in the backtrace array. This can cause the loc to become
|
||||
* incorrect if this backtrace object is moved by compaction. */
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED
|
||||
};
|
||||
|
||||
int
|
||||
|
||||
+2
-2
@@ -135,7 +135,7 @@ static const rb_data_type_t cc_table_type = {
|
||||
.dcompact = vm_cc_table_compact,
|
||||
},
|
||||
.parent = &rb_managed_id_table_type,
|
||||
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
.flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
|
||||
};
|
||||
|
||||
VALUE
|
||||
@@ -798,7 +798,7 @@ static const rb_data_type_t cc_refinement_set_type = {
|
||||
cc_refinement_set_compact,
|
||||
cc_refinement_set_handle_weak_references,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
VALUE
|
||||
|
||||
+1
-1
@@ -906,7 +906,7 @@ static const rb_data_type_t tp_data_type = {
|
||||
NULL, // Nothing allocated externally, so don't need a memsize function
|
||||
tp_mark_and_move,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static VALUE
|
||||
|
||||
@@ -141,7 +141,7 @@ const rb_data_type_t rb_weakmap_type = {
|
||||
wmap_compact,
|
||||
wmap_handle_weak_references,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static int
|
||||
@@ -627,7 +627,7 @@ static const rb_data_type_t rb_weakkeymap_type = {
|
||||
wkmap_compact,
|
||||
wkmap_handle_weak_references,
|
||||
},
|
||||
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
|
||||
};
|
||||
|
||||
static int
|
||||
|
||||
Reference in new issue
Block a user