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

ruby-changes:15348

From: kosaki <ko1@a...>
Date: Tue, 6 Apr 2010 23:07:45 +0900 (JST)
Subject: [ruby-changes:15348] Ruby:r27238 (trunk): * vm_core.h: Introduce UNINITIALIZED_VAR() macro.

kosaki	2010-04-06 23:07:06 +0900 (Tue, 06 Apr 2010)

  New Revision: 27238

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

  Log:
    * vm_core.h: Introduce UNINITIALIZED_VAR() macro.
    * thread.c (do_select): Use UNINITIALIZED_VAR() instead FAKE_FD_ZERO().
      Also, remove FAKE_FD_ZERO completely. [Feature #3018]

  Modified files:
    trunk/ChangeLog
    trunk/thread.c
    trunk/vm_core.h

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27237)
+++ ChangeLog	(revision 27238)
@@ -1,3 +1,9 @@
+Tue Apr  6 23:01:35 2010  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* vm_core.h: Introduce UNINITIALIZED_VAR() macro.
+	* thread.c (do_select): Use UNINITIALIZED_VAR() instead FAKE_FD_ZERO().
+	  Also, remove FAKE_FD_ZERO completely. [Feature #3018]
+
 Tue Apr  6 21:55:25 2010  Tanaka Akira  <akr@f...>
 
 	* configure.in: test localtime(3) overflow.  [ruby-dev:40910]
Index: vm_core.h
===================================================================
--- vm_core.h	(revision 27237)
+++ vm_core.h	(revision 27238)
@@ -106,6 +106,12 @@
 #define UNLIKELY(x) (x)
 #endif /* __GNUC__ >= 3 */
 
+#if __GNUC__ >= 3
+#define UNINITIALIZED_VAR(x) x = x
+#else
+#define UNINITIALIZED_VAR(x) x
+#endif
+
 typedef unsigned long rb_num_t;
 
 /* iseq data type */
Index: thread.c
===================================================================
--- thread.c	(revision 27237)
+++ thread.c	(revision 27238)
@@ -2415,12 +2415,9 @@
 	  struct timeval *timeout)
 {
     int result, lerrno;
-    fd_set orig_read, orig_write, orig_except;
-#if defined __GNUC__ && defined __x86_64__
-#define FAKE_FD_ZERO(f) (*(int *)&(f)=0) /* suppress lots of warnings */
-#else
-#define FAKE_FD_ZERO(f) ((void)0)
-#endif
+    fd_set UNINITIALIZED_VAR(orig_read);
+    fd_set UNINITIALIZED_VAR(orig_write);
+    fd_set UNINITIALIZED_VAR(orig_except);
 
 #ifndef linux
     double limit = 0;
@@ -2442,12 +2439,10 @@
     }
 #endif
 
-    if (read) orig_read = *read; else FAKE_FD_ZERO(orig_read);
-    if (write) orig_write = *write; else FAKE_FD_ZERO(orig_write);
-    if (except) orig_except = *except; else FAKE_FD_ZERO(orig_except);
+    if (read) orig_read = *read;
+    if (write) orig_write = *write;
+    if (except) orig_except = *except;
 
-#undef FAKE_FD_ZERO
-
   retry:
     lerrno = 0;
 

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

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