cvsuser     03/01/13 09:04:48

  Modified:    .        KNOWN_ISSUES headers.c smallobject.c
  Log:
  cleanup - not really slower with -O3 but less duplicate code
  
  Revision  Changes    Path
  1.7       +0 -1      parrot/KNOWN_ISSUES
  
  Index: KNOWN_ISSUES
  ===================================================================
  RCS file: /cvs/public/parrot/KNOWN_ISSUES,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- KNOWN_ISSUES      12 Jan 2003 11:11:11 -0000      1.6
  +++ KNOWN_ISSUES      13 Jan 2003 17:04:48 -0000      1.7
  @@ -49,7 +49,6 @@
   
   Utilities
   
  -- disassemble.c dumps core
   - assemble.pl rolls its own packfile packing
   
   Classes
  
  
  
  1.33      +7 -46     parrot/headers.c
  
  Index: headers.c
  ===================================================================
  RCS file: /cvs/public/parrot/headers.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -w -r1.32 -r1.33
  --- headers.c 12 Jan 2003 11:11:11 -0000      1.32
  +++ headers.c 13 Jan 2003 17:04:48 -0000      1.33
  @@ -1,7 +1,7 @@
   /* headers.c
    *  Copyright: (When this is determined...it will go here)
    *  CVS Info
  - *     $Id: headers.c,v 1.32 2003/01/12 11:11:11 leo Exp $
  + *     $Id: headers.c,v 1.33 2003/01/13 17:04:48 leo Exp $
    *  Overview:
    *     Header management functions. Handles getting of various headers,
    *     and pool creation
  @@ -31,43 +31,16 @@
   #  define CONSTANT_PMC_HEADERS_PER_ALLOC 64
   /** PMC Header Functions for small-object lookup table **/
   
  -void
  -add_free_pmc(struct Parrot_Interp *interpreter,
  -        struct Small_Object_Pool *pool, void *pmc)
  -{
  -    PObj_flags_SETTO((PMC *)pmc, PObj_on_free_list_FLAG);
  -
  -    /* Don't let it point to garbage memory */
  -    ((PMC *)pmc)->data = NULL;
  -    ((PMC *)pmc)->metadata = NULL;
  -    ((PMC *)pmc)->synchronize = NULL;
  -
  -    /* Copied from add_free_object */
  -    *(void **)pmc = pool->free_list;
  -    pool->free_list = pmc;
  -    pool->num_free_objects++;
  -}
  -
   void *
   get_free_pmc(struct Parrot_Interp *interpreter, struct Small_Object_Pool *pool)
   {
  -    /* Copied from get_free_object */
  -    PMC *pmc;
  -
  -    if (!pool->free_list)
  -        (*pool->more_objects) (interpreter, pool);
  -
  -    pmc = pool->free_list;
  -    pool->free_list = *(void **)pmc;
  +    PMC *pmc = get_free_object(interpreter, pool);
   
  +    /* clear flags, set is_PMC_FLAG */
       PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG);
  -    /* PMCs mem is already washed, set pointers to NULL if needed */
  -    SET_NULL(pmc->data);
  -    SET_NULL(pmc->metadata);
  -    SET_NULL(pmc->synchronize);
  -
  -    pool->num_free_objects--;
  -
  +    ((PMC *)pmc)->data = NULL;
  +    ((PMC *)pmc)->metadata = NULL;
  +    ((PMC *)pmc)->synchronize = NULL;
       return pmc;
   }
   
  @@ -77,24 +50,13 @@
   get_free_buffer(struct Parrot_Interp *interpreter,
           struct Small_Object_Pool *pool)
   {
  -    /* Copied from get_free_object */
  -    Buffer *buffer;
  -
  -    if (!pool->free_list)
  -        (*pool->more_objects) (interpreter, pool);
  -    buffer = pool->free_list;
  -    pool->free_list = *(void **)buffer;
  +    Buffer *buffer = get_free_object(interpreter, pool);
   
       /* Don't let it point to garbage memory */
       buffer->bufstart = NULL;
       buffer->buflen = 0;
       /* Clear the flagpole (especially _on_free_list_FLAG) */
       PObj_flags_CLEARALL(buffer);
  -#if ! DISABLE_GC_DEBUG
  -    if (GC_DEBUG(interpreter))
  -        buffer->version++;
  -#endif
  -    pool->num_free_objects--;
       return buffer;
   }
   
  @@ -108,7 +70,6 @@
       struct Small_Object_Pool *pmc_pool =
           new_small_object_pool(interpreter, sizeof(PMC), num_headers);
   
  -    pmc_pool->add_free_object = add_free_pmc;
       pmc_pool->get_free_object = get_free_pmc;
       pmc_pool->more_objects = more_traceable_objects;
       pmc_pool->mem_pool = NULL;
  
  
  
  1.21      +8 -5      parrot/smallobject.c
  
  Index: smallobject.c
  ===================================================================
  RCS file: /cvs/public/parrot/smallobject.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -w -r1.20 -r1.21
  --- smallobject.c     12 Jan 2003 11:11:11 -0000      1.20
  +++ smallobject.c     13 Jan 2003 17:04:48 -0000      1.21
  @@ -1,7 +1,7 @@
   /* resources.c
    *  Copyright: (When this is determined...it will go here)
    *  CVS Info
  - *     $Id: smallobject.c,v 1.20 2003/01/12 11:11:11 leo Exp $
  + *     $Id: smallobject.c,v 1.21 2003/01/13 17:04:48 leo Exp $
    *  Overview:
    *     Handles the accessing of small object pools (header pools)
    *  Data Structure and Algorithms:
  @@ -66,7 +66,6 @@
   add_free_object(struct Parrot_Interp *interpreter,
           struct Small_Object_Pool *pool, void *to_add)
   {
  -    /* This code is copied to add_free_pmc */
       PObj_flags_SETTO((PObj *)to_add, PObj_on_free_list_FLAG);
       *(void **)to_add = pool->free_list;
       pool->free_list = to_add;
  @@ -78,7 +77,6 @@
   get_free_object(struct Parrot_Interp *interpreter,
           struct Small_Object_Pool *pool)
   {
  -    /* This code is copied to get_free_pmc and get_free_buffer */
       void *ptr;
   
       /* if we don't have any objects */
  @@ -87,6 +85,11 @@
   
       ptr = pool->free_list;
       pool->free_list = *(void **)ptr;
  +    pool->num_free_objects--;
  +#if ! DISABLE_GC_DEBUG
  +    if (GC_DEBUG(interpreter))
  +        ((Buffer*)ptr)->version++;
  +#endif
       return ptr;
   }
   
  @@ -133,9 +136,9 @@
           add_free_object (interpreter, pool, object);
           object = (void *)((char *)object + pool->object_size);
       }
  +    pool->total_objects += pool->objects_per_alloc;
   
       /* Allocate more next time */
  -    pool->total_objects += pool->objects_per_alloc;
       if (GC_DEBUG(interpreter)) {
           pool->objects_per_alloc *= GC_DEBUG_UNITS_PER_ALLOC_GROWTH_FACTOR;
           pool->replenish_level =
  @@ -147,7 +150,7 @@
           pool->replenish_level =
                   (size_t)(pool->total_objects * REPLENISH_LEVEL_FACTOR);
       }
  -    /* check alloc size agains maximum and set new allocation data */
  +    /* check alloc size against maximum */
       size = pool->object_size * pool->objects_per_alloc;
   
       if (size > POOL_MAX_BYTES) {
  
  
  


Reply via email to