Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Data Structures | Macros | Typedefs | Enumerations | Functions
vm_trace.c File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

#include "eval_intern.h"
#include "internal.h"
#include "internal/hash.h"
#include "internal/symbol.h"
#include "iseq.h"
#include "mjit.h"
#include "ruby/debug.h"
#include "vm_core.h"
#include "ruby/ractor.h"
#include "builtin.h"
#include "trace_point.rbinc"
Include dependency graph for vm_trace.c:

Go to the source code of this file.

Data Structures

struct  rb_event_hook_struct
 
struct  rb_tp_struct
 
struct  rb_postponed_job_struct
 
struct  rb_workqueue_job
 

Macros

#define MAX_EVENT_NUM   32
 
#define MATCH_ANY_FILTER_TH   ((rb_thread_t *)1)
 
#define C(name, NAME)   case RUBY_EVENT_##NAME: CONST_ID(id, #name); return id;
 
#define C(name, NAME)   CONST_ID(id, #name); if (sym == ID2SYM(id)) return RUBY_EVENT_##NAME
 
#define MAX_POSTPONED_JOB   1000
 
#define MAX_POSTPONED_JOB_SPECIAL_ADDITION   24
 

Typedefs

typedef struct rb_event_hook_struct rb_event_hook_t
 
typedef void(* rb_event_hook_raw_arg_func_t) (VALUE data, const rb_trace_arg_t *arg)
 
typedef struct rb_tp_struct rb_tp_t
 
typedef struct rb_postponed_job_struct rb_postponed_job_t
 

Enumerations

enum  postponed_job_register_result { PJRR_SUCCESS = 0, PJRR_FULL = 1, PJRR_INTERRUPTED = 2 }
 

Functions

void rb_hook_list_mark (rb_hook_list_t *hooks)
 
void rb_hook_list_free (rb_hook_list_t *hooks)
 
void rb_clear_attr_ccs (void)
 
void rb_thread_add_event_hook (VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
 
void rb_add_event_hook (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
 
void rb_thread_add_event_hook2 (VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flags)
 
void rb_add_event_hook2 (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flags)
 
int rb_thread_remove_event_hook (VALUE thval, rb_event_hook_func_t func)
 
int rb_thread_remove_event_hook_with_data (VALUE thval, rb_event_hook_func_t func, VALUE data)
 
int rb_remove_event_hook (rb_event_hook_func_t func)
 
int rb_remove_event_hook_with_data (rb_event_hook_func_t func, VALUE data)
 
void rb_ec_clear_current_thread_trace_func (const rb_execution_context_t *ec)
 
void rb_ec_clear_all_trace_func (const rb_execution_context_t *ec)
 
void rb_exec_event_hooks (rb_trace_arg_t *trace_arg, rb_hook_list_t *hooks, int pop_p)
 
VALUE rb_suppress_tracing (VALUE(*func)(VALUE), VALUE arg)
 
struct rb_trace_arg_structrb_tracearg_from_tracepoint (VALUE tpval)
 
rb_event_flag_t rb_tracearg_event_flag (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_event (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_lineno (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_path (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_parameters (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_method_id (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_callee_id (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_defined_class (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_binding (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_self (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_return_value (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_raised_exception (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_eval_script (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_instruction_sequence (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracearg_object (rb_trace_arg_t *trace_arg)
 
VALUE rb_tracepoint_enable (VALUE tpval)
 
const rb_method_definition_trb_method_def (VALUE method)
 
VALUE rb_tracepoint_disable (VALUE tpval)
 
void rb_hook_list_connect_tracepoint (VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line)
 
void rb_hook_list_remove_tracepoint (rb_hook_list_t *list, VALUE tpval)
 
VALUE rb_tracepoint_enabled_p (VALUE tpval)
 
VALUE rb_tracepoint_new (VALUE target_thval, rb_event_flag_t events, void(*func)(VALUE, void *), void *data)
 
void Init_vm_trace (void)
 
void Init_vm_postponed_job (void)
 
int rb_postponed_job_register (unsigned int flags, rb_postponed_job_func_t func, void *data)
 
int rb_postponed_job_register_one (unsigned int flags, rb_postponed_job_func_t func, void *data)
 
int rb_workqueue_register (unsigned flags, rb_postponed_job_func_t func, void *data)
 
void rb_postponed_job_flush (rb_vm_t *vm)
 

Macro Definition Documentation

◆ C [1/2]

#define C (   name,
  NAME 
)    case RUBY_EVENT_##NAME: CONST_ID(id, #name); return id;

◆ C [2/2]

#define C (   name,
  NAME 
)    CONST_ID(id, #name); if (sym == ID2SYM(id)) return RUBY_EVENT_##NAME

◆ MATCH_ANY_FILTER_TH

#define MATCH_ANY_FILTER_TH   ((rb_thread_t *)1)

Definition at line 226 of file vm_trace.c.

◆ MAX_EVENT_NUM

#define MAX_EVENT_NUM   32

Definition at line 53 of file vm_trace.c.

◆ MAX_POSTPONED_JOB

#define MAX_POSTPONED_JOB   1000

Definition at line 1558 of file vm_trace.c.

◆ MAX_POSTPONED_JOB_SPECIAL_ADDITION

#define MAX_POSTPONED_JOB_SPECIAL_ADDITION   24

Definition at line 1559 of file vm_trace.c.

Typedef Documentation

◆ rb_event_hook_raw_arg_func_t

typedef void(* rb_event_hook_raw_arg_func_t) (VALUE data, const rb_trace_arg_t *arg)

Definition at line 51 of file vm_trace.c.

◆ rb_event_hook_t

◆ rb_postponed_job_t

◆ rb_tp_t

typedef struct rb_tp_struct rb_tp_t

Enumeration Type Documentation

◆ postponed_job_register_result

Enumerator
PJRR_SUCCESS 
PJRR_FULL 
PJRR_INTERRUPTED 

Definition at line 1575 of file vm_trace.c.

Function Documentation

◆ Init_vm_postponed_job()

void Init_vm_postponed_job ( void  )

◆ Init_vm_trace()

void Init_vm_trace ( void  )

Definition at line 1542 of file vm_trace.c.

References rb_define_global_function.

◆ rb_add_event_hook()

void rb_add_event_hook ( rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
)

Definition at line 168 of file vm_trace.c.

◆ rb_add_event_hook2()

void rb_add_event_hook2 ( rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data,
rb_event_hook_flag_t  hook_flags 
)

Definition at line 181 of file vm_trace.c.

◆ rb_clear_attr_ccs()

void rb_clear_attr_ccs ( void  )

Definition at line 3431 of file iseq.c.

References rb_objspace_each_objects().

◆ rb_ec_clear_all_trace_func()

void rb_ec_clear_all_trace_func ( const rb_execution_context_t ec)

Definition at line 290 of file vm_trace.c.

◆ rb_ec_clear_current_thread_trace_func()

void rb_ec_clear_current_thread_trace_func ( const rb_execution_context_t ec)

Definition at line 284 of file vm_trace.c.

Referenced by ruby_options().

◆ rb_exec_event_hooks()

void rb_exec_event_hooks ( rb_trace_arg_t trace_arg,
rb_hook_list_t hooks,
int  pop_p 
)

◆ rb_hook_list_connect_tracepoint()

void rb_hook_list_connect_tracepoint ( VALUE  target,
rb_hook_list_t list,
VALUE  tpval,
unsigned int  target_line 
)

Definition at line 1269 of file vm_trace.c.

◆ rb_hook_list_free()

void rb_hook_list_free ( rb_hook_list_t hooks)

Definition at line 69 of file vm_trace.c.

References rb_hook_list_struct::need_clean, and TRUE.

◆ rb_hook_list_mark()

void rb_hook_list_mark ( rb_hook_list_t hooks)

◆ rb_hook_list_remove_tracepoint()

void rb_hook_list_remove_tracepoint ( rb_hook_list_t list,
VALUE  tpval 
)

◆ rb_method_def()

const rb_method_definition_t* rb_method_def ( VALUE  method)

Definition at line 2816 of file proc.c.

References TypedData_Get_Struct.

◆ rb_postponed_job_flush()

void rb_postponed_job_flush ( rb_vm_t vm)

◆ rb_postponed_job_register()

int rb_postponed_job_register ( unsigned int  flags,
rb_postponed_job_func_t  func,
void *  data 
)

Definition at line 1611 of file vm_trace.c.

References GET_EC.

◆ rb_postponed_job_register_one()

int rb_postponed_job_register_one ( unsigned int  flags,
rb_postponed_job_func_t  func,
void *  data 
)

Definition at line 1630 of file vm_trace.c.

References GET_EC.

◆ rb_remove_event_hook()

int rb_remove_event_hook ( rb_event_hook_func_t  func)

Definition at line 272 of file vm_trace.c.

Referenced by rb_reset_coverages().

◆ rb_remove_event_hook_with_data()

int rb_remove_event_hook_with_data ( rb_event_hook_func_t  func,
VALUE  data 
)

Definition at line 278 of file vm_trace.c.

◆ rb_suppress_tracing()

VALUE rb_suppress_tracing ( VALUE(*)(VALUE func,
VALUE  arg 
)

Definition at line 425 of file vm_trace.c.

◆ rb_thread_add_event_hook()

void rb_thread_add_event_hook ( VALUE  thval,
rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
)

Definition at line 162 of file vm_trace.c.

◆ rb_thread_add_event_hook2()

void rb_thread_add_event_hook2 ( VALUE  thval,
rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data,
rb_event_hook_flag_t  hook_flags 
)

Definition at line 175 of file vm_trace.c.

◆ rb_thread_remove_event_hook()

int rb_thread_remove_event_hook ( VALUE  thval,
rb_event_hook_func_t  func 
)

Definition at line 260 of file vm_trace.c.

◆ rb_thread_remove_event_hook_with_data()

int rb_thread_remove_event_hook_with_data ( VALUE  thval,
rb_event_hook_func_t  func,
VALUE  data 
)

Definition at line 266 of file vm_trace.c.

◆ rb_tracearg_binding()

VALUE rb_tracearg_binding ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_callee_id()

VALUE rb_tracearg_callee_id ( rb_trace_arg_t trace_arg)

Definition at line 914 of file vm_trace.c.

◆ rb_tracearg_defined_class()

VALUE rb_tracearg_defined_class ( rb_trace_arg_t trace_arg)

Definition at line 921 of file vm_trace.c.

◆ rb_tracearg_eval_script()

VALUE rb_tracearg_eval_script ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_event()

VALUE rb_tracearg_event ( rb_trace_arg_t trace_arg)

Definition at line 819 of file vm_trace.c.

References ID2SYM.

◆ rb_tracearg_event_flag()

rb_event_flag_t rb_tracearg_event_flag ( rb_trace_arg_t trace_arg)

Definition at line 813 of file vm_trace.c.

References rb_trace_arg_struct::event.

◆ rb_tracearg_from_tracepoint()

struct rb_trace_arg_struct* rb_tracearg_from_tracepoint ( VALUE  tpval)

Definition at line 807 of file vm_trace.c.

◆ rb_tracearg_instruction_sequence()

VALUE rb_tracearg_instruction_sequence ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_lineno()

VALUE rb_tracearg_lineno ( rb_trace_arg_t trace_arg)

Definition at line 833 of file vm_trace.c.

◆ rb_tracearg_method_id()

VALUE rb_tracearg_method_id ( rb_trace_arg_t trace_arg)

Definition at line 907 of file vm_trace.c.

◆ rb_tracearg_object()

VALUE rb_tracearg_object ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_parameters()

VALUE rb_tracearg_parameters ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_path()

VALUE rb_tracearg_path ( rb_trace_arg_t trace_arg)

Definition at line 839 of file vm_trace.c.

◆ rb_tracearg_raised_exception()

VALUE rb_tracearg_raised_exception ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_return_value()

VALUE rb_tracearg_return_value ( rb_trace_arg_t trace_arg)

◆ rb_tracearg_self()

VALUE rb_tracearg_self ( rb_trace_arg_t trace_arg)

Definition at line 942 of file vm_trace.c.

References rb_trace_arg_struct::self.

◆ rb_tracepoint_disable()

VALUE rb_tracepoint_disable ( VALUE  tpval)

Definition at line 1244 of file vm_trace.c.

◆ rb_tracepoint_enable()

VALUE rb_tracepoint_enable ( VALUE  tpval)

Definition at line 1136 of file vm_trace.c.

◆ rb_tracepoint_enabled_p()

VALUE rb_tracepoint_enabled_p ( VALUE  tpval)

Definition at line 1358 of file vm_trace.c.

◆ rb_tracepoint_new()

VALUE rb_tracepoint_new ( VALUE  target_thval,
rb_event_flag_t  events,
void(*)(VALUE, void *)  func,
void *  data 
)

Definition at line 1418 of file vm_trace.c.

References NULL, and RTEST.

◆ rb_workqueue_register()

int rb_workqueue_register ( unsigned  flags,
rb_postponed_job_func_t  func,
void *  data 
)