1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

parse.y: use ruby_sized_xfree and SIZED_REALLOC_N

Another part of the plan to reduce dependencies on malloc_usable_size
which costs us speed: https://bugs.ruby-lang.org/issues/10238

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-05-22 00:44:22 +00:00
parent 4f53579896
commit 1c1ff52f43

14
parse.y
View file

@ -4577,7 +4577,7 @@ token_info_pop(struct parser_params *p, const char *token, const rb_code_locatio
/* indentation check of matched keywords (begin..end, if..end, etc.) */ /* indentation check of matched keywords (begin..end, if..end, etc.) */
token_info_warn(p, token, ptinfo_beg, 1, loc); token_info_warn(p, token, ptinfo_beg, 1, loc);
xfree(ptinfo_beg); ruby_sized_xfree(ptinfo_beg, sizeof(*ptinfo_beg));
} }
static void static void
@ -4755,9 +4755,9 @@ vtable_free_gen(struct parser_params *p, int line, const char *name,
#endif #endif
if (!DVARS_TERMINAL_P(tbl)) { if (!DVARS_TERMINAL_P(tbl)) {
if (tbl->tbl) { if (tbl->tbl) {
xfree(tbl->tbl); ruby_sized_xfree(tbl->tbl, tbl->capa * sizeof(ID));
} }
xfree(tbl); ruby_sized_xfree(tbl, sizeof(tbl));
} }
} }
#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl) #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
@ -4778,7 +4778,7 @@ vtable_add_gen(struct parser_params *p, int line, const char *name,
} }
if (tbl->pos == tbl->capa) { if (tbl->pos == tbl->capa) {
tbl->capa = tbl->capa * 2; tbl->capa = tbl->capa * 2;
REALLOC_N(tbl->tbl, ID, tbl->capa); SIZED_REALLOC_N(tbl->tbl, ID, tbl->capa, tbl->pos);
} }
tbl->tbl[tbl->pos++] = id; tbl->tbl[tbl->pos++] = id;
} }
@ -10340,7 +10340,7 @@ local_pop(struct parser_params *p)
vtable_free(p->lvtbl->vars); vtable_free(p->lvtbl->vars);
CMDARG_POP(); CMDARG_POP();
COND_POP(); COND_POP();
xfree(p->lvtbl); ruby_sized_xfree(p->lvtbl, sizeof(*p->lvtbl));
p->lvtbl = local; p->lvtbl = local;
} }
@ -10469,7 +10469,7 @@ dyna_pop(struct parser_params *p, const struct vtable *lvargs)
dyna_pop_1(p); dyna_pop_1(p);
if (!p->lvtbl->args) { if (!p->lvtbl->args) {
struct local_vars *local = p->lvtbl->prev; struct local_vars *local = p->lvtbl->prev;
xfree(p->lvtbl); ruby_sized_xfree(p->lvtbl, sizeof(*p->lvtbl));
p->lvtbl = local; p->lvtbl = local;
} }
} }
@ -10817,7 +10817,7 @@ parser_free(void *ptr)
struct local_vars *local, *prev; struct local_vars *local, *prev;
if (p->tokenbuf) { if (p->tokenbuf) {
xfree(p->tokenbuf); ruby_sized_xfree(p->tokenbuf, p->toksiz);
} }
for (local = p->lvtbl; local; local = prev) { for (local = p->lvtbl; local; local = prev) {
if (local->vars) xfree(local->vars); if (local->vars) xfree(local->vars);