From 4f9aeee6c7414bec2e1d8a9d3508dbd21f4d3394 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Mon, 14 Feb 2011 10:24:33 -0800 Subject: More completely fixed the 0-key thing. Unfortunately this degrades hash table lookup performance by about 8%, which affects the streaming benchmark for googlemessage1 by about 5%. We could get this back at the cost of some memory, but it would be nice to avoid that. --- src/upb_table.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/upb_table.h') diff --git a/src/upb_table.h b/src/upb_table.h index 1918e20..e667f0d 100644 --- a/src/upb_table.h +++ b/src/upb_table.h @@ -100,12 +100,11 @@ INLINE uint32_t upb_inttable_bucket(upb_inttable *t, upb_inttable_key_t k) { * ability to optimize. */ INLINE void *upb_inttable_fastlookup(upb_inttable *t, uint32_t key, uint32_t entry_size) { - assert(key != 0); uint32_t bucket = upb_inttable_bucket(t, key); upb_inttable_entry *e; do { e = (upb_inttable_entry*)UPB_INDEX(t->t.entries, bucket-1, entry_size); - if(e->key == key) return e; + if(e->key == key && e->has_entry) return e; } while((bucket = e->next) != UPB_END_OF_CHAIN); return NULL; /* Not found. */ } -- cgit v1.2.3