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

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to