allocations 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/liballocations/liballocations.c +0 -35
- data/lib/allocations/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb4fcbc39ec1eab5fe4831d66b372a71ea0d0d4a
|
4
|
+
data.tar.gz: 5abee9e95a64a77c97efce6ee84fc3423f83f4a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c03ec7031bd717eac4bec3ff0939fec83549bec9eafa8696d76898fbe66d5a1d2809a63fce601b0007a5b4723d3029565eee001b48bcd76a9029144a51b9fe4e
|
7
|
+
data.tar.gz: d3eaf46688c14434715dc5b567a4da61eb7435e2e4c4bd904d27e357311a20088567d70d517fe0665148e0329bfe374513682f51f5dab4bc5f70edcdf0617c47
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
st_table *object_counts;
|
4
4
|
|
5
|
-
VALUE mutex;
|
6
|
-
|
7
5
|
VALUE allocation_tracer;
|
8
6
|
VALUE free_tracer;
|
9
7
|
|
@@ -25,12 +23,8 @@ void newobj_callback(VALUE tracepoint, void* data) {
|
|
25
23
|
return;
|
26
24
|
}
|
27
25
|
|
28
|
-
rb_mutex_lock(mutex);
|
29
|
-
|
30
26
|
st_lookup(object_counts, (st_data_t) klass, &count);
|
31
27
|
st_insert(object_counts, (st_data_t) klass, count + 1);
|
32
|
-
|
33
|
-
rb_mutex_unlock(mutex);
|
34
28
|
}
|
35
29
|
|
36
30
|
/**
|
@@ -47,8 +41,6 @@ void freeobj_callback(VALUE tracepoint, void* data) {
|
|
47
41
|
VALUE obj = rb_tracearg_object(trace_arg);
|
48
42
|
VALUE klass = RBASIC_CLASS(obj);
|
49
43
|
|
50
|
-
rb_mutex_lock(mutex);
|
51
|
-
|
52
44
|
if ( st_lookup(object_counts, (st_data_t) klass, &count) ) {
|
53
45
|
if ( count > 0 && (count - 1) > 0) {
|
54
46
|
st_insert(object_counts, (st_data_t) klass, count - 1);
|
@@ -58,8 +50,6 @@ void freeobj_callback(VALUE tracepoint, void* data) {
|
|
58
50
|
st_delete(object_counts, (st_data_t*) &klass, NULL);
|
59
51
|
}
|
60
52
|
}
|
61
|
-
|
62
|
-
rb_mutex_unlock(mutex);
|
63
53
|
}
|
64
54
|
|
65
55
|
/**
|
@@ -84,18 +74,12 @@ VALUE allocations_to_hash(VALUE self) {
|
|
84
74
|
st_table *local_counts;
|
85
75
|
VALUE hash;
|
86
76
|
|
87
|
-
rb_mutex_lock(mutex);
|
88
|
-
|
89
77
|
if ( !object_counts ) {
|
90
|
-
rb_mutex_unlock(mutex);
|
91
|
-
|
92
78
|
return rb_hash_new();
|
93
79
|
}
|
94
80
|
|
95
81
|
local_counts = st_copy(object_counts);
|
96
82
|
|
97
|
-
rb_mutex_unlock(mutex);
|
98
|
-
|
99
83
|
hash = rb_hash_new();
|
100
84
|
|
101
85
|
st_foreach(local_counts, each_count, (st_data_t) hash);
|
@@ -112,11 +96,7 @@ VALUE allocations_to_hash(VALUE self) {
|
|
112
96
|
* Allocations.start -> nil
|
113
97
|
*/
|
114
98
|
VALUE allocations_start(VALUE self) {
|
115
|
-
rb_mutex_lock(mutex);
|
116
|
-
|
117
99
|
if ( rb_ivar_get(self, id_enabled) == Qtrue ) {
|
118
|
-
rb_mutex_unlock(mutex);
|
119
|
-
|
120
100
|
return Qnil;
|
121
101
|
}
|
122
102
|
|
@@ -124,8 +104,6 @@ VALUE allocations_start(VALUE self) {
|
|
124
104
|
|
125
105
|
rb_ivar_set(self, id_enabled, Qtrue);
|
126
106
|
|
127
|
-
rb_mutex_unlock(mutex);
|
128
|
-
|
129
107
|
rb_tracepoint_enable(allocation_tracer);
|
130
108
|
rb_tracepoint_enable(free_tracer);
|
131
109
|
|
@@ -139,11 +117,7 @@ VALUE allocations_start(VALUE self) {
|
|
139
117
|
* Allocations.stop -> nil
|
140
118
|
*/
|
141
119
|
VALUE allocations_stop(VALUE self) {
|
142
|
-
rb_mutex_lock(mutex);
|
143
|
-
|
144
120
|
if ( rb_ivar_get(self, id_enabled) != Qtrue ) {
|
145
|
-
rb_mutex_unlock(mutex);
|
146
|
-
|
147
121
|
return Qnil;
|
148
122
|
}
|
149
123
|
|
@@ -158,8 +132,6 @@ VALUE allocations_stop(VALUE self) {
|
|
158
132
|
|
159
133
|
rb_ivar_set(self, id_enabled, Qfalse);
|
160
134
|
|
161
|
-
rb_mutex_unlock(mutex);
|
162
|
-
|
163
135
|
return Qnil;
|
164
136
|
}
|
165
137
|
|
@@ -172,14 +144,10 @@ VALUE allocations_stop(VALUE self) {
|
|
172
144
|
VALUE allocations_enabled_p(VALUE self) {
|
173
145
|
VALUE enabled = Qfalse;
|
174
146
|
|
175
|
-
rb_mutex_lock(mutex);
|
176
|
-
|
177
147
|
if ( rb_ivar_get(self, id_enabled) == Qtrue ) {
|
178
148
|
enabled = Qtrue;
|
179
149
|
}
|
180
150
|
|
181
|
-
rb_mutex_unlock(mutex);
|
182
|
-
|
183
151
|
return enabled;
|
184
152
|
}
|
185
153
|
|
@@ -192,8 +160,6 @@ void Init_liballocations() {
|
|
192
160
|
free_tracer = rb_tracepoint_new(Qnil, RUBY_INTERNAL_EVENT_FREEOBJ,
|
193
161
|
freeobj_callback, NULL);
|
194
162
|
|
195
|
-
mutex = rb_mutex_new();
|
196
|
-
|
197
163
|
id_enabled = rb_intern("enabled");
|
198
164
|
|
199
165
|
rb_define_singleton_method(mAllocations, "to_hash", allocations_to_hash, 0);
|
@@ -201,7 +167,6 @@ void Init_liballocations() {
|
|
201
167
|
rb_define_singleton_method(mAllocations, "stop", allocations_stop, 0);
|
202
168
|
rb_define_singleton_method(mAllocations, "enabled?", allocations_enabled_p, 0);
|
203
169
|
|
204
|
-
rb_define_const(mAllocations, "MUTEX", mutex);
|
205
170
|
rb_define_const(mAllocations, "ALLOCATION_TRACER", allocation_tracer);
|
206
171
|
rb_define_const(mAllocations, "FREE_TRACER", free_tracer);
|
207
172
|
}
|
data/lib/allocations/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allocations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yorick Peterse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
103
|
rubyforge_project:
|
104
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.2.5
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: Tracking of retained objects in CRuby
|