| 16 |
|
#include "object.h" |
| 17 |
|
|
| 18 |
|
#ifndef OSTSIZ |
| 19 |
< |
#ifdef BIGMEM |
| 20 |
< |
#define OSTSIZ 262139 /* object table size (a prime!) */ |
| 21 |
< |
#else |
| 19 |
> |
#ifdef SMLMEM |
| 20 |
|
#define OSTSIZ 32749 /* object table size (a prime!) */ |
| 21 |
+ |
#else |
| 22 |
+ |
#define OSTSIZ 262139 /* object table size (a prime!) */ |
| 23 |
|
#endif |
| 24 |
|
#endif |
| 25 |
|
|
| 70 |
|
int upper, lower; |
| 71 |
|
register int cm, i; |
| 72 |
|
|
| 73 |
< |
if ((i = os[0]) <= 6) { /* linear search algorithm */ |
| 73 |
> |
if ((i = os[0]) <= 12) { /* linear search algorithm */ |
| 74 |
|
cm = obj; |
| 75 |
|
while (i-- > 0) |
| 76 |
|
if (*++os == cm) |
| 209 |
|
ot = oseti(i*OSTSIZ + osentry); |
| 210 |
|
if (*os > 0) /* found it */ |
| 211 |
|
return(ot); |
| 212 |
< |
if (!isfull(ot)) /* entry overflow */ |
| 212 |
> |
if (!isfull(ot)) { /* entry overflow */ |
| 213 |
|
if (++ntries < OSTSIZ) |
| 214 |
|
goto tryagain; |
| 215 |
|
else |
| 216 |
|
error(INTERNAL, "hash table overflow in fullnode"); |
| 217 |
+ |
} |
| 218 |
|
/* remember position */ |
| 219 |
|
i = os - ostable[osentry]; |
| 220 |
|
os = ostable[osentry] = (OBJECT *)realloc( |
| 221 |
< |
(char *)ostable[osentry], |
| 221 |
> |
(void *)ostable[osentry], |
| 222 |
|
(unsigned)(i+oset[0]+2)*sizeof(OBJECT)); |
| 223 |
|
if (os == NULL) |
| 224 |
|
goto memerr; |
| 230 |
|
return(ot); |
| 231 |
|
memerr: |
| 232 |
|
error(SYSTEM, "out of memory in fullnode"); |
| 233 |
+ |
return 0; /* pro forma return */ |
| 234 |
|
} |
| 235 |
|
|
| 236 |
|
|
| 255 |
|
return; |
| 256 |
|
noderr: |
| 257 |
|
error(CONSISTENCY, "bad node in objset"); |
| 256 |
– |
} |
| 257 |
– |
|
| 258 |
– |
|
| 259 |
– |
int |
| 260 |
– |
dosets(f) /* loop through all sets */ |
| 261 |
– |
int (*f)(); |
| 262 |
– |
{ |
| 263 |
– |
int res = 0; |
| 264 |
– |
int n; |
| 265 |
– |
register OBJECT *os; |
| 266 |
– |
|
| 267 |
– |
for (n = 0; n < OSTSIZ; n++) { |
| 268 |
– |
if ((os = ostable[n]) == NULL) |
| 269 |
– |
continue; |
| 270 |
– |
while (*os > 0) { |
| 271 |
– |
res += (*f)(os); |
| 272 |
– |
os += *os + 1; |
| 273 |
– |
} |
| 274 |
– |
} |
| 275 |
– |
return(res); |
| 258 |
|
} |
| 259 |
|
|
| 260 |
|
|