aboutsummaryrefslogtreecommitdiff
path: root/gdb/value.h
diff options
context:
space:
mode:
authorJerome Guitton <guitton@adacore.com>2008-11-26 16:27:28 +0000
committerJerome Guitton <guitton@adacore.com>2008-11-26 16:27:28 +0000
commit3e3d7139eef55bf54263b7385858bcdd2b239415 (patch)
tree525918de5f68b51df4098fbe0da15d42233cecad /gdb/value.h
parent508e676df1a21a34a1b53b004bed87a3358d776b (diff)
downloadgdb-3e3d7139eef55bf54263b7385858bcdd2b239415.zip
gdb-3e3d7139eef55bf54263b7385858bcdd2b239415.tar.gz
gdb-3e3d7139eef55bf54263b7385858bcdd2b239415.tar.bz2
* value.h (allocate_value_lazy): New function declaration.
(value_free): Remove macro, make it a function. * value.c (value): Move actual content outside of the memory space of the struct; add a pointer to this actual content. (allocate_value_lazy, allocate_value_contents): New function. (allocate_value): Reimplement using these two new functions. (value_contents_raw, value_contents_all_raw): If no memory has been allocated yet for the actual content, allocate it. (value_contents_all): Resync with struct value's changes. (value_free): New function. (value_copy, value_primitive_field): Use new function allocate_value_lazy to allocate lazy values. (value_change_enclosing_type): Resync with struct value's changes. As the value is not reallocated, remove the special handling for the value chain (now obsolete). * valops.c (value_at_lazy): Use new function allocate_value_lazy. (value_fetch_lazy): Allocate value content. Use allocate_value_lazy to allocate lazy values. (value_slice): Use allocate_value_lazy to allocate lazy values.
Diffstat (limited to 'gdb/value.h')
-rw-r--r--gdb/value.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/gdb/value.h b/gdb/value.h
index 384a1ed..a882004 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -318,6 +318,8 @@ extern struct value *locate_var_value (struct symbol *var,
struct frame_info *frame);
extern struct value *allocate_value (struct type *type);
+extern struct value *allocate_value_lazy (struct type *type);
+extern void allocate_value_contents (struct value *value);
extern struct value *allocate_repeat_value (struct type *type, int count);
@@ -504,7 +506,7 @@ extern int unop_user_defined_p (enum exp_opcode op, struct value *arg1);
extern int destructor_name_p (const char *name, const struct type *type);
-#define value_free(val) xfree (val)
+extern void value_free (struct value *val);
extern void free_all_values (void);