-uint32_t code_cachedstring(const char *str)
-{
- size_t s = 0;
- /* We could implement knuth-morris-pratt or something
- * and also take substrings, but I'm uncomfortable with
- * pointing to subparts of strings for the sake of clarity...
- */
- while (s < vec_size(code_chars)) {
- if (!strcmp(str, code_chars + s))
- return s;
- while (code_chars[s]) ++s;
- ++s;
+ if (OPTS_OPTIMIZATION(OPTIM_OVERLAP_STRINGS)) {
+ hash = ((unsigned char*)str)[strlen(str)-1];
+ existing = code_util_str_htgeth(code_string_cache, str, hash);
+ } else {
+ hash = util_hthash(code_string_cache, str);
+ existing = util_htgeth(code_string_cache, str, hash);