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

Reply via email to