summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-14 03:52:27 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-14 03:52:27 +0000
commitb2dde8243ba18a68010e4b1f3b720c093a7c48a3 (patch)
treecae4a51a975e4436eaf0f7c104a0aa1830ef2d76 /gc.c
parent01f468d1383109ac8da474eba9f3512f7119b925 (diff)
* gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c63
1 files changed, 4 insertions, 59 deletions
diff --git a/gc.c b/gc.c
index de006e9a2d..edcd9b099b 100644
--- a/gc.c
+++ b/gc.c
@@ -1630,67 +1630,12 @@ ruby_set_stack_size(size_t size)
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