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