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/