public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Move "components" and "associations" into ada_parse_state
@ 2024-04-02 17:35 Tom Tromey
0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2024-04-02 17:35 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=68d7f5b02f2e2d1eba7dca8701d340674f64329d
commit 68d7f5b02f2e2d1eba7dca8701d340674f64329d
Author: Tom Tromey <tromey@adacore.com>
Date: Thu Mar 14 12:16:43 2024 -0600
Move "components" and "associations" into ada_parse_state
This patch moves the "components" and "associations" globals into
ada_parse_state.
Diff:
---
gdb/ada-exp.y | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index cb0618c2200..be726eccbe2 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -64,6 +64,8 @@ struct name_info {
static struct parser_state *pstate = NULL;
+using namespace expr;
+
/* Data that must be held for the duration of a parse. */
struct ada_parse_state
@@ -81,6 +83,12 @@ struct ada_parse_state
return result.get ();
}
+ /* The components being constructed during this parse. */
+ std::vector<ada_component_up> components;
+
+ /* The associations being constructed during this parse. */
+ std::vector<ada_association_up> associations;
+
private:
/* We don't have a good way to manage non-POD data in Yacc, so store
@@ -125,8 +133,6 @@ static struct type *type_for_char (struct parser_state *, ULONGEST);
static struct type *type_system_address (struct parser_state *);
-using namespace expr;
-
/* Handle Ada type resolution for OP. DEPROCEDURE_P and CONTEXT_TYPE
are passed to the resolve method, if called. */
static operation_up
@@ -335,16 +341,13 @@ ada_funcall (int nargs)
pstate->push (std::move (funcall));
}
-/* The components being constructed during this parse. */
-static std::vector<ada_component_up> components;
-
/* Create a new ada_component_up of the indicated type and arguments,
and push it on the global 'components' vector. */
template<typename T, typename... Arg>
void
push_component (Arg... args)
{
- components.emplace_back (new T (std::forward<Arg> (args)...));
+ ada_parser->components.emplace_back (new T (std::forward<Arg> (args)...));
}
/* Examine the final element of the 'components' vector, and return it
@@ -354,7 +357,7 @@ push_component (Arg... args)
static ada_choices_component *
choice_component ()
{
- ada_component *last = components.back ().get ();
+ ada_component *last = ada_parser->components.back ().get ();
return gdb::checked_static_cast<ada_choices_component *> (last);
}
@@ -363,8 +366,8 @@ choice_component ()
static ada_component_up
pop_component ()
{
- ada_component_up result = std::move (components.back ());
- components.pop_back ();
+ ada_component_up result = std::move (ada_parser->components.back ());
+ ada_parser->components.pop_back ();
return result;
}
@@ -379,16 +382,13 @@ pop_components (int n)
return result;
}
-/* The associations being constructed during this parse. */
-static std::vector<ada_association_up> associations;
-
/* Create a new ada_association_up of the indicated type and
arguments, and push it on the global 'associations' vector. */
template<typename T, typename... Arg>
void
push_association (Arg... args)
{
- associations.emplace_back (new T (std::forward<Arg> (args)...));
+ ada_parser->associations.emplace_back (new T (std::forward<Arg> (args)...));
}
/* Pop the most recent association from the global stack, and return
@@ -396,8 +396,8 @@ push_association (Arg... args)
static ada_association_up
pop_association ()
{
- ada_association_up result = std::move (associations.back ());
- associations.pop_back ();
+ ada_association_up result = std::move (ada_parser->associations.back ());
+ ada_parser->associations.pop_back ();
return result;
}
@@ -1256,8 +1256,6 @@ ada_parse (struct parser_state *par_state)
lexer_init (yyin); /* (Re-)initialize lexer. */
obstack_free (&temp_parse_space, NULL);
obstack_init (&temp_parse_space);
- components.clear ();
- associations.clear ();
assignments.clear ();
iterated_associations.clear ();
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-04-02 17:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-02 17:35 [binutils-gdb] Move "components" and "associations" into ada_parse_state Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).