summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-08-06 11:47:28 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-08-06 11:47:28 +0900
commit1ff32cfb3abd06ffabb30d834e316699053b92f6 (patch)
tree4d901f7c35a3d4a08aecc1e14b57aa05fe5b3eb7
parentfce644df5913ca680c304e48e36eea915e386ab1 (diff)
parent3569723ab36d806ca2dbdbd8475b45237333769d (diff)
downloadmruby-1ff32cfb3abd06ffabb30d834e316699053b92f6.tar.gz
mruby-1ff32cfb3abd06ffabb30d834e316699053b92f6.zip
Merge pull request #2509 from suzukaze/refactor-gc
Refactor obj_free() in gc.c
-rw-r--r--include/mruby/array.h3
-rw-r--r--src/array.c3
-rw-r--r--src/gc.c2
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);