diff options
author | Takashi Kokubun <[email protected]> | 2023-02-07 23:25:33 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-05 22:11:20 -0800 |
commit | d11f960fb0243f2285f7f476c8b0fd244bbbdfc5 (patch) | |
tree | e02f87d7caf86ba3e4b845927091a77832568c55 /lib/ruby_vm/mjit/c_pointer.rb | |
parent | 5a1cee1d965301b05e9d2d85b0ee39ef3c6757f7 (diff) |
Implement non-embedded ivars
Diffstat (limited to 'lib/ruby_vm/mjit/c_pointer.rb')
-rw-r--r-- | lib/ruby_vm/mjit/c_pointer.rb | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/ruby_vm/mjit/c_pointer.rb b/lib/ruby_vm/mjit/c_pointer.rb index c91f6f646b..73cf267482 100644 --- a/lib/ruby_vm/mjit/c_pointer.rb +++ b/lib/ruby_vm/mjit/c_pointer.rb @@ -135,12 +135,13 @@ module RubyVM::MJIT define_singleton_method(:sizeof) { sizeof } # Part of Struct's offsetof implementation - define_singleton_method(:offsetof) do |*fields| - if fields.size == 1 - 0 - else - raise NotImplementedError + define_singleton_method(:offsetof) do |field, *fields| + member = members.fetch(field) + offset = 0 + unless fields.empty? + offset += member.offsetof(*fields) end + offset end define_method(:initialize) do |addr| |