shithub: scc

Download patch

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;
 	}
 
--