pike.git / src / pike_search_engine.c

version» Context lines:

pike.git/src/pike_search_engine.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information.   */      /*    * Written by Fredrik Hubinette (hubbe@lysator.liu.se)    */    + #include <math.h> +    #define HSHIFT 0   #include "pike_search_engine2.c"   #undef HSHIFT      #define HSHIFT 1   #include "pike_search_engine2.c"   #undef HSHIFT      #define HSHIFT 2   #include "pike_search_engine2.c"   #undef HSHIFT            #define INTERCASE(NAME,X) \    case X: return MKPCHARP(PxC3(NAME,NSHIFT,X)(s,(PxC(p_wchar,X) *)haystack.ptr,haystacklen),X)         #define INTERMEDIATE(NAME) \ - PCHARP PxC3(NAME,NSHIFT,N)(void *s, \ -  PCHARP haystack, \ -  ptrdiff_t haystacklen) \ + PCHARP PxC3(NAME,NSHIFT,N)(void *s, \ +  PCHARP haystack, \ +  ptrdiff_t haystacklen) \   { \    switch(haystack.shift) \    { \    INTERCASE(NAME,0); \    INTERCASE(NAME,1); \    INTERCASE(NAME,2); \    } \ -  Pike_fatal("Illegal shift\n"); \ -  return haystack; /* NOT_REACHED */ \ +  UNREACHABLE(return haystack); \   } \    \   static const struct SearchMojtVtable PxC3(NAME,NSHIFT,_vtable) = { \    (SearchMojtFunc0)PxC3(NAME,NSHIFT,0), \ -  (SearchMojtFunc1)PxC3(NAME,NSHIFT,1), \ -  (SearchMojtFunc2)PxC3(NAME,NSHIFT,2), \ -  (SearchMojtFuncN)PxC3(NAME,NSHIFT,N), \ +  (SearchMojtFunc1)PxC3(NAME,NSHIFT,1), \ +  (SearchMojtFunc2)PxC3(NAME,NSHIFT,2), \ +  (SearchMojtFuncN)PxC3(NAME,NSHIFT,N), \   };         INTERMEDIATE(memchr_search)   INTERMEDIATE(memchr_memcmp2)   INTERMEDIATE(memchr_memcmp3)   INTERMEDIATE(memchr_memcmp4)   INTERMEDIATE(memchr_memcmp5)   INTERMEDIATE(memchr_memcmp6)   INTERMEDIATE(boyer_moore_hubbe)
pike.git/src/pike_search_engine.c:102:    s->set[e]=0;    linklen[e]=0;    }    hsize--;       if(max > (ptrdiff_t)needlelen) max=needlelen;    max=(max-sizeof(INT32)+1) & ~(sizeof(INT32) - 1);    if(max > MEMSEARCH_LINKS) max=MEMSEARCH_LINKS;       /* This assumes 512 buckets - Hubbe */ -  maxlinklength = my_sqrt(DO_NOT_WARN((unsigned int)max/2))+1; +  maxlinklength = (INT32)sqrt((double)max/2)+1;       ptr=& s->links[0];       q=(NCHAR *)needle;      #if PIKE_BYTEORDER == 4321 && NSHIFT == 0    for(tmp = e = 0; e < (ptrdiff_t)sizeof(INT32)-1; e++)    {    tmp<<=8;    tmp|=*(q++);    }   #endif       for(e=0;e<max;e++)    {   #if PIKE_BYTEORDER == 4321 && NSHIFT == 0    tmp<<=8;    tmp|=*(q++);   #else -  /* FIXME tmp=EXTRACT_INT(q); */ +  /* FIXME tmp=(INT32)get_unaligned32(q); */    tmp=NameN(GET_4_UNALIGNED_CHARS)(q);    q++;   #endif    h=tmp;    h+=h>>7;    h+=h>>17;    h&=hsize;       ptr->offset=e;    ptr->key=tmp;
pike.git/src/pike_search_engine.c:220:    {    case 0:    s->mojt.vtab=&nil_search_vtable;    return;       case 1:    s->mojt.data=(void *)(ptrdiff_t)(needle[0]);    s->mojt.vtab=& PxC3(memchr_search,NSHIFT,_vtable);    return;    - #define MMCASE(X) \ -  case X: \ + #define MMCASE(X) \ +  case X: \    s->mojt.data=(void *) needle; \    s->mojt.vtab=& PxC4(memchr_memcmp,X,NSHIFT,_vtable); \    return       MMCASE(2);    MMCASE(3);    MMCASE(4);    MMCASE(5);    MMCASE(6);   
pike.git/src/pike_search_engine.c:328:    struct mapping_data *md = memsearch_cache->data;    int e;    int count = 0;    /* NB: We inline some stuff from mapping.c here to avoid copying the md.    */    for (e=0; e < md->hashsize; e++) {    struct keypair **prev;    for(prev = md->hash + e; (k = *prev);) {    count++;    if (REFCOUNTED_TYPE(TYPEOF(k->val)) && -  (*k->val.u.refs == 1)) { -  /* map_delete(memsearch_cache, &k->ind); */ +  (*k->val.u.refs == 1)) +  {    *prev = k->next;    free_svalue(&k->ind);    free_svalue(&k->val);    mapping_free_keypair(md, k);    md->size--;    continue; -  } else if (count < 10) { -  // locate_references(k->val.u.refs); +     }    prev = &k->next;    }    }    memsearch_cache_threshold = (memsearch_cache->data->size<<1) | 1;    if (memsearch_cache_threshold < MIN_MEMSEARCH_THRESHOLD) {    memsearch_cache_threshold = MIN_MEMSEARCH_THRESHOLD;    }    } else if ((memsearch_cache_threshold & 1) &&    (memsearch_cache->data->size<<2 < memsearch_cache_threshold)) {