diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 2 | ||||
| -rw-r--r-- | src/codegen.c | 2 | ||||
| -rw-r--r-- | src/hash.c | 5 | ||||
| -rw-r--r-- | src/parse.y | 7 | ||||
| -rw-r--r-- | src/string.c | 2 | ||||
| -rw-r--r-- | src/symbol.c | 21 |
6 files changed, 12 insertions, 27 deletions
diff --git a/src/array.c b/src/array.c index 55e03c8ac..21c7e5d86 100644 --- a/src/array.c +++ b/src/array.c @@ -574,7 +574,7 @@ mrb_ary_splice(mrb_state *mrb, mrb_value ary, mrb_int head, mrb_int len, mrb_val { struct RArray *a = mrb_ary_ptr(ary); mrb_int tail, size; - mrb_value *argv; + const mrb_value *argv; mrb_int i, argc; ary_modify(mrb, a); diff --git a/src/codegen.c b/src/codegen.c index e6f277b1b..d749e5355 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1157,7 +1157,7 @@ codegen(codegen_scope *s, node *tree, int val) if (!tree) return; - if (s->irep && s->pc > 0 && s->filename_index != tree->filename_index) { + if (s->irep && s->filename_index != tree->filename_index) { s->irep->filename = mrb_parser_get_filename(s->parser, s->filename_index); mrb_debug_info_append_file(s->mrb, s->irep, s->debug_start_pos, s->pc); s->debug_start_pos = s->pc; diff --git a/src/hash.c b/src/hash.c index aa0322c8c..0bda2b48b 100644 --- a/src/hash.c +++ b/src/hash.c @@ -698,12 +698,13 @@ mrb_hash_keys(mrb_state *mrb, mrb_value hash) { khash_t(ht) *h = RHASH_TBL(hash); khiter_t k; - mrb_value ary, *p; + mrb_value ary; + mrb_value *p; if (!h || kh_size(h) == 0) return mrb_ary_new(mrb); ary = mrb_ary_new_capa(mrb, kh_size(h)); mrb_ary_set(mrb, ary, kh_size(h)-1, mrb_nil_value()); - p = RARRAY_PTR(ary); + p = mrb_ary_ptr(ary)->ptr; for (k = kh_begin(h); k != kh_end(h); k++) { if (kh_exist(h, k)) { mrb_value kv = kh_key(h, k); diff --git a/src/parse.y b/src/parse.y index e77085332..00d784d81 100644 --- a/src/parse.y +++ b/src/parse.y @@ -62,7 +62,12 @@ typedef unsigned int stack_type; #define CMDARG_P() BITSTACK_SET_P(p->cmdarg_stack) #define SET_LINENO(c,n) ((c)->lineno = (n)) -#define NODE_LINENO(c,n) do {if (n) ((c)->lineno = (n)->lineno);} while (0) +#define NODE_LINENO(c,n) do {\ + if (n) {\ + (c)->filename_index = (n)->filename_index;\ + (c)->lineno = (n)->lineno;\ + }\ +} while (0) #define sym(x) ((mrb_sym)(intptr_t)(x)) #define nsym(x) ((node*)(intptr_t)(x)) diff --git a/src/string.c b/src/string.c index 56827922b..c1041f4be 100644 --- a/src/string.c +++ b/src/string.c @@ -167,7 +167,7 @@ str_new(mrb_state *mrb, const char *p, size_t len) return s; } -static void +static inline void str_with_class(mrb_state *mrb, struct RString *s, mrb_value obj) { s->c = mrb_str_ptr(obj)->c; diff --git a/src/symbol.c b/src/symbol.c index 7fcef2817..e60fa56f5 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -45,14 +45,6 @@ sym_validate_len(mrb_state *mrb, size_t len) } } -#define MRB_SYM_MAX UINT16_MAX - -static mrb_value -sym_tbl_overflow_new_str(mrb_state *mrb, const char *name, size_t len) -{ - return mrb_str_inspect(mrb, mrb_str_new(mrb, name, len)); -} - static mrb_sym sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit) { @@ -70,19 +62,6 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit) if (k != kh_end(h)) return kh_value(h, k); - if (mrb->symbol_table_overflow) { - if (mrb->symidx == MRB_SYM_MAX) { - mrb_bug(mrb, "symbol table overflow (symbol %S)", sym_tbl_overflow_new_str(mrb, name, len)); - } - } - else { - if (mrb->symidx >= MRB_SYM_MAX - 8) { /* raising might intern a few new strings */ - mrb->symbol_table_overflow = TRUE; - mrb_raisef(mrb, E_RUNTIME_ERROR, "symbol table overflow (symbol %S)", - sym_tbl_overflow_new_str(mrb, name, len)); - } - } - sym = ++mrb->symidx; if (lit) { sname.name = name; |
