From 0c52112dd41a040a77bbb4dec339ac73da4992b7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 24 Aug 2017 23:12:08 +0900 Subject: Keep `Range` class in `mrb_state` structure for performance. --- src/range.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/range.c') diff --git a/src/range.c b/src/range.c index 2cb6f2361..eb9a9c61f 100644 --- a/src/range.c +++ b/src/range.c @@ -10,8 +10,6 @@ #include #include -#define RANGE_CLASS (mrb_class_get(mrb, "Range")) - MRB_API struct RRange* mrb_range_ptr(mrb_state *mrb, mrb_value v) { @@ -50,7 +48,7 @@ mrb_range_new(mrb_state *mrb, mrb_value beg, mrb_value end, mrb_bool excl) struct RRange *r; range_check(mrb, beg, end); - r = (struct RRange*)mrb_obj_alloc(mrb, MRB_TT_RANGE, RANGE_CLASS); + r = (struct RRange*)mrb_obj_alloc(mrb, MRB_TT_RANGE, mrb->range_class); r->edges = (mrb_range_edges *)mrb_malloc(mrb, sizeof(mrb_range_edges)); r->edges->beg = beg; r->edges->end = end; @@ -353,7 +351,7 @@ range_eql(mrb_state *mrb, mrb_value range) mrb_get_args(mrb, "o", &obj); if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value(); - if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS)) { + if (!mrb_obj_is_kind_of(mrb, obj, mrb->range_class)) { return mrb_false_value(); } if (mrb_type(obj) != MRB_TT_RANGE) return mrb_false_value(); @@ -423,6 +421,7 @@ mrb_init_range(mrb_state *mrb) struct RClass *r; r = mrb_define_class(mrb, "Range", mrb->object_class); /* 15.2.14 */ + mrb->range_class = r; MRB_SET_INSTANCE_TT(r, MRB_TT_RANGE); mrb_define_method(mrb, r, "begin", mrb_range_beg, MRB_ARGS_NONE()); /* 15.2.14.4.3 */ -- cgit v1.2.3