Skip to content

Commit

Permalink
* cont.c (cont_restore_0): padding size doesn't need to be large
Browse files Browse the repository at this point in the history
  if alloca is used.  suppress warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Jan 17, 2009
1 parent f09bcbf commit 8ae8afa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
Sat Jan 17 11:12:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>

* 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@ruby-lang.org>

* vm_dump.c (vm_stack_dump_each): initialized at declarations.
Expand Down
16 changes: 12 additions & 4 deletions cont.c
Original file line number Diff line number Diff line change
Expand Up @@ -403,17 +403,23 @@ static void
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
if (addr_in_prev_frame > &space[0]) {
/* 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
Expand All @@ -425,9 +431,11 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
/* 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
Expand Down

0 comments on commit 8ae8afa

Please sign in to comment.