From: "Eregon (Benoit Daloze) via ruby-core" Date: 2025-02-19T10:53:40+00:00 Subject: [ruby-core:121124] [Ruby master Feature#21140] Add a method to get the address of certain JIT related functions Issue #21140 has been updated by Eregon (Benoit Daloze). Thinking a bit more about this, how is RJIT going to work since on master it seems everything related to it has been removed? For example when looking at the [FFI JIT PoC](https://gist.github.com/tenderworks/f4cbb60f2c0dc3ab334eb73fec36f702) it uses `RubyVM::RJIT::C` (which is only defined when passing `--rjit` on the command line BTW) but that no longer exists at all on master. `Primitive.cexpr!()` (and Primitives in general) as used [here](https://github.com/ruby/ruby/blob/f32d5071b7b01f258eb45cf533496d82d5c0f6a1/rjit_c.rb) is not available outside of core, and so AFAIK there won't be any way to find out struct offsets of `rb_control_frame_t`. BTW exposing struct offsets is IMO more dangerous and risky than the list of internal functions above. It reminds me of old debugger gems which used to copy internal headers from some given CRuby version, that's very brittle. IOW, I think it would be good to figure out how RJIT is going to work as a gem, I suppose right now it cannot work as a gem. Maybe some part of it not depending on Fiddle should stay in core? ---------------------------------------- Feature #21140: Add a method to get the address of certain JIT related functions https://bugs.ruby-lang.org/issues/21140#change-112046 * 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/