mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
reduce calling of strlen(); #301
This commit is contained in:
+4
-3
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user