summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-24 06:46:44 (GMT)
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-24 06:46:44 (GMT)
commit9e1624cfe8880fc018e34327c77669f2f4e5b100 (patch)
tree1f1ec71af916b8b0472ab9193d6d87b5bd8f41ce /array.c
parent144e06700705a3f067582682567bc77b429c4fca (diff)
Add debug counters.
* debug_counter.h: add the following counters to measure object types. obj_free: freed count obj_str_ptr: freed count of Strings they have extra buff. obj_str_embed: freed count of Strings they don't have extra buff. obj_str_shared: freed count of Strings they have shared extra buff. obj_str_nofree: freed count of Strings they are marked as nofree. obj_str_fstr: freed count of Strings they are marked as fstr. obj_ary_ptr: freed count of Arrays they have extra buff. obj_ary_embed: freed count of Arrays they don't have extra buff. obj_obj_ptr: freed count of Objects (T_OBJECT) they have extra buff. obj_obj_embed: freed count of Objects they don't have extra buff. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/array.c b/array.c
index cff6d69..0775e82 100644
--- a/array.c
+++ b/array.c
@@ -16,6 +16,7 @@
#include "ruby/st.h"
#include "probes.h"
#include "id.h"
+#include "debug_counter.h"
#ifndef ARRAY_DEBUG
# define NDEBUG
@@ -553,8 +554,12 @@ void
rb_ary_free(VALUE ary)
{
if (ARY_OWNS_HEAP_P(ary)) {
+ RB_DEBUG_COUNTER_INC(obj_ary_ptr);
ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
}
+ else {
+ RB_DEBUG_COUNTER_INC(obj_ary_embed);
+ }
}
RUBY_FUNC_EXPORTED size_t