aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-09-25 17:56:41 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-09-25 23:04:09 +0900
commit4449dcac15c64d93462babaacb6fd8bf4c5d3c6b (patch)
tree9030b2bbf135c0999ec3e5a06bcc0884e2ccb9f7 /parse.y
parentdd292640bf8219cfaf8b0127880631d89ce51322 (diff)
downloadruby-4449dcac15c64d93462babaacb6fd8bf4c5d3c6b.tar.gz
Reduce stack usage in `string_content`
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 2 insertions, 6 deletions
diff --git a/parse.y b/parse.y
index 02eca2eee3..a9890d9535 100644
--- a/parse.y
+++ b/parse.y
@@ -5401,17 +5401,13 @@ string_content : tSTRING_CONTENT
/*% %*/
/*% ripper: string_dvar!($3) %*/
}
- | tSTRING_DBEG
+ | tSTRING_DBEG[term]
{
CMDARG_PUSH(0);
COND_PUSH(0);
- }
- {
/* need to backup p->lex.strterm so that a string literal `%!foo,#{ !0 },bar!` can be parsed */
- $<strterm>$ = p->lex.strterm;
+ $<strterm>term = p->lex.strterm;
p->lex.strterm = 0;
- }[term]
- {
$<num>$ = p->lex.state;
SET_LEX_STATE(EXPR_BEG);
}[state]