2000-08-10
2000-08-10 18:30:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>
-
89fc4c6ce1abebc1c387959e71563dc142efabb5
(95 lines)
(+51/-44)
[
Show
| Annotate
]
Branch: 7.9
Fixed a few warnings.
Rev: src/builtin.cmod:1.9
Rev: src/queue.c:1.6
Rev: src/stralloc.c:1.95
Rev: src/stralloc.h:1.54
Rev: src/threads.c:1.135
25:
#define HUGE HUGE_VAL
#endif /*!HUGE*/
- RCSID("$Id: stralloc.c,v 1.94 2000/08/10 18:00:09 grubba Exp $");
+ RCSID("$Id: stralloc.c,v 1.95 2000/08/10 18:23:17 grubba Exp $");
#define BEGIN_HASH_SIZE 997
#define MAX_AVG_LINK_LENGTH 3
39:
unsigned INT32 htable_size=0;
static unsigned int hashprimes_entry=0;
static struct pike_string **base_table=0;
- static unsigned INT32 full_hash_value;
+ static size_t full_hash_value;
unsigned INT32 num_strings=0;
/*** Main string hash function ***/
47:
#define StrHash(s,len) low_do_hash(s,len,0)
- static unsigned int low_do_hash(const void *s, ptrdiff_t len, int size_shift)
+ static size_t low_do_hash(const void *s, ptrdiff_t len, int size_shift)
{
full_hash_value=hashmem(s,len<<size_shift,HASH_PREFIX<<size_shift);
return full_hash_value % htable_size;
}
- static INLINE unsigned int do_hash(struct pike_string *s)
+ static INLINE size_t do_hash(struct pike_string *s)
{
return low_do_hash(s->str, s->len, s->size_shift);
}
287:
static struct pike_string *internal_findstring(const char *s,
ptrdiff_t len,
int size_shift,
- int h)
+ ptrdiff_t h)
{
struct pike_string *curr,**prev, **base;
#ifndef HASH_PREFIX
323: Inside #if undefined(HASH_PREFIX)
}
#ifndef HASH_PREFIX
/* These heuruistics might require tuning! /Hubbe */
- if((depth > HASH_PREFIX) && (HASH_PREFIX < (unsigned int)len))
+ if((depth > HASH_PREFIX) && (HASH_PREFIX < (size_t)len))
{
need_more_hash_prefix++;
/* fprintf(stderr,"depth=%d num_strings=%d need_more_hash_prefix=%d HASH_PREFIX=%d\n",depth,num_strings,need_more_hash_prefix,HASH_PREFIX); */
350:
* of that list in the hastable
*/
static struct pike_string *propagate_shared_string(const struct pike_string *s,
- int h)
+ ptrdiff_t h)
{
struct pike_string *curr, **prev, **base;
379:
static void rehash_string_backwards(struct pike_string *s)
{
- int h;
+ ptrdiff_t h;
if(!s) return;
rehash_string_backwards(s->next);
- h=s->hval % htable_size;
+ h = s->hval % htable_size;
s->next=base_table[h];
base_table[h]=s;
}
427:
return t;
}
- static void link_pike_string(struct pike_string *s, unsigned int h)
+ static void link_pike_string(struct pike_string *s, size_t h)
{
s->refs = 0;
s->next = base_table[h];
467: Inside #if undefined(HASH_PREFIX)
base_table[h2]=tmp2;
}
}
- full_hash_value=save_full_hash_value;
+ full_hash_value = save_full_hash_value;
}
#endif
}
569:
PMOD_EXPORT struct pike_string * debug_make_shared_binary_string(const char *str,size_t len)
{
struct pike_string *s;
- int h=StrHash(str,len);
+ ptrdiff_t h = StrHash(str, len);
s = internal_findstring(str,len,0,h);
if (!s)
614:
PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,size_t len)
{
struct pike_string *s;
- int h;
+ ptrdiff_t h;
if(!find_magnitude1(str,len))
{
642:
PMOD_EXPORT struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,size_t len)
{
struct pike_string *s;
- int h;
+ ptrdiff_t h;
switch(find_magnitude2(str,len))
{
702:
PMOD_EXPORT void unlink_pike_string(struct pike_string *s)
{
- unsigned int h=s->hval % htable_size;
+ size_t h = s->hval % htable_size;
propagate_shared_string(s,h);
base_table[h]=s->next;
#ifdef PIKE_DEBUG
- s->next=(struct pike_string *)-1;
+ s->next=(struct pike_string *)(ptrdiff_t)-1;
#endif
num_strings--;
}
727: Inside #if defined(PIKE_DEBUG)
}
if(d_flag > 2)
{
- if(s->next == (struct pike_string *)-1)
+ if(s->next == (struct pike_string *)(ptrdiff_t)-1)
fatal("Freeing shared string again!\n");
- if(((long)s->next) & 1)
+ if(((ptrdiff_t)s->next) & 1)
fatal("Freeing shared string again, memory corrupt or other bug!\n");
}
}
761:
int allocd_bytes=0;
int num_distinct_strings=0;
int bytes_distinct_strings=0;
- int overhead_bytes=0;
+ ptrdiff_t overhead_bytes = 0;
unsigned INT32 e;
struct pike_string *p;
for(e=0;e<htable_size;e++)
785:
sprintf(b,"Strings malloced\t\t%8ld %8ld + %ld overhead\n",
(long)num_distinct_strings,
(long)bytes_distinct_strings,
- (long)overhead_bytes);
+ DO_NOT_WARN((long)overhead_bytes));
my_strcat(b);
- sprintf(b,"Space actually required/total string bytes %d%%\n",
- (bytes_distinct_strings + overhead_bytes)*100 / allocd_bytes);
+ sprintf(b, "Space actually required/total string bytes %ld%%\n",
+ DO_NOT_WARN((long)((bytes_distinct_strings + overhead_bytes)*100 /
+ allocd_bytes)));
my_strcat(b);
}
/*
824: Inside #if defined(PIKE_DEBUG)
PMOD_EXPORT void verify_shared_strings_tables(void)
{
unsigned INT32 e, h, num=0;
- unsigned INT32 orig_full_hash = full_hash_value;
+ size_t orig_full_hash = full_hash_value;
struct pike_string *s;
for(e=0;e<htable_size;e++)
935: Inside #if defined(PIKE_DEBUG)
fprintf(stderr,"0x%p: %ld refs, len=%ld, size_shift=%d, hval=%lux (%lx)\n",
s,
(long)s->refs,
- (long)s->len,
+ DO_NOT_WARN((long)s->len),
s->size_shift,
- (unsigned long)s->hval,
- (unsigned long)StrHash(s->str, s->len));
+ DO_NOT_WARN((unsigned long)s->hval),
+ DO_NOT_WARN((unsigned long)StrHash(s->str, s->len)));
fprintf(stderr," \"");
for(e=0;e<s->len && max>0;e++)
{
982:
/*** String compare functions ***/
/* does not take locale into account */
- PMOD_EXPORT int low_quick_binary_strcmp(char *a,INT32 alen,
- char *b,INT32 blen)
+ PMOD_EXPORT int low_quick_binary_strcmp(char *a, ptrdiff_t alen,
+ char *b, ptrdiff_t blen)
{
int tmp;
if(alen > blen)
1002:
/* does not take locale into account */
- PMOD_EXPORT int generic_quick_binary_strcmp(const char *a,INT32 alen, int asize,
- const char *b,INT32 blen, int bsize)
+ PMOD_EXPORT ptrdiff_t generic_quick_binary_strcmp(const char *a,
+ ptrdiff_t alen, int asize,
+ const char *b,
+ ptrdiff_t blen, int bsize)
{
if(!asize && !bsize)
{
1039: Inside #if undefined(HAVE_STRCOLL)
#ifndef HAVE_STRCOLL
/* No locale function available */
- int low_binary_strcmp(char *a,INT32 alen,
- char *b,INT32 blen)
+ int low_binary_strcmp(char *a, ptrdiff_t alen,
+ char *b, ptrdiff_t blen)
{
low_quick_binary_strcmp(a,alen,b,blen);
}
1069:
/* Does not take locale into account */
- PMOD_EXPORT int my_quick_strcmp(struct pike_string *a,struct pike_string *b)
+ PMOD_EXPORT ptrdiff_t my_quick_strcmp(struct pike_string *a,
+ struct pike_string *b)
{
if(a==b) return 0;
1078:
}
/* Does take locale into account */
- PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b)
+ PMOD_EXPORT ptrdiff_t my_strcmp(struct pike_string *a,struct pike_string *b)
{
if(a==b) return 0;
1089:
default:
{
- INT32 e,l=MINIMUM(a->len,b->len);
+ ptrdiff_t e, l = MINIMUM(a->len, b->len);
for(e=0;e<l;e++)
{
INT32 ac=index_shared_string(a,e);
1115:
}
}
- PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, INT32 size)
+ PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a,
+ ptrdiff_t size)
{
struct pike_string *r;
r=(struct pike_string *)realloc((char *)a,
1135:
}
/* Returns an unlinked string ready for end_shared_string */
- PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, INT32 size)
+ PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a,
+ ptrdiff_t size)
{
struct pike_string *r;
if(a->refs==1)
1323:
PMOD_EXPORT struct pike_string *add_and_free_shared_strings(struct pike_string *a,
struct pike_string *b)
{
- INT32 alen=a->len;
+ ptrdiff_t alen = a->len;
if(a->size_shift == b->size_shift)
{
- a=realloc_shared_string(a,alen + b->len);
+ a = realloc_shared_string(a,alen + b->len);
MEMCPY(a->str+(alen<<a->size_shift),b->str,b->len<<b->size_shift);
free_string(b);
return end_shared_string(a);
1339:
}
- PMOD_EXPORT int string_search(struct pike_string *haystack,
+ PMOD_EXPORT ptrdiff_t string_search(struct pike_string *haystack,
struct pike_string *needle,
- int start)
+ ptrdiff_t start)
{
struct generic_mem_searcher s;
char *r;
1633:
PMOD_EXPORT void string_builder_putchar(struct string_builder *s, int ch)
{
- INT32 i;
+ ptrdiff_t i;
string_build_mkspace(s,1,min_magnitude(ch));
s->known_shift=MAXIMUM(min_magnitude(ch),s->known_shift);
- i=s->s->len++;
+ i = s->s->len++;
low_set_index(s->s,i,ch);
}