Update of /cvsroot/monetdb/MonetDB5/src/mal
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv30216
Modified Files:
mal_debugger.mx mal_factory.mx mal_instruction.mx
mal_parser.mx
Log Message:
Normalize the RETURN and YIELD statement upon parsing.
This simplifies code in optimizers later on.
Index: mal_parser.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_parser.mx,v
retrieving revision 1.206
retrieving revision 1.207
diff -u -d -r1.206 -r1.207
--- mal_parser.mx 9 Dec 2007 16:21:06 -0000 1.206
+++ mal_parser.mx 25 Dec 2007 13:08:47 -0000 1.207
@@ -1492,6 +1492,16 @@
/* look for assignment operator */
if( !keyphrase2(cntxt,":=") ){
/* no assignment !! a control variable is allowed */
+ /* for the case RETURN X, we normalize it */
+ if( cntrl== RETURNsymbol || cntrl== YIELDsymbol){
+ int e,lim;
+ lim= curInstr->retc;
+ for(e=0; e<lim; e++){
+ curInstr= pushArgument(curBlk,curInstr,
getArg(curInstr,e));
+ curInstr->argv[e]=
getArg(getInstrPtr(curBlk,0),e);
+ }
+ }
+
if (currChar(cntxt) != ';')
parseError(cntxt,"';' expected\n");
goto part3;
Index: mal_factory.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_factory.mx,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- mal_factory.mx 6 Nov 2007 23:20:53 -0000 1.70
+++ mal_factory.mx 25 Dec 2007 13:08:47 -0000 1.71
@@ -608,7 +608,7 @@
p= getInstrPtr(pl->factory,0);
if( strcmp(nme, getFunctionId(p)) != 0) continue;
- s = findSymbolInModule(m, getName(nme,strlen(nme)) );
+ s = findSymbolInModule(m, nme );
if (s == NULL){
throw(MAL, "factory.remove",
"Internal error, sql_cache entry '%s'
missing",
Index: mal_debugger.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_debugger.mx,v
retrieving revision 1.214
retrieving revision 1.215
diff -u -d -r1.214 -r1.215
--- mal_debugger.mx 24 Dec 2007 12:28:24 -0000 1.214
+++ mal_debugger.mx 25 Dec 2007 13:08:47 -0000 1.215
@@ -582,7 +582,7 @@
modnme= request;
*fcnnme= 0;
fcnnme++;
- sym= findSymbol( getName(modnme,strlen(modnme)), fcnnme);
+ sym= findSymbol( modnme,fcnnme);
mdb->brkBlock[mdb->brkTop] = sym? sym->def: mb;
mdb->brkPc[mdb->brkTop] = -1;
mdb->brkVar[mdb->brkTop] = -1;
@@ -815,7 +815,7 @@
if( (h= strchr(fcnname,'[')) ){
*h=0; idx= atoi(h+1);
}
- fsym= findSymbol( getName(b,strlen(b)), fcnname);
+ fsym= findSymbol( b, fcnname);
if (fsym == 0) {
stream_printf(out, "'%s.%s' not found\n", b,fcnname);
return NULL;
Index: mal_instruction.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_instruction.mx,v
retrieving revision 1.289
retrieving revision 1.290
diff -u -d -r1.289 -r1.290
--- mal_instruction.mx 9 Dec 2007 20:43:51 -0000 1.289
+++ mal_instruction.mx 25 Dec 2007 13:08:47 -0000 1.290
@@ -557,6 +557,8 @@
#define blockExit(X) (X)->barrier == EXITsymbol
#define blockCntrl(X) ( (X)->barrier== LEAVEsymbol || \
(X)->barrier== REDOsymbol || (X)->barrier== RETURNsymbol )
+#define isLinearFlow(X) !(blockStart(X) || blockExit(X) || \
+ (X)->barrier== LEAVEsymbol || (X)->barrier==
REDOsymbol )
mal_export void strBeforeCall(ValPtr v, ValPtr bak);
mal_export void strAfterCall(ValPtr v, ValPtr bak);
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins