File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1313,18 +1313,7 @@ rb_gc_obj_needs_cleanup_p(VALUE obj)
13131313
13141314 switch (flags & RUBY_T_MASK ) {
13151315 case T_IMEMO :
1316- switch (imemo_type (obj )) {
1317- case imemo_constcache :
1318- case imemo_cref :
1319- case imemo_ifunc :
1320- case imemo_memo :
1321- case imemo_svar :
1322- case imemo_callcache :
1323- case imemo_throw_data :
1324- return false;
1325- default :
1326- return true;
1327- }
1316+ return rb_imemo_needs_cleanup_p (obj );
13281317
13291318 case T_DATA :
13301319 case T_OBJECT :
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ enum imemo_type {
4040 imemo_callinfo = 10 ,
4141 imemo_callcache = 11 ,
4242 imemo_constcache = 12 ,
43- imemo_fields = 13 ,
43+ imemo_fields = 13 ,
4444};
4545
4646/* CREF (Class REFerence) is defined in method.h */
@@ -292,4 +292,28 @@ rb_imemo_fields_complex_tbl(VALUE fields_obj)
292292 return IMEMO_OBJ_FIELDS (fields_obj )-> as .complex .table ;
293293}
294294
295+ static inline bool
296+ rb_imemo_needs_cleanup_p (VALUE obj )
297+ {
298+ switch (imemo_type (obj )) {
299+ case imemo_constcache :
300+ case imemo_cref :
301+ case imemo_ifunc :
302+ case imemo_memo :
303+ case imemo_svar :
304+ case imemo_callcache :
305+ case imemo_throw_data :
306+ return false;
307+
308+ case imemo_env :
309+ case imemo_ment :
310+ case imemo_iseq :
311+ case imemo_callinfo :
312+ case imemo_fields :
313+ case imemo_tmpbuf :
314+ return true;
315+ }
316+ UNREACHABLE_RETURN (true);
317+ }
318+
295319#endif /* INTERNAL_IMEMO_H */
You can’t perform that action at this time.
0 commit comments