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/