Changeset: 7cad5f3a528d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7cad5f3a528d
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
monetdb5/optimizer/opt_garbageCollector.c
Branch: default
Log Message:
Avoid some useless work in the garbage collector.
diffs (86 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -11517,6 +11517,7 @@ Ready.
[ "optimizer", "no_mitosis_pipe", "function
optimizer.no_mitosis_pipe():void;", "", "" ]
[ "optimizer", "oltp", "pattern optimizer.oltp():str ", "OPTwrapper;",
"" ]
[ "optimizer", "oltp", "pattern optimizer.oltp(mod:str, fcn:str):str ",
"OPTwrapper;", "Inject the OLTP locking primitives." ]
+[ "optimizer", "oltp_pipe", "function optimizer.oltp_pipe():void;", "",
"" ]
[ "optimizer", "optimize", "pattern optimizer.optimize(mod:str,
fcn:str):void ", "QOToptimize;", "Optimize a specific operation" ]
[ "optimizer", "orcam", "pattern optimizer.orcam(mod:str, fcn:str,
targetmod:str, targetfcn:str):void ", "OPTorcam;", "Inverse macro,
find pattern and replace with a function call." ]
[ "optimizer", "orcam", "pattern optimizer.orcam(targetmod:str,
targetfcn:str):void ", "OPTorcam;", "Inverse macro processor for current
function" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -15929,6 +15929,7 @@ Ready.
[ "optimizer", "no_mitosis_pipe", "function
optimizer.no_mitosis_pipe():void;", "", "" ]
[ "optimizer", "oltp", "pattern optimizer.oltp():str ", "OPTwrapper;",
"" ]
[ "optimizer", "oltp", "pattern optimizer.oltp(mod:str, fcn:str):str ",
"OPTwrapper;", "Inject the OLTP locking primitives." ]
+[ "optimizer", "oltp_pipe", "function optimizer.oltp_pipe():void;", "",
"" ]
[ "optimizer", "optimize", "pattern optimizer.optimize(mod:str,
fcn:str):void ", "QOToptimize;", "Optimize a specific operation" ]
[ "optimizer", "orcam", "pattern optimizer.orcam(mod:str, fcn:str,
targetmod:str, targetfcn:str):void ", "OPTorcam;", "Inverse macro,
find pattern and replace with a function call." ]
[ "optimizer", "orcam", "pattern optimizer.orcam(targetmod:str,
targetfcn:str):void ", "OPTorcam;", "Inverse macro processor for current
function" ]
diff --git a/monetdb5/optimizer/opt_garbageCollector.c
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -31,6 +31,7 @@ OPTgarbageCollectorImplementation(Client
char buf[256];
lng usec = GDKusec();
str msg = MAL_SUCCEED;
+ char *used;
//int *varlnk, *stmtlnk;
(void) pci;
@@ -49,6 +50,10 @@ OPTgarbageCollectorImplementation(Client
}
*/
+ used = (char*) GDKzalloc(sizeof(char) * mb->vtop);
+ if ( used == NULL)
+ throw(MAL, "optimizer.garbagecollector", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
+
old= mb->stmt;
limit = mb->stop;
slimit = mb->ssize;
@@ -91,6 +96,8 @@ OPTgarbageCollectorImplementation(Client
p->typechk = TYPE_UNKNOWN;
/* Set the program counter to ease profiling */
p->pc = i;
+ for( j = 0; j< p->retc; j++)
+ used[getArg(p,j)] = 1;
if ( p->barrier == RETURNsymbol){
pushInstruction(mb, p);
@@ -152,14 +159,17 @@ OPTgarbageCollectorImplementation(Client
}
#endif
- /* rename all temporaries for ease of debugging */
+ /* rename all temporaries used for ease of debugging and profile
interpretation */
for( i = 0; i < mb->vtop; i++)
- if( sscanf(getVarName(mb,i),"X_%d", &j) == 1)
- snprintf(getVarName(mb,i),IDLENGTH,"X_%d",i);
- else
- if( sscanf(getVarName(mb,i),"C_%d", &j) == 1)
- snprintf(getVarName(mb,i),IDLENGTH,"C_%d",i);
-
+ if ( used[i]){
+ str nme = getVarName(mb,i);
+ if( nme[0] == 'X' && nme[1] == '_' )
+ snprintf(nme, IDLENGTH, "X_%d",i);
+ else
+ if( nme[0] == 'C' && nme[1] == '_' )
+ snprintf(nme, IDLENGTH,"C_%d",i);
+ }
+ GDKfree(used);
/* leave a consistent scope admin behind */
setVariableScope(mb);
/* Defense line against incorrect plans */
@@ -168,6 +178,7 @@ OPTgarbageCollectorImplementation(Client
chkFlow(mb);
chkDeclarations(mb);
}
+
/* keep all actions taken as a post block comment */
usec = GDKusec()- usec;
snprintf(buf,256,"%-20s actions=%2d time=" LLFMT "
usec","garbagecollector",actions, usec);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list