Changeset: 7401c070465b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7401c070465b
Modified Files:
        monetdb5/mal/mal.h
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
Branch: default
Log Message:

Simplify code for debugging


diffs (138 lines):

diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -146,7 +146,14 @@ typedef struct SYMDEF {
 typedef struct VARRECORD {
        char id[IDLENGTH];                      /* use the space for the full 
name */
        malType type;                           /* internal type signature */
-       short flags;                                    /* see below, reserve 
some space */
+    unsigned short constant:1,
+            typevar:1,
+            fixedtype:1,
+            udftype:1,
+            cleanup:1,
+            initialized:1,
+            used:1,
+            disabled:1;
        short depth;                            /* scope block depth, set to -1 
if not used */
        short worker;                           /* thread id of last worker 
producing it */
        ValRecord value;
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -1228,7 +1228,7 @@ printStackElm(stream *f, MalBlkPtr mb, V
        if (strcmp(nmeOnStk, nme) && strncmp(nmeOnStk, "BAT", 3))
                mnstr_printf(f, "!%s ", nmeOnStk);
        mnstr_printf(f, " %s", (isVarConstant(mb, index) ? " constant" : ""));
-       /* mnstr_printf(f, " %s", (isVarUsed(mb,index) ? "": " not used" ));*/
+       mnstr_printf(f, " %s", (isVarUsed(mb,index) ? "": " not used" ));
        mnstr_printf(f, " %s", (isVarTypedef(mb, index) ? " type variable" : 
""));
        GDKfree(nme);
        mnstr_printf(f, "\n");
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -629,6 +629,10 @@ setVariableScope(MalBlkPtr mb)
                                dflow= -1;
                        else depth--;
                }
+               if( blockReturn(p)){
+                       for (k = 0; k < p->argc; k++)
+                               setVarEolife(mb,getArg(p,k),pc);
+               }
        }
        for (k = 0; k < mb->vtop; k++)
                if( getVarEolife(mb,k) == 0)
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -768,7 +768,13 @@ clearVariable(MalBlkPtr mb, int varid)
        if (isVarConstant(mb, varid) || isVarDisabled(mb, varid))
                VALclear(&v->value);
        v->type = 0;
-       v->flags = 0;
+       v->constant= 0;
+       v->typevar= 0;          
+       v->fixedtype= 0;
+       v->udftype= 0;
+       v->cleanup= 0;
+       v->initialized= 0;
+       v->used= 0;
        v->rowcnt = 0;
        v->eolife = 0;
        v->stc = 0;
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -51,38 +51,39 @@
 #define getVarGDKType(M,I)     getGDKType((M)->var[I].type)
 #define setVarType(M,I,V)   (M)->var[I].type = V
 
-#define clrVarFixed(M,I)               ((M)->var[I].flags &= ~VAR_FIXTYPE)
-#define setVarFixed(M,I)               ((M)->var[I].flags |= VAR_FIXTYPE)
-#define isVarFixed(M,I)                ((M)->var[I].flags & VAR_FIXTYPE)
+#define clrVarFixed(M,I)               ((M)->var[I].fixedtype = 0)
+#define setVarFixed(M,I)               ((M)->var[I].fixedtype =1)
+#define isVarFixed(M,I)                ((M)->var[I].fixedtype)
 
-#define clrVarCleanup(M,I)             ((M)->var[I].flags &= ~VAR_CLEANUP)
-#define setVarCleanup(M,I)             ((M)->var[I].flags |= VAR_CLEANUP)
-#define isVarCleanup(M,I)              ((M)->var[I].flags & VAR_CLEANUP)
+#define clrVarCleanup(M,I)             ((M)->var[I].cleanup = 0)
+#define setVarCleanup(M,I)             ((M)->var[I].cleanup = 1)
+#define isVarCleanup(M,I)              ((M)->var[I].cleanup )
+
 #define isTmpVar(M,I)                  (*getVarName(M,I) == REFMARKER && 
*(getVarName(M,I)+1) == TMPMARKER)
 
-#define clrVarUsed(M,I)                ((M)->var[I].flags &= ~VAR_USED)
-#define setVarUsed(M,I)                ((M)->var[I].flags |= VAR_USED)
-#define isVarUsed(M,I)         ((M)->var[I].flags & VAR_USED)
+#define clrVarUsed(M,I)                ((M)->var[I].used = 0)
+#define setVarUsed(M,I)                ((M)->var[I].used = 1)
+#define isVarUsed(M,I)         ((M)->var[I].used)
 
-#define clrVarDisabled(M,I)            ((M)->var[I].flags &= ~VAR_DISABLED)
-#define setVarDisabled(M,I)            ((M)->var[I].flags |= VAR_DISABLED)
-#define isVarDisabled(M,I)             ((M)->var[I].flags & VAR_DISABLED)
+#define clrVarDisabled(M,I)            ((M)->var[I].disabled= 0 )
+#define setVarDisabled(M,I)            ((M)->var[I].disabled = 1)
+#define isVarDisabled(M,I)             ((M)->var[I].disabled)
 
-#define clrVarInit(M,I)                ((M)->var[I].flags &= ~VAR_INIT)
-#define setVarInit(M,I)                ((M)->var[I].flags |= VAR_INIT)
-#define isVarInit(M,I)         ((M)->var[I].flags & VAR_INIT)
+#define clrVarInit(M,I)                ((M)->var[I].initialized = 0)
+#define setVarInit(M,I)                ((M)->var[I].initialized = 1)
+#define isVarInit(M,I)         ((M)->var[I].initialized)
 
-#define clrVarTypedef(M,I)             ((M)->var[I].flags &= ~VAR_TYPEVAR)
-#define setVarTypedef(M,I)             ((M)->var[I].flags |= VAR_TYPEVAR)
-#define isVarTypedef(M,I)              ((M)->var[I].flags & VAR_TYPEVAR)
+#define clrVarTypedef(M,I)             ((M)->var[I].typevar = 0)
+#define setVarTypedef(M,I)             ((M)->var[I].typevar = 1)
+#define isVarTypedef(M,I)              ((M)->var[I].typevar)
 
-#define clrVarUDFtype(M,I)             ((M)->var[I].flags &= ~VAR_UDFTYPE)
-#define setVarUDFtype(M,I)             ((M)->var[I].flags |= VAR_UDFTYPE)
-#define isVarUDFtype(M,I)              ((M)->var[I].flags & VAR_UDFTYPE)
+#define clrVarUDFtype(M,I)             ((M)->var[I].udftype = 0)
+#define setVarUDFtype(M,I)             ((M)->var[I].udftype = 1)
+#define isVarUDFtype(M,I)              ((M)->var[I].udftype)
 
-#define clrVarConstant(M,I)            ((M)->var[I].flags &= ~VAR_CONSTANT)
-#define setVarConstant(M,I)            ((M)->var[I].flags |= VAR_CONSTANT)
-#define isVarConstant(M,I)             ((M)->var[I].flags & VAR_CONSTANT)
+#define clrVarConstant(M,I)            ((M)->var[I].constant = 0)
+#define setVarConstant(M,I)            ((M)->var[I].constant = 1)
+#define isVarConstant(M,I)             ((M)->var[I].constant)
 
 #define setVarDeclared(M,I,X)  ((M)->var[I].declared = X )
 #define getVarDeclared(M,I)            ((M)->var[I].declared)
@@ -191,6 +192,7 @@ mal_export void setPolymorphic(InstrPtr 
 #define blockStart(X)   ((X)->barrier && (((X)->barrier == BARRIERsymbol || \
              (X)->barrier == CATCHsymbol )))
 #define blockExit(X) ((X)->barrier == EXITsymbol)
+#define blockReturn(X) ((X)->barrier == RETURNsymbol)
 #define blockCntrl(X) ( (X)->barrier== LEAVEsymbol ||  \
              (X)->barrier== REDOsymbol || (X)->barrier== RETURNsymbol )
 #define isLinearFlow(X)  (!(blockStart(X) || blockExit(X) || \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to