12 #include "internal/serial.h"
13 #include "internal/static_assert.h"
21 #ifdef rb_method_basic_definition_p
22 # undef rb_method_basic_definition_p
31 enum method_missing_reason {
32 MISSING_NOENTRY = 0x00,
33 MISSING_PRIVATE = 0x01,
34 MISSING_PROTECTED = 0x02,
38 MISSING_MISSING = 0x20,
43 rb_serial_t rb_next_class_serial(
void);
47 void rb_vm_mark(
void *ptr);
48 void rb_vm_each_stack_value(
void *ptr,
void (*cb)(
VALUE,
void*),
void *ctx);
49 PUREFUNC(
VALUE rb_vm_top_self(
void));
50 void rb_vm_inc_const_missing_count(
void);
51 const void **rb_vm_get_insns_address_table(
void);
52 VALUE rb_source_location(
int *pline);
53 const char *rb_source_location_cstr(
int *pline);
54 MJIT_STATIC
void rb_vm_pop_cfunc_frame(
void);
55 int rb_vm_add_root_module(
VALUE module);
56 void rb_vm_check_redefinition_by_prepend(
VALUE klass);
57 int rb_vm_check_optimizable_mid(
VALUE mid);
59 MJIT_STATIC
VALUE ruby_vm_special_exception_copy(
VALUE);
60 PUREFUNC(
st_table *rb_vm_fstring_table(
void));
62 MJIT_SYMBOL_EXPORT_BEGIN
64 MJIT_SYMBOL_EXPORT_END
67 VALUE rb_current_realfilepath(
void);
71 rb_check_funcall_hook *hook,
VALUE arg);
72 VALUE rb_check_funcall_with_hook_kw(
VALUE recv,
ID mid,
int argc,
const VALUE *argv,
73 rb_check_funcall_hook *hook,
VALUE arg,
int kw_splat);
82 void rb_check_stack_overflow(
void);
89 MJIT_SYMBOL_EXPORT_BEGIN
91 MJIT_SYMBOL_EXPORT_END
95 MJIT_SYMBOL_EXPORT_BEGIN
97 MJIT_SYMBOL_EXPORT_END
100 void rb_print_backtrace(
void);
103 VALUE rb_vm_thread_backtrace(
int argc,
const VALUE *argv,
VALUE thval);
104 VALUE rb_vm_thread_backtrace_locations(
int argc,
const VALUE *argv,
VALUE thval);
108 void rb_backtrace_print_as_bugreport(
void);
109 int rb_backtrace_p(
VALUE obj);
111 VALUE rb_backtrace_to_location_ary(
VALUE obj);
113 int rb_frame_info_p(
VALUE obj);
114 int rb_get_node_id_from_frame_info(
VALUE obj);
117 MJIT_SYMBOL_EXPORT_BEGIN
119 void rb_backtrace_use_iseq_first_lineno_for_last_location(
VALUE self);
120 MJIT_SYMBOL_EXPORT_END
122 #define RUBY_DTRACE_CREATE_HOOK(name, arg) \
123 RUBY_DTRACE_HOOK(name##_CREATE, arg)
124 #define RUBY_DTRACE_HOOK(name, arg) \
126 if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { \
128 const char *dtrace_file = rb_source_location_cstr(&dtrace_line); \
129 if (!dtrace_file) dtrace_file = ""; \
130 RUBY_DTRACE_##name(arg, dtrace_file, dtrace_line); \
VALUE rb_make_backtrace(void)
Creates the good old fashioned array-of-strings style backtrace info.
rb_block_call_func * rb_block_call_func_t
Shorthand type that represents an iterator-written-in-C function pointer.
VALUE type(ANYARGS)
ANYARGS-ed function type.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.
ruby_value_type
C-level type of an object.