cvsuser     04/12/07 06:42:06

  Modified:    src      objects.c
  Log:
  invalidate method cache in store_global - free all
  
  Revision  Changes    Path
  1.126     +13 -3     parrot/src/objects.c
  
  Index: objects.c
  ===================================================================
  RCS file: /cvs/public/parrot/src/objects.c,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- objects.c 7 Dec 2004 14:19:12 -0000       1.125
  +++ objects.c 7 Dec 2004 14:42:06 -0000       1.126
  @@ -1,6 +1,6 @@
   /*
   Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
  -$Id: objects.c,v 1.125 2004/12/07 14:19:12 leo Exp $
  +$Id: objects.c,v 1.126 2004/12/07 14:42:06 leo Exp $
   
   =head1 NAME
   
  @@ -1077,16 +1077,28 @@
       SET_NULL(mc->retc_cache);
   }
   
  +#define TBL_SIZE_MASK 0x1ff   /* x bits 2..10 */
  +#define TBL_SIZE (1 + TBL_SIZE_MASK)
  +
   static void
   invalidate_type_caches(Interp *interpreter, UINTVAL type)
   {
       Caches *mc = interpreter->caches;
  +    Meth_cache_entry *e, *next;
  +    INTVAL i;
   
       if (!mc)
           return;
       /* is it a valid entry */
       if (type >= mc->mc_size || !mc->idx[type])
           return;
  +    for (i = 0; i < TBL_SIZE; ++i) {
  +        for (e = mc->idx[type][i]; e; ) {
  +            next = e->next;
  +            mem_sys_free(e);
  +            e = next;
  +        }
  +    }
       mem_sys_free(mc->idx[type]);
       mc->idx[type] = NULL;
   }
  @@ -1122,8 +1134,6 @@
       invalidate_type_caches(interpreter, (UINTVAL)type);
   }
   
  -#define TBL_SIZE_MASK 0x1ff   /* x bits 2..10 */
  -#define TBL_SIZE (1 + TBL_SIZE_MASK)
   /*
    * quick'n'dirty method cache
    * TODO: integrate NCI meth lookup
  
  
  

Reply via email to