richter 00/12/20 06:51:54
Modified: . Tag: Embperl2c epcomp.c
Log:
Embperl 2
Revision Changes Path
No revision
No revision
1.4.2.30 +12 -2 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.4.2.29
retrieving revision 1.4.2.30
diff -u -r1.4.2.29 -r1.4.2.30
--- epcomp.c 2000/12/18 20:41:40 1.4.2.29
+++ epcomp.c 2000/12/20 14:51:53 1.4.2.30
@@ -912,6 +912,7 @@
/*in*/ tNodeData * pNode,
/*in*/ tEmbperlCmd * pCmd,
/*in*/ int nCheckpointCodeOffset,
+ /*in*/ int nCheckpointLastNode,
/*i/o*/ int * bCheckpointPending)
@@ -944,6 +945,9 @@
lprintf (pCurrReq, "[%d]EPCOMP: #%d L%d Remove Checkpoint\n", pCurrReq ->
nPid, pNode -> xNdx, pNode -> nLinenumber) ;
nCheckpointCodeOffset = 0 ;
*bCheckpointPending = -1 ; /* set checkpoint on next possibility */
+ if (nCheckpointLastNode)
+ pDomTree -> xLastNode = nCheckpointLastNode ;
+
}
if (*bCheckpointPending && (pNode -> bFlags & nflgIgnore))
@@ -955,6 +959,8 @@
//l = sprintf (buf, " _ep_cp($_ep_DomTree,%d) ;\n",
*bCheckpointPending<0?pNode -> xNdx:*bCheckpointPending) ;
//l = sprintf (buf, " _ep_cp($_ep_DomTree,%d) ;\n", pNode -> xNdx) ;
l = sprintf (buf, " _ep_cp(%d) ;\n", pNode -> xNdx) ;
+ nCheckpointLastNode = pDomTree -> xLastNode ;
+ pDomTree -> xLastNode = pNode -> xNdx ;
//l = sprintf (buf, " $_ep_cp=%d;\n", pNode -> xNdx) ;
nCheckpointCodeOffset = StringAdd (r -> pProg, buf, l) ;
*bCheckpointPending = 0 ;
@@ -1121,6 +1127,7 @@
int nAttr = 0 ;
int nStartCodeOffset = 0 ;
int nCheckpointCodeOffset = 0 ;
+ int nCheckpointLastNode = 0 ;
if (pCurrReq -> bDebug & dbgParse)
@@ -1154,7 +1161,9 @@
pNode -> bFlags |= nflgCheckpoint ;
//l = sprintf (buf, " _ep_cp($_ep_DomTree,%d) ;\n",
*bCheckpointPending<0?pNode -> xNdx:*bCheckpointPending) ;
//l = sprintf (buf, " _ep_cp($_ep_DomTree,%d) ;\n", pNode -> xNdx) ;
- l = sprintf (buf, " _ep_cp(%d) ;\n", pNode -> xNdx) ;
+ l = sprintf (buf, " _ep_cp(%d) ;\n", xNode) ;
+ nCheckpointLastNode = pDomTree -> xLastNode ;
+ pDomTree -> xLastNode = xNode ;
//l = sprintf (buf, " $_ep_cp=%d;\n", pNode -> xNdx) ;
nCheckpointCodeOffset = StringAdd (r -> pProg, buf, l) ;
*bCheckpointPending = 0 ;
@@ -1168,6 +1177,7 @@
{
r -> pProg = &r -> pProgDef ;
nCheckpointCodeOffset = 0 ;
+ nCheckpointLastNode = 0 ;
}
if (pCmd == NULL || (pCmd -> bRemoveNode & 8) == 0)
@@ -1202,7 +1212,7 @@
pCmd = pCmdHead ;
if (pCmd)
- if ((rc = embperl_CompilePostProcess (r, pDomTree, pNode, pCmd,
nCheckpointCodeOffset, bCheckpointPending)) != ok)
+ if ((rc = embperl_CompilePostProcess (r, pDomTree, pNode, pCmd,
nCheckpointCodeOffset, nCheckpointLastNode, bCheckpointPending)) != ok)
return rc ;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]