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

ruby-changes:74487

From: Takashi <ko1@a...>
Date: Mon, 14 Nov 2022 17:25:52 +0900 (JST)
Subject: [ruby-changes:74487] 80bab6c8ed (master): Import class constants with mjit-bindgen

https://git.ruby-lang.org/ruby.git/commit/?id=80bab6c8ed

From 80bab6c8eddbb225c88155f2eb456a4d937294c7 Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Mon, 14 Nov 2022 00:24:08 -0800
Subject: Import class constants with mjit-bindgen

---
 mjit_c.rb            | 33 ++++++++++++++++++++++++++-------
 tool/mjit/bindgen.rb |  8 ++++++++
 2 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/mjit_c.rb b/mjit_c.rb
index 533c97285d..41f22f5682 100644
--- a/mjit_c.rb
+++ b/mjit_c.rb
@@ -4,6 +4,8 @@ https://github.com/ruby/ruby/blob/trunk/mjit_c.rb#L4
 module RubyVM::MJIT
   C = Object.new
 
+  # This `class << C` section is for calling C functions.
+  # For variables/macros, please consider using tool/mjit/bindgen.rb instead.
   class << C
     def SHAPE_BITS
       Primitive.cexpr! 'UINT2NUM(SHAPE_BITS)'
@@ -156,13 +158,6 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/mjit_c.rb#L158
         return Qnil;
       }
     end
-
-    def rb_cFalseClass; Primitive.cexpr! 'PTR2NUM(rb_cFalseClass)' end
-    def rb_cNilClass;   Primitive.cexpr! 'PTR2NUM(rb_cNilClass)'   end
-    def rb_cTrueClass;  Primitive.cexpr! 'PTR2NUM(rb_cTrueClass)'  end
-    def rb_cInteger;    Primitive.cexpr! 'PTR2NUM(rb_cInteger)'    end
-    def rb_cSymbol;     Primitive.cexpr! 'PTR2NUM(rb_cSymbol)'     end
-    def rb_cFloat;      Primitive.cexpr! 'PTR2NUM(rb_cFloat)'      end
   end
 
   ### MJIT bindgen begin ###
@@ -211,6 +206,30 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/mjit_c.rb#L206
     Primitive.cexpr! %q{ ULONG2NUM(SHAPE_MASK) }
   end
 
+  def C.rb_cFalseClass
+    Primitive.cexpr! %q{ PTR2NUM(rb_cFalseClass) }
+  end
+
+  def C.rb_cFloat
+    Primitive.cexpr! %q{ PTR2NUM(rb_cFloat) }
+  end
+
+  def C.rb_cInteger
+    Primitive.cexpr! %q{ PTR2NUM(rb_cInteger) }
+  end
+
+  def C.rb_cNilClass
+    Primitive.cexpr! %q{ PTR2NUM(rb_cNilClass) }
+  end
+
+  def C.rb_cSymbol
+    Primitive.cexpr! %q{ PTR2NUM(rb_cSymbol) }
+  end
+
+  def C.rb_cTrueClass
+    Primitive.cexpr! %q{ PTR2NUM(rb_cTrueClass) }
+  end
+
   def C.CALL_DATA
     @CALL_DATA ||= self.rb_call_data
   end
diff --git a/tool/mjit/bindgen.rb b/tool/mjit/bindgen.rb
index 4d79b32bc2..70800b7dcb 100755
--- a/tool/mjit/bindgen.rb
+++ b/tool/mjit/bindgen.rb
@@ -345,6 +345,14 @@ generator = BindingGenerator.new( https://github.com/ruby/ruby/blob/trunk/tool/mjit/bindgen.rb#L345
       INVALID_SHAPE_ID
       SHAPE_MASK
     ],
+    PTR: %w[
+      rb_cFalseClass
+      rb_cFloat
+      rb_cInteger
+      rb_cNilClass
+      rb_cSymbol
+      rb_cTrueClass
+    ],
   },
   types: %w[
     CALL_DATA
-- 
cgit v1.2.3


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

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