reduce calling of strlen(); #301

This commit is contained in:
Yukihiro Matsumoto
2012-06-21 16:22:29 +09:00
parent d105ea496f
commit a70c4e0c79
6 changed files with 25 additions and 23 deletions
+4 -3
View File
@@ -542,16 +542,17 @@ nosplat(node *t)
static mrb_sym
attrsym(codegen_scope *s, mrb_sym a)
{
const char *name = mrb_sym2name(s->mrb, a);
const char *name;
int len;
char *name2;
size_t len = strlen(name);
name = mrb_sym2name(s->mrb, a, &len);
name2 = codegen_palloc(s, len+1);
strcpy(name2, name);
name2[len] = '=';
name2[len+1] = '\0';
return mrb_intern(s->mrb, name2);
return mrb_intern2(s->mrb, name2, len+1);
}
static int
+5 -3
View File
@@ -415,15 +415,17 @@ write_syms_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type)
uint16_t nlen =0;
if (irep->syms[sym_no] != 0) {
name = mrb_sym2name(mrb, irep->syms[sym_no]);
nlen = str_dump_len((char*)name, strlen(name), type);
int len;
name = mrb_sym2name(mrb, irep->syms[sym_no], &len);
nlen = str_dump_len((char*)name, len, type);
if ( nlen > buf_size - 1) {
buf_size = nlen + 1;
if ((char_buf = mrb_realloc(mrb, char_buf, buf_size)) == 0)
goto error_exit;
}
memset(char_buf, 0, buf_size);
str_dump((char*)name, char_buf, strlen(name), type);
str_dump((char*)name, char_buf, len, type);
buf += uint16_dump(nlen, buf, type); /* length of symbol name */
memcpy(buf, char_buf, nlen); /* symbol name */
+2 -2
View File
@@ -904,14 +904,14 @@ inspect_hash(mrb_state *mrb, mrb_value hash, int recur)
str2 = mrb_inspect(mrb, kh_key(h,k));
mrb_str_append(mrb, str, str2);
mrb_str_buf_cat(mrb, str, "=>", strlen("=>"));
mrb_str_buf_cat(mrb, str, "=>", sizeof("=>"));
str2 = mrb_inspect(mrb, kh_value(h,k));
mrb_str_append(mrb, str, str2);
mrb_gc_arena_restore(mrb, ai);
}
}
mrb_str_buf_cat(mrb, str, "}", strlen("}"));//mrb_str_buf_cat2(str, "}");
mrb_str_buf_cat(mrb, str, "}", sizeof("}"));
return str;
}
+9 -10
View File
@@ -357,14 +357,14 @@ mrb_reg_desc(mrb_state *mrb, const char *s, long len, mrb_value re)
mrb_value str = mrb_str_new_cstr(mrb, "/");//mrb_str_buf_new2("/");
mrb_reg_expr_str(mrb, str, s, len);
mrb_str_buf_cat(mrb, str, "/", strlen("/"));
mrb_str_buf_cat(mrb, str, "/", sizeof("/"));
if (re.tt) {
char opts[4];
mrb_reg_check(mrb, re);
if (*option_to_str(opts, RREGEXP(re)->ptr->options))
mrb_str_buf_cat(mrb, str, opts, strlen(opts));//mrb_str_buf_cat2(str, opts);
if (RBASIC(re)->flags & REG_ENCODING_NONE)
mrb_str_buf_cat(mrb, str, "n", strlen("n"));//mrb_str_buf_cat2(str, "n");
mrb_str_buf_cat(mrb, str, "n", sizeof("n"));
}
return str;
@@ -1796,9 +1796,9 @@ again:
mrb_str_buf_cat(mrb, str, optbuf, strlen(optbuf));
}
mrb_str_buf_cat(mrb, str, ":", strlen(":"));
mrb_str_buf_cat(mrb, str, ":", sizeof(":"));
mrb_reg_expr_str(mrb, str, (char*)ptr, len);
mrb_str_buf_cat(mrb, str, ")", strlen(")"));
mrb_str_buf_cat(mrb, str, ")", sizeof(")"));
return str;
}
@@ -1919,29 +1919,28 @@ mrb_match_inspect(mrb_state *mrb, mrb_value match)
match_inspect_name_iter, names);
str = mrb_str_new_cstr(mrb, "#<");//mrb_str_buf_new2("#<");
mrb_str_buf_cat(mrb, str, cname, strlen(cname));//mrb_str_buf_cat2(str, cname);
mrb_str_buf_cat(mrb, str, cname, strlen(cname));
for (i = 0; i < num_regs; i++) {
char buf[sizeof(num_regs)*3+1];
mrb_value v;
mrb_str_buf_cat(mrb, str, " ", strlen(" "));//mrb_str_buf_cat2(str, " ");
mrb_str_buf_cat(mrb, str, " ", sizeof(" "));
if (0 < i) {
if (names[i].name)
mrb_str_buf_cat(mrb, str, (const char*)names[i].name, names[i].len);
else {
//mrb_str_catf(mrb, str, "%d", i);
sprintf(buf, "%d", i);
mrb_str_buf_cat(mrb, str, (const char*)buf, strlen(buf));
}
mrb_str_buf_cat(mrb, str, ":", strlen(":"));//mrb_str_buf_cat2(str, ":");
mrb_str_buf_cat(mrb, str, ":", sizeof(":"));
}
v = mrb_reg_nth_match(mrb, i, match);
if (mrb_nil_p(v))
mrb_str_buf_cat(mrb, str, "nil", strlen("nil"));//mrb_str_buf_cat2(str, "nil");
mrb_str_buf_cat(mrb, str, "nil", sizeof("nil"));
else
mrb_str_buf_append(mrb, str, mrb_str_inspect(mrb, v));
}
mrb_str_buf_cat(mrb, str, ">", strlen(">"));//mrb_str_buf_cat2(str, ">");
mrb_str_buf_cat(mrb, str, ">", sizeof(">"));
return str;
}
+4 -4
View File
@@ -1069,13 +1069,13 @@ fmt_setup(char *buf, size_t size, int c, int flags, int width, int prec)
if (flags & FSPACE) *buf++ = ' ';
if (flags & FWIDTH) {
snprintf(buf, end - buf, "%d", width);
buf += strlen(buf);
snprintf(buf, end - buf, "%d", width);
buf += strlen(buf);
}
if (flags & FPREC) {
snprintf(buf, end - buf, ".%d", prec);
buf += strlen(buf);
snprintf(buf, end - buf, ".%d", prec);
buf += strlen(buf);
}
*buf++ = c;
+1 -1
View File
@@ -2987,7 +2987,7 @@ mrb_str_inspect(mrb_state *mrb, mrb_value str)
continue;
}
}
mrb_str_buf_cat(mrb, result, "\"", strlen("\""));
mrb_str_buf_cat(mrb, result, "\"", sizeof("\""));
return result;
}