summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/array.c2
-rw-r--r--src/codegen.c2
-rw-r--r--src/hash.c5
-rw-r--r--src/parse.y7
-rw-r--r--src/string.c2
-rw-r--r--src/symbol.c21
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;