Changeset: 38381f7795af for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38381f7795af Modified Files: monetdb5/mal/mal_box.mx monetdb5/mal/mal_stack.c monetdb5/mal/mal_stack.h Branch: Aug2011 Log Message:
Redo of changeset 13184d72c4bb. Resize stack allocated to box upon need Removal of the old alloca call. diffs (61 lines): diff --git a/monetdb5/mal/mal_box.mx b/monetdb5/mal/mal_box.mx --- a/monetdb5/mal/mal_box.mx +++ b/monetdb5/mal/mal_box.mx @@ -425,7 +425,8 @@ return 0; if (i < 0) { i = newVariable(box->sym, GDKstrdup(name), type); - chkStack(box->val, i); + if (box->val->stksize <= i) + box->val =reallocStack(box->val, STACKINCR); } v = &box->val->stk[i]; VALclear(v); diff --git a/monetdb5/mal/mal_stack.c b/monetdb5/mal/mal_stack.c --- a/monetdb5/mal/mal_stack.c +++ b/monetdb5/mal/mal_stack.c @@ -106,12 +106,9 @@ if (s->stksize > cnt) return s; k = ((cnt / STACKINCR) + 1) * STACKINCR; - s = (MalStkPtr) alloca(stackSize(k)); - memset((char *) s, 0, stackSize(k)); + s = (MalStkPtr) GDKzalloc(stackSize(k)); memcpy(s, old, stackSize(old->stksize)); s->stksize = k; - /* cannot gdk free, alloca data */ - assert(0); GDKfree(old); return s; } @@ -125,19 +122,6 @@ * runtime stack. */ void -chkStack(MalStkPtr stk, int i) -{ -#if 0 -/* avoid the darkness */ - if (stk->stksize <= i) { - reallocStack(stk, STACKINCR); - } -#else - (void)stk; - (void)i; -#endif -} -void freeStack(MalStkPtr stk) { clearStack(stk); diff --git a/monetdb5/mal/mal_stack.h b/monetdb5/mal/mal_stack.h --- a/monetdb5/mal/mal_stack.h +++ b/monetdb5/mal/mal_stack.h @@ -77,7 +77,6 @@ mal_export MalStkPtr reallocGlobalStack(MalStkPtr s, int cnt); mal_export void freeStack(MalStkPtr stk); mal_export void clearStack(MalStkPtr s); -mal_export void chkStack(MalStkPtr stk, int i); /* used in src/mal/mal_box.c */ #define VARfreeze(X) if(X){X->frozen=TRUE;} #define VARfixate(X) if(X){X->constant=TRUE;} _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list