ref: b3477280fbd5d5ca483d13ff771be76d98ca2b49
parent: dd9d39f1f5a09924ab111b97e64d144075d898cd
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sun Mar 9 16:29:16 EDT 2014
Optimize lookup()
--- a/symbol.c
+++ b/symbol.c
@@ -66,9 +66,9 @@
lookup(register const char *s, signed char ns)
{
register struct symbol *sym;
- static unsigned char key, l;
+ static unsigned char key;
+ register char *t;
-
if (s == NULL) {
sym = xcalloc(1, sizeof(*sym));
sym->next = head;
@@ -75,11 +75,10 @@
return sym;
}
- l = strlen(s);
key = hash(s) & NR_SYM_HASH - 1;
-
for (sym = htab[key]; sym; sym = sym->hash) {
- if (ns == sym->ns && !memcmp(sym->name, s, l))
+ t = sym->name;
+ if (ns == sym->ns && *t == *s && !strcmp(t, s))
return sym;
}
--
⑨