From 52865263467b48c0f5af6d9548972dd1f9e5bee1 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 25 Sep 2020 03:19:27 +0900 Subject: frozen T_OBJECT can be shareable. If an T_OBJECT object is frozen and all ivars are shareable, the object should be shareable. --- ractor.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'ractor.c') diff --git a/ractor.c b/ractor.c index a7e588a9d8..fbc9192af8 100644 --- a/ractor.c +++ b/ractor.c @@ -1776,6 +1776,22 @@ rb_ractor_shareable_p_hash_i(VALUE key, VALUE value, VALUE arg) return ST_CONTINUE; } +static bool +ractor_obj_ivars_shareable_p(VALUE obj) +{ + uint32_t len = ROBJECT_NUMIV(obj); + VALUE *ptr = ROBJECT_IVPTR(obj); + + for (uint32_t i=0; i