bug fix
This commit is contained in:
+3
-16
@@ -13,7 +13,7 @@ typedef struct {
|
||||
static Object *select(Object *self, Object *key, Heap *heap, Error *err);
|
||||
static _Bool insert(Object *self, Object *key, Object *val, Heap *heap, Error *err);
|
||||
static int count(Object *self);
|
||||
static void print(Object *self, FILE *fp);
|
||||
static void print(Object *self, FILE *fp);
|
||||
|
||||
static const Type t_map = {
|
||||
.base = (Object) { .type = &t_type, .flags = Object_STATIC },
|
||||
@@ -76,10 +76,6 @@ static Object *select(Object *self, Object *key, Heap *heap, Error *error)
|
||||
assert(heap != NULL);
|
||||
assert(error != NULL);
|
||||
|
||||
fprintf(stderr, "Selecting from:\n\t");
|
||||
Object_Print(self, stderr);
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
MapObject *map = (MapObject*) self;
|
||||
|
||||
int mask = map->mapper_size - 1;
|
||||
@@ -92,15 +88,10 @@ static Object *select(Object *self, Object *key, Heap *heap, Error *error)
|
||||
|
||||
int i = hash & mask;
|
||||
|
||||
#warning "TEMP"
|
||||
fprintf(stderr, "-----------------\n");
|
||||
|
||||
while(1)
|
||||
{
|
||||
int k = map->mapper[i];
|
||||
|
||||
fprintf(stderr, "map->mapper[%d] = %d\n", i, k);
|
||||
|
||||
if(k == -1)
|
||||
{
|
||||
// Empty slot.
|
||||
@@ -113,10 +104,6 @@ static Object *select(Object *self, Object *key, Heap *heap, Error *error)
|
||||
// Is it the right one?
|
||||
|
||||
assert(k >= 0);
|
||||
#warning "TEMP"
|
||||
fprintf(stderr, "map->keys[%d] = ", k);
|
||||
Object_Print(map->keys[k], stderr);
|
||||
fprintf(stderr, " (of type %s)\n", Object_GetName(map->keys[k]));
|
||||
|
||||
if(Object_Compare(key, map->keys[k], error))
|
||||
// Found it!
|
||||
@@ -133,8 +120,6 @@ static Object *select(Object *self, Object *key, Heap *heap, Error *error)
|
||||
|
||||
pert >>= 5;
|
||||
i = (i * 5 + pert + 1) & mask;
|
||||
|
||||
fprintf(stderr, "%d -> %d\n", old_i, i);
|
||||
}
|
||||
|
||||
UNREACHABLE;
|
||||
@@ -264,6 +249,8 @@ static _Bool insert(Object *self, Object *key, Object *val, Heap *heap, Error *e
|
||||
// Collision.
|
||||
}
|
||||
|
||||
int old_i = i;
|
||||
|
||||
pert >>= 5;
|
||||
i = (i * 5 + pert + 1) & mask;
|
||||
}
|
||||
|
||||
@@ -96,9 +96,6 @@ static _Bool op_eql(Object *self, Object *other)
|
||||
|
||||
_Bool match = s1->size == s2->size && !strncmp(s1->body, s2->body, s1->size);
|
||||
|
||||
#warning "TEMP"
|
||||
fprintf(stderr, "%s == %s ? %s\n", s1->body, s2->body, match ? "yes" : "no");
|
||||
|
||||
return match;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user