diff options
| author | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-26 21:25:00 +0900 |
|---|---|---|
| committer | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-26 21:25:00 +0900 |
| commit | b1bd62e047d99387ca9681e5d907713b4c94bb3e (patch) | |
| tree | ae0a37f88c128c8ba408692910e22984117b02b5 | |
| parent | 5c6be2e518db9500c10db3ed2614499444936904 (diff) | |
| download | mruby-b1bd62e047d99387ca9681e5d907713b4c94bb3e.tar.gz mruby-b1bd62e047d99387ca9681e5d907713b4c94bb3e.zip | |
remove all MRB_TT_MAIN from source
| -rw-r--r-- | include/mruby.h | 6 | ||||
| -rw-r--r-- | include/mruby/class.h | 2 | ||||
| -rw-r--r-- | include/mruby/value.h | 64 | ||||
| -rw-r--r-- | src/class.c | 1 | ||||
| -rw-r--r-- | src/gc.c | 5 | ||||
| -rw-r--r-- | src/kernel.c | 4 | ||||
| -rw-r--r-- | src/state.c | 16 | ||||
| -rw-r--r-- | src/variable.c | 1 |
8 files changed, 46 insertions, 53 deletions
diff --git a/include/mruby.h b/include/mruby.h index 1c26be1ea..45bd99bdb 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -74,7 +74,6 @@ typedef struct mrb_state { mrb_value *stack; mrb_value *stbase, *stend; - mrb_value *top_self; mrb_callinfo *ci; mrb_callinfo *cibase, *ciend; @@ -91,6 +90,7 @@ typedef struct mrb_state { size_t irep_len, irep_capa; mrb_sym init_sym; + struct RObject *top_self; struct RClass *object_class; struct RClass *class_class; struct RClass *module_class; @@ -240,11 +240,11 @@ int mrb_gc_arena_save(mrb_state*); void mrb_gc_arena_restore(mrb_state*,int); void mrb_gc_mark(mrb_state*,struct RBasic*); #define mrb_gc_mark_value(mrb,val) do {\ - if (mrb_type(val) >= MRB_TT_MAIN) mrb_gc_mark((mrb), mrb_basic_ptr(val));\ + if (mrb_type(val) >= MRB_TT_OBJECT) mrb_gc_mark((mrb), mrb_basic_ptr(val));\ } while (0) void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*); #define mrb_field_write_barrier_value(mrb, obj, val) do{\ - if ((val.tt >= MRB_TT_MAIN)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val));\ + if ((val.tt >= MRB_TT_OBJECT)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val));\ } while (0) void mrb_write_barrier(mrb_state *, struct RBasic*); diff --git a/include/mruby/class.h b/include/mruby/class.h index b36c6f7f1..4ab954d9e 100644 --- a/include/mruby/class.h +++ b/include/mruby/class.h @@ -39,8 +39,6 @@ mrb_class(mrb_state *mrb, mrb_value v) return mrb->fixnum_class; case MRB_TT_FLOAT: return mrb->float_class; - case MRB_TT_MAIN: - return mrb->object_class; default: return mrb_obj_ptr(v)->c; } diff --git a/include/mruby/value.h b/include/mruby/value.h index 53e30efe7..1815f0562 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -18,22 +18,21 @@ enum mrb_vtype { MRB_TT_UNDEF, /* 5 */ MRB_TT_FLOAT, /* 6 */ MRB_TT_VOIDP, /* 7 */ - MRB_TT_MAIN, /* 8 */ - MRB_TT_OBJECT, /* 9 */ - MRB_TT_CLASS, /* 10 */ - MRB_TT_MODULE, /* 11 */ - MRB_TT_ICLASS, /* 12 */ - MRB_TT_SCLASS, /* 13 */ - MRB_TT_PROC, /* 14 */ - MRB_TT_ARRAY, /* 15 */ - MRB_TT_HASH, /* 16 */ - MRB_TT_STRING, /* 17 */ - MRB_TT_RANGE, /* 18 */ - MRB_TT_EXCEPTION, /* 19 */ - MRB_TT_FILE, /* 20 */ - MRB_TT_ENV, /* 21 */ - MRB_TT_DATA, /* 22 */ - MRB_TT_MAXDEFINE /* 23 */ + MRB_TT_OBJECT, /* 8 */ + MRB_TT_CLASS, /* 9 */ + MRB_TT_MODULE, /* 10 */ + MRB_TT_ICLASS, /* 11 */ + MRB_TT_SCLASS, /* 12 */ + MRB_TT_PROC, /* 13 */ + MRB_TT_ARRAY, /* 14 */ + MRB_TT_HASH, /* 15 */ + MRB_TT_STRING, /* 16 */ + MRB_TT_RANGE, /* 17 */ + MRB_TT_EXCEPTION, /* 18 */ + MRB_TT_FILE, /* 19 */ + MRB_TT_ENV, /* 20 */ + MRB_TT_DATA, /* 21 */ + MRB_TT_MAXDEFINE /* 22 */ }; typedef struct mrb_value { @@ -77,22 +76,21 @@ enum mrb_vtype { MRB_TT_UNDEF, /* 6 */ MRB_TT_FLOAT, /* 7 */ MRB_TT_VOIDP, /* 8 */ - MRB_TT_MAIN, /* 9 */ - MRB_TT_OBJECT, /* 10 */ - MRB_TT_CLASS, /* 11 */ - MRB_TT_MODULE, /* 12 */ - MRB_TT_ICLASS, /* 13 */ - MRB_TT_SCLASS, /* 14 */ - MRB_TT_PROC, /* 15 */ - MRB_TT_ARRAY, /* 16 */ - MRB_TT_HASH, /* 17 */ - MRB_TT_STRING, /* 18 */ - MRB_TT_RANGE, /* 19 */ - MRB_TT_EXCEPTION, /* 20 */ - MRB_TT_FILE, /* 21 */ - MRB_TT_ENV, /* 22 */ - MRB_TT_DATA, /* 23 */ - MRB_TT_MAXDEFINE /* 24 */ + MRB_TT_OBJECT, /* 9 */ + MRB_TT_CLASS, /* 10 */ + MRB_TT_MODULE, /* 11 */ + MRB_TT_ICLASS, /* 12 */ + MRB_TT_SCLASS, /* 13 */ + MRB_TT_PROC, /* 14 */ + MRB_TT_ARRAY, /* 15 */ + MRB_TT_HASH, /* 16 */ + MRB_TT_STRING, /* 17 */ + MRB_TT_RANGE, /* 18 */ + MRB_TT_EXCEPTION, /* 19 */ + MRB_TT_FILE, /* 20 */ + MRB_TT_ENV, /* 21 */ + MRB_TT_DATA, /* 22 */ + MRB_TT_MAXDEFINE /* 23 */ }; #ifdef MRB_ENDIAN_BIG @@ -199,7 +197,7 @@ struct RObject { #define mrb_obj_ptr(v) ((struct RObject*)((v).value.p)) /* obsolete macro mrb_object; will be removed soon */ #define mrb_object(o) mrb_obj_ptr(o) -#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_MAIN) +#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_VOIDP) #define mrb_special_const_p(x) mrb_immediate_p(x) static inline mrb_value 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: @@ -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; |
