From b1bd62e047d99387ca9681e5d907713b4c94bb3e Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Tue, 26 Mar 2013 21:25:00 +0900 Subject: remove all MRB_TT_MAIN from source --- src/class.c | 1 - src/gc.c | 5 ++--- src/kernel.c | 4 ---- src/state.c | 16 ++++++++++------ src/variable.c | 1 - 5 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/class.c b/src/class.c index 84132c38a..875457eb8 100644 --- a/src/class.c +++ b/src/class.c @@ -911,7 +911,6 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v) return mrb_obj_value(mrb->false_class); case MRB_TT_TRUE: return mrb_obj_value(mrb->true_class); - case MRB_TT_MAIN: case MRB_TT_VOIDP: return mrb_obj_value(mrb->object_class); case MRB_TT_SYMBOL: diff --git a/src/gc.c b/src/gc.c index 53a5eb3ed..1c668bbf3 100644 --- a/src/gc.c +++ b/src/gc.c @@ -392,7 +392,6 @@ gc_mark_children(mrb_state *mrb, struct RBasic *obj) } /* fall through */ - case MRB_TT_MAIN: case MRB_TT_OBJECT: case MRB_TT_DATA: mrb_gc_mark_iv(mrb, (struct RObject*)obj); @@ -479,7 +478,6 @@ obj_free(mrb_state *mrb, struct RBasic *obj) /* cannot happen */ return; - case MRB_TT_MAIN: case MRB_TT_OBJECT: mrb_gc_free_iv(mrb, (struct RObject*)obj); break; @@ -561,6 +559,8 @@ root_scan_phase(mrb_state *mrb) } /* mark class hierarchy */ mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class); + /* mark top_self */ + mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self); /* mark exception */ mrb_gc_mark(mrb, (struct RBasic*)mrb->exc); /* mark stack */ @@ -620,7 +620,6 @@ gc_gray_mark(mrb_state *mrb, struct RBasic *obj) } break; - case MRB_TT_MAIN: case MRB_TT_OBJECT: case MRB_TT_DATA: children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj); diff --git a/src/kernel.c b/src/kernel.c index ce96b902a..96dbf0635 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -55,9 +55,6 @@ mrb_obj_inspect(mrb_state *mrb, mrb_value obj) if ((mrb_type(obj) == MRB_TT_OBJECT) && mrb_obj_basic_to_s_p(mrb, obj)) { return mrb_obj_iv_inspect(mrb, mrb_obj_ptr(obj)); } - else if (mrb_type(obj) == MRB_TT_MAIN) { - return mrb_str_new(mrb, "main", 4); - } return mrb_any_to_s(mrb, obj); } @@ -306,7 +303,6 @@ init_copy(mrb_state *mrb, mrb_value dest, mrb_value obj) case MRB_TT_SCLASS: case MRB_TT_HASH: case MRB_TT_DATA: - case MRB_TT_MAIN: mrb_iv_copy(mrb, dest, obj); break; diff --git a/src/state.c b/src/state.c index 070237434..4e7225c7c 100644 --- a/src/state.c +++ b/src/state.c @@ -15,6 +15,12 @@ void mrb_init_heap(mrb_state*); void mrb_init_core(mrb_state*); void mrb_final_core(mrb_state*); +static mrb_value +inspect_main(mrb_state *mrb, mrb_value mod) +{ + return mrb_str_new(mrb, "main", 4); +} + mrb_state* mrb_open_allocf(mrb_allocf f, void *ud) { @@ -161,11 +167,9 @@ mrb_add_irep(mrb_state *mrb) mrb_value mrb_top_self(mrb_state *mrb) { - if(mrb->top_self == NULL) - { - mrb->top_self = (mrb_value *)mrb_calloc(mrb, 1, sizeof(mrb_value)); - *(mrb->top_self) = mrb_class_new_instance(mrb, 0, NULL, mrb->object_class); - mrb->top_self->tt = MRB_TT_MAIN; + if (!mrb->top_self) { + mrb->top_self = (struct RObject*)mrb_obj_alloc(mrb, MRB_TT_OBJECT, mrb->object_class); + mrb_define_singleton_method(mrb, mrb->top_self, "inspect", inspect_main, ARGS_NONE()); } - return *(mrb->top_self); + return mrb_obj_value(mrb->top_self); } diff --git a/src/variable.c b/src/variable.c index 669a86fc2..5bacd5141 100644 --- a/src/variable.c +++ b/src/variable.c @@ -419,7 +419,6 @@ obj_iv_p(mrb_value obj) case MRB_TT_SCLASS: case MRB_TT_HASH: case MRB_TT_DATA: - case MRB_TT_MAIN: return TRUE; default: return FALSE; -- cgit v1.2.3