Turn value_bitpos into method

This changes value_bitpos to be a method of value.  Much of this patch
was written by script.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
Tom Tromey
2023-01-31 09:44:47 -07:00
parent f49d5fa263
commit 5011c493fb
6 changed files with 30 additions and 39 deletions

View File

@ -569,7 +569,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type)
} }
set_value_component_location (result, val); set_value_component_location (result, val);
result->set_bitsize (val->bitsize ()); result->set_bitsize (val->bitsize ());
set_value_bitpos (result, value_bitpos (val)); result->set_bitpos (val->bitpos ());
if (VALUE_LVAL (result) == lval_memory) if (VALUE_LVAL (result) == lval_memory)
set_value_address (result, value_address (val)); set_value_address (result, value_address (val));
return result; return result;
@ -2831,12 +2831,12 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
long new_offset = offset; long new_offset = offset;
set_value_component_location (v, obj); set_value_component_location (v, obj);
set_value_bitpos (v, bit_offset + value_bitpos (obj)); v->set_bitpos (bit_offset + obj->bitpos ());
v->set_bitsize (bit_size); v->set_bitsize (bit_size);
if (value_bitpos (v) >= HOST_CHAR_BIT) if (v->bitpos () >= HOST_CHAR_BIT)
{ {
++new_offset; ++new_offset;
set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT); v->set_bitpos (v->bitpos () - HOST_CHAR_BIT);
} }
set_value_offset (v, new_offset); set_value_offset (v, new_offset);
@ -2896,7 +2896,7 @@ ada_value_assign (struct value *toval, struct value *fromval)
&& (type->code () == TYPE_CODE_FLT && (type->code () == TYPE_CODE_FLT
|| type->code () == TYPE_CODE_STRUCT)) || type->code () == TYPE_CODE_STRUCT))
{ {
int len = (value_bitpos (toval) int len = (toval->bitpos ()
+ bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
int from_size; int from_size;
gdb_byte *buffer = (gdb_byte *) alloca (len); gdb_byte *buffer = (gdb_byte *) alloca (len);
@ -2915,7 +2915,7 @@ ada_value_assign (struct value *toval, struct value *fromval)
ULONGEST from_offset = 0; ULONGEST from_offset = 0;
if (is_big_endian && is_scalar_type (fromval->type ())) if (is_big_endian && is_scalar_type (fromval->type ()))
from_offset = from_size - bits; from_offset = from_size - bits;
copy_bitwise (buffer, value_bitpos (toval), copy_bitwise (buffer, toval->bitpos (),
value_contents (fromval).data (), from_offset, value_contents (fromval).data (), from_offset,
bits, is_big_endian); bits, is_big_endian);
write_memory_with_notification (to_addr, buffer, len); write_memory_with_notification (to_addr, buffer, len);
@ -2951,7 +2951,7 @@ value_assign_to_component (struct value *container, struct value *component,
LONGEST offset_in_container = LONGEST offset_in_container =
(LONGEST) (value_address (component) - value_address (container)); (LONGEST) (value_address (component) - value_address (container));
int bit_offset_in_container = int bit_offset_in_container =
value_bitpos (component) - value_bitpos (container); component->bitpos () - container->bitpos ();
int bits; int bits;
val = value_cast (component->type (), val); val = value_cast (component->type (), val);
@ -2972,13 +2972,13 @@ value_assign_to_component (struct value *container, struct value *component,
src_offset = 0; src_offset = 0;
copy_bitwise ((value_contents_writeable (container).data () copy_bitwise ((value_contents_writeable (container).data ()
+ offset_in_container), + offset_in_container),
value_bitpos (container) + bit_offset_in_container, container->bitpos () + bit_offset_in_container,
value_contents (val).data (), src_offset, bits, 1); value_contents (val).data (), src_offset, bits, 1);
} }
else else
copy_bitwise ((value_contents_writeable (container).data () copy_bitwise ((value_contents_writeable (container).data ()
+ offset_in_container), + offset_in_container),
value_bitpos (container) + bit_offset_in_container, container->bitpos () + bit_offset_in_container,
value_contents (val).data (), 0, bits, 0); value_contents (val).data (), 0, bits, 0);
} }
@ -6918,7 +6918,7 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
/* Handle packed fields. It might be that the field is not packed /* Handle packed fields. It might be that the field is not packed
relative to its containing structure, but the structure itself is relative to its containing structure, but the structure itself is
packed; in this case we must take the bit-field path. */ packed; in this case we must take the bit-field path. */
if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0) if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || arg1->bitpos () != 0)
{ {
int bit_pos = arg_type->field (fieldno).loc_bitpos (); int bit_pos = arg_type->field (fieldno).loc_bitpos ();
int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno); int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);

View File

@ -2096,7 +2096,7 @@ update_watchpoint (struct watchpoint *b, bool reparse)
{ {
/* Extract the bit parameters out from the bitfield /* Extract the bit parameters out from the bitfield
sub-expression. */ sub-expression. */
bitpos = value_bitpos (v); bitpos = v->bitpos ();
bitsize = v->bitsize (); bitsize = v->bitsize ();
} }
else if (v == result && b->val_bitsize != 0) else if (v == result && b->val_bitsize != 0)
@ -10198,7 +10198,7 @@ watch_command_1 (const char *arg, int accessflag, int from_tty,
if (val_as_value != NULL && just_location) if (val_as_value != NULL && just_location)
{ {
saved_bitpos = value_bitpos (val_as_value); saved_bitpos = val_as_value->bitpos ();
saved_bitsize = val_as_value->bitsize (); saved_bitsize = val_as_value->bitsize ();
} }

View File

@ -172,7 +172,7 @@ rw_pieced_value (value *v, value *from, bool check_optimized)
if (v->bitsize ()) if (v->bitsize ())
{ {
bits_to_skip += (8 * value_offset (value_parent (v)) bits_to_skip += (8 * value_offset (value_parent (v))
+ value_bitpos (v)); + v->bitpos ());
if (from != nullptr if (from != nullptr
&& (type_byte_order (from->type ()) && (type_byte_order (from->type ())
== BFD_ENDIAN_BIG)) == BFD_ENDIAN_BIG))
@ -468,7 +468,7 @@ check_pieced_synthetic_pointer (const value *value, LONGEST bit_offset,
bit_offset += 8 * value_offset (value); bit_offset += 8 * value_offset (value);
if (value->bitsize ()) if (value->bitsize ())
bit_offset += value_bitpos (value); bit_offset += value->bitpos ();
for (i = 0; i < c->pieces.size () && bit_length > 0; i++) for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
{ {
@ -514,7 +514,7 @@ indirect_pieced_value (value *value)
int bit_length = 8 * type->length (); int bit_length = 8 * type->length ();
LONGEST bit_offset = 8 * value_offset (value); LONGEST bit_offset = 8 * value_offset (value);
if (value->bitsize ()) if (value->bitsize ())
bit_offset += value_bitpos (value); bit_offset += value->bitpos ();
for (i = 0; i < c->pieces.size () && bit_length > 0; i++) for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
{ {

View File

@ -1137,7 +1137,7 @@ value_assign (struct value *toval, struct value *fromval)
set_internalvar_component (VALUE_INTERNALVAR (toval), set_internalvar_component (VALUE_INTERNALVAR (toval),
offset, offset,
value_bitpos (toval), toval->bitpos (),
toval->bitsize (), toval->bitsize (),
fromval); fromval);
} }
@ -1155,7 +1155,7 @@ value_assign (struct value *toval, struct value *fromval)
struct value *parent = value_parent (toval); struct value *parent = value_parent (toval);
changed_addr = value_address (parent) + value_offset (toval); changed_addr = value_address (parent) + value_offset (toval);
changed_len = (value_bitpos (toval) changed_len = (toval->bitpos ()
+ toval->bitsize () + toval->bitsize ()
+ HOST_CHAR_BIT - 1) + HOST_CHAR_BIT - 1)
/ HOST_CHAR_BIT; / HOST_CHAR_BIT;
@ -1176,7 +1176,7 @@ value_assign (struct value *toval, struct value *fromval)
read_memory (changed_addr, buffer, changed_len); read_memory (changed_addr, buffer, changed_len);
modify_field (type, buffer, value_as_long (fromval), modify_field (type, buffer, value_as_long (fromval),
value_bitpos (toval), toval->bitsize ()); toval->bitpos (), toval->bitsize ());
dest_buffer = buffer; dest_buffer = buffer;
} }
else else
@ -1221,7 +1221,7 @@ value_assign (struct value *toval, struct value *fromval)
gdb_byte buffer[sizeof (LONGEST)]; gdb_byte buffer[sizeof (LONGEST)];
int optim, unavail; int optim, unavail;
changed_len = (value_bitpos (toval) changed_len = (toval->bitpos ()
+ toval->bitsize () + toval->bitsize ()
+ HOST_CHAR_BIT - 1) + HOST_CHAR_BIT - 1)
/ HOST_CHAR_BIT; / HOST_CHAR_BIT;
@ -1244,7 +1244,7 @@ value_assign (struct value *toval, struct value *fromval)
} }
modify_field (type, buffer, value_as_long (fromval), modify_field (type, buffer, value_as_long (fromval),
value_bitpos (toval), toval->bitsize ()); toval->bitpos (), toval->bitsize ());
put_frame_register_bytes (frame, value_reg, offset, put_frame_register_bytes (frame, value_reg, offset,
{buffer, changed_len}); {buffer, changed_len});

View File

@ -1035,17 +1035,6 @@ set_value_offset (struct value *value, LONGEST offset)
value->m_offset = offset; value->m_offset = offset;
} }
LONGEST
value_bitpos (const struct value *value)
{
return value->m_bitpos;
}
void
set_value_bitpos (struct value *value, LONGEST bit)
{
value->m_bitpos = bit;
}
struct value * struct value *
value_parent (const struct value *value) value_parent (const struct value *value)
{ {
@ -3941,7 +3930,7 @@ value_fetch_lazy_bitfield (struct value *val)
if (value_lazy (parent)) if (value_lazy (parent))
value_fetch_lazy (parent); value_fetch_lazy (parent);
unpack_value_bitfield (val, value_bitpos (val), val->bitsize (), unpack_value_bitfield (val, val->bitpos (), val->bitsize (),
value_contents_for_printing (parent).data (), value_contents_for_printing (parent).data (),
value_offset (val), parent); value_offset (val), parent);
} }

View File

@ -180,6 +180,15 @@ struct value
void set_bitsize (LONGEST bit) void set_bitsize (LONGEST bit)
{ m_bitsize = bit; } { m_bitsize = bit; }
/* Only used for bitfields; position of start of field. For
little-endian targets, it is the position of the LSB. For
big-endian targets, it is the position of the MSB. */
LONGEST bitpos () const
{ return m_bitpos; }
void set_bitpos (LONGEST bit)
{ m_bitpos = bit; }
/* Type of value; either not an lval, or one of the various /* Type of value; either not an lval, or one of the various
different possible kinds of lval. */ different possible kinds of lval. */
@ -358,13 +367,6 @@ struct value
ULONGEST m_limited_length = 0; ULONGEST m_limited_length = 0;
}; };
/* Only used for bitfields; position of start of field. For
little-endian targets, it is the position of the LSB. For
big-endian targets, it is the position of the MSB. */
extern LONGEST value_bitpos (const struct value *);
extern void set_value_bitpos (struct value *, LONGEST bit);
/* Only used for bitfields; the containing value. This allows a /* Only used for bitfields; the containing value. This allows a
single read from the target when displaying multiple single read from the target when displaying multiple
bitfields. */ bitfields. */