[3/3] Remove evaluate_type
Commit Message
Like evaluate_expression, evaluate_type is also just a simple wrapper.
Removing it makes the code a little nicer.
---
gdb/dtrace-probe.c | 2 +-
gdb/eval.c | 9 ---------
gdb/expression.h | 5 +++++
gdb/gnu-v3-abi.c | 2 +-
gdb/mi/mi-main.c | 2 +-
gdb/typeprint.c | 4 ++--
gdb/value.h | 2 --
gdb/varobj.c | 2 +-
8 files changed, 11 insertions(+), 17 deletions(-)
@@ -494,7 +494,7 @@ dtrace_process_dof_probe (struct objfile *objfile,
}
if (expr != NULL && expr->first_opcode () == OP_TYPE)
- type = evaluate_type (expr.get ())->type ();
+ type = expr->evaluate_type ()->type ();
args.emplace_back (type, std::move (type_str), std::move (expr));
}
@@ -116,15 +116,6 @@ expression::evaluate (struct type *expect_type, enum noside noside)
return retval;
}
-/* Evaluate an expression, avoiding all memory references
- and getting a value whose type alone is correct. */
-
-struct value *
-evaluate_type (struct expression *exp)
-{
- return exp->evaluate (nullptr, EVAL_AVOID_SIDE_EFFECTS);
-}
-
/* Find the current value of a watchpoint on EXP. Return the value in
*VALP and *RESULTP and the chain of intermediate and final values
in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
@@ -225,6 +225,11 @@ struct expression
struct value *evaluate (struct type *expect_type = nullptr,
enum noside noside = EVAL_NORMAL);
+ /* Evaluate an expression, avoiding all memory references
+ and getting a value whose type alone is correct. */
+ struct value *evaluate_type ()
+ { return evaluate (nullptr, EVAL_AVOID_SIDE_EFFECTS); }
+
/* Language it was entered in. */
const struct language_defn *language_defn;
/* Architecture it was parsed in. */
@@ -1211,7 +1211,7 @@ gnuv3_get_type_from_type_info (struct value *type_info_ptr)
internal form to reconstruct the type somehow. */
std::string type_name = gnuv3_get_typename_from_type_info (type_info_ptr);
expression_up expr (parse_expression (type_name.c_str ()));
- struct value *type_val = evaluate_type (expr.get ());
+ struct value *type_val = expr->evaluate_type ();
return type_val->type ();
}
@@ -2466,7 +2466,7 @@ print_variable_or_computed (const char *expression, enum print_values values)
expression_up expr = parse_expression (expression);
if (values == PRINT_SIMPLE_VALUES)
- val = evaluate_type (expr.get ());
+ val = expr->evaluate_type ();
else
val = expr->evaluate ();
@@ -511,7 +511,7 @@ whatis_exp (const char *exp, int show)
"whatis" prints the type of the expression without stripping
any typedef level. "ptype" always strips all levels of
typedefs. */
- val = evaluate_type (expr.get ());
+ val = expr->evaluate_type ();
type = val->type ();
if (show == -1 && expr->first_opcode () == OP_TYPE)
@@ -708,7 +708,7 @@ maintenance_print_type (const char *type_name, int from_tty)
if (type_name != NULL)
{
expression_up expr = parse_expression (type_name);
- struct value *val = evaluate_type (expr.get ());
+ struct value *val = expr->evaluate_type ();
struct type *type = val->type ();
if (type != nullptr)
@@ -1299,8 +1299,6 @@ extern int using_struct_return (struct gdbarch *gdbarch,
struct value *function,
struct type *value_type);
-extern struct value *evaluate_type (struct expression *exp);
-
extern value *evaluate_var_value (enum noside noside, const block *blk,
symbol *var);
@@ -375,7 +375,7 @@ varobj_create (const char *objname,
{
/* Error getting the value. Try to at least get the
right type. */
- struct value *type_only_value = evaluate_type (var->root->exp.get ());
+ struct value *type_only_value = var->root->exp->evaluate_type ();
var->type = type_only_value->type ();
}