From 7005f8661bb723f87bbbe089a63639a98e816f5e Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 14 Jun 2022 16:12:56 +0900 Subject: [PATCH] parse.y (paser_pfree): recycle memory if possible. --- mrbgems/mruby-compiler/core/parse.y | 6 +++--- mrbgems/mruby-compiler/core/y.tab.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 09e339710..8f2806c95 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -110,6 +110,8 @@ parser_palloc(parser_state *p, size_t size) return m; } +#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0) + static node* cons_gen(parser_state *p, node *car, node *cdr) { @@ -1369,9 +1371,7 @@ static void end_strterm(parser_state *p) { parser_lex_strterm *term = p->lex_strterm->prev; - if (sizeof(node) < sizeof(parser_lex_strterm)) { - cons_free((node*)p->lex_strterm); - } + parser_pfree(p->lex_strterm); p->lex_strterm = term; } diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 15b2d4bfd..48b25ba26 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -173,6 +173,8 @@ parser_palloc(parser_state *p, size_t size) return m; } +#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0) + static node* cons_gen(parser_state *p, node *car, node *cdr) { @@ -1432,9 +1434,7 @@ static void end_strterm(parser_state *p) { parser_lex_strterm *term = p->lex_strterm->prev; - if (sizeof(node) < sizeof(parser_lex_strterm)) { - cons_free((node*)p->lex_strterm); - } + parser_pfree(p->lex_strterm); p->lex_strterm = term; }