diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-09-05 13:34:49 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-09-05 13:34:49 +0000 |
| commit | 14f8b96b563dda9f7d61f5dc1cde14436ef6ea69 (patch) | |
| tree | 5c5c8501f90ca74c5e3655301288d1c3d36d55d4 /src/runtime | |
| parent | 46f2460a926a93a5bff360b0bfe7a52a983f2a56 (diff) | |
remove the string internalization since it slows down grammar loading with little benefit
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/c/Makefile.am | 2 | ||||
| -rw-r--r-- | src/runtime/c/gu/intern.c | 59 | ||||
| -rw-r--r-- | src/runtime/c/gu/intern.h | 24 | ||||
| -rw-r--r-- | src/runtime/c/pgf/expr.c | 1 | ||||
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 14 |
5 files changed, 4 insertions, 96 deletions
diff --git a/src/runtime/c/Makefile.am b/src/runtime/c/Makefile.am index c4eea5698..bc5ad0327 100644 --- a/src/runtime/c/Makefile.am +++ b/src/runtime/c/Makefile.am @@ -20,7 +20,6 @@ guinclude_HEADERS = \ gu/fun.h \ gu/hash.h \ gu/in.h \ - gu/intern.h \ gu/list.h \ gu/log.h \ gu/map.h \ @@ -59,7 +58,6 @@ libgu_la_SOURCES = \ gu/fun.c \ gu/hash.c \ gu/in.c \ - gu/intern.c \ gu/list.c \ gu/log.c \ gu/map.c \ diff --git a/src/runtime/c/gu/intern.c b/src/runtime/c/gu/intern.c deleted file mode 100644 index 35eaa1c5f..000000000 --- a/src/runtime/c/gu/intern.c +++ /dev/null @@ -1,59 +0,0 @@ -#include "intern.h" - -struct GuIntern { - GuPool* str_pool; - GuMap* map; -}; - -GuIntern* -gu_new_intern(GuPool* str_pool, GuPool* pool) -{ - GuIntern* intern = gu_new(GuIntern, pool); - intern->str_pool = str_pool; - intern->map = gu_new_set(const char*, gu_str_hasher, pool); - return intern; -} - -const char* -gu_intern_str(GuIntern* intern, const char* cstr) -{ - const char* const* strp = gu_map_find_key(intern->map, &cstr); - if (strp) { - return *strp; - } - const char* str = gu_strdup(cstr, intern->str_pool); - gu_map_insert(intern->map, &str); - return str; -} - - - - -struct GuSymTable { - GuPool* sym_pool; - GuMap* map; -}; - -GuSymTable* -gu_new_symtable(GuPool* sym_pool, GuPool* pool) -{ - GuSymTable* tab = gu_new(GuSymTable, pool); - tab->sym_pool = sym_pool; - tab->map = gu_new_set(GuSymbol, gu_string_hasher, pool); - return tab; -} - -GuSymbol -gu_symtable_intern(GuSymTable* tab, GuString string) -{ - if (gu_string_is_stable(string)) { - return string; - } - const GuSymbol* symp = gu_map_find_key(tab->map, &string); - if (symp) { - return *symp; - } - GuSymbol sym = gu_string_copy(string, tab->sym_pool); - gu_map_insert(tab->map, &sym); - return sym; -} diff --git a/src/runtime/c/gu/intern.h b/src/runtime/c/gu/intern.h deleted file mode 100644 index bf9e9b321..000000000 --- a/src/runtime/c/gu/intern.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef GU_INTERN_H_ -#define GU_INTERN_H_ - -#include <gu/map.h> -#include <gu/str.h> -#include <gu/string.h> - -typedef struct GuIntern GuIntern; - -GuIntern* gu_new_intern(GuPool* str_pool, GuPool* pool); -const char* gu_intern_str(GuIntern* intern, const char* cstr); - - -typedef struct GuSymTable GuSymTable; - -typedef GuString GuSymbol; - -GuSymTable* -gu_new_symtable(GuPool* sym_pool, GuPool* pool); - -GuSymbol -gu_symtable_intern(GuSymTable* symtab, GuString string); - -#endif /* GU_INTERN_H_ */ diff --git a/src/runtime/c/pgf/expr.c b/src/runtime/c/pgf/expr.c index b195eeea5..4b2644931 100644 --- a/src/runtime/c/pgf/expr.c +++ b/src/runtime/c/pgf/expr.c @@ -1,5 +1,4 @@ #include "pgf.h" -#include <gu/intern.h> #include <gu/assert.h> #include <ctype.h> #include <stdio.h> diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index 890749b5b..bf7207874 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -11,7 +11,6 @@ #include <gu/map.h> #include <gu/seq.h> #include <gu/assert.h> -#include <gu/intern.h> #include <gu/in.h> #include <gu/bits.h> #include <gu/exn.h> @@ -28,7 +27,6 @@ struct PgfReader { GuExn* err; GuPool* opool; GuPool* tmp_pool; - GuSymTable* symtab; #ifndef ANDROID PgfJitState* jit_state; #endif @@ -108,11 +106,9 @@ pgf_read_cid(PgfReader* rdr) GuUCS ucs = gu_in_u8(rdr->in, rdr->err); gu_out_utf8(ucs, out, rdr->err); } - GuString str = gu_string_buf_freeze(sbuf, tmp_pool); - - GuSymbol sym = gu_symtable_intern(rdr->symtab, str); + GuString str = gu_string_buf_freeze(sbuf, rdr->opool); gu_pool_free(tmp_pool); - return sym; + return str; } static GuString @@ -128,11 +124,10 @@ pgf_read_string(PgfReader* rdr) GuUCS ucs = gu_in_utf8(rdr->in, rdr->err); gu_out_utf8(ucs, out, rdr->err); } - GuString str = gu_string_buf_freeze(sbuf, tmp_pool); - GuSymbol sym = gu_symtable_intern(rdr->symtab, str); + GuString str = gu_string_buf_freeze(sbuf, rdr->opool); gu_pool_free(tmp_pool); - return sym; + return str; } static void @@ -1215,7 +1210,6 @@ pgf_new_reader(GuIn* in, GuPool* opool, GuPool* tmp_pool, GuExn* err) PgfReader* rdr = gu_new(PgfReader, tmp_pool); rdr->opool = opool; rdr->tmp_pool = tmp_pool; - rdr->symtab = gu_new_symtable(opool, tmp_pool); rdr->err = err; rdr->in = in; #ifndef ANDROID |
