Diff for /parser3/src/main/pa_memory.C between versions 1.1.2.5.2.1 and 1.20

version 1.1.2.5.2.1, 2003/03/18 15:14:19 version 1.20, 2024/11/09 17:17:51
Line 1 Line 1
 /** @file  /** @file
         Parser: memory reference counting classes.          Parser: memory reference counting classes.
   
         Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001-2024 Art. Lebedev Studio (http://www.artlebedev.com)
         Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)          Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
 */  */
   
 static const char* IDENT_MEMORY_C="$Date$";  
   
 /*  
 #include "pa_exception.h"  
 #include "pa_common.h"*/  
 #include "pa_sapi.h"  #include "pa_sapi.h"
   #include "pa_common.h"
   #include "pa_threads.h"
   
 void *pa_fail_alloc(const char *what, size_t size) {  volatile const char * IDENT_PA_MEMORY_C="$Id$" IDENT_PA_MEMORY_H;
         SAPI::abort("out of memory: failed to %s %u bytes",  
                 what, size);  
   
   void *pa_fail_alloc(const char* what, size_t size) {
   #ifdef PA_DEBUG_DISABLE_GC
           SAPI::die("out of memory (in pa_fail_alloc)");
   #else
           SAPI::die("out of memory: failed to %s %u bytes. heap_used=%u, heap_free=%u, bytes_since_gc=%u, total_bytes=%u",
                   what, size, GC_get_heap_size(), GC_get_free_bytes(), GC_get_bytes_since_gc(), GC_get_total_bytes());
   #endif
         // never reached          // never reached
         return 0;          return 0;
 }  }
   
   int pa_free_space_divisor = 0;
   
   void pa_gc_collect(bool forced){
   #ifndef PA_DEBUG_DISABLE_GC
       int divisor = pa_free_space_divisor; // as it can change during collect in multithreaded enviroment
       if(!divisor) GC_enable();
       if(!divisor || forced) GC_gcollect();
       if(!divisor) GC_disable();
   #endif
   }
   
   void pa_gc_set_free_space_divisor(int divisor){
   #ifndef PA_DEBUG_DISABLE_GC
           if(divisor != pa_free_space_divisor){
                   SYNCHRONIZED;
                   if(pa_free_space_divisor){
                           if(!divisor) GC_disable();
                   } else {
                           if(divisor) GC_enable();
                   }
                   if(divisor)
                           GC_set_free_space_divisor(divisor);
                   pa_free_space_divisor = divisor;
           }
   #endif
   }

Removed from v.1.1.2.5.2.1  
changed lines
  Added in v.1.20


E-mail: