* varobj.c (struct varobj_root): Rename use_selected_frame to

floating, and clarify the meaning.
	(varobj_create, varobj_update,  new_root_variable): Adjust.
	(value_of_root): Don't use type_changed as in variable,
	adjust comment.
	(c_value_of_root): Adjust.
This commit is contained in:
Vladimir Prus 2008-03-26 14:11:18 +00:00
parent 92e28119da
commit a5defcdc21
2 changed files with 31 additions and 29 deletions

View File

@ -1,3 +1,12 @@
2008-03-26 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (struct varobj_root): Rename use_selected_frame to
floating, and clarify the meaning.
(varobj_create, varobj_update, new_root_variable): Adjust.
(value_of_root): Don't use type_changed as in variable,
adjust comment.
(c_value_of_root): Adjust.
2008-03-25 Pedro Alves <pedro@codesourcery.com>
* linux-nat.c (linux_nat_attach): Add the pid we attached to, to

View File

@ -75,9 +75,10 @@ struct varobj_root
was created. */
int thread_id;
/* If 1, "update" always recomputes the frame & valid block
using the currently selected frame. */
int use_selected_frame;
/* If 1, the -var-update always recomputes the value in the
current thread and frame. Otherwise, variable object is
always updated in the specific scope/thread/frame */
int floating;
/* Flag that indicates validity: set to 0 when this varobj_root refers
to symbols that do not exist anymore. */
@ -472,7 +473,7 @@ varobj_create (char *objname,
/* frame = -2 means always use selected frame */
if (type == USE_SELECTED_FRAME)
var->root->use_selected_frame = 1;
var->root->floating = 1;
block = NULL;
if (fi != NULL)
@ -1157,10 +1158,9 @@ varobj_update (struct varobj **varp, struct varobj ***changelist,
the frame in which a local existed. We are letting the
value_of_root variable dispose of the varobj if the type
has changed. */
type_changed = 1;
new = value_of_root (varp, &type_changed);
/* If this is a "use_selected_frame" varobj, and its type has changed,
/* If this is a floating varobj, and its type has changed,
them note that it's changed. */
if (type_changed)
VEC_safe_push (varobj_p, result, *varp);
@ -1504,7 +1504,7 @@ new_root_variable (void)
var->root->exp = NULL;
var->root->valid_block = NULL;
var->root->frame = null_frame_id;
var->root->use_selected_frame = 0;
var->root->floating = 0;
var->root->rootvar = NULL;
var->root->is_valid = 1;
@ -1699,16 +1699,15 @@ name_of_child (struct varobj *var, int index)
return (*var->root->lang->name_of_child) (var, index);
}
/* What is the ``struct value *'' of the root variable VAR?
TYPE_CHANGED controls what to do if the type of a
use_selected_frame = 1 variable changes. On input,
TYPE_CHANGED = 1 means discard the old varobj, and replace
it with this one. TYPE_CHANGED = 0 means leave it around.
NB: In both cases, var_handle will point to the new varobj,
so if you use TYPE_CHANGED = 0, you will have to stash the
old varobj pointer away somewhere before calling this.
On return, TYPE_CHANGED will be 1 if the type has changed, and
0 otherwise. */
/* What is the ``struct value *'' of the root variable VAR?
For floating variable object, evaluation can get us a value
of different type from what is stored in varobj already. In
that case:
- *type_changed will be set to 1
- old varobj will be freed, and new one will be
created, with the same name.
- *var_handle will be set to the new varobj
Otherwise, *type_changed will be set to 0. */
static struct value *
value_of_root (struct varobj **var_handle, int *type_changed)
{
@ -1725,7 +1724,7 @@ value_of_root (struct varobj **var_handle, int *type_changed)
if (!is_root_p (var))
return NULL;
if (var->root->use_selected_frame)
if (var->root->floating)
{
struct varobj *tmp_var;
char *old_type, *new_type;
@ -1745,16 +1744,10 @@ value_of_root (struct varobj **var_handle, int *type_changed)
}
else
{
if (*type_changed)
{
tmp_var->obj_name =
savestring (var->obj_name, strlen (var->obj_name));
varobj_delete (var, NULL, 0);
}
else
{
tmp_var->obj_name = varobj_gen_name ();
}
tmp_var->obj_name =
savestring (var->obj_name, strlen (var->obj_name));
varobj_delete (var, NULL, 0);
install_variable (tmp_var);
*var_handle = tmp_var;
var = *var_handle;
@ -2200,7 +2193,7 @@ c_value_of_root (struct varobj **var_handle)
inferior_ptid, get_frame_id (deprecated_safe_get_selected_frame ()));
/* Determine whether the variable is still around. */
if (var->root->valid_block == NULL || var->root->use_selected_frame)
if (var->root->valid_block == NULL || var->root->floating)
within_scope = 1;
else if (var->root->thread_id == 0)
{