[前][次][番号順一覧][スレッド一覧]

ruby-changes:73675

From: Aaron <ko1@a...>
Date: Thu, 22 Sep 2022 14:20:58 +0900 (JST)
Subject: [ruby-changes:73675] 083b4bb655 (master): add rb_control_frame_t

https://git.ruby-lang.org/ruby.git/commit/?id=083b4bb655

From 083b4bb65500376e6c5b9fdf9b7901d5ce4e421a Mon Sep 17 00:00:00 2001
From: Aaron Patterson <tenderlove@r...>
Date: Wed, 21 Sep 2022 08:58:19 -0700
Subject: add rb_control_frame_t

---
 lib/mjit/c_32.rb     | 14 ++++++++++++++
 lib/mjit/c_64.rb     | 14 ++++++++++++++
 tool/mjit/bindgen.rb |  1 +
 3 files changed, 29 insertions(+)

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 https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_32.rb#L191
     )
   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 https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_64.rb#L191
     )
   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,
diff --git a/tool/mjit/bindgen.rb b/tool/mjit/bindgen.rb
index 8bee57de7d..9839baa8d2 100755
--- a/tool/mjit/bindgen.rb
+++ b/tool/mjit/bindgen.rb
@@ -565,6 +565,7 @@ generator = BindingGenerator.new( https://github.com/ruby/ruby/blob/trunk/tool/mjit/bindgen.rb#L565
     rb_callcache
     rb_callinfo
     rb_cref_t
+    rb_control_frame_t
     rb_iseq_constant_body
     rb_iseq_location_t
     rb_iseq_struct
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]