Class: Ruby::Coverage::Tracer
- Inherits:
-
Object
- Object
- Ruby::Coverage::Tracer
- Defined in:
- ext/ruby/coverage/tracer.c
Instance Method Summary collapse
- #initialize ⇒ Object constructor
- #start ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize ⇒ Object
150 151 152 153 154 155 156 157 158 159 |
# File 'ext/ruby/coverage/tracer.c', line 150
static VALUE Ruby_Coverage_Tracer_initialize(VALUE self)
{
struct Ruby_Coverage_Tracer *tracer;
TypedData_Get_Struct(self, struct Ruby_Coverage_Tracer,
&Ruby_Coverage_Tracer_type, tracer);
RB_OBJ_WRITE(self, &tracer->callback, rb_block_proc());
return self;
}
|
Instance Method Details
#start ⇒ Object
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'ext/ruby/coverage/tracer.c', line 285
static VALUE Ruby_Coverage_Tracer_start(VALUE self)
{
struct Ruby_Coverage_Tracer *tracer;
TypedData_Get_Struct(self, struct Ruby_Coverage_Tracer, &Ruby_Coverage_Tracer_type, tracer);
#ifdef HAVE_RB_TRACEARG_INSTRUCTION_SEQUENCE
rb_add_event_hook2(
(rb_event_hook_func_t)Ruby_Coverage_Tracer_on_script_compiled,
RUBY_EVENT_SCRIPT_COMPILED,
self,
RUBY_EVENT_HOOK_FLAG_SAFE | RUBY_EVENT_HOOK_FLAG_RAW_ARG
);
#else
if (NIL_P(tracer->script_compiled_tracepoint)) {
RB_OBJ_WRITE(self, &tracer->script_compiled_tracepoint,
rb_tracepoint_new(Qnil, RUBY_EVENT_SCRIPT_COMPILED,
Ruby_Coverage_Tracer_on_script_compiled, tracer));
}
rb_tracepoint_enable(tracer->script_compiled_tracepoint);
#endif
rb_add_event_hook(Ruby_Coverage_Tracer_on_line, RUBY_EVENT_LINE, self);
return self;
}
|
#stop ⇒ Object
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# File 'ext/ruby/coverage/tracer.c', line 312
static VALUE Ruby_Coverage_Tracer_stop(VALUE self)
{
struct Ruby_Coverage_Tracer *tracer;
TypedData_Get_Struct(self, struct Ruby_Coverage_Tracer, &Ruby_Coverage_Tracer_type, tracer);
#ifdef HAVE_RB_TRACEARG_INSTRUCTION_SEQUENCE
rb_remove_event_hook_with_data((rb_event_hook_func_t)Ruby_Coverage_Tracer_on_script_compiled, self);
#else
if (!NIL_P(tracer->script_compiled_tracepoint)) {
rb_tracepoint_disable(tracer->script_compiled_tracepoint);
}
#endif
rb_remove_event_hook_with_data(Ruby_Coverage_Tracer_on_line, self);
tracer->last_path_pointer = 0;
RB_OBJ_WRITE(self, &tracer->last_counts, Qnil);
return self;
}
|