pike.git / src / block_alloc.h

version» Context lines:

pike.git/src/block_alloc.h:1: - /* $Id: block_alloc.h,v 1.8 1999/04/02 19:38:35 hubbe Exp $ */ + /* $Id: block_alloc.h,v 1.9 1999/04/02 20:53:12 hubbe Exp $ */   #undef PRE_INIT_BLOCK   #undef INIT_BLOCK   #undef EXIT_BLOCK   #undef BLOCK_ALLOC   #undef PTR_HASH_ALLOC      #define PRE_INIT_BLOCK(X)   #define INIT_BLOCK(X)   #define EXIT_BLOCK(X)   
pike.git/src/block_alloc.h:102:    \   struct DATA *PIKE_CONCAT(find_,DATA)(void *ptr) \   { \    int hval=(long)ptr; \    hval%=PIKE_CONCAT(DATA,_hash_table_size); \    return PIKE_CONCAT(really_low_find_,DATA)(ptr, hval); \   } \    \    \    \ - inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \ + struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \   { \    struct DATA *p; \    \    PIKE_CONCAT(num_,DATA)++; \    \    if(( PIKE_CONCAT(num_,DATA)>>2 ) >= \    PIKE_CONCAT(DATA,_hash_table_size)) \    { \    /* Time to re-hash */ \ -  struct DATA **PIKE_CONCAT(DATA,_hash_table_old)= \ -  PIKE_CONCAT(DATA,_hash_table); \ +  struct DATA **old_hash= PIKE_CONCAT(DATA,_hash_table); \    int e=PIKE_CONCAT(DATA,_hash_table_size); \    \    PIKE_CONCAT(DATA,_hash_table_size)*=2; \    PIKE_CONCAT(DATA,_hash_table_size)++; \    if((PIKE_CONCAT(DATA,_hash_table)=(struct DATA **) \    malloc(PIKE_CONCAT(DATA,_hash_table_size)* \    sizeof(struct DATA *)))) \    { \    MEMSET(PIKE_CONCAT(DATA,_hash_table),0, \    sizeof(struct DATA *)*PIKE_CONCAT(DATA,_hash_table_size)); \    while(e-- >=0) \    { \ -  while((p=PIKE_CONCAT(DATA,_hash_table_old)[e])) \ +  while((p=old_hash[e])) \    { \ -  PIKE_CONCAT(DATA,_hash_table_old)[e]=p->next; \ +  old_hash[e]=p->next; \    hval=(long)(p-> data); \    hval%=PIKE_CONCAT(DATA,_hash_table_size); \    p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \    PIKE_CONCAT(DATA,_hash_table)[hval]=p; \    } \    } \    hval=(long)ptr; \    hval%=PIKE_CONCAT(DATA,_hash_table_size); \ -  +  free((char *)old_hash);\    }else{ \ -  PIKE_CONCAT(DATA,_hash_table)=PIKE_CONCAT(DATA,_hash_table_old); \ +  PIKE_CONCAT(DATA,_hash_table)=old_hash; \    PIKE_CONCAT(DATA,_hash_table_size)=e; \    } \    } \    \    p=PIKE_CONCAT(alloc_,DATA)(); \ -  +  p->data=ptr; \    p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \    PIKE_CONCAT(DATA,_hash_table)[hval]=p; \    return p; \   } \    \   inline struct DATA *PIKE_CONCAT(get_,DATA)(void *ptr) \   { \    struct DATA *p; \    int hval=(long)ptr; \    hval%=PIKE_CONCAT(DATA,_hash_table_size); \
pike.git/src/block_alloc.h:180:   } \    \   int PIKE_CONCAT(remove_,DATA)(void *ptr) \   { \    struct DATA *p; \    int hval=(long)ptr; \    hval%=PIKE_CONCAT(DATA,_hash_table_size); \    if((p=PIKE_CONCAT(really_low_find_,DATA)(ptr, hval))) \    { \    PIKE_CONCAT(num_,DATA)--; \ +  if(PIKE_CONCAT(DATA,_hash_table)[hval]!=p) fatal("GAOssdf\n"); \    PIKE_CONCAT(DATA,_hash_table)[hval]=p->next; \ -  PIKE_CONCAT(really_free_,DATA)(p); \ +  PIKE_CONCAT(really_free_,DATA)(p); \    return 1; \    } \    return 0; \   } \    \   void PIKE_CONCAT3(init_,DATA,_hash)(void) \   { \    extern INT32 hashprimes[32]; \    extern int my_log2(unsigned INT32 x); \    PIKE_CONCAT(DATA,_hash_table_size)=hashprimes[my_log2(BSIZE)]; \