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
31enum method_missing_reason {
32 MISSING_NOENTRY = 0x00,
33 MISSING_PRIVATE = 0x01,
34 MISSING_PROTECTED = 0x02,
38 MISSING_MISSING = 0x20,
43rb_serial_t rb_next_class_serial(
void);
46VALUE rb_obj_is_thread(VALUE obj);
47void rb_vm_mark(
void *ptr);
48void rb_vm_each_stack_value(
void *ptr,
void (*cb)(VALUE,
void*),
void *ctx);
49PUREFUNC(VALUE rb_vm_top_self(
void));
50void rb_vm_inc_const_missing_count(
void);
51const void **rb_vm_get_insns_address_table(
void);
52VALUE rb_source_location(
int *pline);
53const char *rb_source_location_cstr(
int *pline);
54MJIT_STATIC
void rb_vm_pop_cfunc_frame(
void);
55int rb_vm_add_root_module(VALUE module);
56void rb_vm_check_redefinition_by_prepend(VALUE klass);
57int rb_vm_check_optimizable_mid(VALUE mid);
58VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
59MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE);
60PUREFUNC(
st_table *rb_vm_fstring_table(
void));
62MJIT_SYMBOL_EXPORT_BEGIN
67VALUE rb_current_realfilepath(
void);
68VALUE rb_check_block_call(VALUE, ID,
int,
const VALUE *, rb_block_call_func_t, VALUE);
69typedef void rb_check_funcall_hook(
int, VALUE, ID,
int,
const VALUE *, VALUE);
70VALUE rb_check_funcall_with_hook(VALUE recv, ID mid,
int argc,
const VALUE *argv,
71 rb_check_funcall_hook *hook, VALUE arg);
72VALUE 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);
74const char *rb_type_str(
enum ruby_value_type
type);
75VALUE rb_check_funcall_default(VALUE, ID,
int,
const VALUE *, VALUE);
76VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE,
int,
const VALUE*,
int);
77VALUE rb_yield_1(VALUE val);
78VALUE rb_yield_force_blockarg(VALUE values);
79VALUE rb_lambda_call(VALUE obj, ID mid,
int argc,
const VALUE *argv,
80 rb_block_call_func_t bl_proc,
int min_argc,
int max_argc,
82void rb_check_stack_overflow(
void);
85VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
86VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
89MJIT_SYMBOL_EXPORT_BEGIN
95MJIT_SYMBOL_EXPORT_BEGIN
100void rb_print_backtrace(
void);
103VALUE rb_vm_thread_backtrace(
int argc,
const VALUE *argv, VALUE thval);
104VALUE rb_vm_thread_backtrace_locations(
int argc,
const VALUE *argv, VALUE thval);
108void rb_backtrace_print_as_bugreport(
void);
109int rb_backtrace_p(VALUE obj);
110VALUE rb_backtrace_to_str_ary(VALUE obj);
111VALUE rb_backtrace_to_location_ary(VALUE obj);
112void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
113int rb_frame_info_p(VALUE obj);
114int rb_get_node_id_from_frame_info(VALUE obj);
115const struct rb_iseq_struct *rb_get_iseq_from_frame_info(VALUE obj);
117MJIT_SYMBOL_EXPORT_BEGIN
119void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE
self);
120MJIT_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.
VALUE type(ANYARGS)
ANYARGS-ed function type.