* value.c (struct value) <modifiable, lazy, optimized_out,
initialized, stack>: Now bitfields. Move to top. <reference_count>: Move earlier.
This commit is contained in:
parent
de8bee766b
commit
87784a4754
2 changed files with 44 additions and 35 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-12-22 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* value.c (struct value) <modifiable, lazy, optimized_out,
|
||||
initialized, stack>: Now bitfields. Move to top.
|
||||
<reference_count>: Move earlier.
|
||||
|
||||
2011-12-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* minsyms.h: Rearrange. Document header and all functions.
|
||||
|
|
73
gdb/value.c
73
gdb/value.c
|
@ -169,6 +169,9 @@ ranges_contain (VEC(range_s) *ranges, int offset, int length)
|
|||
|
||||
static struct cmd_list_element *functionlist;
|
||||
|
||||
/* Note that the fields in this structure are arranged to save a bit
|
||||
of memory. */
|
||||
|
||||
struct value
|
||||
{
|
||||
/* Type of value; either not an lval, or one of the various
|
||||
|
@ -176,7 +179,34 @@ struct value
|
|||
enum lval_type lval;
|
||||
|
||||
/* Is it modifiable? Only relevant if lval != not_lval. */
|
||||
int modifiable;
|
||||
unsigned int modifiable : 1;
|
||||
|
||||
/* If zero, contents of this value are in the contents field. If
|
||||
nonzero, contents are in inferior. If the lval field is lval_memory,
|
||||
the contents are in inferior memory at location.address plus offset.
|
||||
The lval field may also be lval_register.
|
||||
|
||||
WARNING: This field is used by the code which handles watchpoints
|
||||
(see breakpoint.c) to decide whether a particular value can be
|
||||
watched by hardware watchpoints. If the lazy flag is set for
|
||||
some member of a value chain, it is assumed that this member of
|
||||
the chain doesn't need to be watched as part of watching the
|
||||
value itself. This is how GDB avoids watching the entire struct
|
||||
or array when the user wants to watch a single struct member or
|
||||
array element. If you ever change the way lazy flag is set and
|
||||
reset, be sure to consider this use as well! */
|
||||
unsigned int lazy : 1;
|
||||
|
||||
/* If nonzero, this is the value of a variable which does not
|
||||
actually exist in the program. */
|
||||
unsigned int optimized_out : 1;
|
||||
|
||||
/* If value is a variable, is it initialized or not. */
|
||||
unsigned int initialized : 1;
|
||||
|
||||
/* If value is from the stack. If this is set, read_stack will be
|
||||
used instead of read_memory to enable extra caching. */
|
||||
unsigned int stack : 1;
|
||||
|
||||
/* Location of value (if lval). */
|
||||
union
|
||||
|
@ -217,6 +247,13 @@ struct value
|
|||
gdbarch_bits_big_endian=1 targets, it is the position of the MSB. */
|
||||
int bitpos;
|
||||
|
||||
/* The number of references to this value. When a value is created,
|
||||
the value chain holds a reference, so REFERENCE_COUNT is 1. If
|
||||
release_value is called, this value is removed from the chain but
|
||||
the caller of release_value now has a reference to this value.
|
||||
The caller must arrange for a call to value_free later. */
|
||||
int reference_count;
|
||||
|
||||
/* Only used for bitfields; the containing value. This allows a
|
||||
single read from the target when displaying multiple
|
||||
bitfields. */
|
||||
|
@ -282,33 +319,6 @@ struct value
|
|||
/* Register number if the value is from a register. */
|
||||
short regnum;
|
||||
|
||||
/* If zero, contents of this value are in the contents field. If
|
||||
nonzero, contents are in inferior. If the lval field is lval_memory,
|
||||
the contents are in inferior memory at location.address plus offset.
|
||||
The lval field may also be lval_register.
|
||||
|
||||
WARNING: This field is used by the code which handles watchpoints
|
||||
(see breakpoint.c) to decide whether a particular value can be
|
||||
watched by hardware watchpoints. If the lazy flag is set for
|
||||
some member of a value chain, it is assumed that this member of
|
||||
the chain doesn't need to be watched as part of watching the
|
||||
value itself. This is how GDB avoids watching the entire struct
|
||||
or array when the user wants to watch a single struct member or
|
||||
array element. If you ever change the way lazy flag is set and
|
||||
reset, be sure to consider this use as well! */
|
||||
char lazy;
|
||||
|
||||
/* If nonzero, this is the value of a variable which does not
|
||||
actually exist in the program. */
|
||||
char optimized_out;
|
||||
|
||||
/* If value is a variable, is it initialized or not. */
|
||||
int initialized;
|
||||
|
||||
/* If value is from the stack. If this is set, read_stack will be
|
||||
used instead of read_memory to enable extra caching. */
|
||||
int stack;
|
||||
|
||||
/* Actual contents of the value. Target byte-order. NULL or not
|
||||
valid if lazy is nonzero. */
|
||||
gdb_byte *contents;
|
||||
|
@ -317,13 +327,6 @@ struct value
|
|||
rather than available, since the common and default case is for a
|
||||
value to be available. This is filled in at value read time. */
|
||||
VEC(range_s) *unavailable;
|
||||
|
||||
/* The number of references to this value. When a value is created,
|
||||
the value chain holds a reference, so REFERENCE_COUNT is 1. If
|
||||
release_value is called, this value is removed from the chain but
|
||||
the caller of release_value now has a reference to this value.
|
||||
The caller must arrange for a call to value_free later. */
|
||||
int reference_count;
|
||||
};
|
||||
|
||||
int
|
||||
|
|
Loading…
Reference in a new issue