summaryrefslogtreecommitdiff
path: root/internal.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-18 19:57:53 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-18 19:57:53 +0000
commit05704f51fb2d3e183535fa52fd43ac0b7227cdb7 (patch)
tree09e291c644eab9ffaa7e743176fcc4bd6ff0381e /internal.h
parent33aaa89a79b4969655b1c4ee1ba52f6b22d17a4a (diff)
* internal.h (IMEMO_DEBUG): added.
* internal.h: remove unused FL_IMEMO_MARK_V[0-3]. * gc.c (rb_imemo_new_debug): added. * gc.c (obj_info): show imemo type name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'internal.h')
-rw-r--r--internal.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/internal.h b/internal.h
index e6335c06ee..f8b54c0058 100644
--- a/internal.h
+++ b/internal.h
@@ -515,11 +515,9 @@ RCLASS_SET_SUPER(VALUE klass, VALUE super)
}
/* IMEMO: Internal memo object */
-/* FL_USER0, FL_USER1, FL_USER2: type */
-#define FL_IMEMO_MARK_V0 FL_USER6
-#define FL_IMEMO_MARK_V1 FL_USER3
-#define FL_IMEMO_MARK_V2 FL_USER4
-#define FL_IMEMO_MARK_V3 FL_USER5
+#ifndef IMEMO_DEBUG
+#define IMEMO_DEBUG 0
+#endif
struct RIMemo {
VALUE flags;
@@ -587,7 +585,11 @@ struct vm_ifunc {
ID id;
};
+#if IMEMO_DEBUG
+#define IFUNC_NEW(a, b) ((struct vm_ifunc *)rb_imemo_new_debug(imemo_ifunc, (VALUE)(a), (VALUE)(b), 0, 0, __FILE__, __LINE__))
+#else
#define IFUNC_NEW(a, b) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), 0, 0))
+#endif
/* MEMO */
@@ -608,7 +610,12 @@ struct MEMO {
#define MEMO_V2_SET(m, v) RB_OBJ_WRITE((memo), &(memo)->v2, (v))
#define MEMO_CAST(m) ((struct MEMO *)m)
+
+#if IMEMO_DEBUG
+#define MEMO_NEW(a, b, c) ((struct MEMO *)rb_imemo_new_debug(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0, __FILE__, __LINE__))
+#else
#define MEMO_NEW(a, b, c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
+#endif
#define type_roomof(x, y) ((sizeof(x) + sizeof(y) - 1) / sizeof(y))
#define MEMO_FOR(type, value) ((type *)RARRAY_PTR(value))
@@ -1288,6 +1295,10 @@ size_t rb_obj_memsize_of(VALUE);
size_t rb_obj_gc_flags(VALUE, ID[], size_t);
void rb_gc_mark_values(long n, const VALUE *values);
+#if IMEMO_DEBUG
+VALUE rb_imemo_new_debug(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0, const char *file, int line);
+#endif
+
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
RUBY_SYMBOL_EXPORT_END