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

ruby-changes:73519

From: Takashi <ko1@a...>
Date: Sun, 11 Sep 2022 15:41:35 +0900 (JST)
Subject: [ruby-changes:73519] 472e7b8518 (master): MJIT: Use the built-in PACK_MAP

https://git.ruby-lang.org/ruby.git/commit/?id=472e7b8518

From 472e7b8518fbde98be3f0a06192a6695697bf879 Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Sun, 11 Sep 2022 15:39:32 +0900
Subject: MJIT: Use the built-in PACK_MAP

106744107b made this possible.
---
 lib/mjit/c_pointer.rb | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/lib/mjit/c_pointer.rb b/lib/mjit/c_pointer.rb
index 75ed8babd5..ce0948197d 100644
--- a/lib/mjit/c_pointer.rb
+++ b/lib/mjit/c_pointer.rb
@@ -2,14 +2,6 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_pointer.rb#L2
   # Every class under this namespace is a pointer. Even if the type is
   # immediate, it shouldn't be dereferenced until `*` is called.
   module CPointer
-    # Patched PACK_MAP to support unsigned operations
-    PACK_MAP = Fiddle::PackInfo::PACK_MAP.dup
-    PACK_MAP.keys.each do |type|
-      if type.negative? || type == Fiddle::TYPE_VOIDP
-        PACK_MAP[type] = PACK_MAP[type].upcase
-      end
-    end
-
     # Note: We'd like to avoid alphabetic method names to avoid a conflict
     # with member methods. to_i and to_s are considered an exception.
     class Struct
@@ -188,7 +180,7 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_pointer.rb#L180
       # @param fiddle_type [Integer] Fiddle::TYPE_*
       def self.define(fiddle_type)
         size = Fiddle::PackInfo::SIZE_MAP.fetch(fiddle_type)
-        pack = PACK_MAP.fetch(fiddle_type)
+        pack = Fiddle::PackInfo::PACK_MAP.fetch(fiddle_type)
 
         Class.new(self) do
           define_method(:initialize) do |addr|
@@ -252,13 +244,13 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_pointer.rb#L244
       # @param value [Integer, RubyVM::MJIT::CPointer::Struct] an address itself or an object that return an address with to_i
       def []=(index, value)
         Fiddle::Pointer.new(@addr + index * Fiddle::SIZEOF_VOIDP)[0, Fiddle::SIZEOF_VOIDP] =
-          [value.to_i].pack(PACK_MAP[Fiddle::TYPE_VOIDP])
+          [value.to_i].pack(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP])
       end
 
       private
 
       def dest_addr
-        Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_VOIDP].unpack1(PACK_MAP[Fiddle::TYPE_VOIDP])
+        Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_VOIDP].unpack1(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP])
       end
 
       def self.define(block)
@@ -272,7 +264,7 @@ module RubyVM::MJIT https://github.com/ruby/ruby/blob/trunk/lib/mjit/c_pointer.rb#L264
           # @param value [Integer, RubyVM::MJIT::CPointer::Struct] an address itself, or an object that return an address with to_i
           define_singleton_method(:[]=) do |addr, value|
             value = value.to_i
-            Fiddle::Pointer.new(addr)[0, Fiddle::SIZEOF_VOIDP] = [value].pack(PACK_MAP[Fiddle::TYPE_VOIDP])
+            Fiddle::Pointer.new(addr)[0, Fiddle::SIZEOF_VOIDP] = [value].pack(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP])
           end
         end
       end
-- 
cgit v1.2.1


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

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