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

ruby-changes:20673

From: nobu <ko1@a...>
Date: Thu, 28 Jul 2011 12:34:04 +0900 (JST)
Subject: [ruby-changes:20673] nobu:r32721 (trunk): * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.

nobu	2011-07-28 12:32:56 +0900 (Thu, 28 Jul 2011)

  New Revision: 32721

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32721

  Log:
    * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.

  Modified files:
    trunk/ChangeLog
    trunk/ext/dl/callback/mkcallback.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32720)
+++ ChangeLog	(revision 32721)
@@ -1,5 +1,7 @@
-Thu Jul 28 12:32:49 2011  Nobuyoshi Nakada  <nobu@r...>
+Thu Jul 28 12:32:53 2011  Nobuyoshi Nakada  <nobu@r...>
 
+	* ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.
+
 	* ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
 	  dereference.
 
Index: ext/dl/callback/mkcallback.rb
===================================================================
--- ext/dl/callback/mkcallback.rb	(revision 32720)
+++ ext/dl/callback/mkcallback.rb	(revision 32721)
@@ -124,21 +124,13 @@
   <<-EOS
 #{calltype == STDCALL ? "\n#ifdef FUNC_STDCALL" : ""}
 static #{DLTYPE[ty][:type]}
-FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack" + i.to_s}.join(", ")})
+FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack#{i}"}.join(", ")})
 {
     VALUE ret, cb#{argc > 0 ? ", args[#{argc}]" : ""};
 #{
-      sizeof_voidp = [""].pack('p').size
-      sizeof_long = [0].pack('l!').size
       (0...argc).collect{|i|
-        if sizeof_voidp == sizeof_long
-          "    args[%d] = LONG2NUM(stack%d);" % [i,i]
-        elsif sizeof_voidp == 8 # should get sizeof_long_long...
-          "    args[%d] = LL2NUM(stack%d);" % [i,i]
-        else
-          raise "unknown size of void*"
-        end
-      }.join("\n")
+        "\n    args[#{i}] = PTR2NUM(stack#{i});"
+      }.join("")
 }
     cb = rb_ary_entry(rb_ary_entry(#{proc_entry}, #{ty}), #{(n * DLSTACK_SIZE) + argc});
     ret = rb_funcall2(cb, rb_dl_cb_call, #{argc}, #{argc > 0 ? 'args' : 'NULL'});

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

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