mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
class.c (mrb_gc_mark_mt_size) unify with mrb_gc_mark_mt
This commit is contained in:
@@ -74,8 +74,7 @@ struct mrb_backtrace_location {
|
||||
};
|
||||
|
||||
/* gc */
|
||||
void mrb_gc_mark_mt(mrb_state*, struct RClass*);
|
||||
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
|
||||
size_t mrb_gc_mark_mt(mrb_state*, struct RClass*);
|
||||
void mrb_gc_free_mt(mrb_state*, struct RClass*);
|
||||
|
||||
/* hash */
|
||||
|
||||
+6
-14
@@ -281,14 +281,14 @@ mrb_mt_foreach(mrb_state *mrb, struct RClass *c, mrb_mt_foreach_func *fn, void *
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
size_t
|
||||
mrb_gc_mark_mt(mrb_state *mrb, struct RClass *c)
|
||||
{
|
||||
mt_tbl *t = c->mt;
|
||||
|
||||
if (t == NULL) return;
|
||||
if (t->alloc == 0) return;
|
||||
if (t->size == 0) return;
|
||||
if (t == NULL) return 0;
|
||||
if (t->alloc == 0) return 0;
|
||||
if (t->size == 0) return 0;
|
||||
|
||||
mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
|
||||
union mt_ptr *vals = t->ptr;
|
||||
@@ -298,16 +298,8 @@ mrb_gc_mark_mt(mrb_state *mrb, struct RClass *c)
|
||||
mrb_gc_mark(mrb, (struct RBasic*)p);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
size_t
|
||||
mrb_gc_mark_mt_size(mrb_state *mrb, struct RClass *c)
|
||||
{
|
||||
struct mt_tbl *h = c->mt;
|
||||
|
||||
if (!h) return 0;
|
||||
return (size_t)h->size;
|
||||
if (!t) return 0;
|
||||
return (size_t)t->size;
|
||||
}
|
||||
|
||||
size_t
|
||||
|
||||
@@ -588,8 +588,9 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
|
||||
case MRB_TT_ICLASS:
|
||||
{
|
||||
struct RClass *c = (struct RClass*)obj;
|
||||
if (MRB_FLAG_TEST(c, MRB_FL_CLASS_IS_ORIGIN))
|
||||
mrb_gc_mark_mt(mrb, c);
|
||||
if (MRB_FLAG_TEST(c, MRB_FL_CLASS_IS_ORIGIN)) {
|
||||
children += mrb_gc_mark_mt(mrb, c);
|
||||
}
|
||||
mrb_gc_mark(mrb, (struct RBasic*)((struct RClass*)obj)->super);
|
||||
children++;
|
||||
}
|
||||
@@ -603,7 +604,7 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
|
||||
|
||||
mrb_gc_mark_mt(mrb, c);
|
||||
mrb_gc_mark(mrb, (struct RBasic*)c->super);
|
||||
children += mrb_gc_mark_mt_size(mrb, c);
|
||||
children += mrb_gc_mark_mt(mrb, c);
|
||||
children++;
|
||||
}
|
||||
/* fall through */
|
||||
|
||||
Reference in New Issue
Block a user