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

ruby-changes:4503

From: ko1@a...
Date: Mon, 14 Apr 2008 12:52:45 +0900 (JST)
Subject: [ruby-changes:4503] nobu - Ruby:r15996 (trunk): * gc.c (Init_stack): use ruby_init_stack.

nobu	2008-04-14 12:52:27 +0900 (Mon, 14 Apr 2008)

  New Revision: 15996

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/include/ruby/ruby.h

  Log:
    * gc.c (Init_stack): use ruby_init_stack.  [ruby-dev:34350]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/ruby.h?r1=15996&r2=15995&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15996&r2=15995&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/gc.c?r1=15996&r2=15995&diff_format=u

Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h	(revision 15995)
+++ include/ruby/ruby.h	(revision 15996)
@@ -823,15 +823,13 @@
 
 #ifdef __ia64
 void ruby_init_stack(VALUE*, void*);
-#define RUBY_INIT_STACK \
-    VALUE variable_in_this_stack_frame; \
-    ruby_init_stack(&variable_in_this_stack_frame, rb_ia64_bsp());
+#define ruby_init_stack(addr) ruby_init_stack(addr, rb_ia64_bsp())
 #else
 void ruby_init_stack(VALUE*);
+#endif
 #define RUBY_INIT_STACK \
     VALUE variable_in_this_stack_frame; \
     ruby_init_stack(&variable_in_this_stack_frame);
-#endif
 void ruby_init(void);
 void *ruby_options(int, char**);
 int ruby_run_node(void *);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15995)
+++ ChangeLog	(revision 15996)
@@ -1,5 +1,7 @@
-Mon Apr 14 12:47:02 2008  Nobuyoshi Nakada  <nobu@r...>
+Mon Apr 14 12:52:25 2008  Nobuyoshi Nakada  <nobu@r...>
 
+	* gc.c (Init_stack): use ruby_init_stack.  [ruby-dev:34350]
+
 	* gc.c (rb_objspace_t): packed globals.  [ruby-dev:34348]
 
 	* gc.c (finalizers): removed.  [ruby-dev:34349]
Index: gc.c
===================================================================
--- gc.c	(revision 15995)
+++ gc.c	(revision 15996)
@@ -1630,67 +1630,12 @@
 void
 Init_stack(VALUE *addr)
 {
-#ifdef __ia64
-    if (rb_gc_register_stack_start == 0) {
-# if defined(__FreeBSD__)
-        /*
-         * FreeBSD/ia64 currently does not have a way for a process to get the
-         * base address for the RSE backing store, so hardcode it.
-         */
-        rb_gc_register_stack_start = (4ULL<<61);
-# elif defined(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
-#  pragma weak __libc_ia64_register_backing_store_base
-        extern unsigned long __libc_ia64_register_backing_store_base;
-        rb_gc_register_stack_start = (VALUE*)__libc_ia64_register_backing_store_base;
-# endif
-    }
-    {
-        VALUE *bsp = (VALUE*)rb_ia64_bsp();
-        if (rb_gc_register_stack_start == 0 ||
-            bsp < rb_gc_register_stack_start) {
-            rb_gc_register_stack_start = bsp;
-        }
-    }
-#endif
-#if defined(_WIN32) || defined(__CYGWIN__)
-    MEMORY_BASIC_INFORMATION m;
-    memset(&m, 0, sizeof(m));
-    VirtualQuery(&m, &m, sizeof(m));
-    rb_gc_stack_start =
-	STACK_UPPER((VALUE *)&m, (VALUE *)m.BaseAddress,
-		    (VALUE *)((char *)m.BaseAddress + m.RegionSize) - 1);
-#elif defined(STACK_END_ADDRESS)
-    {
-        extern void *STACK_END_ADDRESS;
-        rb_gc_stack_start = STACK_END_ADDRESS;
-    }
-#else
-    if (!addr) addr = (VALUE *)&addr;
-    STACK_UPPER(&addr, addr, ++addr);
-    if (rb_gc_stack_start) {
-	if (STACK_UPPER(&addr,
-			rb_gc_stack_start > addr,
-			rb_gc_stack_start < addr))
-	    rb_gc_stack_start = addr;
-	return;
-    }
-    rb_gc_stack_start = addr;
-#endif
-#ifdef HAVE_GETRLIMIT
-    {
-	struct rlimit rlim;
-
-	if (getrlimit(RLIMIT_STACK, &rlim) == 0) {
-	    unsigned int space = rlim.rlim_cur/5;
-
-	    if (space > 1024*1024) space = 1024*1024;
-	    rb_gc_stack_maxsize = rlim.rlim_cur - space;
-	}
-    }
-#endif
+    ruby_init_stack(addr);
 }
 
-void ruby_init_stack(VALUE *addr
+#undef ruby_init_stack
+void
+ruby_init_stack(VALUE *addr
 #ifdef __ia64
     , void *bsp
 #endif

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

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