summaryrefslogtreecommitdiff
path: root/lib/ruby_vm/mjit/c_pointer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ruby_vm/mjit/c_pointer.rb')
-rw-r--r--lib/ruby_vm/mjit/c_pointer.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/ruby_vm/mjit/c_pointer.rb b/lib/ruby_vm/mjit/c_pointer.rb
index a92c2140ae..de45c171c3 100644
--- a/lib/ruby_vm/mjit/c_pointer.rb
+++ b/lib/ruby_vm/mjit/c_pointer.rb
@@ -54,6 +54,12 @@ module RubyVM::MJIT # :nodoc: all
# Return the size of this type
define_singleton_method(:sizeof) { sizeof }
+ # Get the offset of a member named +name+
+ define_singleton_method(:offsetof) { |name|
+ _, offset = members.fetch(name)
+ offset / 8
+ }
+
define_method(:initialize) do |addr = nil|
if addr.nil? # TODO: get rid of this feature later
addr = Fiddle.malloc(sizeof)