Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
|
#include "ruby/internal/config.h"
#include <stddef.h>
#include <signal.h>
#include <stdarg.h>
#include "ruby_assert.h"
#include <setjmp.h>
#include "ruby/internal/stdbool.h"
#include "ccan/list/list.h"
#include "id.h"
#include "internal.h"
#include "internal/array.h"
#include "internal/serial.h"
#include "internal/vm.h"
#include "method.h"
#include "node.h"
#include "ruby/ruby.h"
#include "ruby/st.h"
#include "ruby_atomic.h"
#include "vm_opts.h"
#include "ruby/thread_native.h"
Go to the source code of this file.
Data Structures | |
struct | iseq_inline_constant_cache_entry |
struct | iseq_inline_constant_cache |
struct | iseq_inline_iv_cache_entry |
union | iseq_inline_storage_entry |
struct | rb_calling_info |
struct | rb_iseq_location_struct |
struct | rb_iseq_constant_body |
struct | rb_iseq_constant_body::iseq_insn_info |
struct | rb_iseq_struct |
struct | rb_at_exit_list |
struct | rb_hook_list_struct |
struct | rb_vm_struct |
struct | rb_captured_block |
struct | rb_block |
struct | rb_control_frame_struct |
struct | rb_vm_tag |
struct | rb_vm_protect_tag |
struct | rb_unblock_callback |
struct | rb_ensure_entry |
struct | rb_ensure_list |
struct | rb_waiting_list |
struct | rb_execution_context_struct |
struct | rb_ext_config |
struct | rb_thread_struct |
struct | rb_iseq_new_with_callback_callback_func |
struct | rb_proc_t |
struct | rb_env_t |
struct | rb_binding_t |
struct | rb_trace_arg_struct |
struct | rb_ractor_pub |
#define BASIC_OP_UNREDEFINED_P | ( | op, | |
klass | |||
) | (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0)) |
#define CHECK_VM_STACK_OVERFLOW | ( | cfp, | |
margin | |||
) | CHECK_VM_STACK_OVERFLOW0((cfp), (cfp)->sp, (margin)) |
#define CHECK_VM_STACK_OVERFLOW0 | ( | cfp, | |
sp, | |||
margin | |||
) |
#define CoreDataFromValue | ( | obj, | |
type | |||
) | (type*)DATA_PTR(obj) |
#define EXEC_EVENT_HOOK | ( | ec_, | |
flag_, | |||
self_, | |||
id_, | |||
called_id_, | |||
klass_, | |||
data_ | |||
) | EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0) |
#define EXEC_EVENT_HOOK_AND_POP_FRAME | ( | ec_, | |
flag_, | |||
self_, | |||
id_, | |||
called_id_, | |||
klass_, | |||
data_ | |||
) | EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1) |
#define EXEC_EVENT_HOOK_ORIG | ( | ec_, | |
hooks_, | |||
flag_, | |||
self_, | |||
id_, | |||
called_id_, | |||
klass_, | |||
data_, | |||
pop_p_ | |||
) |
#define GC_GUARDED_PTR | ( | p | ) | VM_TAGGED_PTR_SET((p), 0x01) |
#define GC_GUARDED_PTR_REF | ( | p | ) | VM_TAGGED_PTR_REF((p), 0x03) |
#define GetBindingPtr | ( | obj, | |
ptr | |||
) | GetCoreDataFromValue((obj), rb_binding_t, (ptr)) |
#define GetCoreDataFromValue | ( | obj, | |
type, | |||
ptr | |||
) | ((ptr) = CoreDataFromValue((obj), type)) |
#define GetProcPtr | ( | obj, | |
ptr | |||
) | GetCoreDataFromValue((obj), rb_proc_t, (ptr)) |
#define GetVMPtr | ( | obj, | |
ptr | |||
) | GetCoreDataFromValue((obj), rb_vm_t, (ptr)) |
#define N_OR_RUBY_DEBUG | ( | n | ) | (((n) > 0) ? (n) : RUBY_DEBUG) |
#define rb_vm_register_special_exception | ( | sp, | |
e, | |||
m | |||
) | rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m))) |
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE)) /* 256 KB or 512 KB */ |
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 256 * 1024 * sizeof(VALUE)) |
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */ |
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 128 * 1024 * sizeof(VALUE)) |
#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */ |
#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) /* 8 KB or 16 KB */ |
#define RUBY_VM_INTERRUPTED | ( | ec | ) |
#define RUBY_VM_SET_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK) |
#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK) |
#define RUBY_VM_SET_TERMINATE_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, TERMINATE_INTERRUPT_MASK) |
#define RUBY_VM_SET_TIMER_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK) |
#define RUBY_VM_SET_TRAP_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK) |
#define RUBY_VM_SET_VM_BARRIER_INTERRUPT | ( | ec | ) | ATOMIC_OR((ec)->interrupt_flag, VM_BARRIER_INTERRUPT_MASK) |
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) /* 512 KB or 1024 KB */ |
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE (1024 * 1024 * sizeof(VALUE)) |
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */ |
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 512 * 1024 * sizeof(VALUE)) |
#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) /* 512 KB or 1024 KB */ |
#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) /* 8 KB or 16 KB */ |
#define RUBY_VM_VALID_CONTROL_FRAME_P | ( | cfp, | |
ecfp | |||
) | ((void *)(ecfp) > (void *)(cfp)) |
#define RUBYVM_CFUNC_FRAME_P | ( | cfp | ) | (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC) |
#define SDR | ( | ) | rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp) |
#define SDR2 | ( | cfp | ) | rb_vmdebug_stack_dump_raw(GET_EC(), (cfp)) |
#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack] |
#define TAG_BREAK RUBY_TAG_BREAK |
#define TAG_FATAL RUBY_TAG_FATAL |
#define TAG_MASK RUBY_TAG_MASK |
#define TAG_NEXT RUBY_TAG_NEXT |
#define TAG_NONE RUBY_TAG_NONE |
#define TAG_RAISE RUBY_TAG_RAISE |
#define TAG_REDO RUBY_TAG_REDO |
#define TAG_RETRY RUBY_TAG_RETRY |
#define TAG_RETURN RUBY_TAG_RETURN |
#define TAG_THROW RUBY_TAG_THROW |
#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0) |
#define VM_DEFINECLASS_HAS_SUPERCLASS_P | ( | x | ) | ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS) |
#define VM_DEFINECLASS_SCOPED_P | ( | x | ) | ((x) & VM_DEFINECLASS_FLAG_SCOPED) |
#define VM_DEFINECLASS_TYPE | ( | x | ) | ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK) |
#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE) |
#define VM_GUARDED_PREV_EP | ( | ep | ) | GC_GUARDED_PTR(ep) |
#define VM_TAGGED_PTR_SET | ( | p, | |
tag | |||
) | ((VALUE)(p) | (tag)) |
#define VM_UNREACHABLE | ( | func | ) | UNREACHABLE |
#define VMDEBUG 0 |
#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY) |
typedef const struct rb_callcache* CALL_CACHE |
typedef struct rb_call_data* CALL_DATA |
typedef const struct rb_callinfo* CALL_INFO |
typedef struct iseq_inline_constant_cache* IC |
typedef union iseq_inline_storage_entry* ISE |
typedef struct iseq_inline_iv_cache_entry* IVC |
typedef struct rb_at_exit_list rb_at_exit_list |
typedef const struct rb_builtin_function* RB_BUILTIN |
typedef struct rb_compile_option_struct rb_compile_option_t |
typedef struct rb_control_frame_struct rb_control_frame_t |
typedef struct rb_ensure_entry rb_ensure_entry_t |
typedef struct rb_ensure_list rb_ensure_list_t |
typedef struct rb_execution_context_struct rb_execution_context_t |
typedef struct rb_fiber_struct rb_fiber_t |
typedef struct rb_hook_list_struct rb_hook_list_t |
typedef rb_control_frame_t *FUNC_FASTCALL rb_insn_func_t(rb_execution_context_t *, rb_control_frame_t *) |
typedef struct rb_iseq_location_struct rb_iseq_location_t |
typedef struct rb_ractor_struct rb_ractor_t |
typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) *2+3] |
typedef struct rb_thread_struct rb_thread_t |
typedef void rb_vm_at_exit_func(struct rb_vm_struct *) |
typedef struct rb_vm_struct rb_vm_t |
anonymous enum |
anonymous enum |
enum rb_block_type |
enum rb_thread_status |
enum ruby_basic_operators |
enum ruby_tag_type |
enum ruby_vm_throw_flags |
enum vm_check_match_type |
enum vm_svar_index |
void Init_native_thread | ( | rb_thread_t * | th | ) |
Referenced by Init_BareVM().
const VALUE * rb_binding_add_dynavars | ( | VALUE | bindval, |
rb_binding_t * | bind, | ||
int | dyncount, | ||
const ID * | dynvars | ||
) |
Definition at line 1203 of file vm.c.
References ALLOCV_END, ALLOCV_N, rb_binding_t::block, rb_iseq_struct::body, rb_execution_context_struct::cfp, rb_ast_body_struct::compile_option, env, rb_iseq_location_struct::label, rb_ast_body_struct::line_count, rb_iseq_constant_body::location, MEMCPY, NODE_SCOPE, NULL, numberof, rb_binding_t::pathobj, rb_fstring_lit, rb_iseq_new(), rb_iseq_new_top(), rb_node_init(), rb_vm_pop_frame(), and rb_ast_body_struct::root.
Definition at line 331 of file proc.c.
References ruby_binding_data_type, and TypedData_Make_Struct.
Referenced by rb_vm_make_binding().
VALUE rb_catch_protect | ( | VALUE | t, |
rb_block_call_func * | func, | ||
VALUE | data, | ||
enum ruby_tag_type * | stateptr | ||
) |
void rb_clear_coverages | ( | void | ) |
Definition at line 4739 of file thread.c.
References rb_get_coverages(), rb_hash_foreach(), and RTEST.
Referenced by rb_reset_coverages().
void rb_ec_clear_vm_stack | ( | rb_execution_context_t * | ec | ) |
Definition at line 3047 of file vm.c.
References rb_execution_context_struct::cfp, NULL, and rb_ec_set_vm_stack().
Referenced by rb_threadptr_root_fiber_terminate().
void rb_ec_error_print | ( | rb_execution_context_t *volatile | ec, |
volatile VALUE | errinfo | ||
) |
Definition at line 360 of file eval_error.c.
References EC_EXEC_TAG, EC_POP_TAG, EC_PUSH_TAG, rb_execution_context_struct::errinfo, NIL_P, Qfalse, Qnil, Qundef, rb_execution_context_struct::raised_flag, rb_ec_raised_clear, rb_ec_raised_set, rb_error_write(), rb_get_backtrace(), rb_get_message(), and TAG_NONE.
Referenced by rb_f_abort().
int rb_ec_frame_method_id_and_class | ( | const rb_execution_context_t * | ec, |
ID * | idp, | ||
ID * | called_idp, | ||
VALUE * | klassp | ||
) |
Definition at line 2440 of file vm.c.
References rb_execution_context_struct::cfp, and rb_vm_control_frame_id_and_class().
Referenced by rb_dtrace_setup(), and rb_frame_method_id_and_class().
VALUE rb_ec_get_errinfo | ( | const rb_execution_context_t * | ec | ) |
Definition at line 1881 of file eval.c.
References rb_execution_context_struct::errinfo, and ptr.
Referenced by rb_f_abort().
void rb_ec_initialize_vm_stack | ( | rb_execution_context_t * | ec, |
VALUE * | stack, | ||
size_t | size | ||
) |
Definition at line 3031 of file vm.c.
References rb_execution_context_struct::cfp, NULL, Qnil, rb_ec_set_vm_stack(), VM_BLOCK_HANDLER_NONE, VM_ENV_FLAG_LOCAL, VM_FRAME_FLAG_CFRAME, VM_FRAME_FLAG_FINISH, VM_FRAME_MAGIC_DUMMY, rb_execution_context_struct::vm_stack, and rb_execution_context_struct::vm_stack_size.
|
inline |
Definition at line 3024 of file vm.c.
References rb_execution_context_struct::vm_stack, and rb_execution_context_struct::vm_stack_size.
Referenced by rb_ec_clear_vm_stack(), and rb_ec_initialize_vm_stack().
void rb_ec_setup_exception | ( | const rb_execution_context_t * | ec, |
VALUE | mesg, | ||
VALUE | cause | ||
) |
Definition at line 683 of file eval.c.
References get_ec_errinfo, id_cause, Qundef, and rb_ivar_set().
void rb_exec_event_hooks | ( | struct rb_trace_arg_struct * | trace_arg, |
rb_hook_list_t * | hooks, | ||
int | pop_p | ||
) |
Definition at line 365 of file vm_trace.c.
References rb_execution_context_struct::cfp, rb_trace_arg_struct::ec, EC_JUMP_TAG, rb_execution_context_struct::errinfo, rb_trace_arg_struct::event, rb_execution_context_struct::local_storage_recursive_hash, rb_execution_context_struct::local_storage_recursive_hash_for_trace, NULL, rb_vm_tag::prev, Qnil, rb_mRubyVMFrozenCore, rb_vm_pop_frame(), RUBY_INTERNAL_EVENT_MASK, rb_trace_arg_struct::self, rb_execution_context_struct::tag, TAG_NONE, rb_execution_context_struct::trace_arg, and UNLIKELY.
void rb_execution_context_mark | ( | const rb_execution_context_t * | ec | ) |
Definition at line 2835 of file vm.c.
References rb_control_frame_struct::block_code, rb_execution_context_struct::cfp, rb_control_frame_struct::ep, rb_execution_context_struct::errinfo, rb_control_frame_struct::iseq, rb_execution_context_struct::local_storage, rb_execution_context_struct::local_storage_recursive_hash, rb_execution_context_struct::local_storage_recursive_hash_for_trace, rb_execution_context_struct::machine, NULL, rb_execution_context_struct::private_const_reference, rb_gc_mark(), rb_gc_mark_locations(), rb_gc_mark_machine_stack(), rb_gc_mark_movable(), rb_gc_mark_vm_stack_values(), rb_id_table_foreach_values(), rb_execution_context_struct::root_svar, RUBY_MARK_UNLESS_NULL, RUBY_VM_PREVIOUS_CONTROL_FRAME, rb_control_frame_struct::self, rb_control_frame_struct::sp, rb_execution_context_struct::stack_end, rb_execution_context_struct::stack_start, VM_ASSERT, VM_ENV_DATA_INDEX_ENV, VM_ENV_DATA_INDEX_ME_CREF, VM_ENV_FLAG_ESCAPED, rb_execution_context_struct::vm_stack, and rb_execution_context_struct::vm_stack_size.
Referenced by rb_fiber_mark_self().
void rb_execution_context_update | ( | const rb_execution_context_t * | ec | ) |
Definition at line 2785 of file vm.c.
References rb_control_frame_struct::block_code, rb_execution_context_struct::cfp, rb_control_frame_struct::ep, rb_control_frame_struct::iseq, long(), rb_gc_location(), RUBY_VM_PREVIOUS_CONTROL_FRAME, rb_control_frame_struct::self, rb_control_frame_struct::sp, VM_ASSERT, VM_ENV_DATA_INDEX_ENV, VM_ENV_DATA_INDEX_ME_CREF, VM_ENV_FLAG_ESCAPED, rb_execution_context_struct::vm_stack, and rb_execution_context_struct::vm_stack_size.
Referenced by rb_fiber_update_self().
void rb_fiber_close | ( | rb_fiber_t * | fib | ) |
Definition at line 2365 of file cont.c.
References FIBER_TERMINATED.
void rb_gc_mark_machine_stack | ( | const rb_execution_context_t * | ec | ) |
Definition at line 5869 of file gc.c.
References GET_STACK_BOUNDS, and rb_objspace.
Referenced by rb_execution_context_mark().
VALUE rb_get_coverages | ( | void | ) |
Definition at line 5773 of file thread.c.
Referenced by rb_clear_coverages().
void rb_gvl_destroy | ( | rb_global_vm_lock_t * | gvl | ) |
void rb_hook_list_connect_tracepoint | ( | VALUE | target, |
rb_hook_list_t * | list, | ||
VALUE | tpval, | ||
unsigned int | target_line | ||
) |
Definition at line 1258 of file vm_trace.c.
References rb_tp_struct::events, FALSE, rb_event_hook_struct::filter, RUBY_EVENT_HOOK_FLAG_RAW_ARG, RUBY_EVENT_HOOK_FLAG_SAFE, and rb_event_hook_struct::target_line.
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.
Referenced by rb_iseq_free().
void rb_hook_list_mark | ( | rb_hook_list_t * | hooks | ) |
Definition at line 56 of file vm_trace.c.
References rb_event_hook_struct::data, rb_hook_list_struct::hooks, rb_event_hook_struct::next, and rb_gc_mark().
Referenced by rb_iseq_mark().
void rb_hook_list_remove_tracepoint | ( | rb_hook_list_t * | list, |
VALUE | tpval | ||
) |
Definition at line 1268 of file vm_trace.c.
References rb_event_hook_struct::data, rb_hook_list_struct::events, rb_event_hook_struct::events, rb_event_hook_struct::hook_flags, rb_hook_list_struct::hooks, rb_hook_list_struct::need_clean, rb_event_hook_struct::next, RUBY_EVENT_HOOK_FLAG_DELETED, and TRUE.
Definition at line 1146 of file iseq.c.
References ISEQ_COVERAGE.
Definition at line 2335 of file iseq.c.
References rb_str_new, rb_str_resize(), RSTRING_LEN, and str.
Referenced by rb_iseq_add_local_tracepoint_recursively().
int rb_iseq_disasm_insn | ( | VALUE | str, |
const VALUE * | iseqval, | ||
size_t | pos, | ||
const rb_iseq_t * | iseq, | ||
VALUE | child | ||
) |
Disassemble a instruction Iseq -> Iseq inspect object.
Definition at line 2078 of file iseq.c.
References len, PRIuSIZE, rb_insn_operand_intern(), rb_iseq_event_flags(), rb_iseq_line_no(), rb_str_cat2, rb_str_catf(), rb_str_concat(), rb_str_new, RSTRING_LEN, RSTRING_PTR, RUBY_EVENT_B_CALL, RUBY_EVENT_B_RETURN, RUBY_EVENT_C_CALL, RUBY_EVENT_C_RETURN, RUBY_EVENT_CALL, RUBY_EVENT_CLASS, RUBY_EVENT_COVERAGE_BRANCH, RUBY_EVENT_COVERAGE_LINE, RUBY_EVENT_END, RUBY_EVENT_LINE, RUBY_EVENT_RETURN, str, and types.
Referenced by rb_vmdebug_debug_print_pre().
Definition at line 2403 of file vm.c.
References vm_exec.
Referenced by rb_load_with_builtin_functions().
rb_iseq_t * rb_iseq_new | ( | const rb_ast_body_t * | ast, |
VALUE | name, | ||
VALUE | path, | ||
VALUE | realpath, | ||
const rb_iseq_t * | parent, | ||
enum | iseq_type | ||
) |
Definition at line 809 of file iseq.c.
References INT2FIX, name, and rb_iseq_new_with_opt().
Referenced by Init_VM(), rb_binding_add_dynavars(), and rb_vm_call_cfunc().
rb_iseq_t * rb_iseq_new_eval | ( | const rb_ast_body_t * | ast, |
VALUE | name, | ||
VALUE | path, | ||
VALUE | realpath, | ||
VALUE | first_lineno, | ||
const rb_iseq_t * | parent, | ||
int | isolated_depth | ||
) |
Definition at line 841 of file iseq.c.
References rb_iseq_constant_body::ISEQ_TYPE_EVAL, name, and rb_iseq_new_with_opt().
rb_iseq_t * rb_iseq_new_main | ( | const rb_ast_body_t * | ast, |
VALUE | path, | ||
VALUE | realpath, | ||
const rb_iseq_t * | parent | ||
) |
Definition at line 833 of file iseq.c.
References INT2FIX, rb_iseq_constant_body::ISEQ_TYPE_MAIN, rb_fstring_lit, and rb_iseq_new_with_opt().
rb_iseq_t * rb_iseq_new_top | ( | const rb_ast_body_t * | ast, |
VALUE | name, | ||
VALUE | path, | ||
VALUE | realpath, | ||
const rb_iseq_t * | parent | ||
) |
Definition at line 817 of file iseq.c.
References rb_iseq_constant_body::coverage, COVERAGE_TARGET_ONESHOT_LINES, INT2FIX, rb_iseq_constant_body::ISEQ_TYPE_TOP, len, rb_ast_body_struct::line_count, name, rb_default_coverage(), rb_get_coverage_mode(), rb_get_coverages(), rb_hash_aset(), rb_iseq_new_with_opt(), and RTEST.
Referenced by rb_binding_add_dynavars().
rb_iseq_t * rb_iseq_new_with_callback | ( | const struct rb_iseq_new_with_callback_callback_func * | ifunc, |
VALUE | name, | ||
VALUE | path, | ||
VALUE | realpath, | ||
VALUE | first_lineno, | ||
const rb_iseq_t * | parent, | ||
enum | iseq_type, | ||
const rb_compile_option_t * | option | ||
) |
Definition at line 888 of file iseq.c.
References iseq_alloc(), name, NULL, and rb_iseq_compile_callback().
rb_iseq_t * rb_iseq_new_with_opt | ( | const rb_ast_body_t * | ast, |
VALUE | name, | ||
VALUE | path, | ||
VALUE | realpath, | ||
VALUE | first_lineno, | ||
const rb_iseq_t * | parent, | ||
int | isolated_depth, | ||
enum | iseq_type, | ||
const rb_compile_option_t * | option | ||
) |
Definition at line 862 of file iseq.c.
References rb_ast_body_struct::compile_option, iseq_alloc(), name, RNode::nd_loc, nd_node_id, NULL, rb_iseq_compile_node(), and rb_ast_body_struct::root.
Referenced by rb_iseq_new(), rb_iseq_new_eval(), rb_iseq_new_main(), and rb_iseq_new_top().
Definition at line 1087 of file iseq.c.
References rb_iseq_struct::body, rb_iseq_constant_body::location, and rb_iseq_location_struct::pathobj.
Referenced by rb_block_to_s(), rb_method_definition_set(), rb_profile_frame_path(), rb_resolve_me_location(), rb_source_location(), and rb_sourcefile().
Definition at line 502 of file iseq.c.
References NIL_P, Qnil, rb_ary_new_from_args, rb_fstring(), rb_obj_freeze(), rb_str_cmp(), T_STRING, and VM_ASSERT.
Referenced by rb_iseq_pathobj_set().
Definition at line 521 of file iseq.c.
References rb_iseq_struct::body, rb_iseq_constant_body::location, rb_iseq_location_struct::pathobj, rb_iseq_pathobj_new(), and RB_OBJ_WRITE.
Referenced by rb_vm_set_progname().
Definition at line 1093 of file iseq.c.
References rb_iseq_struct::body, rb_iseq_constant_body::location, and rb_iseq_location_struct::pathobj.
Referenced by rb_current_realfilepath(), rb_iseq_absolute_path(), rb_profile_frame_absolute_path(), and rb_vm_set_progname().
struct rb_objspace * rb_objspace_alloc | ( | void | ) |
Definition at line 1595 of file gc.c.
References dont_gc_on, rb_objspace::eden_heap, malloc_limit, ruby_gc_params_t::malloc_limit_min, rb_heap_struct::pages, and rb_objspace::tomb_heap.
Referenced by Init_BareVM().
void rb_objspace_call_finalizer | ( | struct rb_objspace * | objspace | ) |
Definition at line 3771 of file gc.c.
References RVALUE::as, ATOMIC_EXCHANGE, ATOMIC_SET, BUILTIN_TYPE, DATA_PTR, dont_gc_on, rb_objspace::dont_incremental, finalizer_table, finalizing, RVALUE::flags, rb_objspace::flags, RVALUE::free, GC_ASSERT, gc_enter_event_finalizer, heap_allocated_pages, heap_pages_deferred_final, heap_pages_sorted, force_finalize_list::next, force_finalize_list::obj, RANY, rb_obj_is_fiber(), rb_obj_is_main_ractor(), rb_obj_is_mutex(), rb_obj_is_thread(), RDATA, RUBY_DEFAULT_FREE, st_delete, st_foreach, st_free_table, T_DATA, T_FILE, T_NONE, force_finalize_list::table, and xfree.
void rb_objspace_free | ( | struct rb_objspace * | objspace | ) |
Definition at line 1610 of file gc.c.
References rb_objspace::eden_heap, free, global_list, heap_allocated_pages, heap_eden, heap_pages_himem, heap_pages_lomem, heap_pages_sorted, heap_pages_sorted_length, rb_objspace::id_to_obj_tbl, is_lazy_sweeping, rb_objspace::mark_stack, gc_list::next, rb_objspace::obj_to_id_tbl, rb_objspace::profile, rb_bug(), rb_objspace::records, st_free_table, rb_heap_struct::total_pages, rb_heap_struct::total_slots, and xfree.
Referenced by ruby_vm_destruct().
void rb_postponed_job_flush | ( | rb_vm_t * | vm | ) |
Definition at line 1676 of file vm_trace.c.
References ATOMIC_CAS, rb_postponed_job_struct::data, EC_EXEC_TAG, EC_POP_TAG, EC_PUSH_TAG, rb_execution_context_struct::errinfo, free, rb_postponed_job_struct::func, rb_execution_context_struct::interrupt_mask, rb_workqueue_job::jnode, rb_workqueue_job::job, rb_vm_struct::postponed_job_buffer, rb_vm_struct::postponed_job_index, POSTPONED_JOB_INTERRUPT_MASK, Qnil, rb_nativethread_lock_lock(), rb_nativethread_lock_unlock(), RUBY_VM_SET_POSTPONED_JOB_INTERRUPT, TAG_NONE, TRAP_INTERRUPT_MASK, rb_vm_struct::workqueue, and rb_vm_struct::workqueue_lock.
Referenced by rb_threadptr_execute_interrupts().
Definition at line 145 of file proc.c.
References TypedData_Make_Struct.
Definition at line 956 of file vm.c.
References rb_proc_t::block, FL_SET_RAW, GetProcPtr, rb_proc_t::is_from_method, rb_proc_t::is_lambda, rb_cProc, RB_GC_GUARD, RB_OBJ_SHAREABLE_P, and RUBY_FL_SHAREABLE.
Referenced by Init_Proc(), and rb_proc_isolate().
Definition at line 1097 of file vm.c.
References rb_proc_dup(), and rb_proc_isolate_bang().
Definition at line 1055 of file vm.c.
References collect_outer_variable_name_data::ary, rb_proc_t::block, block_type_iseq, rb_iseq_struct::body, FL_SET_RAW, rb_proc_t::is_isolated, rb_captured_block::iseq, collect_outer_variable_name_data::isolate, rb_iseq_constant_body::outer_variables, Qfalse, rb_ary_join(), rb_eArgError, rb_eRuntimeError, rb_id_table_foreach(), rb_raise(), rb_str_new2, RTYPEDDATA_DATA, RUBY_FL_SHAREABLE, rb_captured_block::self, str, StringValueCStr, TRUE, rb_block::type, VM_ASSERT, and collect_outer_variable_name_data::yield.
Referenced by rb_proc_isolate().
Definition at line 1105 of file vm.c.
References collect_outer_variable_name_data::ary, rb_proc_t::block, block_type_iseq, rb_iseq_struct::body, FL_SET_RAW, rb_proc_t::is_isolated, collect_outer_variable_name_data::isolate, rb_iseq_constant_body::outer_variables, Qfalse, rb_ary_join(), rb_eArgError, rb_eRuntimeError, rb_id_table_foreach(), rb_raise(), rb_str_new2, collect_outer_variable_name_data::read_only, RTYPEDDATA_DATA, RUBY_FL_SHAREABLE, str, StringValueCStr, TRUE, rb_block::type, and collect_outer_variable_name_data::yield.
void rb_reset_coverages | ( | void | ) |
Definition at line 5800 of file thread.c.
References COVERAGE_TARGET_BRANCHES, COVERAGE_TARGET_METHODS, Qfalse, rb_clear_coverages(), rb_iseq_remove_coverage_all(), and rb_remove_event_hook().
Definition at line 5785 of file thread.c.
References COVERAGE_TARGET_BRANCHES, COVERAGE_TARGET_METHODS, Qnil, rb_add_event_hook2(), RUBY_EVENT_CALL, RUBY_EVENT_COVERAGE_BRANCH, RUBY_EVENT_COVERAGE_LINE, RUBY_EVENT_HOOK_FLAG_RAW_ARG, and RUBY_EVENT_HOOK_FLAG_SAFE.
int rb_signal_buff_size | ( | void | ) |
Definition at line 747 of file signal.c.
Referenced by rb_thread_check_trap_pending(), and rb_threadptr_check_signal().
int rb_signal_exec | ( | rb_thread_t * | th, |
int | sig | ||
) |
Definition at line 1099 of file signal.c.
References rb_vm_struct::cmd, FALSE, Qundef, rb_interrupt(), rb_threadptr_signal_exit(), rb_threadptr_signal_raise(), SIGINT, and rb_vm_struct::trap_list.
Referenced by rb_threadptr_execute_interrupts().
Definition at line 3114 of file vm.c.
Referenced by rb_thread_create(), and rb_thread_create_ractor().
int rb_thread_check_trap_pending | ( | void | ) |
Definition at line 1587 of file thread.c.
References rb_signal_buff_size().
void rb_thread_wakeup_timer_thread | ( | int | ) |
void rb_threadptr_check_signal | ( | rb_thread_t * | mth | ) |
Definition at line 4598 of file thread.c.
References rb_signal_buff_size().
Referenced by rb_f_kill().
int rb_threadptr_execute_interrupts | ( | rb_thread_t * | th, |
int | blocking_timing | ||
) |
Definition at line 2424 of file thread.c.
Referenced by rb_thread_execute_interrupts().
void rb_threadptr_interrupt | ( | rb_thread_t * | th | ) |
Definition at line 508 of file thread.c.
Referenced by rb_notify_fd_close(), rb_ractor_terminate_interrupt_main_thread(), and rb_thread_kill().
void rb_threadptr_pending_interrupt_clear | ( | rb_thread_t * | th | ) |
Definition at line 1981 of file thread.c.
References rb_thread_struct::pending_interrupt_queue, and rb_ary_clear().
void rb_threadptr_pending_interrupt_enque | ( | rb_thread_t * | th, |
VALUE | v | ||
) |
Definition at line 1987 of file thread.c.
References rb_thread_struct::pending_interrupt_queue, rb_thread_struct::pending_interrupt_queue_checked, and rb_ary_push().
Referenced by rb_fiber_start(), rb_notify_fd_close(), and rb_thread_kill().
void rb_threadptr_signal_exit | ( | rb_thread_t * | th | ) |
Definition at line 2575 of file thread.c.
References argv, rb_vm_struct::main_thread, rb_vm_struct::ractor, rb_eSystemExit, rb_str_new2, and rb_thread_struct::vm.
Referenced by rb_signal_exec().
void rb_threadptr_signal_raise | ( | rb_thread_t * | th, |
int | sig | ||
) |
Definition at line 2565 of file thread.c.
References argv, INT2FIX, rb_vm_struct::main_thread, rb_vm_struct::ractor, rb_eSignal, and rb_thread_struct::vm.
Referenced by rb_signal_exec().
void rb_threadptr_unlock_all_locking_mutexes | ( | rb_thread_t * | th | ) |
Definition at line 567 of file thread.c.
References rb_mutex_struct::fiber, rb_thread_struct::keeping_mutexes, rb_mutex_struct::next_mutex, and rb_bug().
Referenced by rb_thread_terminate_all().
VALUE rb_vm_bh_to_procval | ( | const rb_execution_context_t * | ec, |
VALUE | block_handler | ||
) |
Definition at line 474 of file vm_insnhelper.c.
References block_handler_type_ifunc, block_handler_type_iseq, block_handler_type_proc, block_handler_type_symbol, Qnil, rb_cProc, rb_sym_to_proc(), rb_vm_bh_to_procval(), VM_BLOCK_HANDLER_NONE, and VM_UNREACHABLE.
Referenced by rb_vm_bh_to_procval().
Definition at line 921 of file vm.c.
References rb_block::as, block_type_ifunc, block_type_iseq, block_type_proc, block_type_symbol, rb_block::captured, rb_captured_block::code, rb_captured_block::ep, rb_block::proc, RB_OBJ_WRITE, rb_vm_block_ep_update(), rb_captured_block::self, rb_block::symbol, and rb_captured_block::val.
Definition at line 326 of file vm.c.
References rb_block::as, rb_block::captured, rb_captured_block::ep, Qundef, and RB_OBJ_WRITTEN.
Referenced by rb_vm_block_copy().
void rb_vm_bugreport | ( | const void * | ctx | ) |
Definition at line 962 of file vm_dump.c.
References CLASS_OF, count, feof, getenv, len, LIMITED_NAME_LENGTH, rb_vm_struct::loaded_features, map(), name, NULL, PATH_MAX, procstat_vm(), rb_vm_struct::progname, RARRAY_AREF, RARRAY_LEN, rb_backtrace_print_as_bugreport(), rb_class_real(), rb_dump_machine_register, rb_obj_class(), rb_print_backtrace(), rb_search_class_path(), RSTRING_PTR, SDR, snprintf, T_CLASS, T_MODULE, and T_STRING.
Referenced by rb_assert_failure().
VALUE rb_vm_call_kw | ( | rb_execution_context_t * | ec, |
VALUE | recv, | ||
VALUE | id, | ||
int | argc, | ||
const VALUE * | argv, | ||
const rb_callable_method_entry_t * | me, | ||
int | kw_splat | ||
) |
Definition at line 260 of file vm_eval.c.
References argc, argv, and rb_vm_call0().
Referenced by rb_check_funcall_with_hook_kw().
int rb_vm_check_ints_blocking | ( | rb_execution_context_t * | ec | ) |
void rb_vm_cond_timedwait | ( | rb_vm_t * | vm, |
rb_nativethread_cond_t * | cond, | ||
unsigned long | msec | ||
) |
Definition at line 211 of file vm_sync.c.
Referenced by rb_ractor_terminate_all().
void rb_vm_cond_wait | ( | rb_vm_t * | vm, |
rb_nativethread_cond_t * | cond | ||
) |
Definition at line 205 of file vm_sync.c.
Referenced by rb_vm_barrier().
int rb_vm_control_frame_id_and_class | ( | const rb_control_frame_t * | cfp, |
ID * | idp, | ||
ID * | called_idp, | ||
VALUE * | klassp | ||
) |
Definition at line 2424 of file vm.c.
References rb_callable_method_entry_struct::called_id, rb_callable_method_entry_struct::def, FALSE, rb_method_definition_struct::original_id, rb_callable_method_entry_struct::owner, rb_vm_frame_method_entry(), and TRUE.
Referenced by rb_ec_frame_method_id_and_class().
void rb_vm_encoded_insn_data_table_init | ( | void | ) |
Definition at line 3139 of file iseq.c.
References insn_data_struct::insn, INSN_CODE, insn_data_struct::insn_len, int(), insn_data_struct::notrace_encoded_insn, rb_vm_get_insns_address_table(), st_add_direct, st_init_numtable_with_size, and insn_data_struct::trace_encoded_insn.
Referenced by ruby_setup().
Definition at line 830 of file vm.c.
Referenced by rb_vmdebug_env_dump_raw().
Definition at line 93 of file vm.c.
Referenced by rb_vm_proc_local_ep().
VALUE rb_vm_frame_block_handler | ( | const rb_control_frame_t * | cfp | ) |
Definition at line 126 of file vm.c.
Referenced by rb_block_arity(), rb_block_given_p(), rb_block_min_max_arity(), and rb_block_pair_yield_optimizable().
const rb_callable_method_entry_t * rb_vm_frame_method_entry | ( | const rb_control_frame_t * | cfp | ) |
Definition at line 667 of file vm_insnhelper.c.
References rb_control_frame_struct::ep, FALSE, NULL, TRUE, and VM_ENV_DATA_INDEX_ME_CREF.
Referenced by rb_profile_frames(), rb_raise_jump(), rb_vm_control_frame_id_and_class(), and rb_vm_pop_cfunc_frame().
rb_control_frame_t * rb_vm_get_binding_creatable_next_cfp | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | cfp | ||
) |
Definition at line 577 of file vm.c.
References rb_control_frame_struct::iseq, and RUBY_VM_PREVIOUS_CONTROL_FRAME.
Referenced by rb_tracearg_binding(), rb_vm_make_binding(), and rb_vm_stack_to_heap().
rb_control_frame_t * rb_vm_get_ruby_level_next_cfp | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | cfp | ||
) |
Definition at line 589 of file vm.c.
References RUBY_VM_PREVIOUS_CONTROL_FRAME.
Referenced by rb_method_definition_set(), rb_source_location(), rb_sourcefile(), rb_sourceline(), rb_tracearg_parameters(), rb_vm_cbase(), rb_vm_cref_in_context(), rb_vm_cref_replace_with_duplicated_cref(), and rb_vm_make_binding().
int rb_vm_get_sourceline | ( | const rb_control_frame_t * | cfp | ) |
Definition at line 71 of file vm_backtrace.c.
References FIX2INT, rb_control_frame_struct::iseq, rb_control_frame_struct::pc, and rb_iseq_first_lineno().
Referenced by rb_method_definition_set(), rb_source_location(), rb_sourceline(), and rb_vm_make_binding().
VALUE rb_vm_invoke_proc | ( | rb_execution_context_t * | ec, |
rb_proc_t * | proc, | ||
int | argc, | ||
const VALUE * | argv, | ||
int | kw_splat, | ||
VALUE | block_handler | ||
) |
Definition at line 1475 of file vm.c.
References argc, argv, NULL, rb_block::proc, and rb_vm_invoke_bmethod().
Referenced by rb_fiber_start(), rb_proc_call(), rb_proc_call_kw(), rb_proc_call_with_block(), and rb_proc_call_with_block_kw().
rb_execution_context_t * rb_vm_main_ractor_ec | ( | rb_vm_t * | vm | ) |
Definition at line 1978 of file ractor.c.
References rb_vm_struct::main_ractor, rb_vm_struct::ractor, rb_ractor_struct::running_ec, and rb_ractor_struct::threads.
Referenced by rb_workqueue_register().
VALUE rb_vm_make_binding | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | src_cfp | ||
) |
Definition at line 1172 of file vm.c.
References rb_block::as, rb_binding_t::block, rb_iseq_struct::body, rb_block::captured, rb_captured_block::code, rb_binding_t::first_lineno, GetBindingPtr, rb_captured_block::iseq, rb_control_frame_struct::iseq, rb_iseq_constant_body::location, rb_iseq_location_struct::pathobj, rb_binding_t::pathobj, rb_binding_alloc(), rb_cBinding, rb_eRuntimeError, RB_OBJ_WRITE, rb_raise(), rb_vm_get_binding_creatable_next_cfp(), rb_vm_get_ruby_level_next_cfp(), rb_vm_get_sourceline(), RUBY_VM_PREVIOUS_CONTROL_FRAME, rb_captured_block::self, and rb_control_frame_struct::self.
Referenced by rb_binding_new(), and rb_tracearg_binding().
VALUE rb_vm_make_proc_lambda | ( | const rb_execution_context_t * | ec, |
const struct rb_captured_block * | captured, | ||
VALUE | klass, | ||
int8_t | is_lambda | ||
) |
Definition at line 1152 of file vm.c.
References block_type_ifunc, block_type_iseq, rb_captured_block::code, rb_captured_block::ep, FALSE, imemo_ifunc, imemo_iseq, rb_captured_block::val, and VM_ASSERT.
void rb_vm_pop_frame | ( | rb_execution_context_t * | ec | ) |
Definition at line 419 of file vm_insnhelper.c.
References rb_execution_context_struct::cfp, and rb_control_frame_struct::ep.
Referenced by rb_binding_add_dynavars(), rb_exec_event_hooks(), rb_raise_jump(), rb_vm_call_cfunc(), and rb_vm_rewind_cfp().
Definition at line 675 of file thread.c.
References NULL, and rb_vm_ep_local_ep().
Referenced by rb_fiber_start().
void rb_vm_register_special_exception_str | ( | enum ruby_special_exceptions | sp, |
VALUE | exception_class, | ||
VALUE | mesg | ||
) |
Definition at line 2612 of file vm.c.
References OBJ_FREEZE, rb_exc_new3, rb_gc_register_mark_object(), rb_obj_freeze(), and rb_vm_struct::special_exceptions.
void rb_vm_rewind_cfp | ( | rb_execution_context_t * | ec, |
rb_control_frame_t * | cfp | ||
) |
Definition at line 639 of file vm.c.
References rb_execution_context_struct::cfp, rb_vm_pop_cfunc_frame(), rb_vm_pop_frame(), and VM_FRAME_MAGIC_CFUNC.
Referenced by rb_protect(), and rb_vrescue2().
void rb_vm_rewrite_cref | ( | rb_cref_t * | node, |
VALUE | old_klass, | ||
VALUE | new_klass, | ||
rb_cref_t ** | new_cref_ptr | ||
) |
Definition at line 867 of file vm_insnhelper.c.
References FALSE, METHOD_VISI_UNDEF, rb_cref_struct::next, and NULL.
void rb_vm_stack_to_heap | ( | rb_execution_context_t * | ec | ) |
Definition at line 820 of file vm.c.
References rb_execution_context_struct::cfp, rb_vm_get_binding_creatable_next_cfp(), and RUBY_VM_PREVIOUS_CONTROL_FRAME.
Referenced by rb_debug_inspector_open().
void rb_vm_trap_exit | ( | rb_vm_t * | vm | ) |
Definition at line 1077 of file signal.c.
References rb_vm_struct::cmd, and rb_vm_struct::trap_list.
void rb_vmdebug_debug_print_post | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | cfp | ||
) |
Definition at line 417 of file vm_dump.c.
References rb_execution_context_struct::cfp, rb_inspect(), rb_vmdebug_debug_print_register(), SDR2, and StringValueCStr.
void rb_vmdebug_debug_print_pre | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | cfp, | ||
const VALUE * | _pc | ||
) |
Definition at line 388 of file vm_dump.c.
References rb_iseq_struct::body, int(), rb_control_frame_struct::iseq, rb_iseq_constant_body::iseq_encoded, rb_iseq_disasm_insn(), rb_iseq_original_iseq(), rb_vmdebug_debug_print_register(), rb_control_frame_struct::sp, VM_CFP_CNT, and rb_execution_context_struct::vm_stack.
void rb_vmdebug_stack_dump_raw | ( | const rb_execution_context_t * | ec, |
const rb_control_frame_t * | cfp | ||
) |
Definition at line 195 of file vm_dump.c.
References rb_control_frame_struct::ep, GC_GUARDED_PTR_REF, PRIxVALUE, rb_control_frame_struct::sp, t, rb_execution_context_struct::vm_stack, and rb_execution_context_struct::vm_stack_size.
Referenced by rb_vmdebug_stack_dump_all_threads(), rb_vmdebug_stack_dump_raw_current(), and rb_vmdebug_stack_dump_th().
void ruby_thread_init_stack | ( | rb_thread_t * | th | ) |
Definition at line 669 of file thread.c.
Referenced by Init_BareVM().
STATIC_ASSERT | ( | rb_vm_tag_buf_end | ) |
|
extern |
Definition at line 46 of file iseq.c.
Referenced by Init_ISeq(), rb_insn_operand_intern(), and rb_iseq_load_iseq().
|
extern |
Definition at line 373 of file vm.c.
Referenced by Init_ast(), Init_builtin(), Init_ISeq(), and Init_VM().
|
extern |
Definition at line 23 of file ractor.c.
Referenced by Init_Ractor(), rb_alias_variable(), rb_const_set(), rb_f_global_variables(), and rb_ractor_ensure_shareable().
|
extern |
Definition at line 22 of file ractor.c.
Referenced by Init_Ractor().
|
extern |
Definition at line 319 of file proc.c.
Referenced by rb_binding_alloc().
|
extern |