summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-10 03:40:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-10 03:40:34 +0000
commit4a0e3ccf28edce47911d0e05482f1e7e0f15f3bf (patch)
tree659213edf328723fe5c15b5855d8e99865cc82cd /gc.c
parent04de1d7dfee3423d906b3fdd5429776d38d309c6 (diff)
gc.c: check rgengc_report argument
* gc.c (rgengc_report): use __VA_ARGS__ if possible. * gc.c (rgengc_report_body): check argument. * gc.c (heap_page_allocate): fix missing argument. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index f2cd75f309..f6ffdbec95 100644
--- a/gc.c
+++ b/gc.c
@@ -692,8 +692,13 @@ static inline void gc_prof_set_heap_info(rb_objspace_t *);
#define gc_prof_record(objspace) (objspace)->profile.current_record
#define gc_prof_enabled(objspace) ((objspace)->profile.run && (objspace)->profile.current_record)
-#define rgengc_report if (RGENGC_DEBUG) rgengc_report_body
-static void rgengc_report_body(int level, rb_objspace_t *objspace, const char *fmt, ...);
+#ifdef HAVE_VA_ARGS_MACRO
+# define rgengc_report(level, objspace, fmt, ...) \
+ if ((level) > RGENGC_DEBUG) {} else rgengc_report_body(level, objspace, fmt, ##__VA_ARGS__)
+#else
+# define rgengc_report if (!(RGENGC_DEBUG)) {} else rgengc_report_body
+#endif
+PRINTF_ARGS(static void rgengc_report_body(int level, rb_objspace_t *objspace, const char *fmt, ...), 3, 4);
static const char * type_name(int type, VALUE obj);
static const char *obj_type_name(VALUE obj);
@@ -1111,7 +1116,7 @@ heap_page_allocate(rb_objspace_t *objspace)
page_body->header.page = page;
for (p = start; p != end; p++) {
- rgengc_report(3, objspace, "assign_heap_page: %p is added to freelist\n");
+ rgengc_report(3, objspace, "assign_heap_page: %p is added to freelist\n", p);
heap_page_add_freeobj(objspace, page, (VALUE)p);
}