From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2025-02-15T18:35:40+00:00 Subject: [ruby-core:121070] [Ruby master Feature#21140] Add a method to get the address of certain JIT related functions Issue #21140 has been updated by tenderlovemaking (Aaron Patterson). As an example, Both RJIT and YJIT use `rb_ary_entry_internal`. YJIT solves this by wrapping the function [here](https://github.com/ruby/ruby/blob/ba148e71e590d057d930681ae9c93450b9cfef96/yjit.c#L874-L878) (as `rb_yarv_ary_entry_internal`), then it adds the function to bindgen [here](https://github.com/ruby/ruby/blob/ba148e71e590d057d930681ae9c93450b9cfef96/yjit/bindgen/src/main.rs#L453). We could change RJIT to use `rb_yarv_ary_entry_internal`, and also use YJIT's bindgen code to generate `RubyVM::RJIT.address_of(:rb_yarv_ary_entry_internal)`. Then we don't have to maintain a specific list of symbols since YJIT's bindgen code must be updated when YJIT needs to update. ---------------------------------------- Feature #21140: Add a method to get the address of certain JIT related functions https://bugs.ruby-lang.org/issues/21140#change-111988 * Author: tenderlovemaking (Aaron Patterson) * Status: Open ---------------------------------------- Feature #21116 extracted RJIT as a gem. But RJIT accesses certain internal functions which it cannot access as a gem. For example it used the `rb_str_bytesize` function, but this symbol is not exported, so we cannot access it (even from a C extension). Instead of exporting these symbols, I would like to propose an API for getting access to their addresses in Ruby. For example ```ruby RubyVM::RJIT.address_of(:rb_str_bytesize) # => 123456 ``` I would like to limit the addresses to [this list](https://github.com/ruby/ruby/blob/f32d5071b7b01f258eb45cf533496d82d5c0f6a1/tool/rjit/bindgen.rb#L510-L578) which are the ones required by RJIT. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/