pike.git / src / mapping.c

version» Context lines:

pike.git/src/mapping.c:914: Inside #if defined(GC2)
  {    INT32 e;    struct keypair *k;       if(gc_mark(m))    {    if((m->ind_types | m->val_types) & BIT_COMPLEX)    {    LOOP(m)    { +  /* We do not want to count this key:index pair if +  * the index is a destructed object or function +  */ +  if(((1 << k->ind.type) & (BIT_OBJECT | BIT_FUNCTION)) && +  !(k->ind.u.object->prog)) +  continue; +     gc_mark_svalues(&k->ind, 1);    gc_mark_svalues(&k->val, 1);    }    }    }   }      void gc_check_all_mappings()   {    INT32 e;    struct keypair *k;    struct mapping *m;       for(m=first_mapping;m;m=m->next)    {    if((m->ind_types | m->val_types) & BIT_COMPLEX)    { -  check_mapping_for_destruct(m); +     LOOP(m)    { -  +  /* We do not want to count this key:index pair if +  * the index is a destructed object or function +  */ +  if(((1 << k->ind.type) & (BIT_OBJECT | BIT_FUNCTION)) && +  !(k->ind.u.object->prog)) +  continue; +     gc_check_svalues(&k->ind, 1); -  gc_check_svalues(&k->val, 1); +  m->val_types |= gc_check_svalues(&k->val, 1);    }      #ifdef DEBUG    if(d_flag > 1) check_mapping_type_fields(m);   #endif       }    }   }   
pike.git/src/mapping.c:962: Inside #if defined(GC2)
  }      void gc_free_all_unreferenced_mappings()   {    INT32 e;    struct keypair *k;    struct mapping *m,*next;       for(m=first_mapping;m;m=next)    { +  check_mapping_for_destruct(m);    if(gc_do_free(m))    {    m->refs++;       for(e=0;e<m->hashsize;e++)    {    k=m->hash[e];    while(k)    {    free_svalue(&k->ind);