diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2022-09-21 08:58:19 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2022-09-21 22:20:35 -0700 |
commit | 083b4bb65500376e6c5b9fdf9b7901d5ce4e421a (patch) | |
tree | e4763c99ad42b53e44f50912babd90639383b6ad /lib/mjit | |
parent | 9058ba218c382744a737d47e2f9c8c0055386dc8 (diff) |
add rb_control_frame_t
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6417
Diffstat (limited to 'lib/mjit')
-rw-r--r-- | lib/mjit/c_32.rb | 14 | ||||
-rw-r--r-- | lib/mjit/c_64.rb | 14 |
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/mjit/c_32.rb b/lib/mjit/c_32.rb index a369a3e852..e966cc2919 100644 --- a/lib/mjit/c_32.rb +++ b/lib/mjit/c_32.rb @@ -191,6 +191,20 @@ module RubyVM::MJIT ) end + def C.rb_control_frame_t + @rb_control_frame_t ||= CType::Struct.new( + "rb_control_frame_struct", 32, + pc: [0, CType::Pointer.new { self.VALUE }], + sp: [32, CType::Pointer.new { self.VALUE }], + iseq: [64, CType::Pointer.new { self.rb_iseq_t }], + self: [96, self.VALUE], + ep: [128, CType::Pointer.new { self.VALUE }], + block_code: [160, CType::Pointer.new { CType::Immediate.new(0) }], + __bp__: [192, CType::Pointer.new { self.VALUE }], + jit_return: [224, CType::Pointer.new { CType::Immediate.new(0) }], + ) + end + def C.rb_cref_t @rb_cref_t ||= CType::Struct.new( "rb_cref_struct", 20, diff --git a/lib/mjit/c_64.rb b/lib/mjit/c_64.rb index e3989a12e2..ad2cfa74c6 100644 --- a/lib/mjit/c_64.rb +++ b/lib/mjit/c_64.rb @@ -191,6 +191,20 @@ module RubyVM::MJIT ) end + def C.rb_control_frame_t + @rb_control_frame_t ||= CType::Struct.new( + "rb_control_frame_struct", 64, + pc: [0, CType::Pointer.new { self.VALUE }], + sp: [64, CType::Pointer.new { self.VALUE }], + iseq: [128, CType::Pointer.new { self.rb_iseq_t }], + self: [192, self.VALUE], + ep: [256, CType::Pointer.new { self.VALUE }], + block_code: [320, CType::Pointer.new { CType::Immediate.new(0) }], + __bp__: [384, CType::Pointer.new { self.VALUE }], + jit_return: [448, CType::Pointer.new { CType::Immediate.new(0) }], + ) + end + def C.rb_cref_t @rb_cref_t ||= CType::Struct.new( "rb_cref_struct", 40, |