struct value;
-/* Decrease VAL's reference count. When the reference count drops to
- 0, VAL will be freed. */
+/* Increase VAL's reference count. */
-extern struct value *value_incref (struct value *val);
+extern void value_incref (struct value *val);
-/* Increate VAL's reference count. VAL is returned. */
+/* Decrease VAL's reference count. When the reference count drops to
+ 0, VAL will be freed. */
extern void value_decref (struct value *val);
extern void fetch_subexp_value (struct expression *exp, int *pc,
struct value **valp, struct value **resultp,
- struct value **val_chain,
+ std::vector<value_ref_ptr> *val_chain,
int preserve_errors);
extern const char *extract_field_op (struct expression *exp, int *subexp);
extern int destructor_name_p (const char *name, struct type *type);
-extern void free_all_values (void);
-
-extern void free_value_chain (struct value *v);
-
extern value_ref_ptr release_value (struct value *val);
extern int record_latest_value (struct value *val);
struct ui_file *stream, int format,
enum val_prettyformat pretty);
-extern struct value *value_release_to_mark (const struct value *mark);
+/* Release values from the value chain and return them. Values
+ created after MARK are released. If MARK is nullptr, or if MARK is
+ not found on the value chain, then all values are released. Values
+ are returned in reverse order of creation; that is, newest
+ first. */
+
+extern std::vector<value_ref_ptr> value_release_to_mark
+ (const struct value *mark);
extern void val_print (struct type *type,
LONGEST embedded_offset, CORE_ADDR address,