Module: AllocTrack

Defined in:
ext/alloc_track/alloc_track.c

Defined Under Namespace

Classes: Error, LimitExceeded

Class Method Summary collapse

Class Method Details

.allocObject



126
127
128
129
130
131
# File 'ext/alloc_track/alloc_track.c', line 126

static VALUE
alloc()
{
  validate_started();
  return LL2NUM(get_collector(rb_thread_current())->current_alloc);
}

.deltaObject



140
141
142
143
144
145
146
147
# File 'ext/alloc_track/alloc_track.c', line 140

static VALUE
delta()
{
  stat_collector_t *c;
  validate_started();
  c = get_collector(rb_thread_current());
  return LL2NUM(c->current_alloc - c->current_free);
}

.freeObject



133
134
135
136
137
138
# File 'ext/alloc_track/alloc_track.c', line 133

static VALUE
_free()
{
  validate_started();
  return LL2NUM(get_collector(rb_thread_current())->current_free);
}

.limit(num_allocs) ⇒ Object



175
176
177
178
179
180
181
182
183
184
185
186
# File 'ext/alloc_track/alloc_track.c', line 175

static VALUE
limit(VALUE self, VALUE num_allocs)
{
  if (!rb_block_given_p()) {
    rb_raise(rb_eArgError, "block required");
  }
  if (!RB_TYPE_P(num_allocs, T_FIXNUM)) {
    rb_raise(rb_eArgError, "limit() must be passed a number");
  }
  validate_stopped();
  return rb_ensure(do_limit, num_allocs, ensure_stopped, Qnil);
}

.max_deltaObject



149
150
151
152
153
154
155
156
# File 'ext/alloc_track/alloc_track.c', line 149

static VALUE
max_delta()
{
  stat_collector_t *c;
  validate_started();
  c = get_collector(rb_thread_current());
  return LL2NUM(c->max_delta);
}

.startObject



106
107
108
109
110
111
112
113
114
115
116
# File 'ext/alloc_track/alloc_track.c', line 106

static VALUE
start()
{
  validate_stopped();
  /* TODO: support multiple running trackers */
  if (root_collector) {
    rb_raise(eAllocTrackError, "allocation tracker already running on another thread");
  }
  add_collector(rb_thread_current());
  return Qnil;
}

.started?Boolean

Returns:

  • (Boolean)


84
85
86
87
88
# File 'ext/alloc_track/alloc_track.c', line 84

static VALUE
started()
{
  return get_collector(rb_thread_current()) ? Qtrue : Qfalse;
}

.stopObject



118
119
120
121
122
123
124
# File 'ext/alloc_track/alloc_track.c', line 118

static VALUE
stop()
{
  validate_started();
  remove_collector(rb_thread_current());
  return Qnil;
}