From 3569723ab36d806ca2dbdbd8475b45237333769d Mon Sep 17 00:00:00 2001 From: Jun Hiroe Date: Tue, 5 Aug 2014 23:15:06 +0900 Subject: Refactor obj_free() in gc.c --- include/mruby/array.h | 3 +++ src/array.c | 3 --- src/gc.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mruby/array.h b/include/mruby/array.h index 9f1ef4d2f..c984c16a7 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -34,6 +34,9 @@ struct RArray { #define RARRAY_LEN(a) (RARRAY(a)->len) #define RARRAY_PTR(a) (RARRAY(a)->ptr) #define MRB_ARY_SHARED 256 +#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED) +#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED) +#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED) void mrb_ary_decref(mrb_state*, mrb_shared_array*); MRB_API void mrb_ary_modify(mrb_state*, struct RArray*); diff --git a/src/array.c b/src/array.c index d6ee98503..d4a82c1e6 100644 --- a/src/array.c +++ b/src/array.c @@ -15,9 +15,6 @@ #define ARY_SHRINK_RATIO 5 /* must be larger than 2 */ #define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value)) #define ARY_MAX_SIZE ((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? (mrb_int)ARY_C_MAX_SIZE : MRB_INT_MAX-1) -#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED) -#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED) -#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED) static inline mrb_value ary_elt(mrb_value ary, mrb_int offset) diff --git a/src/gc.c b/src/gc.c index 0a93993a2..142b73318 100644 --- a/src/gc.c +++ b/src/gc.c @@ -648,7 +648,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj) break; case MRB_TT_ARRAY: - if (obj->flags & MRB_ARY_SHARED) + if (ARY_SHARED_P(obj)) mrb_ary_decref(mrb, ((struct RArray*)obj)->aux.shared); else mrb_free(mrb, ((struct RArray*)obj)->ptr); -- cgit v1.2.3