ruby-changes:10069
From: nobu <ko1@a...>
Date: Sat, 17 Jan 2009 11:13:34 +0900 (JST)
Subject: [ruby-changes:10069] Ruby:r21612 (trunk): * cont.c (cont_restore_0): padding size doesn't need to be large
nobu 2009-01-17 11:11:38 +0900 (Sat, 17 Jan 2009) New Revision: 21612 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21612 Log: * cont.c (cont_restore_0): padding size doesn't need to be large if alloca is used. suppress warnings. Modified files: trunk/ChangeLog trunk/cont.c Index: ChangeLog =================================================================== --- ChangeLog (revision 21611) +++ ChangeLog (revision 21612) @@ -1,3 +1,8 @@ +Sat Jan 17 11:12:37 2009 Nobuyoshi Nakada <nobu@r...> + + * cont.c (cont_restore_0): padding size doesn't need to be large + if alloca is used. suppress warnings. + Sat Jan 17 11:12:21 2009 Nobuyoshi Nakada <nobu@r...> * vm_dump.c (vm_stack_dump_each): initialized at declarations. Index: cont.c =================================================================== --- cont.c (revision 21611) +++ cont.c (revision 21612) @@ -403,7 +403,11 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame) { if (cont->machine_stack_src) { +#ifdef HAVE_ALLOCA +#define STACK_PAD_SIZE 1 +#else #define STACK_PAD_SIZE 1024 +#endif VALUE space[STACK_PAD_SIZE]; #if !STACK_GROW_DIRECTION @@ -411,9 +415,11 @@ /* Stack grows downward */ #endif #if STACK_GROW_DIRECTION <= 0 - if (&space[0] > cont->machine_stack_src) { + volatile VALUE *const end = cont->machine_stack_src; + if (&space[0] > end) { # ifdef HAVE_ALLOCA - ALLOCA_N(VALUE, &space[0] - cont->machine_stack_src); + volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end); + (void)sp; # else cont_restore_0(cont, &space[0]); # endif @@ -425,9 +431,11 @@ /* Stack grows upward */ #endif #if STACK_GROW_DIRECTION >= 0 - if (&space[STACK_PAD_SIZE] < cont->machine_stack_src + cont->machine_stack_size) { + volatile VALUE *const end = cont->machine_stack_src + cont->machine_stack_size; + if (&space[STACK_PAD_SIZE] < end) { # ifdef HAVE_ALLOCA - ALLOCA_N(VALUE, cont->machine_stack_src + cont->machine_stack_size - &space[STACK_PAD_SIZE]); + volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]); + (void)sp; # else cont_restore_0(cont, &space[STACK_PAD_SIZE-1]); # endif -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/