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

ruby-changes:31113

From: nobu <ko1@a...>
Date: Tue, 8 Oct 2013 10:44:51 +0900 (JST)
Subject: [ruby-changes:31113] nobu:r43192 (trunk): cont.c: supplement comments of FIBER_USE_NATIVE

nobu	2013-10-08 10:44:45 +0900 (Tue, 08 Oct 2013)

  New Revision: 43192

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

  Log:
    cont.c: supplement comments of FIBER_USE_NATIVE
    
    * cont.c (FIBER_USE_NATIVE): supplement comments the reason why it is
      disabled.

  Modified files:
    trunk/cont.c
Index: cont.c
===================================================================
--- cont.c	(revision 43191)
+++ cont.c	(revision 43192)
@@ -15,20 +15,6 @@ https://github.com/ruby/ruby/blob/trunk/cont.c#L15
 #include "gc.h"
 #include "eval_intern.h"
 
-#if !defined(FIBER_USE_NATIVE)
-# if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
-#   if defined(__NetBSD__)
-#   elif defined(__sun)
-#   elif defined(__ia64)
-#   else
-#     define FIBER_USE_NATIVE 1
-#   endif
-# elif defined(_WIN32)
-#   if _WIN32_WINNT >= 0x0400
-#     define FIBER_USE_NATIVE 1
-#   endif
-# endif
-
 /* FIBER_USE_NATIVE enables Fiber performance improvement using system
  * dependent method such as make/setcontext on POSIX system or
  * CreateFiber() API on Windows.
@@ -40,11 +26,36 @@ https://github.com/ruby/ruby/blob/trunk/cont.c#L26
  * in Proc. of 51th Programming Symposium, pp.21--28 (2010) (in Japanese).
  */
 
+#if !defined(FIBER_USE_NATIVE)
+# if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
+#   if 0
+#   elif defined(__NetBSD__)
 /* On our experience, NetBSD doesn't support using setcontext() and pthread
  * simultaneously.  This is because pthread_self(), TLS and other information
  * are represented by stack pointer (higher bits of stack pointer).
  * TODO: check such constraint on configure.
  */
+#     define FIBER_USE_NATIVE 0
+#   elif defined(__sun)
+/* On Solaris because resuming any Fiber caused SEGV, for some reason.
+ */
+#     define FIBER_USE_NATIVE 0
+#   elif defined(__ia64)
+/* At least, Linux/ia64's getcontext(3) doesn't save register window.
+ */
+#     define FIBER_USE_NATIVE 0
+#   else
+#     define FIBER_USE_NATIVE 1
+#   endif
+# elif defined(_WIN32)
+#   if _WIN32_WINNT >= 0x0400
+/* only when _WIN32_WINNT >= 0x0400 on Windows because Fiber APIs are
+ * supported only such building (and running) environments.
+ * [ruby-dev:41192]
+ */
+#     define FIBER_USE_NATIVE 1
+#   endif
+# endif
 #endif
 #if !defined(FIBER_USE_NATIVE)
 #define FIBER_USE_NATIVE 0

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

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