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 ;
       }