Skip to content

Commit 1fb0aca

Browse files
committed
imemo.h: Extract rb_imemo_needs_cleanup_p
1 parent 24a2ba0 commit 1fb0aca

2 files changed

Lines changed: 26 additions & 13 deletions

File tree

gc.c

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff 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:

internal/imemo.h

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff 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 */

0 commit comments

Comments
 (0)