diff options
author | Peter Zhu <[email protected]> | 2024-10-16 09:20:32 -0400 |
---|---|---|
committer | Peter Zhu <[email protected]> | 2024-10-18 09:06:46 -0400 |
commit | 3ddaf24cd2ce41a5a840acf8335d735eef966920 () | |
tree | 72783b73fb8c1c09f98e125b7ca528a606e27cfb | |
parent | 9a98b70a50c9d8e73c0194646093d6a15a223e3f (diff) |
Move object processing in Process.warmup to gc.c
Notes: Merged: https://.com/ruby/ruby/pull/11904
-rw-r--r-- | gc.c | 14 | ||||
-rw-r--r-- | gc/default.c | 6 | ||||
-rw-r--r-- | gc/gc.h | 1 |
3 files changed, 16 insertions, 5 deletions
@@ -3008,6 +3008,20 @@ rb_gc_location(VALUE value) } void rb_gc_prepare_heap(void) { rb_gc_impl_prepare_heap(rb_gc_get_objspace()); @@ -6763,12 +6763,8 @@ gc_set_candidate_object_i(void *vstart, void *vend, size_t stride, void *data) case T_NONE: case T_ZOMBIE: break; - case T_STRING: - // precompute the string coderange. This both save time for when it will be - // eventually needed, and avoid mutating heap pages after a potential fork. - rb_enc_str_coderange(v); - // fall through default: if (!RVALUE_OLD_P(objspace, v) && !RVALUE_WB_UNPROTECTED(objspace, v)) { RVALUE_AGE_SET_CANDIDATE(objspace, v); } @@ -42,6 +42,7 @@ uint32_t rb_gc_get_shape(VALUE obj); void rb_gc_set_shape(VALUE obj, uint32_t shape_id); uint32_t rb_gc_rebuild_shape(VALUE obj, size_t heap_id); size_t rb_obj_memsize_of(VALUE obj); RUBY_SYMBOL_EXPORT_END void rb_ractor_finish_marking(void); |