diff options
Diffstat (limited to 'yjit/bindgen/src/main.rs')
-rw-r--r-- | yjit/bindgen/src/main.rs | 191 |
1 files changed, 176 insertions, 15 deletions
diff --git a/yjit/bindgen/src/main.rs b/yjit/bindgen/src/main.rs index f54addc795..d91e330f5e 100644 --- a/yjit/bindgen/src/main.rs +++ b/yjit/bindgen/src/main.rs @@ -38,8 +38,10 @@ fn main() { .clang_args(filtered_clang_args) .header("encindex.h") .header("internal.h") + .header("internal/object.h") .header("internal/re.h") .header("include/ruby/ruby.h") + .header("shape.h") .header("vm_core.h") .header("vm_callinfo.h") @@ -49,6 +51,9 @@ fn main() { // Don't want to copy over C comment .generate_comments(false) + // Makes the output more compact + .merge_extern_blocks(true) + // Don't want layout tests as they are platform dependent .layout_tests(false) @@ -62,24 +67,48 @@ fn main() { // Import YARV bytecode instruction constants .allowlist_type("ruby_vminsn_type") - // From include/ruby/internal/config.h - .allowlist_var("USE_RVARGC") + // From include/ruby/internal/special_consts.h + .allowlist_type("ruby_special_consts") // From include/ruby/internal/intern/string.h .allowlist_function("rb_utf8_str_new") .allowlist_function("rb_str_buf_append") .allowlist_function("rb_str_dup") + // From encindex.h + .allowlist_type("ruby_preserved_encindex") + + // From include/ruby/ruby.h + .allowlist_function("rb_class2name") + // This struct is public to Ruby C extensions // From include/ruby/internal/core/rbasic.h .allowlist_type("RBasic") + // From include/ruby/internal/core/rstring.h + .allowlist_type("ruby_rstring_flags") + // From internal.h // This function prints info about a value and is useful for debugging .allowlist_function("rb_obj_info_dump") + // For crashing + .allowlist_function("rb_bug") + + // From shape.h + .allowlist_function("rb_shape_get_shape_id") + .allowlist_function("rb_shape_get_shape_by_id") + .allowlist_function("rb_shape_id_offset") + .allowlist_function("rb_shape_get_iv_index") + .allowlist_function("rb_shape_get_next") + .allowlist_function("rb_shape_id") + .allowlist_function("rb_shape_obj_too_complex") + .allowlist_var("SHAPE_ID_NUM_BITS") + .allowlist_var("OBJ_TOO_COMPLEX_SHAPE_ID") + // From ruby/internal/intern/object.h .allowlist_function("rb_obj_is_kind_of") + .allowlist_function("rb_obj_frozen_p") // From ruby/internal/encoding/encoding.h .allowlist_type("ruby_encoding_consts") @@ -90,32 +119,45 @@ fn main() { // From internal/hash.h .allowlist_function("rb_hash_new_with_size") .allowlist_function("rb_hash_resurrect") + .allowlist_function("rb_hash_stlike_foreach") + .allowlist_function("rb_to_hash_type") + + // From include/ruby/st.h + .allowlist_type("st_retval") // From include/ruby/internal/intern/hash.h .allowlist_function("rb_hash_aset") .allowlist_function("rb_hash_aref") .allowlist_function("rb_hash_bulk_insert") + .allowlist_function("rb_hash_stlike_lookup") // From include/ruby/internal/intern/array.h .allowlist_function("rb_ary_new_capa") .allowlist_function("rb_ary_store") .allowlist_function("rb_ary_resurrect") + .allowlist_function("rb_ary_cat") .allowlist_function("rb_ary_clear") + .allowlist_function("rb_ary_dup") + .allowlist_function("rb_ary_push") + .allowlist_function("rb_ary_unshift_m") + .allowlist_function("rb_yjit_rb_ary_subseq_length") // From internal/array.h .allowlist_function("rb_ec_ary_new_from_values") .allowlist_function("rb_ary_tmp_new_from_values") // From include/ruby/internal/intern/class.h + .allowlist_function("rb_class_attached_object") .allowlist_function("rb_singleton_class") // From include/ruby/internal/core/rclass.h .allowlist_function("rb_class_get_superclass") - // From include/ruby/internal/intern/gc.h + // From include/ruby/internal/gc.h .allowlist_function("rb_gc_mark") .allowlist_function("rb_gc_mark_movable") .allowlist_function("rb_gc_location") + .allowlist_function("rb_gc_writebarrier") // VALUE variables for Ruby class objects // From include/ruby/internal/globals.h @@ -125,6 +167,7 @@ fn main() { .allowlist_var("rb_cTrueClass") .allowlist_var("rb_cFalseClass") .allowlist_var("rb_cInteger") + .allowlist_var("rb_cIO") .allowlist_var("rb_cSymbol") .allowlist_var("rb_cFloat") .allowlist_var("rb_cString") @@ -138,8 +181,6 @@ fn main() { // From include/ruby/internal/core/robject.h .allowlist_type("ruby_robject_flags") - // .allowlist_type("ruby_robject_consts") // Removed when USE_RVARGC - .allowlist_var("ROBJECT_OFFSET_.*") // From include/ruby/internal/core/rarray.h .allowlist_type("ruby_rarray_flags") @@ -156,8 +197,6 @@ fn main() { .allowlist_type("rb_call_data") .blocklist_type("rb_callcache.*") // Not used yet - opaque to make it easy to import rb_call_data .opaque_type("rb_callcache.*") - .blocklist_type("rb_callinfo_kwarg") // Contains a VALUE[] array of undefined size, so we don't import - .opaque_type("rb_callinfo_kwarg") .allowlist_type("rb_callinfo") // From vm_insnhelper.h @@ -169,14 +208,24 @@ fn main() { // From include/ruby/internal/symbol.h .allowlist_function("rb_intern") + .allowlist_function("rb_intern2") .allowlist_function("rb_id2sym") + .allowlist_function("rb_id2name") .allowlist_function("rb_sym2id") .allowlist_function("rb_str_intern") + // From internal/numeric.h + .allowlist_function("rb_fix_aref") + .allowlist_function("rb_float_plus") + .allowlist_function("rb_float_minus") + .allowlist_function("rb_float_mul") + .allowlist_function("rb_float_div") + // From internal/string.h .allowlist_function("rb_ec_str_resurrect") .allowlist_function("rb_str_concat_literals") .allowlist_function("rb_obj_as_string_result") + .allowlist_function("rb_str_byte_substr") // From include/ruby/internal/intern/parse.h .allowlist_function("rb_backref_get") @@ -198,8 +247,8 @@ fn main() { // From include/ruby/internal/value_type.h .allowlist_type("ruby_value_type") // really old C extension API - // Autogenerated into id.h - .allowlist_type("ruby_method_ids") + // From include/ruby/internal/hash.h + .allowlist_type("ruby_rhash_flags") // really old C extension API // From method.h .allowlist_type("rb_method_visibility_t") @@ -218,10 +267,12 @@ fn main() { .allowlist_var("VM_BLOCK_HANDLER_NONE") .allowlist_type("vm_frame_env_flags") .allowlist_type("rb_seq_param_keyword_struct") + .allowlist_type("rb_callinfo_kwarg") .allowlist_type("ruby_basic_operators") .allowlist_var(".*_REDEFINED_OP_FLAG") .allowlist_type("rb_num_t") .allowlist_function("rb_callable_method_entry") + .allowlist_function("rb_callable_method_entry_or_negative") .allowlist_function("rb_vm_frame_method_entry") .allowlist_type("IVC") // pointer to iseq_inline_iv_cache_entry .allowlist_type("IC") // pointer to iseq_inline_constant_cache @@ -236,10 +287,18 @@ fn main() { .blocklist_type("rb_control_frame_struct") .opaque_type("rb_control_frame_struct") .allowlist_function("rb_vm_bh_to_procval") + .allowlist_function("rb_vm_env_write") + .allowlist_function("rb_vm_ep_local_ep") .allowlist_type("vm_special_object_type") .allowlist_var("VM_ENV_DATA_INDEX_SPECVAL") .allowlist_var("VM_ENV_DATA_INDEX_FLAGS") .allowlist_var("VM_ENV_DATA_SIZE") + .allowlist_function("rb_iseq_path") + .allowlist_type("rb_builtin_attr") + .allowlist_type("ruby_tag_type") + .allowlist_type("ruby_vm_throw_flags") + .allowlist_type("vm_check_match_type") + .allowlist_type("rb_iseq_type") // From yjit.c .allowlist_function("rb_iseq_(get|set)_yjit_payload") @@ -248,11 +307,12 @@ fn main() { .allowlist_function("rb_yjit_reserve_addr_space") .allowlist_function("rb_yjit_mark_writable") .allowlist_function("rb_yjit_mark_executable") + .allowlist_function("rb_yjit_mark_unused") .allowlist_function("rb_yjit_get_page_size") - .allowlist_function("rb_leaf_invokebuiltin_iseq_p") - .allowlist_function("rb_leaf_builtin_function") + .allowlist_function("rb_yjit_iseq_builtin_attrs") + .allowlist_function("rb_yjit_iseq_inspect") + .allowlist_function("rb_yjit_builtin_function") .allowlist_function("rb_set_cfp_(pc|sp)") - .allowlist_function("rb_cfp_get_iseq") .allowlist_function("rb_yjit_multi_ractor_p") .allowlist_function("rb_c_method_tracing_currently_enabled") .allowlist_function("rb_full_cfunc_return") @@ -265,8 +325,19 @@ fn main() { .allowlist_function("rb_yjit_for_each_iseq") .allowlist_function("rb_yjit_obj_written") .allowlist_function("rb_yjit_str_simple_append") + .allowlist_function("rb_RSTRING_PTR") + .allowlist_function("rb_RSTRING_LEN") .allowlist_function("rb_ENCODING_GET") + .allowlist_function("rb_yjit_get_proc_ptr") .allowlist_function("rb_yjit_exit_locations_dict") + .allowlist_function("rb_yjit_icache_invalidate") + .allowlist_function("rb_optimized_call") + .allowlist_function("rb_yjit_assert_holding_vm_lock") + .allowlist_function("rb_yjit_sendish_sp_pops") + .allowlist_function("rb_yjit_invokeblock_sp_pops") + .allowlist_function("rb_yjit_set_exception_return") + .allowlist_type("robject_offsets") + .allowlist_type("rstring_offsets") // from vm_sync.h .allowlist_function("rb_vm_barrier") @@ -278,32 +349,122 @@ fn main() { // From internal/compile.h .allowlist_function("rb_vm_insn_decode") + // from internal/cont.h + .allowlist_function("rb_jit_cont_each_iseq") + // From iseq.h .allowlist_function("rb_vm_insn_addr2opcode") .allowlist_function("rb_iseqw_to_iseq") - .allowlist_function("rb_iseq_each") + .allowlist_function("rb_iseq_label") + .allowlist_function("rb_iseq_line_no") + .allowlist_type("defined_type") // From builtin.h .allowlist_type("rb_builtin_function.*") // From internal/variable.h .allowlist_function("rb_gvar_(get|set)") - .allowlist_function("rb_obj_ensure_iv_index_mapping") + .allowlist_function("rb_ensure_iv_list_size") // From include/ruby/internal/intern/variable.h .allowlist_function("rb_attr_get") + .allowlist_function("rb_ivar_defined") .allowlist_function("rb_ivar_get") + // From internal/vm.h + .allowlist_var("rb_vm_insns_count") + // From include/ruby/internal/intern/vm.h .allowlist_function("rb_get_alloc_func") - // From gc.h and internal/gc.h + // From internal/object.h .allowlist_function("rb_class_allocate_instance") + + // From gc.h and internal/gc.h .allowlist_function("rb_obj_info") + .allowlist_function("ruby_xfree") // From include/ruby/debug.h .allowlist_function("rb_profile_frames") + // Functions used for code generation + .allowlist_function("rb_insn_name") + .allowlist_function("rb_insn_len") + .allowlist_function("rb_yarv_class_of") + .allowlist_function("rb_get_ec_cfp") + .allowlist_function("rb_get_cfp_iseq") + .allowlist_function("rb_get_cfp_pc") + .allowlist_function("rb_get_cfp_sp") + .allowlist_function("rb_get_cfp_self") + .allowlist_function("rb_get_cfp_ep") + .allowlist_function("rb_get_cfp_ep_level") + .allowlist_function("rb_get_cme_def_type") + .allowlist_function("rb_get_cme_def_body_attr_id") + .allowlist_function("rb_get_symbol_id") + .allowlist_function("rb_get_cme_def_body_optimized_type") + .allowlist_function("rb_get_cme_def_body_optimized_index") + .allowlist_function("rb_get_cme_def_body_cfunc") + .allowlist_function("rb_get_def_method_serial") + .allowlist_function("rb_get_def_original_id") + .allowlist_function("rb_get_mct_argc") + .allowlist_function("rb_get_mct_func") + .allowlist_function("rb_get_def_iseq_ptr") + .allowlist_function("rb_get_def_bmethod_proc") + .allowlist_function("rb_iseq_encoded_size") + .allowlist_function("rb_get_iseq_body_total_calls") + .allowlist_function("rb_get_iseq_body_local_iseq") + .allowlist_function("rb_get_iseq_body_parent_iseq") + .allowlist_function("rb_get_iseq_body_iseq_encoded") + .allowlist_function("rb_get_iseq_body_stack_max") + .allowlist_function("rb_get_iseq_body_type") + .allowlist_function("rb_get_iseq_flags_has_lead") + .allowlist_function("rb_get_iseq_flags_has_opt") + .allowlist_function("rb_get_iseq_flags_has_kw") + .allowlist_function("rb_get_iseq_flags_has_rest") + .allowlist_function("rb_get_iseq_flags_has_post") + .allowlist_function("rb_get_iseq_flags_has_kwrest") + .allowlist_function("rb_get_iseq_flags_anon_kwrest") + .allowlist_function("rb_get_iseq_flags_has_block") + .allowlist_function("rb_get_iseq_flags_ambiguous_param0") + .allowlist_function("rb_get_iseq_flags_accepts_no_kwarg") + .allowlist_function("rb_get_iseq_flags_ruby2_keywords") + .allowlist_function("rb_get_iseq_body_local_table_size") + .allowlist_function("rb_get_iseq_body_param_keyword") + .allowlist_function("rb_get_iseq_body_param_size") + .allowlist_function("rb_get_iseq_body_param_lead_num") + .allowlist_function("rb_get_iseq_body_param_opt_num") + .allowlist_function("rb_get_iseq_body_param_opt_table") + .allowlist_function("rb_get_cikw_keyword_len") + .allowlist_function("rb_get_cikw_keywords_idx") + .allowlist_function("rb_get_call_data_ci") + .allowlist_function("rb_yarv_str_eql_internal") + .allowlist_function("rb_str_neq_internal") + .allowlist_function("rb_yarv_ary_entry_internal") + .allowlist_function("rb_yjit_ruby2_keywords_splat_p") + .allowlist_function("rb_yjit_fix_div_fix") + .allowlist_function("rb_yjit_fix_mod_fix") + .allowlist_function("rb_FL_TEST") + .allowlist_function("rb_FL_TEST_RAW") + .allowlist_function("rb_RB_TYPE_P") + .allowlist_function("rb_BASIC_OP_UNREDEFINED_P") + .allowlist_function("rb_RSTRUCT_LEN") + .allowlist_function("rb_RSTRUCT_SET") + .allowlist_function("rb_vm_ci_argc") + .allowlist_function("rb_vm_ci_mid") + .allowlist_function("rb_vm_ci_flag") + .allowlist_function("rb_vm_ci_kwarg") + .allowlist_function("rb_METHOD_ENTRY_VISI") + .allowlist_function("rb_RCLASS_ORIGIN") + .allowlist_function("rb_method_basic_definition_p") + .allowlist_function("rb_yjit_array_len") + .allowlist_function("rb_obj_class") + .allowlist_function("rb_obj_is_proc") + .allowlist_function("rb_vm_base_ptr") + .allowlist_function("rb_ec_stack_check") + .allowlist_function("rb_vm_top_self") + .allowlist_function("rb_yjit_splat_varg_checks") + .allowlist_function("rb_yjit_splat_varg_cfunc") + // We define VALUE manually, don't import it .blocklist_type("VALUE") |