You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@locus.apache.org on 2000/06/25 21:49:13 UTC
cvs commit: embperl epcomp.c epdom.c epdom.h epmain.c
richter 00/06/25 12:49:12
Modified: . Tag: Embperl2 epcomp.c epdom.c epdom.h epmain.c
Log:
Embperl 2 - memory management
Revision Changes Path
No revision
No revision
1.1.2.36 +13 -19 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.1.2.35
retrieving revision 1.1.2.36
diff -u -r1.1.2.35 -r1.1.2.36
--- epcomp.c 2000/06/19 04:15:25 1.1.2.35
+++ epcomp.c 2000/06/25 19:49:11 1.1.2.36
@@ -1005,7 +1005,7 @@
return rcEvalErr ;
}
- lprintf (r, "ppSV=%s type=%d\n", *ppSV?"ok":"NULL", *ppSV?SvTYPE (*ppSV):-1) ;
+ /* lprintf (r, "ppSV=%s type=%d\n", *ppSV?"ok":"NULL", *ppSV?SvTYPE (*ppSV):-1) ; */
if (*ppSV == NULL || SvTYPE (*ppSV) != SVt_IV)
{
if ((rc = ParseFile (r)) != ok)
@@ -1014,8 +1014,8 @@
cl2 = clock () ;
*ppSV = newSViv(r -> xCurrDomTree) ;
- /* SvREFCNT_inc (*ppSV) ; */
- lprintf (r, "IV ppSV=%s type=%d\n", *ppSV?"ok":"NULL", *ppSV?SvTYPE (*ppSV):-1) ;
+ /* SvREFCNT_inc (*ppSV) ; */
+ /* lprintf (r, "IV ppSV=%s type=%d\n", *ppSV?"ok":"NULL", *ppSV?SvTYPE (*ppSV):-1) ; */
pDomTree = DomTree_self (r -> xCurrDomTree) ;
@@ -1026,15 +1026,6 @@
pDomTree -> pSV = (SV *)newHV () ;
nLabelCnt = 1 ;
- /* xNode = Node_firstChild (pDomTree, r -> xDocument) ;
- while (xNode)
- {
- if ((rc = embperl_CompileNode (pDomTree, xNode, &bCheckpointPending)) != ok)
- return rc ;
-
- xNode = Node_nextSibling (pDomTree, xNode) ;
- }
- */
if ((rc = embperl_CompileNode (pDomTree, r -> xDocument, &bCheckpointPending)) != ok)
return rc ;
@@ -1059,6 +1050,8 @@
lprintf (r, "[%d]PERF: Compile Time: %d ms \n", r -> nPid, ((cl4 - cl1) * 1000 / CLOCKS_PER_SEC)) ;
}
#endif
+
+ StringFree (&pProg) ;
}
else
{
@@ -1093,15 +1086,16 @@
SvREFCNT_dec (args[1]) ;
}
- cl2 = clock () ;
+ cl2 = clock () ;
#ifdef CLOCKS_PER_SEC
- if (r -> bDebug)
- {
- lprintf (r, "[%d]PERF: Run Start Time: %d ms \n", r -> nPid, ((cl1 - r -> startclock) * 1000 / CLOCKS_PER_SEC)) ;
- lprintf (r, "[%d]PERF: Run End Time: %d ms \n", r -> nPid, ((cl2 - r -> startclock) * 1000 / CLOCKS_PER_SEC)) ;
- lprintf (r, "[%d]PERF: Run Time: %d ms \n", r -> nPid, ((cl2 - cl1) * 1000 / CLOCKS_PER_SEC)) ;
- }
+ if (r -> bDebug)
+ {
+ lprintf (r, "[%d]PERF: Run Start Time: %d ms \n", r -> nPid, ((cl1 - r -> startclock) * 1000 / CLOCKS_PER_SEC)) ;
+ lprintf (r, "[%d]PERF: Run End Time: %d ms \n", r -> nPid, ((cl2 - r -> startclock) * 1000 / CLOCKS_PER_SEC)) ;
+ lprintf (r, "[%d]PERF: Run Time: %d ms \n", r -> nPid, ((cl2 - cl1) * 1000 / CLOCKS_PER_SEC)) ;
+ }
#endif
+
}
return ok ;
1.1.2.38 +39 -0 embperl/Attic/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.c,v
retrieving revision 1.1.2.37
retrieving revision 1.1.2.38
diff -u -r1.1.2.37 -r1.1.2.38
--- epdom.c 2000/06/14 11:48:59 1.1.2.37
+++ epdom.c 2000/06/25 19:49:11 1.1.2.38
@@ -445,6 +445,45 @@
/* ------------------------------------------------------------------------ */
/* */
+/* DomTree_delete */
+/* */
+/* */
+/* */
+/* ------------------------------------------------------------------------ */
+
+int DomTree_delete (tDomTree * pDomTree)
+
+ {
+ tNodePad * * pLookup = (tNodePad * *)pDomTree -> pLookup ;
+ int numLookup = ArrayGetSize (pLookup) ;
+ tIndex xDomTree = pDomTree -> xNdx ;
+
+ while (numLookup-- > 0)
+ {
+ tNodePad * pPad = *pLookup ;
+ if (pPad && pPad -> nType == ntypPad && xDomTree == pPad -> xDomTree)
+ {
+ dom_free (pPad) ;
+ }
+
+ pLookup++ ;
+ }
+
+ ArrayFree (&pDomTree -> pLookup) ;
+ ArrayFree (&pDomTree -> pOrder) ;
+
+ if (pDomTree -> pSV)
+ SvREFCNT_dec (pDomTree -> pSV) ;
+
+ /*pDomTrees[pDomTree -> xNdx] = NULL ;
+ dom_free (pDomTree) ;*/
+
+ return ok ;
+ }
+
+
+/* ------------------------------------------------------------------------ */
+/* */
/* DomTree_clone */
/* */
/* */
1.1.2.28 +2 -0 embperl/Attic/epdom.h
Index: epdom.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.h,v
retrieving revision 1.1.2.27
retrieving revision 1.1.2.28
diff -u -r1.1.2.27 -r1.1.2.28
--- epdom.h 2000/06/18 19:27:54 1.1.2.27
+++ epdom.h 2000/06/25 19:49:12 1.1.2.28
@@ -222,6 +222,8 @@
int DomTree_new (tDomTree * * pNewLookup) ;
+int DomTree_delete (tDomTree * pDomTree) ;
+
void DomTree_checkpoint (tIndex xDomTree, tNode xChild) ;
int DomTree_selfDiscardAfterCheckpoint (/*in*/ tDomTree * pDomTree,
1.65.2.13 +5 -0 embperl/epmain.c
Index: epmain.c
===================================================================
RCS file: /home/cvs/embperl/epmain.c,v
retrieving revision 1.65.2.12
retrieving revision 1.65.2.13
diff -u -r1.65.2.12 -r1.65.2.13
--- epmain.c 2000/06/13 21:13:37 1.65.2.12
+++ epmain.c 2000/06/25 19:49:12 1.65.2.13
@@ -2502,6 +2502,11 @@
if (!r -> bAppendToMainReq)
CloseOutput (r) ;
+
+ if (r -> xCurrDomTree && !r -> bAppendToMainReq)
+ DomTree_delete (DomTree_self (r -> xCurrDomTree)) ;
+
+
return ok ;
}