diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-01-27 23:41:03 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-01-27 23:41:03 +0900 |
| commit | f0eb50a55d09e8a203ce54dc2a6c6591943a2e6a (patch) | |
| tree | 92370cd2eae6b40a1aaccd13559eb52cdafe04f9 /src | |
| parent | 251fd743151bb66cde3a3879d3b4b4b8c4ee7356 (diff) | |
| parent | 3104aed8c67754f14093ea73b2df4f995e4242d3 (diff) | |
| download | mruby-f0eb50a55d09e8a203ce54dc2a6c6591943a2e6a.tar.gz mruby-f0eb50a55d09e8a203ce54dc2a6c6591943a2e6a.zip | |
Merge pull request #5303 from shuujii/split-presym_table-for-reduced-program-size
Split `presym_table` for reduced program size
Diffstat (limited to 'src')
| -rw-r--r-- | src/symbol.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/symbol.c b/src/symbol.c index 1d2c7c776..b15e0f11c 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -15,31 +15,24 @@ #ifndef MRB_NO_PRESYM -# undef MRB_PRESYM_MAX -# define MRB_PRESYM_NAMED(lit, num, type, name) {lit, sizeof(lit)-1}, -# define MRB_PRESYM_UNNAMED(lit, num) {lit, sizeof(lit)-1}, - -static const struct { - const char *name; - uint16_t len; -} presym_table[] = { #ifndef MRB_PRESYM_SCANNING -# include <mruby/presym.inc> +/* const uint16_t presym_length_table[] */ +/* const char * const presym_name_table[] */ +# include <mruby/presym/table.h> #endif -}; static mrb_sym presym_find(const char *name, size_t len) { - if (presym_table[MRB_PRESYM_MAX-1].len < len) return 0; + if (presym_length_table[MRB_PRESYM_MAX-1] < len) return 0; mrb_sym start, idx, presym_size = MRB_PRESYM_MAX; int cmp; for (start = 0; presym_size != 0; presym_size/=2) { idx = start+presym_size/2; - cmp = (int)len-(int)presym_table[idx].len; + cmp = (int)len-(int)presym_length_table[idx]; if (cmp == 0) { - cmp = memcmp(name, presym_table[idx].name, len); + cmp = memcmp(name, presym_name_table[idx], len); if (cmp == 0) return idx+1; } if (0 < cmp) { @@ -54,8 +47,8 @@ static const char* presym_sym2name(mrb_sym sym, mrb_int *lenp) { if (sym > MRB_PRESYM_MAX) return NULL; - if (lenp) *lenp = presym_table[sym-1].len; - return presym_table[sym-1].name; + if (lenp) *lenp = presym_length_table[sym-1]; + return presym_name_table[sym-1]; } #endif /* MRB_NO_PRESYM */ |
