[PATCH 1/4] Remove eval_op_string

Andrew Burgess aburgess@redhat.com
Wed Mar 16 11:57:57 GMT 2022


Tom Tromey via Gdb-patches <gdb-patches@sourceware.org> writes:

> eval_op_string is only used in a single place -- the implementation of
> string_operation.  This patch turns it into the
> string_operation::evaluate method, removing a bit of extraneous code.
> ---
>  gdb/eval.c  | 15 ++++++++++-----
>  gdb/expop.h | 11 +----------
>  2 files changed, 11 insertions(+), 15 deletions(-)

LGTM.

Thanks,
Andrew


>
> diff --git a/gdb/eval.c b/gdb/eval.c
> index 6ced0b261e7..b7b8915fa89 100644
> --- a/gdb/eval.c
> +++ b/gdb/eval.c
> @@ -1078,17 +1078,22 @@ eval_op_register (struct type *expect_type, struct expression *exp,
>      return val;
>  }
>  
> -/* Helper function that implements the body of OP_STRING.  */
> +namespace expr
> +{
>  
> -struct value *
> -eval_op_string (struct type *expect_type, struct expression *exp,
> -		enum noside noside, int len, const char *string)
> +value *
> +string_operation::evaluate (struct type *expect_type,
> +			    struct expression *exp,
> +			    enum noside noside)
>  {
> +  const std::string &str = std::get<0> (m_storage);
>    struct type *type = language_string_char_type (exp->language_defn,
>  						 exp->gdbarch);
> -  return value_string (string, len, type);
> +  return value_string (str.c_str (), str.size (), type);
>  }
>  
> +} /* namespace expr */
> +
>  /* Helper function that implements the body of OP_OBJC_SELECTOR.  */
>  
>  struct value *
> diff --git a/gdb/expop.h b/gdb/expop.h
> index 58863b8f3ab..1592568a857 100644
> --- a/gdb/expop.h
> +++ b/gdb/expop.h
> @@ -64,10 +64,6 @@ extern struct value *eval_op_func_static_var (struct type *expect_type,
>  extern struct value *eval_op_register (struct type *expect_type,
>  				       struct expression *exp,
>  				       enum noside noside, const char *name);
> -extern struct value *eval_op_string (struct type *expect_type,
> -				     struct expression *exp,
> -				     enum noside noside, int len,
> -				     const char *string);
>  extern struct value *eval_op_ternop (struct type *expect_type,
>  				     struct expression *exp,
>  				     enum noside noside,
> @@ -912,12 +908,7 @@ class string_operation
>  
>    value *evaluate (struct type *expect_type,
>  		   struct expression *exp,
> -		   enum noside noside) override
> -  {
> -    const std::string &str = std::get<0> (m_storage);
> -    return eval_op_string (expect_type, exp, noside,
> -			   str.size (), str.c_str ());
> -  }
> +		   enum noside noside) override;
>  
>    enum exp_opcode opcode () const override
>    { return OP_STRING; }
> -- 
> 2.34.1



More information about the Gdb-patches mailing list