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

Reply via email to