From 3c2f51aef24802c5e48eb33a4789adfe3a80f3c5 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 5 Dec 2013 10:36:43 +0900 Subject: remove unnecessary keep size adjustment in stack_extend_alloc(); close #1602 --- src/vm.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index a600a2944..0d6318685 100644 --- a/src/vm.c +++ b/src/vm.c @@ -132,17 +132,14 @@ envadjust(mrb_state *mrb, mrb_value *oldbase, mrb_value *newbase) /** def rec ; $deep =+ 1 ; if $deep > 1000 ; return 0 ; end ; rec ; end */ static void -stack_extend_alloc(mrb_state *mrb, int room, int keep) +stack_extend_alloc(mrb_state *mrb, int room) { mrb_value *oldbase = mrb->c->stbase; int size = mrb->c->stend - mrb->c->stbase; int off = mrb->c->stack - mrb->c->stbase; - /* do not leave uninitialized malloc region */ - if (keep > size) keep = size; - /* Use linear stack growth. - It is slightly slower than doubling thestack space, + It is slightly slower than doubling the stack space, but it saves memory on small devices. */ if (room <= size) size += MRB_STACK_GROWTH; @@ -164,9 +161,10 @@ static inline void stack_extend(mrb_state *mrb, int room, int keep) { if (mrb->c->stack + room >= mrb->c->stend) { - stack_extend_alloc(mrb, room, keep); + stack_extend_alloc(mrb, room); } if (room > keep) { + /* do not leave uninitialized malloc region */ stack_clear(&(mrb->c->stack[keep]), room - keep); } } -- cgit v1.2.3