2005-02-07 Andrew Cagney <cagney@gnu.org>

* value.h (set_value_offset): Declare.
	* value.c (set_value_offset): Declare.
	* gnu-v2-abi.c, jv-valprint.c, valarith.c, valops.c: Update.
	* findvar.c: Update.
This commit is contained in:
Andrew Cagney
2005-02-08 02:29:18 +00:00
parent 17cf0ecde3
commit f5cf64a727
8 changed files with 22 additions and 11 deletions

View File

@ -1,5 +1,10 @@
2005-02-07 Andrew Cagney <cagney@gnu.org> 2005-02-07 Andrew Cagney <cagney@gnu.org>
* value.h (set_value_offset): Declare.
* value.c (set_value_offset): Declare.
* gnu-v2-abi.c, jv-valprint.c, valarith.c, valops.c: Update.
* findvar.c: Update.
* value.h (value_next): Declare. * value.h (value_next): Declare.
* value.c (value_next): Define. * value.c (value_next): Define.
* breakpoint.c: Update. * breakpoint.c: Update.

View File

@ -710,9 +710,9 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
&& len < register_size (current_gdbarch, regnum)) && len < register_size (current_gdbarch, regnum))
/* Big-endian, and we want less than full size. */ /* Big-endian, and we want less than full size. */
v->offset = register_size (current_gdbarch, regnum) - len; set_value_offset (v, register_size (current_gdbarch, regnum) - len);
else else
v->offset = 0; set_value_offset (v, 0);
memcpy (value_contents_raw (v), value_bytes + value_offset (v), len); memcpy (value_contents_raw (v), value_bytes + value_offset (v), len);
} }
return v; return v;

View File

@ -162,7 +162,7 @@ gnuv2_virtual_fn_field (struct value **arg1p, struct fn_field * f, int j,
if (TYPE_CODE (entry_type) == TYPE_CODE_STRUCT) if (TYPE_CODE (entry_type) == TYPE_CODE_STRUCT)
{ {
/* Move the `this' pointer according to the virtual function table. */ /* Move the `this' pointer according to the virtual function table. */
arg1->offset += value_as_long (value_field (entry, 0)); set_value_offset (arg1, value_offset (arg1) + value_as_long (value_field (entry, 0)));
if (!value_lazy (arg1)) if (!value_lazy (arg1))
{ {

View File

@ -163,15 +163,15 @@ java_value_print (struct value *val, struct ui_file *stream, int format,
else else
{ {
set_value_lazy (v, 1); set_value_lazy (v, 1);
v->offset = 0; set_value_offset (v, 0);
} }
next_v->offset = value_offset (v); set_value_offset (next_v, value_offset (v));
for (reps = 1; i + reps < length; reps++) for (reps = 1; i + reps < length; reps++)
{ {
set_value_lazy (next_v, 1); set_value_lazy (next_v, 1);
next_v->offset += TYPE_LENGTH (el_type); set_value_offset (next_v, value_offset (next_v) + TYPE_LENGTH (el_type));
if (memcmp (value_contents (v), value_contents (next_v), if (memcmp (value_contents (v), value_contents (next_v),
TYPE_LENGTH (el_type)) != 0) TYPE_LENGTH (el_type)) != 0)
break; break;

View File

@ -240,7 +240,7 @@ value_subscript (struct value *array, struct value *idx)
VALUE_LVAL (v) = lval_internalvar_component; VALUE_LVAL (v) = lval_internalvar_component;
VALUE_ADDRESS (v) = VALUE_ADDRESS (array); VALUE_ADDRESS (v) = VALUE_ADDRESS (array);
VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array); VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array);
v->offset = offset + value_offset (array); set_value_offset (v, offset + value_offset (array));
return v; return v;
} }
@ -281,7 +281,7 @@ value_subscripted_rvalue (struct value *array, struct value *idx, int lowerbound
VALUE_ADDRESS (v) = VALUE_ADDRESS (array); VALUE_ADDRESS (v) = VALUE_ADDRESS (array);
VALUE_REGNUM (v) = VALUE_REGNUM (array); VALUE_REGNUM (v) = VALUE_REGNUM (array);
VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array); VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array);
v->offset = value_offset (array) + elt_offs; set_value_offset (v, value_offset (array) + elt_offs);
return v; return v;
} }

View File

@ -1309,7 +1309,7 @@ search_struct_field (char *name, struct value *arg1, int offset,
VALUE_LVAL (v2) = VALUE_LVAL (arg1); VALUE_LVAL (v2) = VALUE_LVAL (arg1);
VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1); VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1); VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1);
v2->offset = value_offset (arg1) + boffset; set_value_offset (v2, value_offset (arg1) + boffset);
if (value_lazy (arg1)) if (value_lazy (arg1))
set_value_lazy (v2, 1); set_value_lazy (v2, 1);
else else
@ -2775,7 +2775,7 @@ value_slice (struct value *array, int lowbound, int length)
VALUE_LVAL (slice) = VALUE_LVAL (array); VALUE_LVAL (slice) = VALUE_LVAL (array);
VALUE_ADDRESS (slice) = VALUE_ADDRESS (array); VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array); VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
slice->offset = value_offset (array) + offset; set_value_offset (slice, value_offset (array) + offset);
} }
return slice; return slice;
} }

View File

@ -145,6 +145,11 @@ value_offset (struct value *value)
{ {
return value->offset; return value->offset;
} }
void
set_value_offset (struct value *value, int offset)
{
value->offset = offset;
}
int int
value_bitpos (struct value *value) value_bitpos (struct value *value)

View File

@ -172,7 +172,6 @@ struct value
them. */ them. */
}; };
/* Values are stored in a chain, so that they can be deleted easily /* Values are stored in a chain, so that they can be deleted easily
over calls to the inferior. Values assigned to internal variables over calls to the inferior. Values assigned to internal variables
or put into the value history are taken off this list. */ or put into the value history are taken off this list. */
@ -186,7 +185,9 @@ extern void deprecated_set_value_type (struct value *value,
struct type *type); struct type *type);
extern int value_bitsize (struct value *); extern int value_bitsize (struct value *);
extern int value_bitpos (struct value *); extern int value_bitpos (struct value *);
extern int value_offset (struct value *); extern int value_offset (struct value *);
extern void set_value_offset (struct value *, int offset);
/* The comment from "struct value" reads: ``Is it modifiable? Only /* The comment from "struct value" reads: ``Is it modifiable? Only
relevant if lval != not_lval.''. Shouldn't the value instead be relevant if lval != not_lval.''. Shouldn't the value instead be